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