学生成绩管理程序.docx
- 文档编号:4695586
- 上传时间:2022-12-07
- 格式:DOCX
- 页数:29
- 大小:471.40KB
学生成绩管理程序.docx
《学生成绩管理程序.docx》由会员分享,可在线阅读,更多相关《学生成绩管理程序.docx(29页珍藏版)》请在冰豆网上搜索。
学生成绩管理程序
湖南人文科技学院计算机系
课程设计说明书
课程名称:
C++面向对象程序设计
课程代码:
436103软工、408007计科
题目:
学生成绩管理
年级/专业/班:
2010级软件工程专业一班
学生姓名:
罗金缘杨洁罗超海张阳石磊王强
学号:
104361(282930313233)
指导教师:
袁辉勇
开题时间:
2011年6月13日
完成时间:
2011年6月24日
目录
摘要1
一、引言2
二、设计目的与任务2
三、设计方案3
1、总体设计3
2、详细设计3
4、程序调试与体会14
5、运行结果15
四、结论21
五、致谢21
六、参考文献22
摘要
随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它己进入人类社会的各个领域并发挥着越来越重中要的作用。
现在高校生信息的管理趋向于复杂化和多元化,越来越多的高校均采用了计算机化的模式。
学生管理系统是学校管理中不可少的部分,可以大大提高教师的工作效率。
查询、修改、录入、删除等基本操作都采用了计算机的数据库技术。
比前使用卡片的方法有了很大的进步,方便管理,易于更新,极大的方便了学生信息的管理工作。
本文研究通过Win32ConsoleApplication,创建功能比较完善的学生信息管理系统,以学生管理功能为基础,实现学生信息的查询、成绩查询,对学校的学生管理提供了一定的参考和支持。
关键词:
学生管理程序,Win32ConsoleApplication,Vector;
Abstract
Withtheimprovementsofscienceandtechnology,computersciencehasbeenmaturing.Thepowerfulfeatureofcomputersciencehasbeenprofoundlyunderstoodbypeople.Computersciencehasenteredthehumansocietyinvariousfieldsandplayedtheimportantrole.Newthemanagementforstudents'informationtendingtobecomplexityanddiversity,agrowingnumberofuniversitieshasadoptedacomputerizedmanagement.Studentmanagementsystemisanindispensablepartoftheschoolmanagement.Theimplementandnecessarycomponentsofelectronicofficeandcangreatlyimprovetheefficiencyofteachers.Thebasicoperationssuchasquery,modify,entry,deleteareusingthecomputerdatabasetechnology.Comparedtothemethodusingthecardpreviously,studentmanagementsystemupdateswhichgreatlyfacilitatethemanagementofstudents’information.BythefunctionsofConsoleApplication,Thispaperaimstocreaterelativelycompletethestudentmanagementsystemwhichhasthebasisfunctiontoachievestudentquery,resultinquiryandmanagetheuser.Thissystemprovidesareferenceorsupportforthemanagementoftheschool.
Keywords:
studentmanagementsystem,Win32ConsoleApplication,Vector
《C++程序设计》课程设计
------学生成绩管理
一、引言
学生成绩管理程序的目的在于使用计算机对学院学生信息业务进行管理,提高对学生信息管理的效率实现学院管理系统的自动化,对学院的数字化管理的发展起到了积极的作用。
本程序将学院学生信息进行数字化管理。
以使各种信息得到最迅速、最准确的规划于组织便于各个层次的人员查询、调用。
最终实现数字一体化的管理模式。
二、设计目的与任务
目的:
1.基本掌握面向对象程序设计方法,更深入地理解面向对象程序设计思想;
2.初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;
3.提高综合运用所学的理论知识和方法独立分析和解决问题的能力;
4.训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风。
任务:
1,定义学生(student)类,其中至少包括姓名、性别、学号、班级和四门功课的成绩。
2,实现下面的功能
1、设计菜单实现功能选择;
2、输入功能:
输入学生信息,并保存到文件中;
3、计算每个学生的总分与平均分并排序
4、能根据学号修改学生信息
5、能根据学号删除学生信息
6、查询功能:
1)能够根据学号查询学生信息;
2)能够根据姓名、班级查询学生信息
3)统计学生成绩,按照班级和科目计算平均分。
三、设计方案
1、总体设计
①.问题描述②.解决问题的方案
③.程序结构图④.学生类的设计
2、详细设计
①、问题描述:
制作学生成绩信息管理系统实现数据录入、数据删除、数据修改、数据添加、数据保存和数据显示以及数据查询等一些功能。
功能要求:
(1)创建学生成绩数据表,该表反映学生的基本信息,其中包含学生学号、学生姓名、性别、班级、四科成绩等字段。
(2)根据自己的喜好设计系统封面。
(3)系统应包括记录编辑和记录查询等功能模块。
记录编辑功能完成学生记录编辑的记录增加、记录删除和记录查询,记录排序等功能。
记录查询功能可以对数据集中的记录进行查询,要求按学生学号进行精确查询,按学生姓名、班级进行模糊查询。
②、解决问题的方案:
根据系统功能要求,可以将问题解决分为以下几个步骤:
1)应用系统分析,建立该系统的功能模块框图和界面的组织和设计
2)分析系统中的各个实体及他们之间的关系。
3)根据问题描述,设计系统的学生类。
4)完成类中各个成员函数的定义。
5)完成系统的应用模块。
6)功能调试。
7)完成系统总结报告
2.3,程序结构图:
2,4,学生类的设计:
classStudent
{
public:
stringGet_name();
stringGet_number();
stringGet_sex();
stringGet_classnumber();
friendvoidloaddata(Student&);/*从文件中读取记录*/
voidset_info();//设置学生信息
voidprint();//显示学生信息
floatsum;//总分
floatave_score;//平均分
floatscore[num_subject];//四门成绩
private:
stringname;//姓名
stringnumber;//学号
stringclassnumber;//班级
stringsex;//性别
};
定义一个vector:
vector
迭代器可被用来访问一个容器类的所包函的全部元素,其行为像一个指针
vector
:
iteratorIterator;//定义Iterator迭代器
3、程序清单
⒈Student.h文件
#include
#include
#include
#include
#include
usingnamespacestd;
#definenum_subject4
conststringsubject_[num_subject]={"高数","英语","C++","马基"};
classStudent
{
public:
stringGet_name();
stringGet_number();
stringGet_sex();
stringGet_classnumber();
friendvoidloaddata(Student&);/*从文件中读取记录*/
voidset_info();
voidprint();//显示学生信息
floatsum;//总分
floatave_score;
floatscore[num_subject];//四门成绩
private:
stringname;//姓名
stringnumber;//学号
stringclassnumber;//班级
stringsex;//性别
};
vector
vector
:
iteratorIterator;//定义Iterator迭代器
Studentstud;
boolComp(constStudent&a,constStudent&b);//比较总分高低进行排序
voiddispTable();/*表头*/
voidInput();/*增加记录*/
voidDisplay();/*显示学生记录*/
voidSort();/*按总分排序*/
voidUpdata();/*修改一条记录*/
voidDelete();/*按学号查找,删除一条记录*/
voidfind();//***查找**/
voidQuerybyName();//通过姓名和班级查找并显示
voidQuerybyNumner();/*通过学号查找并显示一个记录*/
voidManagerinfo();/*统计班级成绩*/
voidWritetoText();/*将所有记录写入文件*/
intmenuSelect();/*菜单选择*/
voidhandleMenu();
voidstart();/*开始*/
2.Student.cpp文件
#include"Student.h"
/*表头*/
voiddispTable(){
cout<<"学号\t名字\t班级\t性别";
for(inti=0;i cout<<'\t'< cout<<"\t总分\t平均分\t\n"; } boolComp(constStudent&a,constStudent&b){ if(a.sum! =b.sum)returna.sum>b.sum; elsereturna.sum>b.sum; } inlinestringStudent: : Get_classnumber() {returnclassnumber;} inlinestringStudent: : Get_name() {returnname;} inlinestringStudent: : Get_number() {returnnumber;} inlinestringStudent: : Get_sex() {returnsex;} //设置学生记录 voidStudent: : set_info() {floatx,sum1=0; cout<<"\n\t请输入学生的信息: "< cout<<"\t\t\t请输入姓名: "; cin>>name; cout< cout<<"\t\t\t请输入学号: "; cin>>number; cout< cout<<"\t\t\t请输入性别[F|M]: "; cin>>sex; cout< cout<<"\t\t\t请输入班级: "; cin>>classnumber; for(inti=0;i {cout<<"\n\t\t\t请输入第"< "; cin>>x; score[i]=x; sum1+=score[i]; } sum=sum1; ave_score=sum1/num_subject; } //显示记录 inlinevoidStudent: : print(){ cout< for(inti=0;i cout<<'\t'< printf("\t%.2f\t%.2f",sum,ave_score); cout< } /*增加记录*/ voidInput() {charch[2]; Studentstud; do {stud.set_info(); stu.push_back(stud); cout<<"\t\t\tdoyouwantaddmore? (Y|N): "; cin>>ch; }while(ch[0]=='y'||ch[0]=='Y'); } /*显示全部学生记录*/ voidDisplay() {if(stu.empty()) {cout<<"\t\t\t当前没有记录,请先添加记录! \n";return;} elsedispTable();//使用Iterator迭代器顺序遍历所有元素 for(Iterator=stu.begin();Iterator! =stu.end();Iterator++) {(*Iterator).print();} } /*按总分排序*/ voidSort() {if(stu.empty()) {cout<<"\t\t\t当前没有记录,请先添加记录! \n";return;} sort(stu.begin(),stu.end(),Comp); cout<<"\n\t\t\t完成排序! \n"; } /*修改一条记录*/ voidUpdata() {if(stu.empty()) {cout<<"\t\t\t当前没有记录,请先添加记录! \n";return;} stringid;charch[2];boolmark=true; cout<<"\t\t\t请输入需修改的学生的学号: "; cin>>id; Studentstud; for(Iterator=stu.begin();Iterator! =stu.end();Iterator++) { if((*Iterator).Get_number()==id) {dispTable();mark=false; (*Iterator).print(); cout<<"\t\t\t您确定要修改此条记录? (Y|N)"; cin>>ch; if(ch[0]=='y'||ch[0]=='Y') {stud.set_info(); (*Iterator)=stud; } } } if(mark){cout<<"\n\t\t\t没有找到相关记录! ! ! \n";return;} Sort(); cerr<<"\n\t\t\t修改成功! \n"; } /*按学号删除一条记录*/ voidDelete() {if(stu.empty()) {cout<<"\t\t\t当前没有记录,请先添加记录! \n";return;} strings;charch[2];;boolmark=true; cout<<"\t\t\t请输入需删除的学生的学号: "; cin>>s; for(Iterator=stu.begin();Iterator! =stu.end();) { if((*Iterator).Get_number()==s) {dispTable();mark=false; (*Iterator).print(); cout<<"\t\t\t您确定要删除此条记录? (Y|N)"; cin>>ch; if(ch[0]=='y'||ch[0]=='Y') {Iterator=stu.erase(Iterator); cout<<"\n\t\t\t删除成功! ! ! \n"; } } else {Iterator++; } } if(mark){cout<<"\n\t\t\t没有找到相关记录! ! ! \n";return;} Sort(); } /*按学号精确查找并显示*/ voidQuerybyNumber() {if(stu.empty()) {cout<<"\t\t\t当前没有记录,请先添加记录! \n";return;} strings;boolmark=true;intn=0; cout<<"\t\t\t请输入需查询的学生的学号: "; cin>>s; for(Iterator=stu.begin();Iterator! =stu.end();Iterator++) { if((*Iterator).Get_number()==s) {n++; if(n==1)dispTable(); mark=false; (*Iterator).print(); } } if(mark)cout<<"\n\t\t\t没有找到相关记录! ! ! \n"; } /*通过姓名和班级模糊查找并显示*/ voidQuerybyName() {if(stu.empty()) {cout<<"\n\t\t\t当前没有记录,请先添加记录! \n";return;} stringna,cn;boolmark=true;intn=0; cout<<"\n\t\t\t请输入需查询的学生的姓名,班级: "; cin>>na>>cn;//使用Iterator迭代器顺序遍历所有元素 for(Iterator=stu.begin();Iterator! =stu.end();Iterator++) { if((*Iterator).Get_name()==na&&(*Iterator).Get_classnumber()==cn) {mark=false; n++; if(n==1)dispTable(); (*Iterator).print(); } } if(mark)cout<<"\n\t\t\t没有找到相关记录! ! ! \n"; } /***查找**/ voidfind() {if(stu.empty()){cerr<<"\n\t\t\t当前没有记录,请添加记录! \n";return;} charch,c; do{ cout<<"\n\t\t\t请输入查找方式: ●1,学号2,姓名,班级: "; cin>>ch; while(ch! ='1'&&ch! ='2') {cout<<"\n\t\t\t您输入有误,请重新输入: ";cin>>ch;} switch(ch) { case'1': QuerybyNumber();break; case'2': QuerybyName();break; } cout<<"\n\n\t\t\t您想继续查找吗? ●1是,0否"; cin>>c; while(c! ='1'&&c! ='0') {cout<<"\n\t\t\t您输入有误,请重新输入: ";cin>>c;} }while(c=='1'); } /*班级学生成绩统计*/ voidManagerinfo() {if(stu.empty()) {cout<<"\n\t\t\t当前没有记录,请先添加记录! \n";return;} floatsum[num_subject]; memset(sum,0,num_subject*sizeof(int));//数组sum清零 stringcn;inti,j,n=0; boolmark=true; intk=stu.size(); cout<<"\n\t\t\t请输入要统计的班级: "; cin>>cn; for(i=0;i if(cn==stu[i].Get_classnumber()) {mark=false; n++; if(n==1)dispTable(); stu[i].print(); for(j=0;j sum[j]+=stu[i].score[j]; } if(mark){cout<<"\n\t\t\t没有找到相关记录! ";return;} cout<<"\n\t该班有"< "< cout.precision (2); for(i=0;i {cout<<'\t'< cout< \t"< } cout< } /*将所有记录写入文件*/ voidsave() {if(stu.empty()) {cout<<"\n\t\t\t当前没有记录,请先添加记录! \n";return;} charfilename[20]; cout<<"\t\t将记录保
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 成绩 管理程序
![提示](https://static.bdocx.com/images/bang_tan.gif)