C++课程设计报告学生成绩管理系统.docx
- 文档编号:29211671
- 上传时间:2023-07-21
- 格式:DOCX
- 页数:30
- 大小:601.66KB
C++课程设计报告学生成绩管理系统.docx
《C++课程设计报告学生成绩管理系统.docx》由会员分享,可在线阅读,更多相关《C++课程设计报告学生成绩管理系统.docx(30页珍藏版)》请在冰豆网上搜索。
C++课程设计报告学生成绩管理系统
学生成绩管理系统
说明:
该课程设计包含两个部分,一个为纯dos系统下的控制台程序,用C++编写;另一个为有界面的MFC项目。
纯dos系统下的控制台程序
1、设计要求...........................................3
2、设计分析...........................................3
3、调试说明...........................................4
4、源代码.............................................8
5、实验总结..........................................21
有界面的MFC项目
1、设计内容...........................................22
2、设计说明..........................................22
3、设计步骤..........................................22
4、运行演示..........................................27
5、实验总结..........................................29
纯dos系统下的控制台程序
1、设计要求
现有学生成绩信息,内容如下:
姓名 学号 语文 数学 英语
张明明 01 67 78 82
李成友 02 78 91 88
张辉灿 03 68 82 56
王露 04 56 45 77
陈东明 05 67 38 47
请用C/C++编写一系统,实现学生信息管理,软件的入口界面应包括如下几个方面:
功能要求:
(1) 信息维护:
要求:
学生信息数据要以文件的形式保存,能实现学生信息数据的维护。
此模块包括子模块有:
增加学生信息、删除学生信息、修改学生信息
(2) 信息查询:
要求:
查询时可实现按姓名查询、按学号查询
(3) 成绩统计:
要求:
A输入任意的一个课程名(如数学)和一个分数段(如60--70),统计出在此分数段的学生情况。
(4) 排序:
能对用户指定的任意课程名,按成绩升序或降序排列学生数据并显示排序结果(使用表格的形式显示排序后的输出结果)
其它要求:
(1)只能使用C/C++语言,源程序要有适当的注释,使程序容易阅读
(2)至少采用文本菜单界面(如果能采用图形菜单界面更好)
(3)学生可自动增加新功能模块(视情况可另外加分)
(4)写出课程设计报告,具体要求见相关说明文档
2、设计分析
(1)需求分析:
该程序要能实现对学生成绩信息的增加、删除、修改,实现对学生按姓名查询,按学号查询显示,对任意一个课程名和分数段的学生人数进行输出并统计人数,最好还要根据用户的需求对学生成绩排序。
(2)系统性能要求:
a.系统安全、可靠;
b.功能齐全;
c.操作方便、界面友好;
d.易于维护和扩充。
(3)系统功能模块:
学生成绩管理系统包括:
增加、删除、修改、显示、信息查询、成绩统计、排序几个部分构成。
(4)模块框架图
3、调试说明
运行程序后,现出来一个简洁的主界面。
若没有学生信息,显示“这是一个新系统,无学生信息,请先输入。
”若已存在学生信息,显示“读取学生信息成功!
”
一秒钟后,自动切入主菜单界面。
首先选择1,增加学生信息。
录入学生信息后选择4,显示学生信息。
选择2,删除学生信息,输入要删除的学生姓名,这里我输入的是王露,显示剩下几位同学的信息。
选择3,修改学生信息,输入要修改的学生姓名,然后输入新的学生信息,这里我修改的是张明明,显示修改后的学生信息。
将张明明和王露的信息重新输入。
输入5,信息查询,出来选择界面,“1、按学生姓名查找”、“2、按学生学号查找”,输入1,运行结果如下:
输入2,运行结果如下:
输入6,排序,显示选择界面,用户可根据需求选择科目和升降序,这里我是按语文成绩降序排序。
输入7,成绩统计,用户自行输入要统计的科目和分数段进行统计。
这里我统计的是英语成绩在60—90的学生。
4、源程序代码
#include
#include
#include
#include<>
#include<>
#include<>
usingnamespacestd;
#defineHEADER1"-----------------------------学生成绩----------------------------\n"
#defineHEADER2"|姓名|学号|数学|语文|英语|总分|\n"
#defineHEADER3"|----------|----------|----------|----------|----------|----------|\n"
classStudent....";
getch();
}
voidStudentMassage:
:
AddItem()....";
getch();
}
voidStudentMassage:
:
Find()....";
getch();
}
else
{
cout<<"\t\t没有找到该姓名的学生!
"< cout<<"请输入任意字符,继续......"; getch(); } }break; case2: ...."; getch(); } else { cout<<"\n\t\t没有找到该学号的学生! "< cout<<"请输入任意字符,继续......"; getch(); } }break; } } voidStudentMassage: : ModifyItem()....."; getch(); } } voidStudentMassage: : RemoveItem()...."; getch(); } } intStudentMassage: : ListCount()....."; getch(); };break; case2: { cout<<"\n\t\t请输入分数段的起始分数和终止分数: "; cin>>m; cin>>n; for(p=Head;p! =End;p=p->next) if(p->chinese>=m&&p->chinese<=n) { count++; if(count==1) cout< p->show(); } cout<<"\n\t\t语文成绩在"< \n"< cout<<"输入任意字符,继续......."; getch(); };break; case3: { cout<<"\n\t\t请输入分数段的起始分数和终止分数: "; cin>>m; cin>>n; for(p=Head;p! =End;p=p->next) if(p->english>=m&&p->english<=n) { count++; if(count==1) cout< p->show(); } cout<<"\n\t\t英语成绩在"< \n"< cout<<"输入任意字符,继续......."; getch(); };break; } } voidStudentMassage: : Swap(Student*p1,Student*p2)//交p1,p2学生信息 { Student*temp=newStudent; strcpy(temp->name,p1->name); strcpy(temp->id,p1->id); temp->math=p1->math; temp->chinese=p1->chinese; temp->english=p1->english; temp->sum=p1->sum; strcpy(p1->name,p2->name); strcpy(p1->id,p2->id); p1->math=p2->math; p1->chinese=p2->chinese; p1->english=p2->english; p1->sum=p2->sum; strcpy(p2->name,temp->name); strcpy(p2->id,temp->id); p2->math=temp->math; p2->chinese=temp->chinese; p2->english=temp->english; p2->sum=temp->sum; } voidStudentMassage: : Sort()//排序 { Student*p=NULL,*p1=NULL,*k=NULL; intn=StudentMassage: : ListCount(),x,y; if(n<2) { cout<<"数据较少,无法排序! "< return; } cout<<"\n\t\t**************************************\n"; cout<<"\t\t\t1、按数学成绩排序"< cout<<"\t\t\t2、按语文成绩排序"< cout<<"\t\t\t3、按英语成绩排序"< cout<<"\t\t\t4、按总分排序"; cout<<"\n\t\t**************************************\n\n\t请选择: "; cin>>x; switch(x) { case1: { cout<<"\n\t\t**************************************\n"; cout<<"\t\t\t1、按降序排序\n\t\t\t2、按升序排序"; cout<<"\n\t\t**************************************\n\n\t请选择: "; cin>>y; if(y==1) { for(p=Head->next;p! =End;p=p->next) for(k=p->next;k! =End;k=k->next) { if(p->math StudentMassage: : Swap(p,k); } cout<<"\n\t\t排序完成! "< StudentMassage: : Display(); getch(); } else { for(p=Head->next;p! =End;p=p->next) for(k=p->next;k! =End;k=k->next) { if(p->math>k->math) StudentMassage: : Swap(p,k); } cout<<"\n\t\t排序完成! "< StudentMassage: : Display(); getch(); } };break; case2: { cout<<"\n\t\t**************************************\n"; cout<<"\t\t\t1、按降序排序\n\t\t\t2、按升序排序"; cout<<"\n\t\t**************************************\n\n\t请选择: "; cin>>y; if(y==1) { for(p=Head->next;p! =End;p=p->next) for(k=p->next;k! =End;k=k->next) { if(p->chinese StudentMassage: : Swap(p,k); } cout<<"\n\t\t排序完成! "< StudentMassage: : Display(); getch(); } else { for(p=Head->next;p! =End;p=p->next) for(k=p->next;k! =End;k=k->next) { if(p->chinese>k->chinese) StudentMassage: : Swap(p,k); } cout<<"\n\t\t排序完成! "< StudentMassage: : Display(); getch(); } };break; case3: { cout<<"\n\t\t**************************************\n"; cout<<"\t\t\t1、按降序排序\n\t\t\t2、按升序排序"; cout<<"\n\t\t**************************************\n\n\t请选择: "; cin>>y; if(y==1) { for(p=Head->next;p! =End;p=p->next) for(k=p->next;k! =End;k=k->next) { if(p->english StudentMassage: : Swap(p,k); } cout<<"\n\t\t排序完成! "< StudentMassage: : Display(); getch(); } else { for(p=Head->next;p! =End;p=p->next) for(k=p->next;k! =End;k=k->next) { if(p->english>k->english) StudentMassage: : Swap(p,k); } cout<<"\n\t\t排序完成! "< StudentMassage: : Display(); getch(); } };break; case4: { cout<<"\n\t\t**************************************\n"; cout<<"\t\t\t1、按降序排序\n\t\t\t2、按升序排序"; cout<<"\n\t\t**************************************\n\n\t请选择: "; cin>>y; if(y==1) { for(p=Head->next;p! =End;p=p->next) for(k=p->next;k! =End;k=k->next) { if(p->sum StudentMassage: : Swap(p,k); } cout<<"\n\t\t排序完成! "< StudentMassage: : Display(); getch(); } else { for(p=Head->next;p! =End;p=p->next) for(k=p->next;k! =End;k=k->next) { if(p->sum>k->sum) StudentMassage: : Swap(p,k); } cout<<"\n\t\t排序完成! "< StudentMassage: : Display(); getch(); } };break; } } voidStudentMassage: : save()//存入文件 { (""); for(Student*p=Head->next;p! =End;p=p->next) out< (); } voidmain() { intx; boolquit=false; cout<<"\n\n\n\n\n\n\n\n"; cout<<"\t\t********************************************"< cout<<"\t\t欢迎使用学生成绩管理系统! "< cout<<"\t\t********************************************"< StudentMassageGrade; Sleep(1000); while(! quit) { system("cls"); (); cin>>x; switch(x) { case0: quit=true;break; case1: ();break; case2: ();break; case3: ();break; case4: ();break; case5: ();break; case6: ();break; case7: ();break; } } } 5、实验总结 通过编写这个纯dos系统下的控制台程序,加深了我对如何用C++编写一个简单的应用程序的理解。 首先要对程序的设计要求有一个比较明确的认识,然后系统分析与系统设计,最后是代码设计与调试。 程序实现上,设计了简单的菜单界面,将各个功能集中出来按照程序编写原则,便于查询。 有界面的MFC项目 1、设计内容 以学生成绩管理系统为例,通过对简单应用软件系统的设计,编制、调试,实现简单的增加、删除、排序等运算,以学习应用MFC库类编写对话框的原理,加深对C++类的学习及应用。 2、设计说明 (1)包含的功能有: 查看、增加、删除、排序、筛选等功能。 (2)通过access创建数据库并通过OD方式访问数据库。 (3)编辑界面上的不同按钮,创建消息映射,以完成相关的各种操作。 3、设计步骤 (1)创建数据库: 打开access,并创建一个新表“学生成绩管理表”,输入相关内容,选择类型,完成后保存。 (2)添加ODBC数据源 打开“ODBC数据源管理器” 添加 继续 (3)在MFC中创建相关按键并设置好属性及ID 为每个编辑框控件绑定数据源字段: 选定一个编辑框控件,右键 | 建立类向导 | 成员变量标签 |class name列表下选CmySet(数据库的结果集)。 先将Member中不好记的值通过“Delete Variable”删除,再“Add Vairiables”添加,改为自己好记的的名字。 将编辑框(在CmyView视图类中)与上述变量绑定: Add Variable… 现在为功能键的实现进行操作 增加新的对话框(窗体)及创建类成员 在查询或过滤记录时,需要一个对话框,用于添加信息,增加对话框的方法: VC主菜单,“插入”|“资源”|“对话框(Dialog)类型”| 放一个“分组框控件”| 在分组框内按图设置编辑框和按钮: 建立类向导,分配好成员变量并绑定好 为其中的“确定”按钮添加代码: voidCDlgADD: : OnOK() { //TODO: Addextravalidationhere UpdateData(); if(m_id==0||m_name==""||m_chinese==0||m_math==0||m_english==0||m_sum==0) { MessageBox("请完整输入数据"); return; } CDialog: : OnOK(); } 同理,添加查询条件
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 课程设计 报告 学生 成绩管理系统
![提示](https://static.bdocx.com/images/bang_tan.gif)