




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、综合程序课程设计说明书课程设计名称:综合程序课程设计课程设计题目:学生成绩管理系统学院名称:信息工程学院专业:电子信息工程班级:学号:姓名:评分:教师:2017年3月3日1 / 29由每位学生填写、由任教教师保存待查摘要该学生成绩管理系统能够对学生信息进行保存、查询、修改、排序等基本功能,对学生成绩进行了有效且便利的管理。本次是利用计算机中的VC6.0绿色版软件来完成,利用了不同功能模块程序实现所需功能。成绩管理系统让老师和同学甚至家长们更加直观方便的了解到学生们的成绩,给生活带来不少便利,也增加了自身的实践动手能力。关键词:增加删除、修改排序、查询保存、管理系统、成绩查询。目录一、设计要求4
2、1.基本要求42. 提高要求4二、实验内容4三、设计的原理6四、系统组成7五、概要设计81.信息维护82.信息查询83.信息排序:94、大概程序程序流程图9六、 详细设计10七、调试结果与分析121、调试方法与技巧122、调试结果12结论16参考文献16附录17一、设计要求1.基本要求能够准确实现学生成绩管理系统的基本维护、统计、排序已经查询的功能。并且学生信息能以文件的形式进行保存、读取和管理。2. 提高要求尽量增加新的功能模块,使得系统功能更加多样化,在程序中注意格式,排版整齐,记得标上注释,利于理解。二、实验内容学生成绩管理系统现有学生成绩信息,内容如下姓名学号语文数学英语政治张明明01
3、 67 78 82 90李成友02 78 91 88 80张辉灿03 68 82 56 87王露04 56 45 77 67陈东明05 67 38 47 70.请用C编写一系统,实现学生信息管理,软件的入口界面应包括如下几个方面:(一)功能要求:(1)信息维护:要求:学生信息数据要以文件的形式保存,能实现学生信息数据的维护。此模块包括子模块有:增加学生信息、删除学生信息、修改学生信息(2)信息查询:要求:查询时可实现按姓名查询、按学号查询(3)成绩统计:要求:A输入任意的一个课程名(如数学)和一个分数段(如60-70),统计出在此分数段的学生情况。(4)排序:能对用户指定的任意课程名,按成绩升
4、序或降序排列学生数据并显示排序结果(使用表格的形式显示排序后的输出结果)(使用多种方法排序者,加分)(二)其它要求:(1)使用C或C+语言,源程序要有适当的注释,使程序容易阅读(2)采用文本菜单界面(3)学生可增加新功能模块三、设计的原理用数组或链表数据结构完成一个学生成绩管理系统,此系统的具体功能要求如下:(1)信息维护功能1、增加学生信息:输入学生学号、姓名、性别、语文、数学、英语、政治四门课成绩,可插入一个或多个学生信息到当前编辑的班级数据中。2、删除学生信息:可按学号或者姓名删除一个或多个学生信息。3、修改学生信息:可按学号或者姓名修改学生语文、数学、英语、政治四门课任一门及多门科目成
5、绩。4、学生信息每一班存为一个数据文件,数据文件可在程序中编辑和重新保存。5、用户输入学生信息可随时保存数据文件。(2)信息查询功能1、按某一学科分数段查询2、按学号查询学生信息;3、按姓名查询学生信息;(3)排序功能1、按学号输出一个班学生信息:学号、姓名、语文、数学、英语、政治成绩和总成绩到屏幕和文件。2、成绩排名按总成绩或各科成绩排序输出学生信息四、系统组成系统以如下几个模块组成:(一)学生信息增加及修改、删除模块增加学生的信息:学号、姓名、语文、数学、英语、政治四门成绩。当然也可以进行修改和删除。(二)文件保存功能模块可以将学生信息存为一个数据文件。用户输入的学生信息可随时保存数据文件
6、。(三)查询功能模块在此模块里,用户可实现以下操作:1、按某科目分数段查询学生信息;2、按学号查询学生信息;3、按姓名查询学生信息;(四)文件读取功能模块在此模块中,用户可以装入文件中所有学生的信息。(程序中为data.txt文件)(5) 排序模块在此模块中,可以通过学号或者各类科目成绩或总分进行排序。程序开头与结尾需要定义两个类和一主函数,使得程序具备完整性。五、概要设计系统功能可分为三大类:信息维护、信息查询已经信息排序。如下三个系统层次结构图如图所示:文件保存文件读取1.信息维护信息维护信息增加修改信息删除信息图1.1信息维护功能概要图2.信息查询按学号查询信息查询按姓名查询分数段查询成
7、绩统计图1.2信息维护功能概要图排序3.信息排序:按各科成绩排序按总分排序按学号排序图1.3信息排序功能概要图了解大概功能,可以根据这些来确定系统具体分支,可用17分别代表添加、删除、修改、查询、排序、保存、读取。4、大概程序程序流程图开始准备:各类头文件,用类定义主要使用的成员及函数,并且建立构造函数和解析函数构造添加学生函数构造删除学生函数构造查询学生函数构造修改学生函数构造排序学生函数保存读取文件模块程序定义主函数,构造操作界面终止6、 详细设计1、准备工作:首先,导入std命名空间中所有名称,设max为100再准备头文件:#include<iostream>,#includ
8、e<fstream>,#include<string>,#include<stdlib.h>,#include<iomanip>然后,定义两个类student和cla,分别定义了程序中主要使用的成员;建立构造函数和解析函数及声明各类函数。2、构造sadd()添加函数先定义所需的q,name,num,x,y,z,m。用DOS下的清屏命令,再输出给用户的提示语句,用“q=new student(name1,num1,x1,y1,z1,m1);”建立新的student。利用链表判断输入的学号是否与头结点或后面的结点数据相同,若不同则用“stu=q;”增
9、加学生信息。3、构造sremove()删除函数准备工作如上(2)一样,用while()函数找出要删除的学生信息对应结点,若找到则删除,在删除之前要确定是否删除:“cout<<"确定删除吗?Y/N"<<endl;”这里用if语句判断用户回答是“Y”还是“N”。删除时也要分是删除第一个结点还是后续结点。补缺后用delete删除p1。4、构造samend()修改函数大体和3一样,修改前的准备,确定要修改的结点,最后用cin直接修改。5、构造ssearch()查询函数查询函数有多个分支,这里都用选择语句case来对不同的情况进行编程。在这里只需逻辑清晰,语法
10、没有错误就能完成,但也要注意括号的搭配和break的使用。在用for语句时要注意循环次数不能过大,应对应学生的人数。6、构造staxis()排序函数用case语句使输入的17数字分别对应函数pxh()(学号排序)、psx()(数学)、pyw()(语文)、pyy()(英语)、pAA()(总分)、返回、pzz()(政治)。这些排序函数定义内容几乎一样。首先用for语句判断n(信息条数)为多少,如果头结点大于第二个的头结点则交换,再判断中间的结点大小则交换,最后依次重复。7、构造ssave()函数sload()函数(保存与读取)在这里注意链表要求即可。8、定义主函数产生操作界面也用case语句使18
11、代表不同功能。(详见附录)七、调试结果与分析1、调试方法与技巧代码完成后,保存代码并尝试运行程序,启动调试。往往会出现以下几种常见错误。1case语句中内容重复,没有用一函数替代,使程序过为繁琐。2括号没有匹配;3循环体的逻辑错误;4 case语句中缺少了break,没有跳出循环。5错误使用了for语句,造成已经出现结果后(链表为空)依旧继续运行,造成问题,无法继续使用该系统。2、调试结果1、学生信息的添加、删除、修改。 图2.1.1删除 图2.1.2添加学生信息图2.1.3修改学生信息图2.1.4此时文件的内容2、 按姓名查询。 图2.2.13.按学号查询。 图2.3.14、按成绩查询。图2
12、.4.15、成绩排序。 图2.5.1学号排序 图2.5.2单科(数学)成绩排序 图2.5.3总分排序6、保存: 图2.6.17、读取: 图2.7.18、退出:图2.8.1结论虽然过程有些磕磕绊绊,但最后成绩管理系统终于成功了。该系统能够为大家带来极大的便利,便于以后成绩的有效管理。以后大家像成绩排序,找出某个科目及格的学生也容易很多。该系统虽具有基本的功能,但还是存在一些不足。例如增加删除学生信息时不能在界面上自动呈现增加或者删除的结果,需要操作者手动打开文件或者通过排序来间接查看结果。这次课设让大家学到了很多书本外的知识,锻炼了实践操作的能力。不仅熟悉了VC6软件,也让大家知道,纸上谈兵远远
13、没有自己动手体验来的深刻。参考文献1.黄维通,贾续涵、Visual C+面对对象与可视化程序设计(第三版)、清华大学出版社、2011年06月版2.谭浩强、C语言程序设计(第四版)、清华大学出版社、2010年06月版附录#include<iostream>#include<fstream>#include<string>#include<stdlib.h>#include<iomanip>/用于程序的暂停属于c的运用方法using namespace std;/导入std命名空间中所有名称。#define max 100;/设max为1
14、00class student/定义类student定义了程序中主要使用的成员public:student*next;/定义next指针public:string name;/姓名long num;/学号int x,y,z,m;int low,high;/数学,语文,英语,政治int AA;/总分void play()cout<<name<<"学生的学号是"<<num<<",数学:"<<x<<",语文:"<<y<<",英语:&qu
15、ot;<<z<<",政治:"<<m<<",总分:"<<AA<<endl;student(string sname,long snum,int sx,int sy,int sz,int sm)name=sname;num=snum;x=sx;y=sy;z=sz;m=sm;class cla/定义类2包括建立构造函数和解析函数public:cla()/构造函数stu=0;sload();cla()/析构函数student*p;p=stu;while(p)p=p->next;dele
16、te stu;stu=p;stu=0;/这一部分是对函数的声明void sadd();/添加void sremove();/删除void samend();/修改void ssearch();/查询void staxis();/排序void ssave();/保存void sload();/读取/排序函数的声明void pxh();void psx();void pyw();void pyy();void pzz();void pAA();/共有5个排序函数private:student*stu;/头接点;void cla:sadd()/此处构造了添加学生函数student*q;string
17、name1;long num1;int x1,y1,z1,m1;system("cls");/调用DOS下的的清屏命令“cls”cout<<"n*增加的学生*n"<<endl;cout<<"请输入学生的(中间用空格间隔)"<<endl;cout<<"姓名学号数学成绩语文成绩英语政治成绩:"<<endl;cin>>name1>>num1>>x1>>y1>>z1>>m1;q=n
18、ew student(name1,num1,x1,y1,z1,m1);q->next=0;q->AA=x1+y1+z1+m1;if(stu)student*t;t=stu;if(t->num=num1)cout<<"学号已存在,请重新输入"<<endl;return;while(t->next)if(t->num=num1)cout<<"学号已存在,请重新输入"<<endl;return;t=t->next;t->next=q;elsestu=q;cout<&
19、lt;"输入完毕"<<endl;void cla:sremove()/删除system("cls");int num1;cout<<"n*删除学生信息*n"cout<<"请输入想要删除学生的学号:"cin>>num1;/查找要删除的结点student*p1,*p2;p1=stu;while(p1)if(p1->num=num1)break;elsep2=p1;p1=p1->next;/删除结点if(p1!=NULL)/若找到结点,则删除p1->pla
20、y();cout<<"确定删除吗?Y/N"<<endl;char c;cin>>c;if(toupper(c)!='Y')return;if(p1=stu)/若要删除的结点是第一个结点stu=p1->next;/将第二个结点往上推,成为头结点。delete p1;else/若要删除的结点是后续结点p2->next=p1->next;/补缺delete p1;cout<<"找到学号为"<<num1<<"的学生,并删除n"else/未
21、找到结点cout<<"未找到想要删除的学生!n"void cla:samend()/修改system("cls");long num1;cout<<"n*修改学生信息*n"cout<<"输入要修改学生的学号"cin>>num1;/查找要修改的结点student*p1,*p2;p1=stu;while(p1)if(p1->num=num1)break;elsep2=p1;p1=p1->next;if(p1!=NULL)cout<<"学号
22、是"<<num1<<"的学生的信息"<<endl;cout<<"姓名"<<p1->name<<"数学"<<p1->x<<"语文"<<p1->y<<"英语"<<p1->z<<"政治"<<p1->m<<endl;cout<<"请输入修改后的信息:姓名数学
23、成绩语文成绩英语政治成绩"<<endl;cin>>p1->name>>p1->x>>p1->y>>p1->z>>p1->m;p1->AA=p1->x+p1->y+p1->z+p1->m;/求总分cout<<"修改成功"<<endl;else/未找到接点cout<<"未找到!"<<endl;void cla:ssearch()/查询system("cls&qu
24、ot;);cout<<"n*查询学生信息*n"<<endl;cout<<"请输入查询方式:"<<endl;cout<<"1.按学号查询"<<endl;cout<<"2.按姓名查询"<<endl;cout<<"0.按科目分数段查询"<<endl;cout<<"3.返回"<<endl;char c;cin>>c;switch(
25、c)/通过switch语句来选择排序函数case'0':int x,y,z,m;long num;char w;int high,low;cout<<"输入要查找成绩科目代表的数字(数语英政分别为ad):"<<w<<endl;cin>>w;/查找要查询的结点cout<<"最低分为:"<<endl;cin>>low;cout<<"最高分为:"<<endl;cin>>high;student*p1,*p2
26、;p1=stu;switch(w)case'a':cout<<"数学成绩在"<<low<<"-"<<high<<"分数段的学生为:"<<endl;while(p1!=NULL)if(p1->x>=low&&p1->x<=high)cout<<"姓名:"<<p1->name<<"数学:"<<p1->x<&l
27、t;"语文:"<<p1->y<<"英语:"<<p1->z<<"政治:"<<p1->m<<endl;p2=p1;p1=p1->next;cout<<"查询完毕n"break;case'b':cout<<"语文成绩在"<<low<<"-"<<high<<"分数段的学生为:"<
28、;<endl;while(p1!=NULL)if(p1->y>=low&&p1->y<=high)cout<<"姓名:"<<p1->name<<"数学:"<<p1->x<<"语文:"<<p1->y<<"英语:"<<p1->z<<"政治:"<<p1->m<<endl;p2=p1;p1=p1-&
29、gt;next;cout<<"查询完毕n"break;case'c':cout<<"英语成绩在"<<low<<"-"<<high<<"分数段的学生为:"<<endl;while(p1!=NULL)if(p1->z>=low&&p1->z<=high)cout<<"姓名:"<<p1->name<<"数学:&q
30、uot;<<p1->x<<"语文:"<<p1->y<<"英语:"<<p1->z<<"政治:"<<p1->m<<endl;p2=p1;p1=p1->next;cout<<"查询完毕n"break;case'd':cout<<"政治成绩在"<<low<<"-"<<high<&
31、lt;"分数段的学生为:"<<endl;while(p1!=NULL)if(p1->m>=low&&p1->m<=high)cout<<"姓名:"<<p1->name<<"数学:"<<p1->x<<"语文:"<<p1->y<<"英语:"<<p1->z<<"政治:"<<p1->m
32、<<endl;p2=p1;p1=p1->next;cout<<"查询完毕n"break;break;case'1':long num1;cout<<"要查询的学号"<<endl;cin>>num1;/查找要查询的结点student*p1,*p2;p1=stu;while(p1)if(p1->num=num1)break;elsep2=p1;p1=p1->next;if(p1!=NULL)cout<<"学号是"<<num
33、1<<"的学生的信息"<<endl;cout<<"姓名:"<<p1->name<<"数学:"<<p1->x<<"语文:"<<p1->y<<"英语:"<<p1->z<<"政治:"<<p1->m<<endl;cout<<"查询完毕."else/未找到接点cout&l
34、t;<"未找到!n"/break;break;case'2':string name1;cout<<"要查询的学生姓名"<<endl;cin>>name1;/查找要查询的结点student*p1,*p2;p1=stu;while(p1)if(p1->name=name1)break;elsep2=p1;p1=p1->next;if(p1!=NULL)cout<<name1<<"的学生的信息"<<endl;cout<<&
35、quot;学号:"<<p1->num<<"数学:"<<p1->x<<"语文:"<<p1->y<<"英语:"<<p1->z<<"政治"<<p1->m<<endl;cout<<"查询完毕."else/未找到接点cout<<"未找到!n"break;case'3':return;voi
36、d cla:pxh()/按学号排序函数的定义student*p1,*p2;int n;p1=stu;n=1;while(p1->next)/p1->next!=0n+;p1=p1->next;cout<<"共有"<<n<<"条信息."<<endl;int i;p1=stu;for(i=1;i<n;i+)p1=stu;if(p1->num>p1->next->num)/如果头结点大于第二个的p2=p1->next;p1->next=p1->ne
37、xt->next;p2->next=p1;/头结点交换stu=p2;/下一个学生p1=stu;/交换while(p1->next->next)/中间的交换p2=p1;p1=p1->next;if(p1->num>p1->next->num)p2->next=p1->next;p1->next=p1->next->next;p2->next->next=p1;p1=p2->next;/交换p1=stu;dop1->play();p1=p1->next;while(p1);void c
38、la:psx()/按数学成绩排序函数的定义student*p1,*p2;int n;p1=stu;n=1;while(p1->next)n+;p1=p1->next;cout<<"共有"<<n<<"条信息."<<endl;int i;p1=stu;for(i=1;i<n;i+)p1=stu;if(p1->x>p1->next->x)/如果头结点大于第二个的p2=p1->next;p1->next=p1->next->next;p2->n
39、ext=p1;/头结点交换stu=p2;p1=stu;while(p1->next->next)/中间的交换p2=p1;p1=p1->next;if(p1->x>p1->next->x)p2->next=p1->next;p1->next=p1->next->next;p2->next->next=p1;p1=p2->next;/交换p1=stu;dop1->play();p1=p1->next;while(p1);void cla:pyw()/按语文成绩排序函数的定义student*p1,*
40、p2;int n;p1=stu;n=1;while(p1->next)n+;p1=p1->next;cout<<"共有"<<n<<"条信息."<<endl;int i;p1=stu;for(i=1;i<n;i+)p1=stu;if(p1->y>p1->next->y)/如果头结点大于第二个的p2=p1->next;p1->next=p1->next->next;p2->next=p1;/头结点交换stu=p2;p1=stu;while(
41、p1->next->next)/中间的交换p2=p1;p1=p1->next;if(p1->y>p1->next->y)p2->next=p1->next;p1->next=p1->next->next;p2->next->next=p1;p1=p2->next;/交换p1=stu;dop1->play();p1=p1->next;while(p1);void cla:pyy()/按英语成绩排序函数的定义student*p1,*p2;int n;p1=stu;n=1;while(p1->
42、next)n+;p1=p1->next;cout<<"共有"<<n<<"条信息."<<endl;int i;p1=stu;for(i=1;i<n;i+)p1=stu;if(p1->z>p1->next->z)/如果头结点大于第二个的p2=p1->next;p1->next=p1->next->next;p2->next=p1;/头结点交换stu=p2;p1=stu;while(p1->next->next)/中间的交换p2=p1;
43、p1=p1->next;if(p1->z>p1->next->z)p2->next=p1->next;p1->next=p1->next->next;p2->next->next=p1;p1=p2->next;/交换p1=stu;dop1->play();p1=p1->next;while(p1);void cla:pzz()/按政治成绩排序函数的定义student*p1,*p2;int n;p1=stu;n=1;while(p1->next)n+;p1=p1->next;cout<&l
44、t;"共有"<<n<<"条信息."<<endl;int i;p1=stu;for(i=1;i<n;i+)p1=stu;if(p1->m>p1->next->m)/如果头结点大于第二个的p2=p1->next;p1->next=p1->next->next;p2->next=p1;/头结点交换stu=p2;p1=stu;while(p1->next->next)/中间的交换p2=p1;p1=p1->next;if(p1->y>p1-
45、>next->y)p2->next=p1->next;p1->next=p1->next->next;p2->next->next=p1;p1=p2->next;/交换p1=stu;dop1->play();p1=p1->next;while(p1);void cla:pAA()/按总分排序的定义student*p1,*p2;int n;p1=stu;n=1;while(p1->next)n+;p1=p1->next;cout<<"共有"<<n<<&quo
46、t;条信息."<<endl;int i;p1=stu;for(i=1;i<n;i+)p1=stu;if(p1->AA>p1->next->AA)/如果头结点大于第二个的p2=p1->next;p1->next=p1->next->next;p2->next=p1;/头结点交换stu=p2;p1=stu;while(p1->next->next)/中间的交换p2=p1;p1=p1->next;if(p1->AA>p1->next->AA)p2->next=p1->
47、;next;p1->next=p1->next->next;p2->next->next=p1;p1=p2->next;/交换p1=stu;dop1->play();p1=p1->next;while(p1);void cla:staxis()/排序函数的选择system("cls");char c;cout<<"请选择以何种方式排序:"<<endl;cout<<"1以学号排序"<<endl;cout<<"2以数学成绩
48、排序"<<endl;cout<<"3以语文成绩排序"<<endl;cout<<"4以英语成绩排序"<<endl;cout<<"5以总分排序"<<endl;cout<<"6返回"<<endl;cout<<"请选择(1-7)"<<endl;cout<<"7以政治成绩排序"<<endl;cin>>c;swi
49、tch(c)case'1':cla:pxh();break;/通过数据c来选择不同的排序函数case'2':cla:psx();break;case'3':cla:pyw();break;case'4':pyy();break;case'5':cla:pAA();break;case'7':cla:pzz();break;case'6':return;void cla:ssave()/保存到文件system("cls");char c;cout<<"n保存学生信息,是否继续?Y/N:"cin>>c;if(toupper(c)!='Y')return;ofstream tfile("date.txt",ios_base:binary);student*p=stu;while(p)/写入文件tfile<<p->name<<"t"<<p->num<<"t"<<p->x<
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 工业园区生态修复与环保设施建设合同
- 碳中和产业园区共建与运营合作协议
- 网络直播数字调音台扩展卡租赁及品牌推广合作协议
- 网络新闻用户数据保密协议
- 小红书平台合作人权益保护与营销支持服务协议
- 医疗机构中患者隐私与知情权平衡协议
- 互联网企业版权保护与知识产权代理合同
- 航空器部件制造与检测技术服务合同
- 抖音短视频内容创作者权益保护与收益分配协议
- 中老铁路物流运输车辆排放达标与环保治理合作协议
- 战略管理:概念与案例
- 生活垃圾分类智慧树知到答案章节测试2023年上海电机学院
- 幕墙岩棉防水透气膜施工质量措施图
- 预算管理系统说明书
- GB/T 9113-2010整体钢制管法兰
- GB/T 2951.12-2008电缆和光缆绝缘和护套材料通用试验方法第12部分:通用试验方法-热老化试验方法
- GB/T 15108-2017原糖
- GB/T 15089-2001机动车辆及挂车分类
- 初中语文人教八年级上册《作文训练之细节描写》PPT
- 增值税转型改革及增值税条例课件
- 挖掘机司机技能理论考试题库大全(600题版)
评论
0/150
提交评论