C++学生成绩排名系统课程设计(附源码)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
河南城建学院 C++语言课程设计报告书
专 题 班
业:信息管理与信息系统 目:学生成绩排名系统 级: 0834131
课程设计名称: 《面向对象程序设计》
设 计 者 学 号: 设 计 者 姓 名: 同 组 人 员: 指 导 老 师:张妍琰 郭力争 完 成 时 间:2015 年 1月9 日
目录 目录 1 第一章 开发环境和开发工具 1 1.1 C++简介 1 1.2 开发背景 1 1.3 开发环境 2 第二章 设计目的与实现 3 2.1 系统需求分析 3 2.2系统功能分析 3 2.3系统总体设计 4 2.3.1编写要求 4 2.3.2开发设计思想 4 2.3.3系统功能模块分析与设计 2.4程序实现流程 5 2.5成绩统计模块算法思想 7 第三章 测试与分析 9 3.1数据显示 9 3.2结果分析 9 总结 11 心得体会 12 参考文献 13
Fra Baidu bibliotek
5
第1章 开发环境和开发工具
.1 C++简介 C++是在C语言的基础上开发的一种集面向对象 编程、泛型编程和过程化编程于一体的编程语言。 当C语言发展到顶峰的时刻,出现了一个版本叫C with Class,那就是C++最早的版本,在C语言中增 加class关键字和类,那个时候有很多版本的C都希 望在C语言中增加类的概念;后来C标准委员会决定 为这个版本的C起个新的名字,那个时候征集了很 多种名字,最后采纳了其中一个人的意见,以C语 言中的++运算符来体现它是C语言的进步,故而叫 C++,成立了C++标准委员会。 C++应用较为广泛,是一种静态数据类型检查 的,支持多重编程的通用程序设计语言。它支持过 程化程序设计,数据抽象,面向对象设计,制作图 标等多种程序设计风格。C++语言的主要特点表现 在两个方面,一是尽量兼容C,二是支持面向对象的 方法。它操持了C的简洁、高效的接近汇编语言等 特点,对C的类型系统进行了改革的扩充,因此 C++比C更安全,C++的编译系统能检查出更多的类 型错误. 1.2 开发背景 随着科学技术的不断发展,计算机科学日渐成熟, 其强大的功能已为人们所深刻认识,它己进入人类社
第二章
设计目的与实现
2.1 系统需求分析 随着社会的不断进步,教育教学事业越来越受到 重视,国家对部分学生的优惠政策越来越深入人 心;与此同时,随着人口的增加,学生人数也在随
之有了大幅度提升。因此,教学管理者们对学生的 成绩排名这一任务的实现也越来越频繁,越来越繁 琐。所以,我们需要一个方便的学生成绩排名系统 来减轻教学管理者的负担,更加方便快捷的来查 询,管理学生的成绩信息。 2.2系统功能分析
2.3.1编写要求
1) 声明一个成绩类,类中包括学生成绩,姓 名,学号,以及对成绩相应的操作函数,例如添加、 删除、排序等功能; 2) 调用函数部分,对类中函数成员以及友元函 数进行实现,实现其对成绩的统计功能,例如平均 分,及格率等功能; 3) 具备按学号、姓名、或课程名查询成绩的功 能; 4)编写主函数,要求提供一个界面,允许操作 人员输入学生成绩数据。
学生成绩统计 学号不是0 Yes No
人数+1计入总分并判断是否及格 Yes No 及格人数+1 统计总分及格率等
. 2.4-4 【5】学生成绩查找
学生成绩查找 按姓名 按科目 按学号 按语文 按C++ 按总分 按数学 按英语 输入后与有成绩的数组的目标项对比,相等即输出
2.4-5 【6】主页面模块
2.2.2 成绩的统计功能
成绩统计功能:统计功能可以实现学生总人数 的统计,各科平均分以及各科及格率,另外,还包 括总分的平均分,可以研究整体学生的成绩。
2.2.3成绩的查找功能
成绩的查找功能:查找功能可以根据需求选 择三种方式中的一种进行查找,包括按学号查找, 按姓名查找,按科目查找,在按科目查找功能下, 又细分了按英语成绩,按数学成绩,按C++成绩, 按语文成绩查找。 2.3系统总体设计
2.2.1 成绩的管理功能
【1】添加学生信息:添加学生的成绩信息, 包括学生学号,姓名,各科成绩,输入功能操作结 束返回到主菜单。若员工信息输入有误,需及时修 改。 【2】删除学生信息:删除某个学生的成绩信 息,采用数组的方法,根据学号进行删除,删除功 能操作结束,返回到主菜单。 【3】学生信息排序:排序功能可以根据需求 分四种方式进行学生成绩的排序,包括按四科科目 的成绩分别进行排序以及按总成绩进行排序。排序 功能操作结束,返回到主页面。
第3章 测试与分析
3.1数据显示 统计功能输出显示如下: 总人数:2 数学平均分:87 英语平均分:65 C++平均分:65 语文平均分:87 总分平均分:305 3.2结果分析 1) 进入程序主页面:
及格率:100% 及格率:100% 及格率:100% 及格率:100%
2) 输入2进入统计模块,当程序无数据记录时:
2.3.3系统功能模块分析与设计
本系统分为五个模块:添加学生信息、删除学生 信息、学生成绩排序、学生成绩统计、学生成绩查 找。得到如图3-1所示的系统功能模块图。
学生成绩排序系统 学生成绩排序系统 删除学生信息 按数学 添加学生信息 学生成绩统计 学生成绩排序 学生成绩查找 按语文 按总分 按C++ 按课程 按姓名 按学号 按英语
2.3.2开发设计思想
基于以上系统设计目标,本文在开发学生成绩 排名系统时遵循了以下开发设计思想: ●尽量达到操作过程中的直观、方便、实 用、等要求。 ●系统采用模块化程序设计方法,既便于系 统功能的各种组合和修改,又便于未参与开发的技 术维护人员补充、维护。
●系统可以根据用户需求进行数据的添加、 删除、等操作。
学生成绩统计 成绩查询 成绩统计 成绩管理
按课程 按姓名 按学号
2.4-6
2.5成绩统计模块算法思想 采用类的对象数组对类中的对象进行引用,在使 用对象数组时只能引用单个数组元素,每个数组元 素都是一个对象,通过这个对象,便可以访问到它 的公有成员。通过对其成员的访问实现统计功能。
void tongji() { int n1,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;/ 计数,n2统计总人数 for(n1=0;n1<50;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(); } else cout<<"总人数为:"<<n2<<endl<<"数学平均分为:" <<t_m/n2<<" 及格率为:"<<n_m*100/n2<<"%"<<endl<<"英 语平均分为:"<<t_e/n2<<" 及格率为:" <<n_e*100/n2<<"%"<<endl<<"C++平均分为:"<<t_c/n2<<" 及格率为:"<<n_c*100/n2<<"%"<<endl<<"语文平均分:" <<t_y/n2<<" 及格率为:"<<n_y*100/n2<<"%"<<endl<<"总 分平均分为:"<<t_t/n2<<endl;}
的能力。培养了基本的、良好的程序设计技能以及合 作能力。这次课程设计同样提高了我的综合运用所学 知识的能力。并对VC6.0有了更深入的了解。《C++语 言程序设计》是一门实践性很强的课程,上机实习是 对学生全面综合素质进行训练的一种最基本的方法, 是与课堂听讲、自学和练习相辅相成的、必不可少的 一个教学环节。上机实习一方面能使书本上的知识 变“活”,起到深化理解和灵活掌握教学内容的目 的;另一方面,上机实习是对学生软件设计的综合能 力的训练,包括问题分析,总体结构设计,程序设计 基本技能和技巧的训练。此外,还有更重要的一点 是:机器是比任何教师更严厉的检查者。因此, 在“数据结构”的学习过程中,必须严格按照老师的 要求,主动地、积极地、认真地做好每一个实验,以 不断提高自己的编程能力与专业素质。 通过这段时间的课程设计,我认识到C++语言程 序设计是一门比较难的课程。需要多花时间上机练 习。这次的程序训练培养了我实际分析问题、编程和 动手能力,使我掌握了程序设计的基本技能,提高了 我适应实际,实践编程的能力。 总的来说,这次课程设计让我获益匪浅,对 C++语言程序设计也有了进一步的理解和认识。
会的各个领域并发挥着越来越重要的作用。采用计算 机进行信息化管理已成为衡量教学管理科学化和现代 化的重要标志,而学生成绩排名的全面自动化、信息 化则是其中重要的组成部分。学生成绩排名信息的好 坏对于教学管理者来说至关重要,在很大程度上影响 着教学管理者对学生的看法及学生个人考评。因此, 本文所研究的学生成绩排名系统具有一定的使用价值 和现实意义。 1.3 开发环境 本文所采用的开发环境主要是基于VC6.0。 VC++6.0是微软公司推出的开发Win32应用程序 (Windows 95/98/2000/XP/NT)的、面向对象的 可视化集成工具。它的最大优点就是提供了功能 强大的MFC类库,MFC是一个很大的C++类层次结 构,其中封装了大量的类及其函数,很多 Windows程序所共有的标准内容可以由MFC的类来 提供,MFC类为这些内容提供了用户接口的标准 实现方法,程序员所要做的就是通过预定义的接 口把具体应用程序特有的东西填入这个轮廓,这 将简化编程工作,大大的减少程序员编写的代码 数量,使编程工作变得更加轻松容易。
图3-1系统功能模块图 2.4程序实现流程
【1】添加学生信息
添加学生信息 输入学号姓名成绩 替换到已定义的数组中
2.4-1 【2】删除学生信息
删除学生信息 输入要删除的学号 将目标数组各项替换为0 2.4-2
【3】学生成绩排序
学生成绩排序 按语文 按C++ 按英语 按总分 按数学
冒泡法进行排序
2.4-3 【4】学生成绩统计
当程序有学生记录时:
总结
此次课程设计,在小组各成员的共同努力下完 成,组长设计了成绩排序系统的成绩类,然后将各 个实现功能分给组员进行实现,由于我基础不太 好,给他们添了很大的麻烦。虽然课程设计结束 了,但其中还存在着很多问题。一方面,因为有关 文件储存这方面的知识欠缺,不太牢固,导致了我 们每次都要手动录入学生成绩信息,因此我们的程 序还需要进一步完善;另一方面,面向对象的程序 开发需要符合客观生活逻辑,所以程序在删除,统
计等方面的需求还需要增加其他方面,同时,类的 设计有待完善。虽然课程设计的结果不尽人意,但 在这两周的付出是很有价值的,在以后的日子里, 我一定要积极自主学习,将基本知识打牢固,同 时,学会与同学们合作,将作业完成的更好。
心得体会
通过一周的课程设计,使我对《C++语言程序设 计》这门课程有了更深入的理解。《C++语言程序 设计》是一门实践性较强的课程,为了学好这门课 程,必须在掌握理论知识的同时,加强上机实践。 我的课程设计题目是学生成绩排名系统。刚开始 做这个程序的时候,感到完全无从下手,甚至让我觉 得完成这次程序设计根本就是不可能的,于是开始查 阅各种资料以及参考文献,之后便开始着手写程序, 写完运行时有很多问题。特别是实现统计功能时,经 常运行出现错误,但通过小组成员的共同努力最终基 本解决了问题。 在本课程设计中,我明白了理论与实际应用相结 合的重要性,并提高了自己组织数据及编写大型程序
专 题 班
业:信息管理与信息系统 目:学生成绩排名系统 级: 0834131
课程设计名称: 《面向对象程序设计》
设 计 者 学 号: 设 计 者 姓 名: 同 组 人 员: 指 导 老 师:张妍琰 郭力争 完 成 时 间:2015 年 1月9 日
目录 目录 1 第一章 开发环境和开发工具 1 1.1 C++简介 1 1.2 开发背景 1 1.3 开发环境 2 第二章 设计目的与实现 3 2.1 系统需求分析 3 2.2系统功能分析 3 2.3系统总体设计 4 2.3.1编写要求 4 2.3.2开发设计思想 4 2.3.3系统功能模块分析与设计 2.4程序实现流程 5 2.5成绩统计模块算法思想 7 第三章 测试与分析 9 3.1数据显示 9 3.2结果分析 9 总结 11 心得体会 12 参考文献 13
Fra Baidu bibliotek
5
第1章 开发环境和开发工具
.1 C++简介 C++是在C语言的基础上开发的一种集面向对象 编程、泛型编程和过程化编程于一体的编程语言。 当C语言发展到顶峰的时刻,出现了一个版本叫C with Class,那就是C++最早的版本,在C语言中增 加class关键字和类,那个时候有很多版本的C都希 望在C语言中增加类的概念;后来C标准委员会决定 为这个版本的C起个新的名字,那个时候征集了很 多种名字,最后采纳了其中一个人的意见,以C语 言中的++运算符来体现它是C语言的进步,故而叫 C++,成立了C++标准委员会。 C++应用较为广泛,是一种静态数据类型检查 的,支持多重编程的通用程序设计语言。它支持过 程化程序设计,数据抽象,面向对象设计,制作图 标等多种程序设计风格。C++语言的主要特点表现 在两个方面,一是尽量兼容C,二是支持面向对象的 方法。它操持了C的简洁、高效的接近汇编语言等 特点,对C的类型系统进行了改革的扩充,因此 C++比C更安全,C++的编译系统能检查出更多的类 型错误. 1.2 开发背景 随着科学技术的不断发展,计算机科学日渐成熟, 其强大的功能已为人们所深刻认识,它己进入人类社
第二章
设计目的与实现
2.1 系统需求分析 随着社会的不断进步,教育教学事业越来越受到 重视,国家对部分学生的优惠政策越来越深入人 心;与此同时,随着人口的增加,学生人数也在随
之有了大幅度提升。因此,教学管理者们对学生的 成绩排名这一任务的实现也越来越频繁,越来越繁 琐。所以,我们需要一个方便的学生成绩排名系统 来减轻教学管理者的负担,更加方便快捷的来查 询,管理学生的成绩信息。 2.2系统功能分析
2.3.1编写要求
1) 声明一个成绩类,类中包括学生成绩,姓 名,学号,以及对成绩相应的操作函数,例如添加、 删除、排序等功能; 2) 调用函数部分,对类中函数成员以及友元函 数进行实现,实现其对成绩的统计功能,例如平均 分,及格率等功能; 3) 具备按学号、姓名、或课程名查询成绩的功 能; 4)编写主函数,要求提供一个界面,允许操作 人员输入学生成绩数据。
学生成绩统计 学号不是0 Yes No
人数+1计入总分并判断是否及格 Yes No 及格人数+1 统计总分及格率等
. 2.4-4 【5】学生成绩查找
学生成绩查找 按姓名 按科目 按学号 按语文 按C++ 按总分 按数学 按英语 输入后与有成绩的数组的目标项对比,相等即输出
2.4-5 【6】主页面模块
2.2.2 成绩的统计功能
成绩统计功能:统计功能可以实现学生总人数 的统计,各科平均分以及各科及格率,另外,还包 括总分的平均分,可以研究整体学生的成绩。
2.2.3成绩的查找功能
成绩的查找功能:查找功能可以根据需求选 择三种方式中的一种进行查找,包括按学号查找, 按姓名查找,按科目查找,在按科目查找功能下, 又细分了按英语成绩,按数学成绩,按C++成绩, 按语文成绩查找。 2.3系统总体设计
2.2.1 成绩的管理功能
【1】添加学生信息:添加学生的成绩信息, 包括学生学号,姓名,各科成绩,输入功能操作结 束返回到主菜单。若员工信息输入有误,需及时修 改。 【2】删除学生信息:删除某个学生的成绩信 息,采用数组的方法,根据学号进行删除,删除功 能操作结束,返回到主菜单。 【3】学生信息排序:排序功能可以根据需求 分四种方式进行学生成绩的排序,包括按四科科目 的成绩分别进行排序以及按总成绩进行排序。排序 功能操作结束,返回到主页面。
第3章 测试与分析
3.1数据显示 统计功能输出显示如下: 总人数:2 数学平均分:87 英语平均分:65 C++平均分:65 语文平均分:87 总分平均分:305 3.2结果分析 1) 进入程序主页面:
及格率:100% 及格率:100% 及格率:100% 及格率:100%
2) 输入2进入统计模块,当程序无数据记录时:
2.3.3系统功能模块分析与设计
本系统分为五个模块:添加学生信息、删除学生 信息、学生成绩排序、学生成绩统计、学生成绩查 找。得到如图3-1所示的系统功能模块图。
学生成绩排序系统 学生成绩排序系统 删除学生信息 按数学 添加学生信息 学生成绩统计 学生成绩排序 学生成绩查找 按语文 按总分 按C++ 按课程 按姓名 按学号 按英语
2.3.2开发设计思想
基于以上系统设计目标,本文在开发学生成绩 排名系统时遵循了以下开发设计思想: ●尽量达到操作过程中的直观、方便、实 用、等要求。 ●系统采用模块化程序设计方法,既便于系 统功能的各种组合和修改,又便于未参与开发的技 术维护人员补充、维护。
●系统可以根据用户需求进行数据的添加、 删除、等操作。
学生成绩统计 成绩查询 成绩统计 成绩管理
按课程 按姓名 按学号
2.4-6
2.5成绩统计模块算法思想 采用类的对象数组对类中的对象进行引用,在使 用对象数组时只能引用单个数组元素,每个数组元 素都是一个对象,通过这个对象,便可以访问到它 的公有成员。通过对其成员的访问实现统计功能。
void tongji() { int n1,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;/ 计数,n2统计总人数 for(n1=0;n1<50;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(); } else cout<<"总人数为:"<<n2<<endl<<"数学平均分为:" <<t_m/n2<<" 及格率为:"<<n_m*100/n2<<"%"<<endl<<"英 语平均分为:"<<t_e/n2<<" 及格率为:" <<n_e*100/n2<<"%"<<endl<<"C++平均分为:"<<t_c/n2<<" 及格率为:"<<n_c*100/n2<<"%"<<endl<<"语文平均分:" <<t_y/n2<<" 及格率为:"<<n_y*100/n2<<"%"<<endl<<"总 分平均分为:"<<t_t/n2<<endl;}
的能力。培养了基本的、良好的程序设计技能以及合 作能力。这次课程设计同样提高了我的综合运用所学 知识的能力。并对VC6.0有了更深入的了解。《C++语 言程序设计》是一门实践性很强的课程,上机实习是 对学生全面综合素质进行训练的一种最基本的方法, 是与课堂听讲、自学和练习相辅相成的、必不可少的 一个教学环节。上机实习一方面能使书本上的知识 变“活”,起到深化理解和灵活掌握教学内容的目 的;另一方面,上机实习是对学生软件设计的综合能 力的训练,包括问题分析,总体结构设计,程序设计 基本技能和技巧的训练。此外,还有更重要的一点 是:机器是比任何教师更严厉的检查者。因此, 在“数据结构”的学习过程中,必须严格按照老师的 要求,主动地、积极地、认真地做好每一个实验,以 不断提高自己的编程能力与专业素质。 通过这段时间的课程设计,我认识到C++语言程 序设计是一门比较难的课程。需要多花时间上机练 习。这次的程序训练培养了我实际分析问题、编程和 动手能力,使我掌握了程序设计的基本技能,提高了 我适应实际,实践编程的能力。 总的来说,这次课程设计让我获益匪浅,对 C++语言程序设计也有了进一步的理解和认识。
会的各个领域并发挥着越来越重要的作用。采用计算 机进行信息化管理已成为衡量教学管理科学化和现代 化的重要标志,而学生成绩排名的全面自动化、信息 化则是其中重要的组成部分。学生成绩排名信息的好 坏对于教学管理者来说至关重要,在很大程度上影响 着教学管理者对学生的看法及学生个人考评。因此, 本文所研究的学生成绩排名系统具有一定的使用价值 和现实意义。 1.3 开发环境 本文所采用的开发环境主要是基于VC6.0。 VC++6.0是微软公司推出的开发Win32应用程序 (Windows 95/98/2000/XP/NT)的、面向对象的 可视化集成工具。它的最大优点就是提供了功能 强大的MFC类库,MFC是一个很大的C++类层次结 构,其中封装了大量的类及其函数,很多 Windows程序所共有的标准内容可以由MFC的类来 提供,MFC类为这些内容提供了用户接口的标准 实现方法,程序员所要做的就是通过预定义的接 口把具体应用程序特有的东西填入这个轮廓,这 将简化编程工作,大大的减少程序员编写的代码 数量,使编程工作变得更加轻松容易。
图3-1系统功能模块图 2.4程序实现流程
【1】添加学生信息
添加学生信息 输入学号姓名成绩 替换到已定义的数组中
2.4-1 【2】删除学生信息
删除学生信息 输入要删除的学号 将目标数组各项替换为0 2.4-2
【3】学生成绩排序
学生成绩排序 按语文 按C++ 按英语 按总分 按数学
冒泡法进行排序
2.4-3 【4】学生成绩统计
当程序有学生记录时:
总结
此次课程设计,在小组各成员的共同努力下完 成,组长设计了成绩排序系统的成绩类,然后将各 个实现功能分给组员进行实现,由于我基础不太 好,给他们添了很大的麻烦。虽然课程设计结束 了,但其中还存在着很多问题。一方面,因为有关 文件储存这方面的知识欠缺,不太牢固,导致了我 们每次都要手动录入学生成绩信息,因此我们的程 序还需要进一步完善;另一方面,面向对象的程序 开发需要符合客观生活逻辑,所以程序在删除,统
计等方面的需求还需要增加其他方面,同时,类的 设计有待完善。虽然课程设计的结果不尽人意,但 在这两周的付出是很有价值的,在以后的日子里, 我一定要积极自主学习,将基本知识打牢固,同 时,学会与同学们合作,将作业完成的更好。
心得体会
通过一周的课程设计,使我对《C++语言程序设 计》这门课程有了更深入的理解。《C++语言程序 设计》是一门实践性较强的课程,为了学好这门课 程,必须在掌握理论知识的同时,加强上机实践。 我的课程设计题目是学生成绩排名系统。刚开始 做这个程序的时候,感到完全无从下手,甚至让我觉 得完成这次程序设计根本就是不可能的,于是开始查 阅各种资料以及参考文献,之后便开始着手写程序, 写完运行时有很多问题。特别是实现统计功能时,经 常运行出现错误,但通过小组成员的共同努力最终基 本解决了问题。 在本课程设计中,我明白了理论与实际应用相结 合的重要性,并提高了自己组织数据及编写大型程序