课程设计学生成绩管理系统Word文件下载.docx
《课程设计学生成绩管理系统Word文件下载.docx》由会员分享,可在线阅读,更多相关《课程设计学生成绩管理系统Word文件下载.docx(28页珍藏版)》请在冰豆网上搜索。
图2学生信息表物理结构
图3课程信息表物理结构
图4成绩表物理结构
2.3数据库的输入
在ACCESS中定义好物理结构后就可以输入数据,同时根据系统的要求,用ACCESS做了两个查询,分别是成绩查询和平均分查询,为以后写程序的方便,对平均分查询进行了按平均分从高到低排序操作。
具体数据如下:
图5学生信息表
图6课程信息表
图7成绩表
图8平均分查询
图9成绩查询
3程序设计
根据设计要求,本系统是利用VC来开发可视化界面,因此要将程序和数据库进行连接,这要使用ODBC工具将数据库设置数据源,在建立工程时选择数据库查看使用文件支持,在选择数据源时选择自己设置的数据源即可。
在主页面,连接学生信息表,在主页面对学生信息表操作就非常方便。
主页面如下:
图10主页面
3.1学生信息操作
3.1.1查询操作
查询操作的功能是输入学号,点击查询按钮,就可以显示出学生的基本信息。
图11查询操作
程序如下:
voidCMyView:
:
OnButton1()
{intflag=1,t=0;
m_pSet->
MoveFirst();
UpdateData(TRUE);
while(flag==1){
CStringinfo="
\0"
;
info="
学号:
\t"
+m_pSet->
m_sno+"
\n"
info+="
姓名:
m_sn+"
性别:
m_sex+"
年龄:
m_age+"
系别:
m_dept+"
if(m_Sno==m_pSet->
m_sno)
{MessageBox(info,"
查询到的记录如下:
"
100);
flag=0;
t=0;
}
else{t=1;
MoveNext();
if(m_pSet->
IsEOF()){flag=0;
};
//TODO:
Addyourcontrolnotificationhandlercodehere
if(t==1){MessageBox("
你输入的学号不存在"
"
学生管理系统"
0);
3.1.2添加操作
添加操作是在点击添加按钮后,添加记录窗口跳出,在新窗口输入要添加的记录,点击确定按钮后,如果该学生的信息已存在(以学号判断),则提醒该学生信息已存在,如果添加成功,则跳出添加成功提示。
如图:
图12添加操作
OnButton2()
{
Dlg1dlg;
if(dlg.DoModal()==IDOK)
{//按IDD_DIALOG1的"
OK"
按钮返回之后:
intflag=0;
while(!
m_pSet->
IsEOF()){
if(dlg.m_AddSno==m_pSet->
m_sno){flag=1;
MessageBox("
该学生信息已存在"
管理系统"
m_pSet->
if(flag==0){
m_pSet->
AddNew();
//先执行追加新记录的功能函数AddNew()
m_sno=dlg.m_AddSno;
//给学号、姓名字段赋值:
m_sn=dlg.m_AddSn;
m_sex=dlg.m_AddSex;
m_age=dlg.m_AddAge;
m_dept=dlg.m_AddDept;
Update();
//新记录写入数据库的数据表
Requery();
//刷新记录集。
这将改动"
物理"
数据库。
MessageBox("
添加成功"
0);
}
}
3.1.3删除操作
删除操作是点击删除按钮后,跳出删除窗口,在删除窗口中输入要删除学生信息的学号以及管理员密码,在多种提示后确认无误后删除,删除后会显示已删除提醒。
图13删除操作
图14学生信息提示图15确认操作提示
在删除操作中,必须输入密码才能进行删除操作,否则提示密码不正确,密码是唯一的,在本系统中,所有密码都是1234。
OnButton3()
//TODO:
Dlg2dlg;
if(dlg.DoModal()==IDOK){
intflag=1,t=0,flag1=0,flag2=0;
if(dlg.m_DleSno==m_pSet->
{flag1=MessageBox(info,"
请确认删除的学生信息:
}
if(dlg.m_mima==1234){
if(flag1==6){flag2=MessageBox("
确定删除?
100);
if(flag2==6){m_pSet->
MovePrev();
Delete();
MessageBox("
已删除"
}
else{MessageBox("
密码不正确"
提示"
3.1.4修改操作
修改操作是在主页面输入要修改的学生信息的学号(在查询条件处输入),点击修改按钮,跳出修改窗口,在窗口中会显示该学生现有的信息,将其修改后点击确定按钮,同样要输入管理员密码,否则提示密码不正确。
在修改后会提示以修改。
图16修改操作
OnButton6()
intflag=1,t=0,tag=0;
{tag=MessageBox(info,"
要修改如下记录:
Dlg6dlg;
//工作对话框开始的程序:
if(tag==6)
{//
(1)将当前记录的各字段值拷贝到对话框的对应成员变量上:
//激活对话框控件
dlg.m_CSno=m_pSet->
m_sno;
dlg.m_CSn=m_pSet->
m_sn;
dlg.m_CSex=m_pSet->
m_sex;
dlg.m_CAge=m_pSet->
m_age;
dlg.m_CDept=m_pSet->
m_dept;
UpdateData(FALSE);
//控件上的改变显示出来
//
(2)按对话框的"
按钮时返回,返回之后重置数据库该记录的修改值:
dlg.DoModal();
Edit();
m_sno=dlg.m_CSno;
m_sn=dlg.m_CSn;
m_sex=dlg.m_CSex;
m_age=dlg.m_CAge;
m_dept=dlg.m_CDept;
MessageBox("
修改成功"
else{MessageBox("
3.1.5学生信息浏览
在主页面,我添加了一个学生信息浏览按钮,点击该按钮会在跳出的窗口中显示学生信息表,该表与数据库中的学生信息表连接,这样可以通过浏览该表来查看自己的删除,修改和添加等操作是否完成,同时可以通过它查看自己不熟悉学号的学生信息。
图17学生信息表
这个操作应用了ADOData控件和DataGrid控件,通过ADOData控件连接数据表,DataGrid控件连接ADOData控件后显示数据表,通过这两个控件可直接进行数据的添加、删除和修改。
因这些功能已有,所以在本系统中未启用这两个控件的该功能。
3.2学生成绩操作
因在主页面连接了学生信息表,所以在主页面添加按钮成绩查询来打开新窗口,在新窗口中连接学生成绩查询这个表,并用ADOData控件和DataGrid控件来显示学生成绩表。
在学生成绩管理窗口中学生成绩查询和成绩的统计排序是主要操作。
学生成绩的添加、删除和修改操作通过管理员登录后才能操作。
学生成绩管理操作页面如图:
图18学生成绩管理窗口
3.2.1查询操作
成绩查询操作是在学生成绩管理窗口中的查询条件中输入学生的学号,点击查询后在查询结果中显示出该学生的第一门成绩,点击下一门会显示第二门成绩,若已是最后一门则提示“这是最后一门”。
点击首项会跳回该学生的第一门功课成绩。
操作如图:
图19查询操作
voidDlg3Name:
{
Dlg3Datasetpset;
intflag=1,t=0;
pset.Open();
pset.MoveFirst();
UpdateData(TRUE);
if(pset.m_sno==m_QSno){
m_QSn=pset.m_sn;
m_QCn=pset.m_cn;
m_QScore=pset.m_score;
flag=0;
t=1;
pset.MoveNext();
if(pset.IsEOF()){flag=0;
if(t==0){MessageBox("
无此人成绩信息"
学生成绩管理系统"
m_QSn="
"
m_QCn="
m_QScore="
UpdateData(FALSE);
}//查询
{
intflag=1,flag1=1,t=0;
while(flag1==1){
if(pset.m_sno==m_QSno&
&
pset.m_cn==m_QCn){
flag1=0;
pset.m_cn!
=m_QCn){
以是最后一门"
}//下一科目
3.2.2统计平均和排序操作
统计平均操作是在查询条件中输入要操作的学生的学号,点击统计平均按钮后在统计排序中显示出该学生的总分、平均分和选课数,未点击时全显示0。
排序操作是在点击查看排名按钮后跳出新窗口,在新窗口中用ADOData控件和DataGrid控件显示平均分查询这个表,同时新窗口连接这个查询,以便操作。
在排名窗口中,点击查看就可以显示该学生的平均分排名,也可直接在该窗口中更改学生学号,查看其他学生的排名。
图20统计平均操作
图21查看排名操作
统计平均操作如下:
OnButton4()
m_sum=0;
m_total=0;
pset.IsEOF()){
m_sum+=atof(pset.m_score);
m_total++;
pset.MoveNext();
if(m_total==0){MessageBox("
无该生成绩信息"
m_sum=0;
m_avg=0;
else{m_avg=m_sum/m_total;
}//统计平均
查看排名程序如下:
voidDlg5:
Dlg5Datasetpset;
pset.Open();
intt=1,flag=0;
if(pset.m_sno==m_Sno){
m_order=t;
flag=1;
return;
t++;
};
if(flag==0){MessageBox("
你的学号输入错误"
//TODO:
}//查看
3.2.3管理员登录操作
管理员登录是进行学生成绩添加、删除和修改等操作的前提。
点击管理员登录,跳出管理员登录界面,输入密码后跳出管理界面。
图22管理员登录界面
图23成绩管理界面
Dlg8dlg;
if(dlg.DoModal()==IDOK){
if(dlg.m_mima==1234){
Dlg9dlgg;
dlgg.DoModal();
else{MessageBox("
3.2.4成绩管理操作
学生成绩管理操作包括成绩的添加、修改和删除,点击相应按钮会跳出相应的界面供我们操作。
添加成绩如下:
图24成绩添加
voidDlg9:
DlgAdlg;
DlgADatasetpset;
pset.MoveFirst();
pset.IsEOF()){
if(dlg.m_AddSno==pset.m_sno&
dlg.m_AddCno==pset.m_cno){flag=1;
该门成绩已存在"
pset.MoveNext();
pset.AddNew();
pset.m_sno=dlg.m_AddSno;
pset.m_cno=dlg.m_AddCno;
pset.m_score=dlg.m_AddScore;
pset.Update();
pset.Requery();
修改操作如下:
图25修改操作1
图26修改操作2
voidDlg9:
DlgBdlg;
DlgB1Datasetpset;
if(dlg.DoModal()==IDOK)
{pset.MoveFirst();
inttag=0,t=0;
pset.IsEOF())
{
if(dlg.m_MSno==pset.m_sno&
dlg.m_MCno==pset.m_cno)
{t=1;
DlgB2dlgg;
dlgg.m_MScore=pset.m_score;
dlgg.DoModal();
tag=MessageBox("
确定修改?
100);
if(tag==6)
pset.Edit();
pset.m_score=dlgg.m_MScore;
pset.Update();
pset.Requery();
MessageBo