
大型实验报告歌手比赛系统教育相关.doc
33页大类基础课程大型实验 2014/2015(2) 实验题目 歌手比赛系统 学生姓名 学生学号 学生班级 任课教师 提交日期 计算机科学与技术学院教学f歌手比赛系统 实验报告一、 大型实验的内容 歌手比赛系统(SCS:Singer Contest System)用于对一次歌手比赛的成绩进行管理,要求完成的主要的功能包括选手信息管理、评委打分管理可以完成成绩排序(按平均分),选手数据查询,追加学生数据,写入数据文件等工作要求使用学习过的C/C++程序设计的知识完成歌手比赛系统的设计与实现二、 运行环境 歌手比赛系统(SCS)在Visual Studio 2010平台下开发,操作系统:Windows 8.1 硬件环境: 处理器:Intel(R) Core(TM) i5-5257M CPU @ 2.70GHz 2.70GHz 内存:8.00GB 系统类型:64位操作系统三、 实验课题分析(主要的模块功能、流程图)3.1 歌手比赛系统的主要功能歌手比赛系统(SCS)主要功能为:选手信息管理、评委打分管理。
可以完成成绩排序(按平均分),选手数据查询,追加学生数据,写入数据文件等详细的系统功能结构为图1所示歌手比赛系统SCS菜单模块评委模块选手模块图1 系统结构图系统各模块的功能具体描述为:1、菜单模块根据用户需求进行选择菜单模块包括:(1)输入选手数据;(2)评委打分; (3)成绩排序(按平均分);(4)数据查询; (5)追加学生数据; (6)写入数据文件;(7)退出系统2、 选手模块存储选手的姓名、编号、一个评委类,以及该选手的平均分和总分3、评委模块存储10个评委对一个选手的打分情况计算总分功能:根据10个评委的打分(去掉最高分和最低分),计算选手的总分计算平均分功能:根据10个评委的打分(去掉最高分和最低分),计算选手的平均分还有2个辅助功能:寻找最高分和最低分3.2 系统分析及设计系统涉及对象有两个基本类:选手类和评委类还有一个菜单类可以采用面向对象的方式实现歌手比赛系统,根据不同的需求,分为选手类和评委类其中选手类中以评委类为成员变量系统的主要的类结构如图2所示菜单类选手类评委类图2 系统主要类结构图分别设计菜单类、选手类、评委类,菜单类提供选择功能用文本文件进行数据的保存,需要保存的数据主要包括选手的编号、信息、平均分和排名等。
3.3系统的实现 (1)类的编写 系统工程名为:Test包含了Student类(选手类),Judge类(图书类)两个基本类,另设menu类,进行具体功能的选择及实现 Student类包含选手的编号、姓名、评委的打分(Judge声明的对象obj)、选手的总分和平均分Judge类包含10个评委的打分具体类结构声明如下:l Student类:class Student{public: void setID(string ID); void setName(string name); void setObj(Judge& j); voiid setSUM(double sum); void setAVE(double ave); string getID(); string getName(); Judge getObj(); double getSUM(); double getAVE(); Student(Student&); Student(void); ~Student(void);private: string ID; string name; Judge obj; double SUM; double AVE;};l Judge类class Judge{public: void setGrade(double g[10]); double* getGrade(); void display(); double sumGrade();//计算总分 double aveGrade();//计算平均分 double getMax();//辅助函数,寻找最高分 double getMin();//辅助函数,寻找最低分 Judge(void); Judge(Judge&); ~Judge(void);private: double grade[10];};l Menu类:class menu{public: void select();//选择操作 void inputMessage();//输入选手信息 void inputGrade();//评委打分 void sort();//根据选手成绩进行排序 void consult();//查询某个选手的成绩 void insert();//插入新选手的信息和成绩 void input();//将选手数据写入文件 menu(void); ~menu(void);private: int count ;//计数,共有多少组数据 Student stu[MAX]; Judge jud[MAX];}; (3)交互界面以及登录菜单的实现 系统运行开始的界面如图5所示:图5 开始登录界面 主要通过选择结构和循环结构实现界面的前进和后退。
例如,第一个登录界面出现7个选择:1.输入选手数据,2.评委打分,3.成绩排序(按平均分)4.数据查询5.追加选手数据6.写入数据文件7.退出系统用switch case分别实现,选择之后转到下一个界面四、 实验调试、测试、运行记录及分析 系统在调试测试过程中遇到若干问题,不过经过仔细反复的检查已经消除各种bug 主要的测试经过如下:开始页面: 在开始界面输入“1”即可跳转到输入选手信息界面,输入选手信息输入选手信息完毕后,自动返回开始页面输入“2”,即可跳转到评委打分页面为各选手打分输入分数完毕后,自动返回至开始页面输入“3”,跳转到排序页面,根据选手的平均分进行排名排序完毕后,自动返回到开始页面输入“4”,跳转到数据查询页面输入想查询的选手的编号,即可得知该选手的10位评委的打分查询完毕后,自动跳转到开始页面输入“5”,跳转到追加选手数据页面输入新插入的选手的编号及姓名,以及10个评委对该选手的打分为验证选手数据已更新,进行查询操作及排序操作输入“6”,将所有选手的信息,包括编号、信息、10个评委的打分,写入数据文件输入“7”,退出系统容错测试:1.如果输入相同ID的选手:2.如果插入相同的选手:3.如果输入了选手ID和姓名,但还未进行打分就进行排序:4.程序开始就选择5,追加选手数据,测试插入是否成功(数据查询和排序) 遇到的问题及解决方法如下:l 问题1:问题描述:很少使用文件的读取方法,因此一开始在实现将信息写入文件的功能时遇到了困难,不知如何下手。
解决方法:利用网络资源,搜索c++的读写文件方式,在稍作修改后,应用到本次实验中成功实现了文件的读写图6 调试测试问题1五、 实验总结我设计的歌手比赛系统基本满足任务书的功能要求,类的结构和关系清晰,功能完善,完成了歌手比赛系统的基本功能,能正常运行存在的缺点主要是数据存储方面,因评委只有十人,不存在大批量的数据,因此采用基本的数组结构存储数据其次在存储选手信息方面,采用了类的数组方式,有浪费内存的弊端,并且,一旦选手人数过多,也会影响程序效率可以用更好的数据存储方式来存储数据,例如vector等 通过这次C++的大型实验,我深刻的明白到:课本知识与实践能力相结合的重要性要想把一门专业课程学好,必须增强自己的动手实践能力,更多的实践才能让我们的编程能力有更多的提高并且,我们也要充分利用好网络资源,写代码的过程其实是一个复习旧知识、学习新知识的过程,当我们遇到不明白的地方,或者对程序功能抱有疑问时,要学会自己去查找资料并且解决问题,而网络资源能帮我们解答很多基本的疑问充分利用好网络的代码资源,不断充实自己、丰富自己的代码知识六、 附录:源代码Judge.h#include
