版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、课程设计题目:学生成绩管理 第1章 系统概要1.1 系统介绍 设计一个学生管理系统,能够实现学生信息输入,并对这些信息进行处理并输出。1.2 基本功能要求 从键盘输入某班级若干个学生的学号、姓名、三门课(语文、数学、英语)的成绩,分别实现如下功能;(1) 统计每个学生的总分和平均分。(2) 按总分由大到小排出名次。(3) 打印出成绩在全班平均分以上的学生名单和数据信息。(4) 任意输入一个学号或姓名,能够查找出该学生在班级中的排名及其考试成绩。 本系统是根据学生成绩管理的需要,而建立一个“学生成绩管理系统”,以及方便对成绩的各项管理操作。本系统能对成绩进行输入和输出;能按成绩对学生进行排序,并
2、显示学生资料、成绩等,不过得以系统输入学生资料、成绩为前提。能根据学生的姓名或学号来查询该学生的资料。- 16 - 第2章 设计思路与算法2.1 程序功能结构图学生成绩管理统设置班级人数输入学生信息统计平均分和总分对学生成绩排序统计高于班级平均成绩学生查找利用学号查找学生利用姓名查找学生利用姓名查找学生打印学生信息主菜单 图2-1 学生成绩管理系统功能图 2.2 各模块介绍学生成绩管理系统包括七个模块:输入学生资料,输出学生资料,统计总分和平均分,按学生总成绩或平均成绩排序,打印平均分高于班级平均分的学生信息,按姓名或学号查找,菜单选择这七个模块既相互联系又相互独立。 各模块功能介绍1)输入模
3、块(void setdata(student stu)):主要功能是用来对学生的成绩进行输入。使用该功能可以输入所有学生的信息、资料等。具体包括学生的班级,学号,姓名,各科成绩。2)输出模块(void print(student stu,int i)):主要功能是用来对学生的成绩进行输出。在系统已经录入了学生资料成绩的前提下,使用该功能可以显示所有学生的信息、资料等。具体包括学生的班级,学号,姓名,各科成绩,总成绩和平均成绩。3)统计模块(void count(student stu)):主要功能是用来对学生的成绩进行计算。在系统已经录入了学生资料成绩的前提下,使用该功能可以计算出每个学生的总
4、成绩和平均成绩。4)排序模块(void sort(student stu)):按学生平均成绩进行排列模块块,此模块的主要功能是用来对学生的平均成绩进行排序,这样在统计名次是就比较方便。在系统保存学生资料的前提下,使用此功能能快速统计出学生的名次情况。5)打印平均分高于班级平均分的学生信息模块(void getaverage(student stu)):主要功能是输出学生平均分高于等于班级平均分的学生信息。6)查找模块(void search1(student stu,char*a) 按学号查找 void search2(student stu,char*b) 按姓名查找):主要功能是用来查找学
5、生资料,在系统输入学生资料的前提下,想查找某个学生的资料,我们只要知道他的学号或姓名,输入学号或姓名后,系统可以帮我们把他的信息输出。7)菜单模块(int select1()): 主要功能是用来选择哪种操作。根据提示可对学生信息进行处理。 第3章 源程序代码#include /输入输出流的头文件/* 文件包含命令,strcmp函数存放在string.h文件中。*/#include /字符串处理的头文件#includeint n; /设置一个全局变量struct student /声明学生信息的结构体 char number20; /学生的学号:20个字符长度 char name30; /学生的
6、名字:20个字符长度 char c5; /学生的班级:5个字符长度 double math; /数学成绩 double chinese; /语文成绩 double english; /英语成绩 double total; /总分 double average; /平均分 int rank; /排名s;void setdata(student stu); /输入信息void count(student stu); /统计平均分和总分void sort(student stu); /排序void getaverage(student stu); /求出平均分void print(student s
7、tu,int i); /打印输出void search1(student stu,char*a);/按学号查找void search2(student stu,char*b);/按姓名查找int select1(); /主菜单int select2(); /菜单void main() system(color 1A);/*设置默认的控制台前颜色。颜色属性由两个十六进制数字指定,第一个为背景,第二个为前景。每个数字可以是以下任何值之一:0=黑色;1=蓝色;2=绿色;3=浅绿色;4=红色;5=紫色;6=黄色;7=白色;8=灰色;9=淡蓝色;,A=淡绿色;B=淡浅绿色;C=淡红色;D=淡紫色;E=淡
8、黄色;F=亮白色。例如system(color 1A)为背景为蓝色,前景为淡绿色,即字体为淡绿色。*/coutendl;couttttt欢迎使用学生管理系统endl;coutendl; extern int n; student *stu; coutn; stu=new studentn; setdata(stu); for(; ;) /实现重复循环选择 switch(select1() /调用菜单选择函数 case 1: count(stu); cout学号t姓名t班级t语文:t 数学:t英语:t总分:t平均分:endl; for(int i=0;in;i+) coutstui.number
9、tstui.ct stui.chinesetstui.mathtstui.englisht stui.totaltstui.averageendl; break; case 2: sort(stu); for(int m=0;mn;m+) print(stu,m); /实现按总分排序打印 break; case 3: getaverage(stu); /实现成绩在平均分以上的打印 break; case 4: switch(select2() case 1:char a20; couta; search1(stu,a); break; case 2:char b20; co
10、utb; search2(stu,b); break; break; case 5: coutt再见!谢谢您的使用。n; return; void setdata(student stu) /输入学生的数据 for(int i=0;in;i+) cout下面输入第i+1位同学的数据:endl; coutstui.number; ; coutstui.c; coutstui.chinese; coutstui.math; coutstui.english; /*打印学生信息*/void print(student stu,int i) /打印 cout学号t姓名t班级t
11、语文:t 数学:t英语:t总分:t平均分:t排名:endl; tstui.ct stui.chinesetstui.mathtstui.englisht stui.totaltstui.averagetstui.rankendl;/*计算总分和平均分*/void count(student stu) for(int i=0;in;i+) stui.total=stui.math+stui.chinese+stui.english;/计算一个总分,记录在tatal里面 stui.average=stui.total/3; /计算一个平均分,记录在
12、average里面 /*利用冒泡法对学生的成绩排序,并得出排名。*/void sort(student stu)/冒泡法排序 count(stu); for(int i=0;in;i+) for(int j=0;jn-1-i;j+) if(stuj.totalstuj+1.total) s=stuj; stuj=stuj+1; stuj+1=s; for(int k=0;kn;k+) stuk.rank=k+1; /设置排名/*打印成绩高于等于班级平均成绩的学生信息。*/void getaverage(student stu) sort(stu); double a; double sum=0
13、; for(int i=0;in;i+) sum=sum+stui.average; a=(sum/n); for(int j=0;j=a) print(stu,j);/*通过学号查找学生信息。*/void search1(student stu,char*a) sort(stu); for(int i=0;in;i+) if(strcmp(stui.number,a)=0)/*Strcmp()函数简介;原型:extern int strcmp(const char *s1,const char * s2);所在头文件:string.h功能:比较字符串s1和s2。一般形式:strcmp(字符串
14、1,字符串2)说明:当s1s2时,返回值s2时,返回值0;即:两个字符串自左向右逐个字符相比(按ASCII值大小相比较),直到出现不同的字符或遇0为止。如:AA computercompare特别注意:strcmp(const char *s1,const char * s2)这里面只能比较字符串,不能比较数字等其他形式的参数。详细C+程序设计p83。*/ print(stu,i); break; else if(i=n-1) cout您输入的学号不存在endl; /*通过学生姓名查找学生信息。*/void search2(student stu,char*b) for(int i=0;in;
15、i+) if(strcmp(,b)=0) print(stu,i); break; else if(i=n-1) cout您输入的姓名不存在endl; /*选择菜单。*/int select1() int cn; coutt1.统计平均分和总分n; coutt2.按成绩排序n; coutt3.平均分以上的打印n; coutt4.查找学生信息n; coutt5.再见n; coutcn ; if(cn6) coutt输入错误,重选1-5:n; coutt; else break; return cn; /*选择菜单,选择通过学号查找还是姓名查找。*/int select2() i
16、nt cn; coutt1.按学号查找n; coutt2.按姓名查找n; coutcn ; if(cn2) coutt输入错误,重选:n; coutt; else break; return cn; 第4章 运行结果及分析 图4-1 进入时的界面,动态设置班级人数 图4-2 输入学生信息,班级人数为3人 图4-3 命令1,统计各个学生的总分及其平均分 图4-4 命令2,对学生成绩进行排序并打印 图4-5 命令3,打印成绩高于班级平均成绩的学生信息 图4-6 命令菜单4,查找菜单,可采用学号和姓名查找学生信息 图4-7 利用学号查找学生信息 图4-8 利用姓名查找学生信息 图4-9 输入信息错误
17、提示,不存在学生学号或姓名需重新输入。 图4-10 输入命令错误提示。 图4-11 结束操作 图4-12 程序总界面(1) 图1-12 程序总界面(2)第5章 心得体会 在程序的编写过程中,我充分体会了“细节决定成败”这句话的内涵,因为每一个细微的细节都必须十分的注意。如果稍有不慎,就会全盘皆“输”。而且往往很多时候,自己觉得程序非常正确,但是就是通不过,在查找错误的过程中,开始否认自己的过程,非常的难受。 刚开始看到课题的时候觉得也不是很难,就开始写了,但是当实际开始写的过程中却发现自己有好多欠缺的地方,知识点没有完全扎实的掌握,在实践中逐一凸显出来了。对于传址调用可以采用数组名作为函数参数
18、和指针作为函数参数两种方法,在形参哪儿往往漏写,导致编译错误。在写查找函数时,对于字符串的比较毫无头绪,在利用循环比较字符串的各个元素是否相同未果的情况下,内心开始失落,崩溃。想着把学号弄成整型的这样虽然容易解决但内心又不甘,在这个地方纠结了好长时间,最后还是“度娘”给了提示,利用strcmp函数可以轻松的解决这个问题。在开始编写程序的时候,总希望自己的程序多一些功能,可以更加的完善。但是往往因为急于求成而漏洞百出。对于班级人数的设置,想动态的改变,所以类比数组的动态设置写出了结构体的动态设置,但是忽略了设置一个全局变量n。这个过程曾给我沉重打击,不过当看到程序没错误能执行出来时,心中的喜悦难以用言语来表达。 虽然学生成绩管理系统基本实现预定功能,当时它并不止步于此。本系统只能一次性输入学生信息且不能保存输入的学生信息,若出现输入学生信息错误和要对学生信息进行删除,插入等操作时,则需将所有学生信息重新输入,此操作繁琐且浪费时间。可增加储存,插入和删除功能,实现将各个学生的成绩记录输入到系统中,并保存到文件,可以查询以及插入或删除学生的成绩记录。 通过这次C+课程设计使我深深的体会到了编程的辛苦,特别是当一个程序无法运行而又无计可施时,那种难受实在无法用语言表达,但当为一个程序而绞尽脑汁,在
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《机电概念设计基础》课件-运行时行为
- 2024外墙保温材料绿色施工技术与材料购销合同协议2篇
- 换签租赁合同(2篇)
- 2024年版项目管理实践之招投标策略3篇
- 2024年田土承包与土地整治服务合同协议3篇
- 2025年宝鸡货物从业资格证考试题
- 2025年中卫货运从业资格证试题库及答案
- 2025年杭州货运从业资格证模拟考试0题题库
- 2025年福州货运从业资格证考500试题
- 2025年哈尔滨货运从业资格考试
- 全冀教版六年级上册英语第四单元知识点总结
- 酒店接待醉酒客人流程课件
- PPT基础教程完整版
- 2023年新版企业用安全检查表《工贸行业重大事故隐患判定标准和重点检查事项检查表》《冶金企业重大事故隐患摸底表》
- 《平行四边形的面积》说课课件
- (word完整版)使用Photoshop通道抠图公开课教案
- 石油天然气集团公司档案管理手册
- LTE高负荷小区的优化解决方案
- 注射美容培训课件
- 教育科学研究方法智慧树知到答案章节测试2023年延边大学
- 中国肺动脉高压诊断与治疗指南(2021版)解读
评论
0/150
提交评论