ImageVerifierCode 换一换
格式:DOCX , 页数:42 ,大小:406.62KB ,
资源ID:22848153      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/22848153.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(大学C++课程设计报告学生成绩管理系统附源代码.docx)为本站会员(b****2)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

大学C++课程设计报告学生成绩管理系统附源代码.docx

1、大学C+课程设计报告学生成绩管理系统附源代码广东海洋大学课程设计报告课程名称:C/C+语言程序设计课程编号:学生姓名:陈学生班级:信管1071学 号: 实习地点:科技楼起止时间:2008.12.29-2009.01.02指导教师:一、目的与要求通过本课程设计的实践,全面总结C+课程学习中的的数据类型、程序结构、数组、函数、指针、结构体、链表等基本概念,掌握其使用方法。掌握面向对象程序设计中有关类、对象、继承、重载、多态性、输入输出流类体系、文件操作的基本概念,初步学会用类与对象这种面向对象的程序设计方法编写应用程序。培养使用面向对象的程序设计方法编写计算机程序的能力。通过设计一个学生成绩统计管

2、理,进一步熟悉C+中类的概念、类的封装、继承的实现方式。了解系统开发的需求分析、类层次设计、模块分解、编码测试、模块组装与整体调试的全过程,加深对C+的理解与Visual C+环境的使用;逐步熟悉程序设计的方法,并养成良好的编程习惯。程序设计是一门实践性很强的课程,必须十分重视实践环节。许多实际的知识不是靠听课和看书学到的,而是通过长时间的实践积累的。二、设计内容学生成绩管理系统1基本功能:a)成绩的输入(学号、姓名、英语、数学、C+语言);b)成绩统计(各科平均成绩、各科成绩“优秀”、“良好”、“中等”、“及格”、“不及格”的人数及其所占比例);c)总成绩统计(学生的总成绩、平均成绩及成绩排

3、名)d)成绩的统计结果显示。2扩展功能:a)学生数据的添加、修改、与删除b)学生数据的读取与存储3设计要求 a)采用面向对象的思想和方法完成设计,最好能够基于windows图形界面 。 b)至少设计四个类;学生类(描述学生基本信息);成绩类:班级类;课程类(描述课程信息:课程编号,科目名称(如高等数学,大学英语等);学生成绩及课程信息用文件保存,每个类一个文件,程序执行时从文件读入。三、过程与结果主要内容如下:1.关键类的设计,继承层次关系,代码:首先,创建了一个student类.在student类的共有部分声明程序所需函数;然后就是student类的函数实现部分,其中定义student类的带

4、参数及不带参数构造函数;再是常用函数的调用,并定义系统菜单函数及其界面;最后就是主函数文件。Student类的声明如下:主要功能函数的设计:1. 关于计算总成绩和平均成绩以及评定成绩等级的函数,而用于成绩统计中优秀、良好、中等、及格、不及格的计算,不过为便于表达,此程序采用字母A,B,C,D,E来分别表达上述等级;代码如下:2.此函数为查找函数的实现过程,通过while switch和if语句以及制表格和setw的使用将输入的数据以表格的形式打印出来,等级一栏宽度略小;3.此函数为删除函数的实现部分,巧妙运用字母i,定义i的值0为数据不存在,1为数据存在的情况,删除时考虑数据存在与否的问题;4

5、.排序函数中分四种情况排序,分别按学号,总分,平均分来排序,排序结果也能有升序或降序操作,通过while else语句以及制表格和case的使用将输入的数据排序出来;因函数体过于庞大,在后面代码清单罗列出来时会标示出来。数据输入设计:数据输入以输出方式打开文件,通过this指针和地址引用把写入的数据加在文件末尾;程序测试结果:1运行程序.会出现如下画面,按照提示进行选择.2.首先选择1,然后按Enter键.按照提示对学生情况进行输入.如图:3.按任意键程序自动保存第一个同学的数据,并返回菜单,按照刚才的步骤继续输入第二个、第三个同学等等的数据;4.选择4, 然后按Enter键.对数据进行进行有

6、目的性的排序.如图:5譬如选择2按总分排序,按Enter键,再在接下来的提示框中选择降序排序类型,再按一次Enter键,排序结果如图:符合设计要求,但各科成绩“优秀”、“良好”、“中等”、“及格”、“不及格”的人数及其所占比例因个人能力有限未能设计出来;6.按任意键又返回菜单,继续接下来的操作;四、设计总结这次课程设计基本上涵盖了大学一年级学习到的C+ 语言知识点,课程设计题目要求不仅要求对课本知识有较深刻的了解,同时要求程序设计者有较强的思维和动手能力。这次课设使我了解我编程思想和编程技巧,也认识了软件生命周期的各个环境,包括构思、设计、编写、调试、发布、文档化、维护和修订。C+程序编译是一

7、种要求特别精细的工作,小到一个分号(或点)都能影响整个程序的运行,这就要求我们编写程序时要特别细心,即使是一个符号,还是一个字母都不能乱用。在这次的编写过程中,我就因为错把case序列语句里的变量中的p写成q使整个程序瘫痪。它让我记住了学习需要认真、仔细、负责的态度对待。这次课程设计虽说很辛苦,而且设计出来的程序不全具备课程所需的,不过扩展功能学生数据的添加、修改、与删除的函数嵌进去,而且排序功能关联升序和降序功能,正所谓鱼与熊掌不可得兼。这次课程设计,在整个程序中,我们通过使用while循环,switch语句,冒泡排序法,表格设计中的setw()以及类的定义及使用来完成程序设计,使我提高了对

8、C+中语句的使用能力和组合能力,进一步加强了我对使用C+编程的能力。还让我掌握了高级程序设计语言的基本思想、基本概念、基本方法和基本技能,while语句,this指针,case作为程序的入口,一般结合switch使用等等。一个星期以来的课程设计,感谢帮助我的同学和师长,通过和他们的交流,互相交流经验,我这次设计的程序中各大主函数体得以设计出来,感谢他们在我编程过程中为我做的提醒和指点,这真的很重要。这次课程设计不仅让我修补了以前学习的漏洞,也让我知道一个道理:编程需要兴趣和实际动手。这应该可以借鉴在同学或者师长们的编程经验上。创新思维至关重要,相对于我这略感冗余却实现不了更多功能的程序来说,有

9、必要写出精简的代码,也有助于开发出高效的程序。虽说我编写的程序离专业人员设计的还有好大一段距离,但它已经是我目前的极限。我相信,通过我的努力,在不久的将来,我会编出一组真正实用的程序的。五、成绩评定成绩指导教师日期六、附件程序源代码清单:#include#include#include#includeusing namespace std;class studentprivate: string number; string name; double computer; double English; double math; double sum; double ave; char grad

10、e; student *head; student *curnode; student *next;public: student();/不带参数的构造函数 student(string ,string ,double ,double ,double ,double =0.0,double =0.0,char =NULL); /带数据域参数的构造函数,用来动态建立节点 void sum_score();/总分函数 void ave_score();/平均分函数 void grade_score();/成绩等级 void cin_app();/修改用 void app_score(string

11、,string ,double ,double ,double); /动态的建立节点 void del_score(); /删除全部节点 void displist(); /输出节点中的全部数据 void lookup(int ,string ); /查找函数 void del_score(int ,string ); /删除函数 void compositor(int ,int ); /排序函数 void rework(int ,string ); /修改函数;/student类的实现void err_char();/输入错误字符检测函数void score_err();/成绩范围检测函数,

12、当输入成绩不在0到100之间时提示重新输入student:student():next(NULL)/不带参数的构造函数 head=curnode=this;/带参数的构造函数student:student(string Number,string Name,double Computer,double ENglish,double Math,double Sum,double Ave,char Grade):next(NULL) number=Number; name=Name; computer=Computer; English=ENglish; math=Math; sum=Sum; a

13、ve=Ave; grade=Grade;void student:sum_score()/计算总成绩sum=computer+English+math;void student:ave_score()/计算平均成绩ave=(computer+English+math)/3.0;void student:grade_score()/计算成绩等级 int i; i=ave; switch(i/10) case 10: grade=A; break; case 9: grade=A; break; case 8: grade=B; break; case 7: grade=C; break; cas

14、e 6: grade=D; break; default: grade=E; void student:app_score(string Number,string Name,double Computer,double ENglish,double Math)/动态建立节点 curnode-next=new student(Number,Name,Computer,ENglish,Math); curnode=curnode-next;void student:del_score()/删除表中的全部数据 student *p; curnode=head-next; while(curnode

15、!=NULL) p=curnode-next; delete curnode; curnode=p; head-next=NULL; curnode=head; coutendl; cout !表中内容全部清空,现已是一个空表! endl; coutendl; coutnext=NULL) coutendl; cout !这是一个空表! endl; coutendl; coutnext; coutendl; cout 学号 姓名 计算机 英语 数学 总分 平均分 等级endl; coutendl; while(curnode!=NULL) coutleftsetw(10)number; cou

