河南城建学院C++语言课程设计报告书专业:信息管理与信息系统课程设计名称:《面向对象程序设计》题目:学生成绩排名系统班级:0834131设计者学号:设计者姓名:同组人员:指导老师:张妍琰郭力争完成时间:2015年1月9日目录目录.................................................................1第一章开发环境和开发工具..............................................11.1C++简介.........................................................11.2开发背景........................................................11.3开发环境........................................................2第二章设计目的与实现.................................................32.1系统需求分析....................................................32.2系统功能分析....................................................32.3系统总体设计....................................................42.3.1编写要求...................................................42.3.2开发设计思想...............................................42.3.3系统功能模块分析与设计.....................................52.4程序实现流程....................................................52.5成绩统计模块算法思想............................................7第三章测试与分析......................................................93.1数据显示........................................................93.2结果分析........................................................9总结..................................................................11心得体会..............................................................12参考文献..........................................................131第一章开发环境和开发工具1.1C++简介C++是在C语言的基础上开发的一种集面向对象编程、泛型编程和过程化编程于一体的编程语言。当C语言发展到顶峰的时刻,出现了一个版本叫CwithClass,那就是C++最早的版本,在C语言中增加class关键字和类,那个时候有很多版本的C都希望在C语言中增加类的概念;后来C标准委员会决定为这个版本的C起个新的名字,那个时候征集了很多种名字,最后采纳了其中一个人的意见,以C语言中的++运算符来体现它是C语言的进步,故而叫C++,成立了C++标准委员会。C++应用较为广泛,是一种静态数据类型检查的,支持多重编程的通用程序设计语言。它支持过程化程序设计,数据抽象,面向对象设计,制作图标等多种程序设计风格。C++语言的主要特点表现在两个方面,一是尽量兼容C,二是支持面向对象的方法。它操持了C的简洁、高效的接近汇编语言等特点,对C的类型系统进行了改革的扩充,因此C++比C更安全,C++的编译系统能检查出更多的类型错误.1.2开发背景随着科学技术的不断发展,计算机科学日渐成熟,其强大的功能已为人们所深刻认识,它己进入人类社会的各个领域并发挥着越来越重要的作用。采用计算机进行信息化管理已成为衡量教学管理科学化和现代化的重要标志,而学生成绩排名的全面自动化、信息化则是其中重要的组成部分。学生成绩排名信息的好坏对于教学管理者来说至关重要,在很大程度上影响着教学管理者对学生的看法及学生个人考评。因此,本文所研究的学生成绩排名系统具有一定的使用价值和现实意义。21.3开发环境本文所采用的开发环境主要是基于VC6.0。VC++6.0是微软公司推出的开发Win32应用程序(Windows95/98/2000/XP/NT)的、面向对象的可视化集成工具。它的最大优点就是提供了功能强大的MFC类库,MFC是一个很大的C++类层次结构,其中封装了大量的类及其函数,很多Windows程序所共有的标准内容可以由MFC的类来提供,MFC类为这些内容提供了用户接口的标准实现方法,程序员所要做的就是通过预定义的接口把具体应用程序特有的东西填入这个轮廓,这将简化编程工作,大大的减少程序员编写的代码数量,使编程工作变得更加轻松容易。3第二章设计目的与实现2.1系统需求分析随着社会的不断进步,教育教学事业越来越受到重视,国家对部分学生的优惠政策越来越深入人心;与此同时,随着人口的增加,学生人数也在随之有了大幅度提升。因此,教学管理者们对学生的成绩排名这一任务的实现也越来越频繁,越来越繁琐。所以,我们需要一个方便的学生成绩排名系统来减轻教学管理者的负担,更加方便快捷的来查询,管理学生的成绩信息。2.2系统功能分析2.2.1成绩的管理功能【1】添加学生信息:添加学生的成绩信息,包括学生学号,姓名,各科成绩,输入功能操作结束返回到主菜单。若员工信息输入有误,需及时修改。【2】删除学生信息:删除某个学生的成绩信息,采用数组的方法,根据学号进行删除,删除功能操作结束,返回到主菜单。【3】学生信息排序:排序功能可以根据需求分四种方式进行学生成绩的排序,包括按四科科目的成绩分别进行排序以及按总成绩进行排序。排序功能操作结束,返回到主页面。42.2.2成绩的统计功能成绩统计功能:统计功能可以实现学生总人数的统计,各科平均分以及各科及格率,另外,还包括总分的平均分,可以研究整体学生的成绩。2.2.3成绩的查找功能成绩的查找功能:查找功能可以根据需求选择三种方式中的一种进行查找,包括按学号查找,按姓名查找,按科目查找,在按科目查找功能下,又细分了按英语成绩,按数学成绩,按C++成绩,按语文成绩查找。2.3系统总体设计2.3.1编写要求1)声明一个成绩类,类中包括学生成绩,姓名,学号,以及对成绩相应的操作函数,例如添加、删除、排序等功能;2)调用函数部分,对类中函数成员以及友元函数进行实现,实现其对成绩的统计功能,例如平均分,及格率等功能;3)具备按学号、姓名、或课程名查询成绩的功能;4)编写主函数,要求提供一个界面,允许操作人员输入学生成绩数据。2.3.2开发设计思想基于以上系统设计目标,本文在开发学生成绩排名系统时遵循了以下开发设计思想:●尽量达到操作过程中的直观、方便、实用、等要求。●系统采用模块化程序设计方法,既便于系统功能的各种组合和修改,又便于未参与开发的技术维护人员补充、维护。●系统可以根据用户需求进行数据的添加、删除、等操作。52.3.3系统功能模块分析与设计本系统分为五个模块:添加学生信息、删除学生信息、学生成绩排序、学生成绩统计、学生成绩查找。得到如图3-1所示的系统功能模块图。图3-1系统功能模块图2.4程序实现流程【1】添加学生信息2.4-1学生成绩排序系统删除学生信息按数学添加学生信息学生成绩统计学生成绩排序学生成绩查找按语文按总分按C++按课程按姓名按学号按英语学生成绩排序系统替换到已定义的数组中输入学号姓名成绩添加学生信息6【2】删除学生信息2.4-2【3】学生成绩排序2.4-3【4】学生成绩统计YesNoYesNo.2.4-4删除学生信息输入要删除的学号将目标数组各项替换为0学生成绩排序按总分按C++按英语按数学冒泡法进行排序学生成绩统计学号不是0人数+1计入总分并判断是否及格统计总分及格率等及格人数+1按语文7【5】学生成绩查找2.4-5【6】主页面模块2.4-62.5成绩统计模块算法思想采用类的对象数组对类中的对象进行引用,在使用对象数组时只能引用单个数组元素,每个数组元素都是一个对象,通过这个对象,便可以访问到它的公有成员。通过对其成员的访问实现统计功能。学生成绩查找按学号按姓名按科目按数学按英语按C++按总分输入后与有成绩的数组的目标项对比,相等即输出学生成绩统计成绩查询成绩统计成绩管理按语文按学号按姓名按课程8voidtongji(){intn1,n2=0,n_m=0,n_e=0,n_c=0,n_y=0,t_m=0,t_e=0,t_c=0,t_y=0,t_t=0;//n1计数,n2统计总人数for(n1=0;n150;n1++){if(student[n1].num!=0)//对类的对象数组中的成员进行访问{n2++;t_m=t_m+student[n1].m_num;//数学总分数t_e=t_e+student[n1].e_num;//英语总分数t_c=t_c+student[n1].c_num;//英语总分数t_y=t_y+student[n1].y_num;//语文总成绩t_t=t_t+student[n1].t_num;//总分数}if(student[n1].m_num=60){n_m++;}if(student[n1].e_num=60){n_e++;}if(student[n1].c_num=60){n_c++;}if(student[n1].y_num=60){n_y++;}}if(n2==0){cout对不起,无记录endl;main();}elsecout总人数为:n2endl数学平均分为:t_m/n2及格率为:n_m*100/n2%endl英语平均分为:t_e/n2及格率为:n_e*100/n2%endlC++平均分为:t_c/n2及格率为:n_c*100/n2%endl语文平均分:t_y/n2及格率为:n_y*100/n2%endl总分平均分为:t_t/n2endl;}9第三章测试与分析3.1数据显示统计功能输出显示如下:总人数:2数学平均分:87及格率:100%英语平均分:65及格率:100%C++平均分:65及格率:100%语文平均分:87及格率:100%总分平均分:3053.2结果分析1)进入程序主页面:102)输入2进入统计模块,当程序无数据记录时:当程序有学生记录时:11总结此次课程设计,在小组各成员的共同努力下完成,组长设计了成绩排序系统的成绩类,然后将各个实现功能分给组员进行实现,由于我基础不太好,给他们添了很大的麻烦。虽然课程设计结束了,但其中还存在着很多问题。一方面,因为有关文件储存这方面的知识欠缺,不太牢固,导致了我们每次都要手动录入学生成绩信息,因此我们的程序还需要进一步完善;另一方面,面向对象的程序开发需要符合客观生活逻辑,所以程序在删除,统计等方面的需求还需要增加其他方面,同时,类的设计有待完善。虽然课程设计的结果不尽人意,但在这两周的付出是很有价值的,在以后的日子里,我一定要积极自主学习,将基本知识打牢固,同时,学会与同学们合作,将作业完成的更好。12心得体会通过一周的课程设计,使我对《C++语言程序设计》这门课程有了更深入的理解。《C