




已阅读5页,还剩16页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
华东交通大学课程设计华东交通大学课程设计课程设计题目:学生成绩管理 课 程: C+程序设计 题 目: 学生成绩管理 年 级: 2012级 专 业: 电气3班 学 号: 20120210010313 姓 名: 刘耀华 指导教师: 杜玲玲 课程设计(论文)任务书 电气 学院电气 专业20123班 一、课程设计(论文)题目学生成绩管理二、课程设计(论文)工作自 2013 年 6 月24日起至 2013 年6月 28日止。三、课程设计(论文) 地点: 计算中心501 四、课程设计(论文)内容要求:1本课程设计的目的(1)使学生掌握系统各功能模块的基本工作原理; (2)掌握C的基本编程原理和及基本的编程方法; (3)使学生学会系统调试;(4)培养学生分析、解决问题的能力;(5)提高学生的软件文档写作能力和团队合作精神。 2课程设计的任务及要求1)基本要求:(1)分析系统各功能模块的工作原理;(2)提出系统的设计方案; (3)对所进行编程、调试、修改。 2)创新要求: 在基本要求达到后,可进行创新设计,如:用类,虚函数,重载流插入运算符等。 3)课程设计论文编写要求(1)要按照书稿的规格打印誊写设计论文;(2)论文包括目录、摘要、正文、总结等;(3)毕业论文装订按学校的统一要求完成。4)答辩与评分标准: (1)达到课程设计的目的与要求,程序的可读性较好,并调试正确,60分;(2)能正确回答老师所提问题,可增加10分;(3)课程设计报告书写规范整齐,可增加10分;(4)心得体会认真总结,可增加10分;(5)程序有创新性,可增加10分;成绩评定实行优秀、良好、中等、及格和不及格五个等级。不及格者需重做。5)参考文献:(1)谭浩强.C+程序设计实践指导 清华大学出版社 (2)谭浩强.C+程序设计 清华大学出版社(3)http:/ /6)课程设计进度安排内容 天数 地点总体需求与分析构思及收集资料 1 图书馆各模块的编程实现,调试与修改 3 机房撰写论文与答辩 1 图书馆,机房学生签名: 2013 年6 月24 日课程设计(论文)评审意见(1)态度评价(20分):优()、良()、中()、一般()、差(); (2)任务难度(20分):优()、良()、中()、一般()、差(); (3)设计分析(20分):优()、良()、中()、一般()、差();(4)创新性评价(20分):优()、良()、中()、一般()、差();(5)回答问题(20分):优()、良()、中()、一般()、差();(6)论文格式规范性及考勤是否降等级:是()、否( ) 评阅人签名: 职称: 副教授2013 年6 月30日目录第1章 系统概要- 5 -1.1系统介绍- 5 -第2章 设计思路与算法- 5 -第3章 源程序代码- 6 -第4章 运行结果及分析- 12 -图4-2 命令菜单- 21 -第5章 心得体会- 21 -各章标题统一统一格式后,目录在word中按下面步骤生成的:“插入引用-索引和目录” 。注意:页码要从下面正文部分算起为第1页,不是从目录和摘要部分算。- 3 - 第1章 系统概要1.1系统介绍 设计一个Student(学生类)类,用制作学生成绩管理系统。1.2 基本功能要求 从键盘输入某班级若干个学生的学号、姓名、三门课(语文、数学、英语)的成绩,分别实现如下功能: (1)统计每个学生的总分和平均分;(2)按总分由大到小排出名次;(3)打印出成绩在全班平均分以上的学生名单和数据信息。 (4)任意输入一个学号,能够查找出该学生在班级中的排名及其考试成绩。要求:设计一个学生类,数据成员包括:学号、姓名、三门课成绩、总分、平均分、名次等信息。各功能要求分别用成员函数来实现,在主函数中通过菜单选择来实现各个功能。第2章 设计思路与算法学生成绩管理系统成绩录入模块成绩排名模块成绩查询模块主调函数模块成绩统计模块算法:I、成绩录入模块成绩录入就是对前面定义的类Student中的成员进行赋值。其中,用户需要输入的是学生的学号、姓名两个基本信息和语文、数学和英语三门成绩,其余总成绩、平均成绩和排名由后续的计算函数来实现。II、成绩统计模块成绩统计模块需要建立在成绩录入模块的基础之上,当系统中已经包含一些数据记录后才能对这些成绩求总分、平均分等操作。本模块包含对输入的数据计算总分和计算平均分,其中,cout()函数用于计算一个同学的总分和平均分,而getAverage()函数则求出整个班级所有的三门课程的平均成绩III、成绩排名模块在获得整个班级的总分和平均分之后,就可以对该班级中的同学按照某个参数进行排名了。在该系统中,使用每位同学的平均成绩对其进行排名,此处使用插入排序来实现。插入排序的基本思想是:每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的子序列中的适当位置,直到全部记录插入完成为止IV、成绩查询模块该系统中的成绩查询工是根据用户输入的学生的学号作为关键字,在数据结构中进行查询,并将查询结果即该记录的位置返回V、输出模块事实上,如果对该系统内的成绩做了排序、统计和查询等功能后,都需要将结果输出函数中,输出了学生成绩管理系统中所有的成员值。在主函数main()中调用成绩查询、统计等函数后都需要调用该函数,以输出结果到屏幕上。 第3章 源程序代码#include#include #includeconst int Max=30;/字符串最大长度class Student;/类声明void setData(Student &s);/设置对象s的数据void count(Student &s);/计算对象s的总分,平均分void sort(Student S,int N);/把长度为N的对象数组S,按平均分排序double getAverage(Student S,int N);/计算全班的平均分void print(Student &s);/打印信息int search(Student S,int N,char *n);/从长度为M的对象数组中,查找学号n的位置class Studentpublic: char numberMax; char nameMax; char banjiMax; double chinese; double math; double english; double total; double average; int rank;/只有比较才不为了0;void setData(Student &s) cout输入学号:s.number; cout姓名:; cout班级:s.banji; cout语文:s.chinese; cout数学:s.math; cout英语:s.english; s.total=0;/初始化 s.average=0; s.rank=0;void count(Student &s) s.total=s.chinese+s.math+s.english; s.average=s.total/3;void sort(Student S,int N)/插入法排序 int index; Student inserter; for(int i=1;i=0&inserter.averageSindex.average) Sindex+1=Sindex; index-; Sindex+1=inserter; for(int j=0;jN;j+) Sj.rank=j+1;/设置排名double getAverage(Student S,int N) double Average=0; for(int i=0;iN;i+) Average+=(Si.chinese+Si.math+Si.english); Average/=(N*3); return Average;void print(Student &s) cout排名t学号t姓名t语文:t 数学:t英语:t总分t平均分endl; ts.chineset s.mathts.englishts.totalts.averageendl;void print1(Student &s) cout学号t姓名t语文:t 数学:t英语:t总分t平均分endl; ts.chineset s.mathts.englishts.totalts.averageendl;int search(Student S,int N,char *n) for(int i=0;iN;i+) if(strcmp(Si.number,n)=0) return i; return -1;int main()system(color F5 );/*颜色属性由两个十六进制数字指定 - 第一个为背景,第二个则为前景。每个数字可以为以下任何值之一: 0 = 黑色 8 = 灰色 1 = 蓝色 9 = 淡蓝色 2 = 绿色 A = 淡绿色 3 = 湖蓝色 B = 淡浅绿色 4 = 红色 C = 淡红色 5 = 紫色 D = 淡紫色 6 = 黄色 E = 淡黄色 7 = 白色 F = 亮白色*/ const int M=5; Student SM; for(int i=0;iM;i+) cout下面输入第i+1位同学的数据:endl; setData(Si); count(Si); coutendl; int order=1; while(order!=5) cout以下是命令菜单:endl; cout1.统计平均分和总分endl; cout2.排序endl; cout3.打印出成绩在全班平均分以上的学生名单和数据信息endl; cout4.任意输入一个学号,查找出该学生在班级中的排名及其考试成绩endl; cout5.退出系统endl; coutorder; switch(order) case 1: for(int j=0;jM;j+) print1(Sj); break; case 2: sort(S,M); for(int j=0;jM;j+) print(Sj); break; case 3: double compare=getAverage(S,M); for(int k=0;kcompare) print(Sk); break; case 4: char codeMax; coutcode; int result=search(S,M,code); if(result=-1) cout您输入的学号不存在!endl; elsesort(S,M); print(Sresult); break; case 5:break; default:cout输入的命令不存在!endl; return 0; 第4章 运行结果及分析I、成绩录入模块成绩录入就是对前面定义的类Student中的成员进行赋值。其中,用户需要输入的是学生的学号、姓名两个基本信息和语文、数学和英语三门成绩,其余总成绩、平均成绩和排名由后续的计算函数来实现。实现成绩录入模块的函数代码如下:void setData(Student &s) /成绩录入模块 s.chineses.maths.english; s.total=0; /初始化 s.average=0; s.rank=0; 该函数运行时其结果如下图所示: 图 4-1 输入3位学生成绩输入学生信息的个数可在主函数用修改相应数值。II、成绩统计模块成绩统计模块需要建立在成绩录入模块的基础之上,当系统中已经包含一些数据记录后才能对这些成绩求总分、平均分等操作。本模块包含对输入的数据计算总分和计算平均分,其中,cout()函数用于计算一个同学的总分和平均分,而getAverage()函数则求出整个班级所有的三门课程的平均成绩,其函数代码如下:void count(Student &s) /成绩统计 s.total=s.chinese+s.math+s.english; /求三门课程的总分s.average=s.total/3; /求三门课程的平均分double getAverage(Student S,int N) /求平均分函数 double Average=0; /变量定义并初始化for(int i=0;iN;i+) /循环Average+=(Si.chinese+Si.math+Si.english); /求所有学生的所有成绩和Average/=(N*3); /求所有学生的成绩平均值return Average; /返回该平均值其中,计算整个班级所有的三门课程的成绩getAverage()函数的实现流程图如下:开始Average=0,i=0Average+=(S=i.chinese+Si.math+Si.english) IN? 是 否Average/=(N*3)返回Average的值结束注意:该统计模块中,需要统计一个班级同学的总分和平均分,就需要确定班上同学的人数,这个人数就放在常量N中。 图4-3 统计平均分和总分III、成绩排名模块在获得整个班级的总分和平均分之后,就可以对该班级中的同学按照某个参数进行排名了。在该系统中,使用每位同学的平均成绩对其进行排名,此处使用插入排序来实现。插入排序的基本思想是:每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的子序列中的适当位置,直到全部记录插入完成为止,其算法流程图如下:开始初始化i为1取出第i个元素第i个元素值=0? 是 否排序完成结果 根据上述的算法流程图,则乘机排名模块的实现代码如下:void sort(Student S,int N) /插入法排序 (成绩排名) int index; /定义变量Student inserter; /创建对象for(int i=1;i=0&inserter.averageSindex.average) /比较 Sindex+1=Sindex; /元素后移index-; Sindex+1=inserter; /插入该元素 for(int j=0;jN;j+) Sj.rank=j+1; /设置排名 图4-4 排序 图4-5打印出成绩在全班平均分以上的学生名单和数据信息IV、成绩查询模块该系统中的成绩查询工嫩嫩个是根据用户输入的学生的学号作为关键字,在数据结构中进行查询,并将查询结果即该记录的位置返回,其实现代码如下:int search(Student S,int N,char *n) /成绩查询模块 for(int i=0;iN;i+) /在所有记录中查询 if(strcmp(Si.number,n)=0) /找到return i; /返回结果所在的位置 return -1; /没有找到上述代码,第一行代码函数的生命中,参数字符串n即为用户输入的需要查询的学生学号,将该学号与所有数据元素进行比较,找到则返回该元素的位置,否则返回-1。该函数执行的流程图如下图:开始i=0Strcmp(Si.number,n=0 是 否return ii+iN? 是 否 return -1结束警告:在上述第五行代码中,使用了字符串比较函数strcmp()来实现两个学号的比较,因此在预处理中必须加上头文件。 图4-6 查找 图4-7 退出V、输出模块事实上,如果对该系统内的成绩做了排序、统计和查询等功能后,都需要将结果输出。下面给出输出学生信息的函数print(),代码如下:void print(Student &s) /输出结果 cout排名t学号t姓名t语文:t /定义输出格式数学:t英语:t总分t平均分endl; ts.chineset /输出成员的值 s.mathts.englishts.totalts.averageendl; 提示:该函数中,输出了学生成绩管理系统中所有的成员值。在主函数main()中调用成绩查询、统计等函数后都需要调用该函数,以输出结果到屏幕上。 图4-2 命令菜单 第5章 心得体会1. 遇到的主要问题,怎样解决的。 在程序开发阶段,main函数定义、输出模块及数据结构方面存在一定难点,而后参考部分文献解决该问题。2. 系统还需
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年艺术设计基础知识综合考试卷及答案
- 内蒙古科技大学《材料工程基础》2023-2024学年第二学期期末试卷
- 四川省德阳市重点名校2024-2025学年初三第二学期二模考试生物试题含解析
- 外贸职业学院思政课件
- 消费者行为分析私域流量池合作协议
- 生物医药研发项目融资与知识产权转让合同
- 农业服务平台用户数据补充与农业信息化协议
- 软件开发项目技术支持补充协议
- 智能家居环境数据采集与分析软件租赁服务协议
- 电网电源补充与分布式能源协议
- DB32-T 4608.1-2023 公共数据管理规范 第1部分:数据分类分级
- 【MOOC】旅游学概论-中国地质大学(武汉) 中国大学慕课MOOC答案
- 新型高效电化学去除技术-洞察分析
- 山东师大附属中2025届高三第二次模拟考试英语试卷含解析
- 《子宫肌瘤的护理》课件
- 液化气经营权转让协议
- 《高温合金钻削加工特性研究》
- 中央空调系统维保服务报价清单
- 建设项目职业病危害风险分类管理目录
- 8.3 法治社会 课件高中政治统编版必修三政治与法治
- 工程安全施工方案范本
评论
0/150
提交评论