学生成绩管理系统课程设计.docx
- 文档编号:25216728
- 上传时间:2023-06-06
- 格式:DOCX
- 页数:24
- 大小:288.71KB
学生成绩管理系统课程设计.docx
《学生成绩管理系统课程设计.docx》由会员分享,可在线阅读,更多相关《学生成绩管理系统课程设计.docx(24页珍藏版)》请在冰豆网上搜索。
学生成绩管理系统课程设计
《面向对象语言程序设计》
课程设计报告
设计题目:
学生成绩管理系统课程设计
专业:
数学与应用数学
班级学号:
0909401-13
姓名:
童源
指导教师:
秦姣华
成绩:
2010年12月25日
目录
一、实验目的................................................3
二、实验要求................................................3
三、程序功能................................................3
(1)功能分析说明图.......................................3
(2)各项功能的说明.......................................4
四、程序内容................................................5
(1)软件设计工具.........................................5
(2)软件模块的分块.......................................5
(3)程序的流程图.........................................6
五、程序设计的主要原理......................................7
六、程序设计的主要过程......................................8
(1)各软件模块之间的调用方式.............................8
(2)软件中实现各功能的函数与程序代码.....................8
七、运行的结果和分析.......................................15
八、心得体会...............................................17
九、参考文献...............................................17
2010年12月25日
一、实验目的。
该软件主要是实现对学生成绩进行系统化的管理,首先该程序用文件流的形式对学生基本信息进行输入输出,主要功能可增加学生的相关信息,然后可以删除和更改学生信息,还有就是可按学号和姓名查询此学生的相关信息,还可统计任意课程在某一分数段的学生情况,也可对用户指定的课程进行成绩排名,并显示。
由此来系统化管理学生信息,并达到简易操作的目的。
二、实验的要求。
(1)用文件和类的方式管理学生成绩数据。
(2)能进行数据记录的增加和删除。
(3)能进行数据记录的显示、查找和排序。
(4)应用程序的文本界面设计美观、简洁。
(5)有简要的应用程序项目开发文档。
三、程序的功能。
(1)功能分析说明图
该软件功能分析说明图如图1-1所示:
学生成绩管理系统
1.输入学生成绩
2.显示学生成绩
3.排序学生成绩
4.查找学生成绩
5.增加学生成绩
6.删除学生成绩
7.安全退出系统
图:
1-1
实际软件效果如下图:
图1—2
(2)各项功能说明
它的主要功能是对学生的成绩进行修改和管理,而且方便快速,这个程序虽然简单,但是可以作为老师的辅助软件,对学生的各种成绩进行管理。
(1)输入学生基本信息:
这部分的功能主要包括信息的录入,首先按程序提示分别输入相关信息包括准考证号(八位数)、姓名、性别,以及学生各科成绩(英语,数学,物理,C语言)等。
注意:
在姓名处键以!
结束输入。
(2)增加学生信息:
此功能是对原录入的学生信息,根据提示输入准考证号,如果指令不对则给出提示,要求重新输入或返回主菜单,并输出到文件中。
(3)删除学生信息:
进入该项功能界面后,根据提示输入学号,如果学号不存在则给出提示,如果指令错误,也给出提示。
(4)查找学生信息:
此项功能可以使用户根据提示选择输入的学生学号查出该学生的信息,也可选择根据输入的学生姓名查出该学生的信息,如果不存在该同学系统会给出提示。
(5)学生成绩的排序:
选择次项功能后,可选择按何课程成绩进行排序,选择后在屏幕上显示出排序后的学生姓名,成绩,排名,全班单科平均成绩和参加考试人数。
(7)退出系统。
该出是否退出的提示,给用户友好的界面。
四、程序的内容。
(1)软件设计工具
该系统我采用了Dev—C++作为编译工具,如下图示
图2—2.1.1
(2)系统模块的划分
定义一个学生考试信息的结构体
定义学生类
建立链表函数
定义output()函数将考生的信息从头指针所指内容开始输出
统计学生人数的函数
插入学生的成绩的函数
建立删除函数
查找函数
定义paixu()函数将考生的总分从大到小排列并输出
求各科平均分成绩的函数
读取函数的实现
主函数
(3)实验流程图
五、程序设计的主要原理。
该程序采用的是面向对象的思想来处理学生的所有基本信息,通过类来实现程序的功能,
如下所述:
1)包含的库函数有:
#include
#include
#include
#include
#include
2)包含的类:
classInformation
3)包含的结构体:
structstudent
六、程序设计的主要过程。
(1)各软件模块之间的调用方式
程序中用类分开各个模块,通过函数之间的调用实现各个模块。
首先使用主函数声明一个Menu类,通过Menu类调用其公有函数。
(2)软件中实现各项功能的函数与程序代码
1)定义一个学生考试信息的结构体:
structstudent
{
charname[Q];
charsex[Q];
longintid;
intscore[4];
inttotal;
structstudent*next;
};
2)学生类:
classInformation
{
public:
Information();
~Information();
student*creat();
voidoutput(student*head);
intcount(student*head);
student*insert(student*head);
student*cancel(student*head,longintnum);.
student*find(student*head,longintnum);.
voidpaixu(student*head);
voidaverage(student*head);
voidsave(student*head);
student*Read();
private:
student*p1,*p2,*p3,*head,st;
};
3)建立链表函数:
student*Information:
:
creat(void)
{.
charch[Q];n=0;/
p1=p2=(student*)malloc(LEN);
cout<<"-------------<<请建立学生考试信息表,在姓名处键以!
结束输入。
>>--------------"< cout<<"姓名: "; cin>>ch; head=NULL;while(strcmp(ch,"! ")! =0) { p1=(student*)malloc(LEN); strcpy(p1->name,ch); cout<<"性别: "; cin>>p1->sex; cout<<"准考证号(8位): "; cin>>p1->id; cout<<"数学成绩: "; cin>>p1->score[0]; cout<<"物理成绩: "; cin>>p1->score[1]; cout<<"英语成绩: "; cin>>p1->score[2]; cout<<"C语言成绩: "; cin>>p1->score[3]; p1->total=p1->score[0]+p1->score[1]+p1->score[2]+p1->score[3]; if(n==0)head=p1; elsep2->next=p1; p2=p1; n++; cout<<"姓名: "; cin>>ch; } p2->next=NULL; return(head); 4)统计学生人数的函数: intInformation: : count(structstudent*head) { if(head==NULL)return(0); elsereturn(1+count(head->next));} 5)插入学生的成绩的函数: student*Information: : insert(student*head) { cout<<"\t----------------<<请输入新增学生成绩信息>>----------------\n"< p1=(student*)malloc(LEN); cout<<"准考证号(8位): "; cin>>p1->id;中 cout<<"姓名: "; cin>>p1->name;cout<<"性别: "; cin>>p1->sex; cout<<"数学成绩: "; cin>>p1->score[0];cout<<"物理成绩: "; cin>>p1->score[1]; cout<<"英语成绩: "; cin>>p1->score[2]; cout<<"C语言成绩: "; cin>>p1->score[3]; p1->total=p1->score[0]+p1->score[1]+p1->score[2]+p1->score[3]; p2=head; if(head==NULL) { head=p1;p1->next=NULL; } else { while((p1->id>p2->id)&&(p2->next! =NULL)) { p3=p2; p2=p2->next; }if(p1->id<=p2->id) { if(head==p2) { p1->next=head; head=p1; } else { p3->next=p1; p1->next=p2; } } else { p2->next=p1; p1->next=NULL; } } n++; cout<<"\t----------------<<你输入的学生信息已经成功插入>>----------------"< return(head); } 5)删除函数: student*Information: : cancel(student*head,longintnum){ if(head==NULL) { return(head); } else { p1=head;while(num! =p1->id&&p1->next! =NULL){ p2=p1; p1=p1->next; } if(num==p1->id) { if(p1==head)head=p1->next; else p2->next=p1->next; cout<<"删除准考证号为"< n--; } return(head); } } 6查找函数: student*Information: : find(student*head,longintnum) { if(head==NULL) { cout<<"这是一个空表,请先输入考生成绩.\n"; return(head); } else { p1=head; while(num! =p1->id&&p1->next! =NULL) { p1=p1->next; } if(num==p1->id) { cout<<"------------------------------------------------------------------------------\n"; cout<<"准考证号姓名性别数学物理英语C++平均分总分\n"; cout<<"------------------------------------------------------------------------------\n"; cout< < < < < < < < < cout<<"------------------------------------------------------------------------------\n"; } else cout<<"没找到准考证号为"< return(head); } } voidInformation: : paixu(student*head) { inti,k,m=0,j; student*p[Q]; if(head! =NULL) {m=count(head); cout<<"------------------------------------------------------------------------------\n"; cout<<"*学生考试成绩统计表*\n"; cout<<"------------------------------------------------------------------------------\n"; cout<<"准考证号姓名性别数学物理英语C++平均分总分名次\n"; cout<<"------------------------------------------------------------------------------\n"; p1=head; for(k=0;k { p[k]=p1; p1=p1->next; } for(k=0;k for(j=k+1;j if(p[k]->total total) { p2=p[k]; p[k]=p[j]; p[j]=p2; } for(i=0;i { cout< < < < < < < < < < cout<<"------------------------------------------------------------------------------\n"; } } } 7)求各科平均分成绩的函数: voidInformation: : average(student*head) { intk,m; floatarg1=0,arg2=0,arg3=0,arg4=0; if(head==NULL) { cout<<"这是一个空表,请先输入考生成绩.\n"; } else { m=count(head); p1=head; for(k=0;k { arg1+=p1->score[0]; arg2+=p1->score[1]; arg3+=p1->score[2]; arg4+=p1->score[3]; p1=p1->next; } arg1/=m;arg2/=m;arg3/=m;arg4/=m; cout<<"*全班单科成绩平均分*\n"; cout<<"------------------------------------------------------------------------------\n"; cout<<"数学平均分: "< <<"物理平均分: "< <<"英语平均分: "< <<"C语言平均分: "< cout<<"------------------------------------------------------------------------------\n"; } } 8保存函数: voidInformation: : save(student*head) { ofstreamout("data.txt",ios: : out); out< while(head! =NULL) {out< < < < < < < < head=head->next; } } 9)读取函数的实现: student*Information: : Read() {inti=0; p1=p2=(student*)malloc(LEN); head=NULL; ifstreamin("data.txt",ios: : out); in>>i; if(i==0){cout<<"data.txt文件中的数据为空,请先输入数据。 "< else{ cout<<"…………………………………………………………………………………………"< for(;i>0;i--) {p1=(student*)malloc(LEN); in>>st.name>>st.id>>st.sex >>st.score[0]>>st.score[1]>>st.score[2]>>st.score[3] >>st.total; strcpy(p1->name,st.name); p1->id=st.id; strcpy(p1->sex,st.sex); p1->score[0]=st.score[0]; p1->score[1]=st.score[1]; p1->score[2]=st.score[2]; p1->score[3]=st.score[3]; p1->total=st.total; if(n==0)head=p1; elsep2->next=p1; p2=p1; n++; cout<<""< < < < < < < < cout<<"…………………………………………………………………………………………"< // } cout<<"数据已经成功读取完毕。 "< p2->next=NULL; return(head); } } 七、设计结果与分析。 在此,我们将把软件使用过程写出,并对此程序的某些细节和具体的操作方法加以说明,说明如下: 将软件进行初始化。 进入程序菜单,界面如图4-1: 菜单界面 图4-1 界面显示的是“一个学生信息系统”,总的操作流程有七个方面: 输入学生成绩; 显示学生成绩; 排序统计成绩; 查找学生成绩; 增加学生成绩; 删除学生成绩; 安全退出系统; 3.输入学生信息: 选择菜单界面的第一个选择,按Enter键进入此选择界面,出现的界面如图4-2: 图4-2 用户可在此界面上输入想要输入的学生的相关信息(学号、姓名、性别、成绩以及专业等),用户按提示依次输入学生的信息。 输入完成后又回到主菜单。 八、心得感受。 通过这次的上机练习,使我的动手操作能力得到了很大的提高,让我学会了把书本上的知识应用到了实际中来。 虽然在做这次课程设计时碰到过挫折和坎坷,有的问题一直到了最后才被解决,但是我认为这未必就不是好事,这样能锻炼我的意志,磨练我的耐心,失败是成功之母,这话一点都没错,没有失败就没有成功。 这次课程设计让我更加深刻的理解了面向对象的思想。 同时使我学会了做软件工程的主要思想,掌握了对软件划分模块的能力。 经过此次实践,让我温习了过去不熟或不懂的知识,对类的使用,对文件流的使用都有了更进一步的理解。 九、参考文献 钱能《C++程序设计》清华大学出版社北京2004 钱能《C++程序设计试验指导》 清华大学出版社北京2004 谭浩强《C程序设计》 清华大学出版社北京2006
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 成绩管理系统 课程设计