C学生成绩管理系统完整.docx
- 文档编号:30594344
- 上传时间:2023-08-18
- 格式:DOCX
- 页数:36
- 大小:920.27KB
C学生成绩管理系统完整.docx
《C学生成绩管理系统完整.docx》由会员分享,可在线阅读,更多相关《C学生成绩管理系统完整.docx(36页珍藏版)》请在冰豆网上搜索。
C学生成绩管理系统完整
ThelatestrevisiononNovember22,2020
C学生成绩管理系统完整
课程设计说明书
本科毕业设计
(
题目:
学生成绩管理系统(教师端)
学生姓名:
陈
学院:
工学院
专业:
数字媒体技术
班级:
2013级
指导教师:
二〇一四年十一月
一、设计题目(问题)描述和要求
设计目的:
为方便对学生成绩进行高效的管理,编写该程序以提高学生成绩管理效率。
使用该程序之后,学校管理者可以查询某位学生、某个科目的成绩情况,还可以对学生成绩进行排名,对学生的数据进行修改和删除,其中排名以按总分排名,并且还提供了多种浏览方式,查询结果包括各个科目的分数、总分。
通过本系统可以很好的掌握学生成绩的分布,减轻管理人员的负担,也使学生的成绩和信息长时期的保留。
问题描述:
编写一个简单的学生成绩管理系统。
学生成绩管理系统有若干学生成绩记录组成,每个记录由学号、姓名、性别、年级、班级、三个科目成绩、总分、总排名、各科目排名几个部分组成,学号不超过5个字符,姓名不超过3个字符,成绩为int型数据。
该系统具有以下功能:
程序开始执行时显示如下版权信息和主菜单:
*******学生成绩管理系统*************
学生信息
*1.登记
*2.编辑
*3.顺序
4.删除
浏览
*5全部
*6个人
*7考试
*8专业
*9指定
系统设置
10默认
0.退出
************************************
请输入(0~8):
通过键盘输入数字0~10后,程序能够执行相应的功能,执行完后回到上述主菜单继续等待用户输入,输入数字0后退出程序。
(1)选择“登记”后,输入学生个数。
按程序提示输入学号、姓名、性别、年级、班级、三个科目成绩、总分、总排名、各科目排名。
(2)选择“编辑”,按提示输入要删除的学生的学号,输入学号,若改学号存在,则编辑相应的学生记录,如果该学号不存在,返回主菜单
(3)选择“顺序”后,会显示从成绩高到低还是相反。
该操作会改变程序中链表的连接顺序,因此浏览时候显示也是顺序改变后的链表顺序输出。
(4)
(5)选择“全部”,系统会按照年级显示全部学生其成绩。
(6)选择“个人”,系统会提示输入学生姓名或者学号进行寻找并显示。
(7)选择“考试”,会按照每一年级的每一次考试显示成绩。
(8)选择“专业”,会按照专业进行成绩输出。
(9)选择“指定”,里面还有八种显示方式:
分数段、排名、学期、班级、大一至大四,可以按照其进行浏览。
(10)进行系统相关的设置,如是否显示欢迎窗口,是否自动读取信息或是手动、是否浏览显示全部等
(0)退出操作。
二、系统分析与模块设计
《学生成绩管理系统》结构图
三、系统设计
1.系统总体框架
《学生成绩管理系统》流程图
2.系统关键算法流程图
(1).系统包含的类库
#include
#include
#include
#include
#include<>
#include<>
(2).主函数
(3)student类的设计与分析
classstudent/*定义学生成绩类*/
{
private:
Score*sco;
stringname;
stringpro;
anage类的设计与分析
classList{
intset[SET];
Student*stu;
public:
core类
名称
属性
说明
Score()
构造函数
无参构造函数
Score(int*sc)
构造函数
只含成绩构造函数
Score(int*sc,int*or,intCon)
构造函数
含全部信息构造函数
ReturnConScore()
成员函数
返回总分数
(6).输入学生资料模块:
主要功能用来对学生的成绩进行收集和输入。
在学生信息保存在系统中的前提下,输入要输入的人数,成绩录入需要输入学生资料,比如学号,姓名。
在准确输入学生资料后,就可以对该学生的各科成绩进行录入。
该学生各科成绩输入成功后,输入下一个学生资料时会先判断是否学号是否与之前的学生相同,如果相同,则显示提示信息,不同则继续输入
(6)输出学生资料模块:
主要功能用来对学生的成绩进行输出。
在系统已经录入了学生资料成绩的前提下,使用该功能可以显示所有学生的信息,资料等等。
具体包括学生的学号,姓名和各科成绩。
在查看学生的资料,成绩各方面的信息后,按任意键就可以返回到主菜单
(5)查找并显示学生资料模块
主要功能是用来查找学生资料。
在系统保存了某学生资料的前提下,想要查找该学生资料,可以输入该学生姓名,这样系统就会显示该学生资料和各科成绩等信息
(6)按学号查找,修改学生资料模块
主要功能是用来修改学生资料。
在系统保存了某学生资料的前提下,想要查找该学生资料,可以输入该学生学号,系统就会显示该学生资料和各科成绩等信息,这样就可以修改该学生的资料,成绩等信息。
(7)按学号查找,删除该学生资料模块
主要功能是用来删除学生资料。
在系统保存学生资料的前提下,想删除某学生的资料,可以输入学生学号,系统查找该学生资料后,就可以删除了。
由于学生辍学,毕业等原因,及时对系统进行更新,删除一些没用的信息,可以使系统更加优化
(8)按学生成绩总分进行排列模块
主要功能是用来对学生的资料按总分进行排序。
在系统保存学生资料,成绩的前提下,使用此功能可以对学生的资料按总分进行排序,这样就方便查找成绩相同或是相近的同学的资料。
(9)储存学生资料并退出系统模块
主要功能是用来储存学生资料。
在对系统进行一系列操作,比如添加、删除、修改学生资料后,对系统的最新操作进行保存,及时更新系统,方便下一次的操作。
四、运行结果
1.开始界面
2.输入数据
3.搜索数据
4.删除
5.修改数据
7.显示数据
8.系统设置
五、小结
这个程序经过了暑假开始到十月份的修改编辑,要感谢老师及同学的指导,另外程序本身更适合学生数量不是特别多的情况下,加入学生有上千上万个,那么应该在添加几个类,在学生类之上的类,这样才可以大大方便了各种操作以及浏览等。
六、参考资料
《C++程序设计教程》
CSDN程序员社区
代码:
/*
*学生成绩管理系统
*类:
StudentScoreManage
*可保存学科:
语文数学英语
*时间段:
大一至大四
*说明:
该程序针对学生数较少的情况,假如面对上千上万的学生数,应该再将其中的存储结构进行改变,
*分别分层次存储,例如大一至大四四个链表表头,在每一个链表中又根据不同分类依据细分,
*例如根据学院、专业等,这样的改变将大大有利于程序进行的寻找、输出、排序等涉及链表的操作,
*当然相应代码也要稍作改变
*/
#include
#include
#include
#include
#include
#include<>
#include<>
#include
usingnamespacestd;
#defineCONOBJ3参数时的构造函数
Student(stringiname="Noname",stringipro="none",inticlass=0,intigrade=0,stringinum="0",charisex='n')
:
name(iname),num(inum),sex(isex),next(NULL),pro(ipro),clas(iclass),grade(igrade){
sco=NULL;
cout<<"\t\t\t\t★成功添加学生"< return; }于添加无输入成绩的构造函数 Student(stringiname,stringipro,inticlas,intigrade,stringinum,charisex,int*score) : name(iname),pro(ipro),clas(iclas),grade(igrade),num(inum),sex(isex),next(NULL){ sco=newScore(score); cout<<"\t\t\t\t★成功添加学生"< }于添加有成绩的构造函数 Student(stringiname,stringipro,inticlas,intigrade,stringinum,charisex,int*score,intconor,int*order) : name(iname),pro(ipro),clas(iclas),grade(igrade),num(inum),sex(isex),next(NULL){ sco=newScore(score,order,conor); }于从文件读入时候的构造函数 intCountOfScore();学院▏\n"; cout<<"\t\t▕▔▔▔▔▔▔▔▔▔▔▔▏\n"; cout<<"\t\t▕2.理学院▏\n"; cout<<"\t\t▕▔▔▔▔▔▔▔▔▔▔▔▏\n"; cout<<"\t\t▕3.医学院▏\n"; cout<<"\t\t▕▔▔▔▔▔▔▔▔▔▔▔▏\n"; cout<<"\t\t▕4.农学院▏\n"; cout<<"\t\t▕▔▔▔▔▔▔▔▔▔▔▔▏\n"; cout<<"\t\t▕5.经管学院▏\n"; cout<<"\t\t▕▔▔▔▔▔▔▔▔▔▔▔▏\n"; cout<<"\t\t▕0.退出选择▏\n"; cout<<"\t\t▔▔▔▔▔▔▔▔▔▔▔\n"; do{ cout<<"\t\t请输入相应学院代号: "; cin>>kh; }while(! (kh>=0&&kh<6)); cout<<"\t*********************\n"; switch(kh) { case1: cout<<"\t*11.数字媒体技术\n"; cout<<"\t*12.土木工程\n"; cout<<"\t*13.建筑学\n"; cout<<"\t*14.化学工程工艺\n";break; case2: cout<<"\t*21.化学系\n"; cout<<"\t*22.地理工程\n"; cout<<"\t*23.环境工程\n";break; case3: cout<<"\t*31.临床医学\n"; cout<<"\t*32.麻醉学\n"; cout<<"\t*33.影像学\n";break; case4: cout<<"\t*41.院农业机械\n"; cout<<"\t*42.水产养殖\n";break; case5: cout<<"\t*51.经济学\n"; cout<<"\t*52.国际经济贸易\n"; cout<<"\t*53.金融学\n";break; } intch; cout<<"\t*0.返回\n"; cout<<"\t***********************\n"; do{ cout<<"\t请输入相应专业代号: "; cin>>ch; if(ch==0){ i=OfProfe(); returni; } }while(! ((ch%10>0&&ch%10<4&&ch! =43&&ch/10==kh)||(ch==14&&ch/10==kh))); cout<<"\t***********************\n"; switch(ch) { case11: i="数字媒体技术";break; case12: i="土木工程";break; case13: i="建筑学";break; case14: i="化学工程工艺";break; case21: i="化学系";break; case22: i="地理工程";break; case23: i="环境工程";break; case31: i="临床医学";break; case32: i="麻醉学";break; case33: i="影像学";break; case41: i="农业机械";break; case42: i="水产养殖";break; case51: i="经济学";break; case52: i="国际经济贸易";break; case53: i="金融学";break; default: cout<<"\t输入错误。 "; } intjudge=1; cout<<"\t已经选择\""< (1)否(0)\n\t**********"; cout<<"\n\t请选择: "; cin>>judge; while(! judge){ i=OfProfe(); } returni; } ..]\n"; legal=0; count++; } if(! (iclas>=1&&iclas<=99)){ cout< 班级输入不合法,请输入1~99\n"; legal=0; count++; } if(isex! ='w'&&isex! ='m'){ cout< 请输入正确性别,男生--m,女生--w\n"; legal=0; count++; } if()>2){ cout< 姓名输入不宜过长\n"; legal=0; } if(count==1) cout<<"\t\t\t输入合法\n\n"; returnlegal; }n"<<"请输入学号: "; cin>>inum; p=stu; while(p)数段▏2.排名▏3.学期▏4.班级▏\n"; cout<<"\t\t▕▏▏▏▏\n"; cout<<"\t\t▕5.大一▏6.大二▏7.大三▏8.大四▏\n"; cout<<"\t\t▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔\n"; cout<<"\t\t输入选项: "; cin>>i; switch(i) { case1: SkimByScore();break; case2: SkimByPlace();break; case3: SkimByTerms();break; case4: SkimClas();break; case5: SkimByGrade (1);break; case6: SkimByGrade (2);break; case7: SkimByGrade(3);break; case8: SkimByGrade(4);break; default: break; } cout<<"\n\t\t\t\t按任意键返回----->"; getch(); return; }选删除2.一键清空3.返回主菜单\n"<<"\t*************************************************************"<<"\t\t\t\t\t选择方式: "; cin>>flag; if(flag=='1') { SkimAll(); cout<<"\t\t\t\t请输入要删除的学生学号: "; cin>>inum; cout<<"\t\t\t\t确认删除(Y/N): "; cin>>c; if(c=='Y'||c=='y') while(p) { if(p->num==inum) { if(prev! =NULL) prev->next=p->next; else-->大2.大-->小"; cout<<"\n\t\t\t***********************************\n"; cout<<"\t\t\t请选择排序方式: "; cin>>judge; ph=h; while(h! =NULL) { 初假设min值未改变,h节点所有节点中的值最小的节点,直接使hh替代h节点,作为一个新的开头 { 果最小节点不是头节点h的后驱节点的话,即等同于h不是pp的父节点 就把头节点h和最小数值节点兑换 */ if(h! =ppr) { /* 方法: 交换节点h和pp 用到两个的节点的先驱节点ph和ppr */ temp=h->next; ppr->next=h; h->next=pp->next; pp->next=temp; h=pp; if(flag==1) { hh=h; flag=0; } else ph->next=h; } else { /* 2 (2).如果最小节点p是头节点h的后驱节点的话 调换两个节点 */ h->next=pp->next; pp->next=h; h=pp;/* *之所以要调换h节点和pp节点位置,是为了让外层while循环每次都能从当前的已经 *排序完的链表中的最后一个元素开始进行遍历找最值 */ if(flag==1) { hh=h; flag=0; } else ph->next=pp; } } ph=h;陆设置\n"); printf("\t\t\t\t2.显示欢迎窗口\n"); printf("\t\t\t\t3.自动读取信息\n"); printf("\t\t\t\t4.浏览设置\n"); printf("\t\t\t\t0.返回\n"); printf("\t\t\t\t*****************\n"); printf("\t\t\t请选择: "); scanf("%d",&choice); system("CLS"); switch(choice) { case1: printf("\t\t\t\t登陆设置\n\t\t**********************************************"); printf("\t\t1.是2.否\n\t\t**********************************************请选择: "); scanf("%d",&set[2]);break; case2: printf("\t\t\t显示欢迎窗口\n\t\t\t*******************"); printf("\n\t\t\t1.是2.否\n\t\t\t*******************\t请选择: "); scanf("%d",&set[1]);break; case3: printf("\t\t\t\t自动读取信息\n\t\t**********************************************"); printf("\n\t\t1.是2.否3.现在读取\n\t\t**********************************************请选择: "); scanf("%d",&set[2]); if(set[2]==3){ Read(); set[2]=temp_set2; } break; case4: printf("\t\t\t\t浏览设置\n\t\t**********************************************"); printf("\t\t\n\t\t**********************************************请选择: "); scanf("%d",&set[3]);break; case0: SaveSet(); return; default: break; } system("CLS"); } }记▏\n"; cout<<"\t\t\t▕▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▏\n"; cout<<"\t\t\t▕★2.编辑▏\n"; cout<<"\t\t\t▕▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▏\n"; cout<<"\t\t\t▕学3.顺序▏\n"; cout<<"\t\t\t▕▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▏\n"; cout<<"\t\t\t▕生4.删除▏\n"; cout<<"\t\t\t▕▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▏\n"; cout<<"\t\t\t▕成5.比较▏\n"; cout<<"\t\t\t▕▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▏\n"; cout<<"\t\t\t▕绩****浏览方式▏\n"; cout<<"\t\t\t▕▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▏\n"; cout<<"\t\t\t▕管6.全部▏\n"; cout<<"\t\t\t▕▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▏\n"; cout<<"\t\t\t▕理7.个人▏\n"; cout<<"\t\t\t▕▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▏\n"; cout<<"\t\t\t▕系8.考试▏\n"; cout<<"\t\t\t▕▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▏\n"; cout<<"\t\
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 成绩管理系统 完整
![提示](https://static.bdocx.com/images/bang_tan.gif)