16、tleftsetw(10)name; coutleftsetw(6)computer; coutleftsetw(6)English; coutleftsetw(6)math; curnode-sum_score(); coutleftsetw(8)sum; curnode-ave_score(); coutleftsetw(8)ave; curnode-grade_score(); coutleftsetw(4)gradenext!=NULL) coutendl; else coutnext; curnode=pw; coutendl; cout!表中内容输出完毕!endl; coutend

17、l; cout ;system(pause);/输入数据void student:cin_app() student *p=curnode; bool b=0; string Number; string Name; double Computer; double ENglish; double Math; while(1) coutNumber; curnode=head-next; while(curnode!=NULL) b=(Number=curnode-number); curnode=curnode-next; if(!b) break; else coutendl; cout出现

18、了相同的学号,请重新输入endl; coutendl; curnode=p; coutName; while(1) coutComputer; while(cin.fail() err_char(); coutComputer; if(Computer=0&Computer=100) break; else score_err(); while(1) coutENglish; while(cin.fail() err_char(); coutENglish; if(ENglish=0&ENglish=100) break; else score_err(); while(1) coutMath

19、; while(cin.fail() err_char(); coutMath; if(Math=0&Mathapp_score(Number,Name,Computer,ENglish,Math); coutendl; cout!已添加一条记录!endl; coutendl; coutnext) coutendl; cout!这是一个空表!endl; coutendl; curnode=p; cout ;system(pause); return; coutendl; cout 学号 姓名 计算机 英语 数学 总分 平均分 等级endl; coutnumber=str;break; case

20、 2: b=curnode-name=str;break; default: return; if(b) i=0; coutleftsetw(10)number; coutleftsetw(10)name; coutleftsetw(6)computer; coutleftsetw(6)English; coutleftsetw(6)math; curnode-sum_score(); coutleftsetw(8)sum; curnode-ave_score(); coutleftsetw(8)ave; curnode-grade_score(); coutleftsetw(4)gradee

21、ndl; coutnext; /当i=1是代表没有找到数据 if(i) coutendl; cout没有匹配的数据 endl; coutendl; else coutendl; curnode=p; cout 以上是本次查找的结果!endl; coutnext) coutendl; cout!这是一个空表!endl; coutendl; curnode=p; coutnumber=str;break; case 2: b=curnode-name=str;break; default: return; if(b) i=0; pw-next=curnode-next; delete curnode; curnode=pw-next; else pw=curnode; curnode=curnode-next; /当i=1是代表没有找到数据 if(i) cout

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1