1、学生成绩管理系统C+本科生课程设计课程名称C+课程设计课程编号1620001x2-0学号学生姓名所在专业所在班级指导教师成绩教师签字2009年 月 日目录:(1)目的与要求(2)系统需求分析与功能设计(3)内容设计(4)功能介绍(5)实验总结附件:程序代码正文一、 目的与要求通过本课程设计的实践,全面总结C+课程学习中的的数据类型、程序结构、数组、函数、指针、结构体等基本概念,掌握其使用方法。掌握面向对象程序设计中有关类、对象、继承、重载、多态性、输入输出流类体系、文件操作的基本概念,初步学会用类与对象这种面向对象的程序设计方法编写应用程序。培养使用面向对象的程序设计方法编写计算机程序的能力。
2、通过设计一个学生成绩管理系统,进一步熟悉C+中类的概念、类的封装的实现方式。了解系统开发的需求分析、类层次设计、模块分解、编码测试、模块组装与整体调试的全过程,加深对C+的理解与Visual C+环境的使用;逐步熟悉程序设计的方法,并养成良好的编程习惯。程序设计是一门实践性很强的课程,必须十分重视实践环节。许多实际的知识不是靠听课和看书学到的,而是通过长时间的实践积累的。二、 系统需求分析与功能设计系统需求:学生管理系统要求利用C语言面向过程的编程思想来完成系统的设计,除了要突出C语言的函数特征,以多个函数实现每一个子功能外,还要画出功能模块图;另外,要求我们进行简单界面设计,能够实现友好的交
3、互,熟练掌握C语言对文件的各种操作。 功能设计:1. 学生基本信息及成绩所选科目成绩的录入。 2. 基本信息的查询与修改。 3. 对该班各科成绩进行分析(即求平均成绩); 4. 对所开课程的成绩分析(求最高分和及格人数); 三、 设计内容学生成绩管理系统 本学生成绩管理系统程序是一个具有对学生信息进行录入、添加、删除、根据学号进行学生信息的查询、显示已有学生信息的显示、对学生成绩进行统计(包括最高分,最低分,及格率和需要补考的学生),可以对已有的学生信息进行修改,保存和读取输入的数据等功能。一切功能都可以在运行的软件中运行。四、 系统功能介绍: 通过主函数显示程序的主界面,通过输入的数字不同,
4、函数会进入不同功能的函数继续运行。输入1时,进入学生资料管理的界面! 选择1-5数字选择各个不同的小功能。输入1时,进行学生资料的录入,输入2时,进行学生资料的删除输入3时,进行学生资料的添加输入4时,进行学生资料的修改输入5时,进行学生资料的读取输入0时,可以返回主界面回到主界面后,输入2时,进入学生成绩统计管理功能的界面可以输入0-8任意数字选择各个不同的小功能。输入1时,进行学生成绩总分排名输入2时,进行学生高数分数排名输入3时,进行学生英语分数排名输入4时,进行学生C+分数排名输入5时,显示学生最高总分 输入6时 显示学生最低总分输入7时,进行学生平均分排名输入8时,进行及格率计算输入
5、0时,可以返回主界面回到主界面后,输入3时,进入学生成绩统计管理功能的界面。可以输入0-3的任意数字,选择 各个不同的功能 输入1时,进行按学号查询学生资料的功能输入2时,进行按姓名查询学生资料的功能输入3时,进行按所在班级查询学生资料的功能输入0时,可以返回主界面回到主界面后,输入4时,进入关于系统信息的界面回到主界面后,输入0时,可以退出主界面,结束系统运行五、实验总结附件:(程序代码)#include #include /输入输出文件#include #include /输出格式控制using namespace std; char press;int choose;int n;clas
6、s Studentpublic: int num; string name; int bj; char sex; float Math; float English; float Cjj; float sum; float average;Student stud100;/读取资料 void read() char filename20; cout从文件中读取信息!endl; cout请输入文件名:filename; ifstream infile(filename,ios:in|ios:out); /定义输入文件流对象,以输出方式打开用户自定义的磁盘文件 if(!infile) cerrop
7、en error!studi.numstudi.namestudi.sexstudi.bj; /从磁盘读取学生的信息 infilestudi.Mathstudi.Englishstudi.Cjj; cout学生的学号:studi.num /向显示器输出学生的信息姓名:studi.name 性别:studi.sex 班级:studi.bj 高数成绩:studi.Math 大学英语成绩:studi.English C+成绩:studi.Cjjendl; i+;while(!infile.eof(); /判断是否为文件尾 infile.close();cout读取成功!endl;/保存资料void
8、save() int i;char filename20;for(i=0;in;i+) cout学生的学号:studi.num 姓名:studi.name 性别:studi.sex 班级:studi.bj 高数成绩:studi.Math 大学英语成绩:studi.English C+成绩:studi.Cjjendl;cout将记录保存在文件夹!endl;coutfilename; ofstream outfile(filename); if(!outfile)cerropen error!endl; for(i=0;in;i+) outfile studi.num studi.name stu
9、di.sex studi.bj ; outfilestudi.Math studi.English studi.Cjj; outfile.close();cout保存成功!endl;/输入资料void SR() coutn;for(int a=0;an;a+)cout请输入第a+1个学生资料:endl;cout学号:studa.num;cout姓名:studa.name;cout性别:studa.sex;cout班级:studa.bj;cout高数成绩:studa.Math;cout大学英语成绩:studa.English;coutC+成绩:studa.Cjj;studa.sum=studa.
10、Math+studa.English+studa.Cjj;studa.average=(studa.Math+studa.English+studa.Cjj)/3;cout输入成功,学生资料是否保存?(y/n)press;switch(press)case y : save();break;default: cout不保存!;break;/删除资料void SC() dostring SC_name;cout请输入你要删除的学生名字:SC_name;while(studi.name!=SC_name&in) i+; /查找判断if(studi.name=SC_name) for(int j=i
11、;jn-1;j+)studi.num=studi+1.num; studi.name=studi+1.name; studi.sex=studi+1.sex; studi.bj=studi+1.bj; studi.Math=studi+1.Math; studi.English=studi+1.English; studi.Cjj=studi+1.Cjj;cout删除成功!endl;n=n-1;else if(i=n) coutcant find this nameendl;cout该信息不存在,无法删除!endl; cout(是否继续操作?(y/n)press;while(press=y|p
12、ress=Y) ;/添加资料void TJ() docout请添加新的学生信息endl;cout新的学生学号:studn.num;cout新学生姓名:studn.name;cout新学生性别:studn.sex;cout新学生班级:studn.bj;cout新学生的高数成绩:studn.Math;cout新学生的大学英语成绩:studn.English;cout新学生的C+成绩:studn.Cjj;studn.sum=studn.Math+studn.English+studn.Cjj;studn.average=(studn.Math+studn.English+studn.Cjj)/3;n
13、+; cout(是否继续操作?(y/n)press;while(press=y|press=Y);cout添加成功,学生资料是否保存?(y/n)press;switch(press)case y : save();break;default: cout不保存!;break;/修改资料void XG() begin:string find_name;int i;cout请输入你要修改的学生名字:find_name;for(i=0;in;i+)if(studi.name=find_name)coutstudi.name has been found:endl; cout学生的学号:studi.nu
14、m 姓名:studi.name 性别:studi.sex 班级:studi.bj 高数成绩:studi.Math 大学英语成绩:studi.English C+成绩:studi.Cjjendl;break; if(studi.name!=find_name) coutcant find this nameendl; cout请重新查找!endl;goto begin;for(int j=0;jn;j+)cout请输入新的信息:endl;cout学号:studj.num;cout姓名:studj.name;cout性别:studj.sex;cout班级:studj.bj;cout高数成绩:stu
15、dj.Math;cout大学英语成绩:studj.English;coutC+成绩:studj.Cjj; studi.num=studj.num;studi.name=studj.name;studi.sex=studj.sex; studi.bj=studj.bj;studi.Math=studj.Math;studi.English=studj.English; studi.Cjj=studj.Cjj;break;cout修改成功,是否保存?(y/n)press;switch(press)case y : save();break;default: cout不保存!;break;/按总分排
16、名void zf() int m,t;string na;float z,h,e,c,p;char s;for(int j=0;jn-1;j+) /选择法排序for(int i=0;istudi+1.sum) m=studi.num; studi.num=studi+1.num; studi+1.num=m; na=studi.name; studi.name=studi+1.name; studi+1.name=na; s=studi.sex; studi.sex=studi+1.sex; studi+1.sex=s; t=studi.bj; studi.bj=studi+1.bj; stu
17、di+1.bj=t; h=studi.Math; studi.Math=studi+1.Math; studi+1.Math=h; e=studi.English; studi.English=studi+1.English; studi+1.English=e; c=studi.Cjj; studi.Cjj=studi+1.Cjj; studi+1.Cjj=c; z=studi.sum; studi.sum=studi+1.sum; studi+1.sum=z; p=studi.average; studi.average=studi+1.average; studi+1.average=p
18、;cout学生按总分排名:endl;cout学号 姓名 性别 班级 总分endl;for(int i=0;in;i+)coutstudi.num studi.name studi.sex studi.bj studi.sumendl;coutendl;/按高数分数排名void gs() int g,t;float z,h,e,c,p;string na;char s;for(int j=0;jn-1;j+) for(int i=0;istudi+1.Math) g=studi.num; studi.num=studi+1.num; studi+1.num=g; na=studi.name; s
19、tudi.name=studi+1.name; studi+1.name=na; s=studi.sex; studi.sex=studi+1.sex; studi+1.sex=s; t=studi.bj; studi.bj=studi+1.bj; studi+1.bj=t; h=studi.Math; studi.Math=studi+1.Math; studi+1.Math=h; e=studi.English; studi.English=studi+1.English; studi+1.English=e; c=studi.Cjj; studi.Cjj=studi+1.Cjj; stu
20、di+1.Cjj=c; z=studi.sum; studi.sum=studi+1.sum; studi+1.sum=z; p=studi.average; studi.average=studi+1.average; studi+1.average=p; cout学生按高数分数排名:endl;cout学号 姓名 性别 班级 高数分数endl;for(int i=0;in;i+)coutstudi.num studi.name studi.sex studi.bj studi.Mathendl;coutendl; /按英语分数排名void yy()int g,t;float z,h,e,c,
21、p;string na;char s;for(int j=0;jn-1;j+) for(int i=0;istudi+1.English) g=studi.num; studi.num=studi+1.num; studi+1.num=g; na=studi.name; studi.name=studi+1.name; studi+1.name=na; s=studi.sex; studi.sex=studi+1.sex; studi+1.sex=s; t=studi.bj; studi.bj=studi+1.bj; studi+1.bj=t; h=studi.Math; studi.Math
22、=studi+1.Math; studi+1.Math=h; e=studi.English; studi.English=studi+1.English; studi+1.English=e; c=studi.Cjj; studi.Cjj=studi+1.Cjj; studi+1.Cjj=c; z=studi.sum; studi.sum=studi+1.sum; studi+1.sum=z; p=studi.average; studi.average=studi+1.average; studi+1.average=p;cout学生按英语分数排名:endl;cout学号 姓名 性别 班级
23、 英语分数endl;for(int i=0;in;i+)coutstudi.num studi.name studi.sex studi.bj studi.Englishendl;coutendl; /按C+分数排名void cy()int g,t;float z,h,e,c,p;string na;char s;for(int j=0;jn-1;j+) for(int i=0;istudi+1.Cjj) g=studi.num; studi.num=studi+1.num; studi+1.num=g; na=studi.name; studi.name=studi+1.name; studi+1.name=na; s=studi.sex; studi.sex=studi+1.sex; studi+1.sex=s; t
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1