最新C++课程设计报告学生成绩管理系统.docx
- 文档编号:23035908
- 上传时间:2023-04-30
- 格式:DOCX
- 页数:36
- 大小:22.87KB
最新C++课程设计报告学生成绩管理系统.docx
《最新C++课程设计报告学生成绩管理系统.docx》由会员分享,可在线阅读,更多相关《最新C++课程设计报告学生成绩管理系统.docx(36页珍藏版)》请在冰豆网上搜索。
最新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//定义学生类
{
public:
charname[20];
charid[20];
intmath;
intchinese;
更多精品文档
学习-----好资料
intenglish;
intsum;
Student*next;
voidinput();
voidReadFile(istream&in);
voidshow();
};
voidStudent:
:
input()//输入学生信息函数
{
cout<<"\n\t\t请输入:
"< cout<<"\t\t姓名: "; cin>>name; cout<<"\t\t学号: "; cin>>id; cout<<"\t\t数学成绩: "; cin>>math; cout<<"\t\t语文成绩: "; cin>>chinese; cout<<"\t\t英语成绩: "; cin>>english; sum=math+chinese+english; } voidStudent: : ReadFile(istream&in)//读取文件 { in>>name>>id>>math>>chinese>>english>>sum; } voidStudent: : show()//输出学生信息 { cout<<"|"< |"< |"< cout<<" |----------|----------|----------|----------|----------|----------|\n "; } classStudentMassage//定义学生信息类,包含各项处理功能 { public: StudentMassage(); ~StudentMassage(); 更多精品文档 学习-----好资料 voidShowMenu(); voidDisplay(); voidAddItem(); voidFind(); voidsave(); voidModifyItem(); voidRemoveItem(); voidSwap(Student*p1,Student*p2); voidSort(); intListCount(); intCount(); private: Student*Head,*End; ifstreamin; ofstreamout; Student*FindItem(char*name); Student*FindId(char*id); }; Student*StudentMassage: : FindItem(char*name) { Student*p; for(p=Head;p->next! =End;p=p->next) if(! strcmp(p->next->name,name)) returnp; returnNULL; } Student*StudentMassage: : FindId(char*id) { Student*p; for(p=Head;p->next! =End;p=p->next) if(! strcmp(p->next->id,id)) returnp; returnNULL; } StudentMassage: : StudentMassage()//构造函数 { Head=newStudent; Head->next=newStudent; End=Head->next; in.open("sort.txt"); if(! in) 更多精品文档 学习-----好资料 cout<<"\n\t\t这是一个新系统,无学生信息,请先输入。 "< else { while(! in.eof()) { End->ReadFile(in); if(End->name[0]=='\0') break; End->next=newStudent; End=End->next; } in.close(); cout<<"\n\t\t读取学生信息成功! "< } } StudentMassage: : ~StudentMassage()//析构函数 { Student*temp; save(); for(temp;Head->next! =End;) { temp=Head->next; Head->next=Head->next->next; deletetemp; } deleteHead,End; } voidStudentMassage: : ShowMenu()//显示菜单 { cout<<"\n\n\t\t\t\t主菜单"< cout<<"\t\t****************************************"< cout<<"\t\t1、增加学生信息2、删除学生信息"< cout<<"\t\t3、修改学生信息4、显示学生信息"< cout<<"\t\t5、信息查询6、排序"< cout<<"\t\t7、成绩统计0、安全退出"< cout<<"\t\t****************************************"< cout<<"\t\t请选择: "; } voidStudentMassage: : Display()//显示学生信息 { 更多精品文档 学习-----好资料 Student*p; cout< for(p=Head->next;p! =End;p=p->next) p->show(); cout<<"\n\n输入任意字符,继续......"; getch(); } voidStudentMassage: : AddItem()//添加学生信息 { End->input(); End->next=newStudent; End=End->next; cout<<"\n\t\t添加成功! "< cout<<"\n输入任意字符,继续......"; getch(); } voidStudentMassage: : Find()//查找函数 { charname[20],id[20]; intx; Student*p=NULL; cout<<"\n\t\t****************************************\n"; cout<<"\t\t\t1、按学生姓名查找"< cout<<"\t\t\t2、按学生学号查找"; cout<<"\n\t\t****************************************\n\n\t\t请选 择: "; cin>>x; switch(x) { case1: //按姓名查找 { cout<<"\n\t\t请输入要查找的学生的姓名: "; cin>>name; if(p=FindItem(name)) { cout< cout<<"\n请输入任意字符,继续......"; getch(); } else { 更多精品文档 学习-----好资料 cout<<"\t\t没有找到该姓名的学生! "< getch(); } }break; case2: //按学号查找 { cout<<"\n\t\t请输入要查找的学生的学号: "; cin>>id; if(p=FindId(id)) { cout< cout<<"\n请输入任意字符,继续......"; getch(); } else { cout<<"\n\t\t没有找到该学号的学生! "< } }break; } } voidStudentMassage: : ModifyItem()//修改学生信息 { charname[20]; Student*p=NULL; cout<<"\n\t\t请输入要修改的学生的姓名: "; cin>>name; if(p=FindItem(name)) { cout<<"\n\t\t已找到该学生,请输入新的信息! "< cout<<"\n\t\t修改成功! "< Display(); } else { cout<<"\n\t\t没有找到! "< cout<<"\n输入任意字符! 继续......."; getch(); 更多精品文档 学习 -----好资料 } } voidStudentMassage: : RemoveItem()// 删除学生信息 { charname[20]; Student*p=NULL,*temp=NULL; cout<<"\n\t\t请输入要删除的学生的姓名: "; cin>>name; if(p=FindItem(name)) { temp=p->next; p->next=p->next->next; deletetemp; cout<<"\n\t\t删除成功! "< Display(); } else { cout<<"\t\t没有找到! "< cout<<"输入任意字符! 继续......"; getch(); } } intStudentMassage: : ListCount()//返回记录的学生总数 { Student*p; intn=0; if(! Head) return0; for(p=Head->next;p! =End;p=p->next) n++; returnn; } intStudentMassage: : Count()//成绩统计 { Student*p; intx,m,n,count=0; if(! Head) { cout<<"\n\t\t没有资料可以统计! "< return0; 更多精品文档 学习-----好资料 } cout<<"\n\t\t****************************************\n"; cout<<"\t\t\t 1 、统计数学成绩"< cout<<"\t\t\t 2 、统计语文成绩"< cout<<"\t\t\t 3 、统计英语成绩"; cout<<"\n\t\t****************************************\n"< "; cin>>x; switch(x) { case1: { cout<<"\n\t\t请输入分数段的起始分数和终止分数: "; cin>>m; cin>>n; for(p=Head;p! =End;p=p->next) if(p->math>=m&&p->math<=n) { count++; if(count==1) cout< } cout<<"\n\t\t数学成绩在"< \n"< cout<<"输入任意字符,继续......."; 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< } 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< } 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\t 1 、按数学成绩排序"< cout<<"\t\t\t 2 、按语文成绩排序"< cout<<
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 最新 C+ 课程设计 报告 学生 成绩管理系统