共9页
怀化学院计算机系学生姓名:学号:年级专业及班级:09级计算机科学与技术一班指导老师及职称:副教授专业:计算机科学与技术专业湖南怀化提交日期:20__年6月运动会分数统计系统的设计与实现学生:指导老师:(怀化学院计算机系,怀化418008)摘要:运动会分数统计系统通过运用结构体、文件读取以及数据保存、定义运动会类、以及调用函数、运用库函数实现了指定的输入文本读取数据;据输入文件得到各学校的总分;学校编号、学校总分、男女团体总分排序;询功能按学校编号查询某个项目的情况、按项目编号查询取得前三或前五名的学校;现了数据的增加、删除、修改以及对数据的保存的功能。该系统的用户主要是提供给管理、学校的。对于管理用户提供了所有的操作,而对学校拥护只提供查询和查看操作,这样安全性能比较高,该系统是通过输入文本读取来获取数据,较少了输入数据的繁杂通过运用定义运动会类,进行对函数的定义,使整个代码看起来清晰整洁,通过调用库函数,使代码更简洁。该系统为用户提供了总分计算,排序方便,为学校用户提供了查询和查看的方便。关键词:运动会分数统计系统;构体;序;询1前言该系统实现了简单的运动会分数统计,是一个面向对象的设计,使用了结构体,输入文本读取数据以及库函数的调用来完成整个系统的设计,是繁多的数据操作变得简单。该系统为联合运动会提供服务减少了不必要的人力物力的浪费,通过写一段程序实现简单运动会分数统计系统的设计来实现几个功能。该系统实现了以下几个功能:1)根据指定的输入文件读取数据;)输入文件数据格式和文件数目由学生自行设计,主体体现学校名称、项目编号、项目名称、男子女子项目类别、前三或前五名积分;)根据输入文件得到各学校总分,4)可以按学校编号或名称、学校总分、男女团体总分排序;)可以按学校编号查询学校某个项目的情况;以按项目编号查询取得前三或前五名的学校。6)实现数据的增加、删除、修改,并将相关数据进行保存;)各操作结果能保存到文件,以便查询。通过这次的课程设计,可以加深对库函数,以及结构体的了解,以及各个函数的功能以及实现,更进一步了解其原理。2需求分析2.1范围2.1.1标识文件状态:发布修改文件标识:需求分析报告当前版本:1.0作者:吴XX完成日期:于252.1.2系统概述1软件名称:运动会分数统计系统2软件功能:1)根据指定的输入文件读取数据;)输入文件数据格式和文件数目由学生自行设计,主体体现学校名称、项目编号、项目名称、男子女子项目类别、前三或前五名积分;)根据输入文件得到各学校总分,4)可以按学校编号或名称、学校总分、男女团体总分排序;)可以按学校编号查询学校某个项目的情况;以按项目编号查询取得前三或前五名的学校。6)实现数据的增加、删除、修改,并将相关数据进行保存;)各操作结果能保存到文件,以便查询。3用户:管理员、学校4开发者:吴XX2.1.3文档概述需求分析采用面向对象的方法,在文档中主要采用了用例、E-R图、数据字典等表示方法来描述需求,用这些方法来表达需求分析便于理解,将自己的系统推荐给用户.2.2引用文件无2.3需求概述2.3.1系统目标本系统的总体目标是通过该系统的实施,可以对学生综合测评信息更加有效地进行管理。系统设计实施过程中,力争做到以下几点:1.具有较高的可靠性和可用性;.系统易于管理维护;使用方便,易学易用;.良好的性能价格比;.3.2运行环境1.系统硬件需求entium4800MHz或更高主频CU512MB以上内存。2.系统软件需求IIS5.0以上的WEB服务、安装有Myeclise8.5与Mysql5.1数据库等、Windows_以及更高版本的操作系统、IE5.0以上的版本浏览器。2.3.3用户的特点管理员,具备基本的电脑操作技能和简单的系统维护工作以及学校用户具备基础的计算机操作技能。2.4功能需求通过前期对运动会分数统计领域实际业务需求的调研,经分析确定系统功能主要为以下:管理员操作:
1、有各个运动项目以及各个学校以及运动员信息管理。
2、认证信息管理、密码管理、对每个学校进行总分统计、对各个信息(如按学校名称或编号查询某项的情况)进行查询、增加、删除、修改以及对按不同规定(学校编号或名称、学校总分、男女团体总分)进行排序。
3、实现文件读取数据以及文件保存数据操作。学校用户操作:用户信息完善、认证信息的查看。2.4.1系统用例图根据需求分析,分析出系统的具体操作步骤及功能,从而确定系统流程图及各个步骤中具体内容,具体描述如下。
(1)系统整体用例图,系统主要有两类用户包括:管理员、学校用户。见图2.1。运动会分数统计系统管理员学校文件输入学校总分统计排序操作查询操作增加、删除、修改操作查询操作密码认证用户选择文本保存图2.1系统整体用例图2.4.2系统各项功能描述
1、【应该以用例为单位进行功能描述】1)用例1用例名:文件输入行为者:管理员目的:实现数据的读入,输入相关的学校信息,相关的项目信息级别:一级过程描述:a)欢迎进入运动会分数统计系统的设计与实现系统b)选择菜单,选择录入数据文件c)文件录入学校名称、项目编号、项目名称、男子女子项目类别、前三或前五名d)录入成功,退出到菜单选项。与其它用例的关联:本用例是后面的操作的基础。异常处理:无2)用例3用例名:学校总分统计行为者:管理员目的:根据输入文件得到各学校总分级别:一级过程描述:a)根据输入的文件统计各学校的总分b)利用直接插入函数对个学校的总分进行排序c)输出各学校的总分,记录入文件XXX中d)退出菜单选项异常处理:无3)用例4用例名:排序操作行为者:管理员目的:可以按学校编号或名称、学校总分、男女团体总分排序;别:一级过程描述:a)利用算法分别实现按学校编号排序b)按学校编号或名称排序c)按学校总分排序d)按男女团体总分排序e)利用一个选择的菜单实现这些排序f)后台显示,用户选择g)显示结果h)退出系统异常处理:无4)用例5用例名:查询操作行为者:管理员、学校目的:可以按学校编号查询学校某个项目的情况;以按项目编号查询取得前三或前五名的学校。级别:一级过程描述:a)输入学校编号以及要查询的项目进行查询b)输入项目编号查询获奖情况f)退出系统。异常处理:无5)用例6用例名:数据的增加、删除、修改,并将相关数据进行保存行为者:管理员目的:实现数据的增加、删除、修改,并将相关数据进行保存;别:一级过程描述:a)对文件进行数据的增加,删除,修改等操作b)查看是否操作成功,输出修改后的数据c)退出系统异常处理:无6)用例7用例名:各个操作数据的文件保存行为者:管理员目的:各操作结果能保存到文件,以便查询级别:一级2.5数据
(1)学校实体学校实体包括学校名称、学校编号、学校总分、女团体总分、男团体总分,如图学生实体E-R图2.5所示。学校学校总分女团体总分男团体总分学校名称学校编号图2.5学校实体E-R图
(2)活动项目实体项目实体包括项目编号、取前三或前
五、项目类别、项目获名者。如图项目实体E-R图2.6所示。活动项目项目编号项目类别取前三或前五项目获名者图2.6活动项目实体E-R图2.6拟采用的技术实现本系统用到了C/C+基础程序设计,数据结构。本系统将采用文件存储、结构存储、链表方法以及调用不同函数来实现系统功能,算法中主要采用是链表操作如:查询、增加、删除、修改以及链表的插入排序等,输入与读取都是以文件的形式进行。在系统设计的过程中,才会知道哪一种技术比较好用,但是具体的用到的技术应该不会太偏离我以上讲的技术。3详细设计根据题目要求及本次课程设计的目的,采用结构体来存储每组数据,定义运动会类和调用库函数进行相应的操作。现把相应的设计思路及各个函数解析如下。3.1数据结构设计分析3.1.1存储学校信息的结构体学校信息有学校名称、学校编号、学校总分、男女团体总分。具体结构如下:structSchool/学校信息stringschool_name;tringschool_id;nttotal_score;ntwomen_score;ntman_score;chool()/初始化school_name=;chool_id=;otal_score=women_score=man_score=0;.1.2存储项目信息的结构体项目信息有项目编号、项目取前三或前
五、项目类别、项目获名者。具体结构如下:structItem/项目信息stringitem_id;ntrange_num;harse_;tringwinner_id6;tem()/初始化item_id=;e_=0;ange_num=0;emset(winner_id,0,sizeof(winner_id);.13运动会类定义一个运动会类,定义和调用起成员函数,成员变量,完成系统的功能。代码如下:classSortMeetingublic:voidload();oidsave();oidsort();oidsearch();oidadd();oiddel();oidmodify();ivate:voidudate();oidsort_by_id();oidsort_by_total();oidsort_by_man();oidsort_by_women();oidsearch_by_school();oidsearch_by_item();ultimaschool;定义个学校的ma类multimaitem;定义项目的ma类;.2各个函数分析3.2.1主函数函数原型:intmain()main()函数主要是整个系统的控制端,主要功能是控制整个程序的运行。从主函数开始调用各相关函数来达到相应的功能。由于有多个不同的选项,所以用一个while()swithch()语句控制每个函数调用,控制起来方便、明了。关键代码如下:while
(1)cout1.修改项目信息endl;out2.添加项目endl;out3.删除项目endl;out4.查询选项endl;out5.查看排名endl;out0.退出系统endl;outselect;witch(select)case1:XXX();reak;ase2:XXX();reak;ase3:XXX();reak;ase4:XXX();reak;ase5:XXX();reak;ase0:break;efault:cout输入XXX)XXX;XXX(air(XXX,sh);XXX();编号:XXXXXX;lseif(XXX)cout请依次输入获得该项目1-5名的学校编号:XXXXXXXXX;lsecout输入endl;ystem(ause);eturn;XXX(air(XXX,it);date();out添加项目成功!endl;ystem(ause);.2.5修改函数函数原型:voidSortMeeting:modify()通过调用此函数,可以修改项目信息,按照函数中的每项提示输入新的项目信息,以减少错误信息的录入。代码如下:voidSortMeeting:modify()system(cls);temitm;out请输入你要修改的项目编号:XXX;ultima:iteratorit=XXX(XXX);f(it=XXX()cout该项目不存在!endl;ystem(ause);eturn;out(it-second).se_;out请输入该项目是取前三名还是取前五名?(输入3或者5)(it-second).range_num;f(it-second).range_num=3)cout请依次输入获得该项目男子组1-3名的学校编号:(it-second).winner_id1(it-second).winner_id2(it-second).winner_id3;lseif(it-second).range_num=5)cout请依次输入获得该项目男子组1-5名的学校编号:(it-second).winner_id1(it-second).winner_id2(it-second).winner_id3(it-second).winner_id4(it-second).winner_id5;lsecout输入endl;ystem(ause);eturn;date();out修改项目成功!endl;ystem(ause);.2.6查询函数函数原型:voidSortMeeting:search()进入此函数后,有菜单的选择,可以查看学校获奖的情况、查看项目获奖的情况,分别是根据学校编号查询某个项目的情况、根据项目编号查询获前三或前五的学校情况。编写了以下查询函数。voidSortMeeting:search()system(cls);out1.查看学校获奖情况endl;out2.查看项目获奖情况endl;out0.返回上级菜单endl;outselect;witch(select)case1:search_by_school();根据学校编号查询某个项目的情况break;ase2:search_by_item();根据项目编号查询获前三或前五的学校情况break;ase0:break;efault:cout输入endl;reak;ystem(ause);.2.7子查询函数函数原型:voidSortMeeting:search_by_school()、voidSortMeeting:search_by_item()在这两个子查询函数中,用户可以根据学校编号查询某个项目的情况、根据项目编号查询获前三或前五的学校情况,完善了查询函数。代码如下:1)voidSortMeeting:search_by_school()/根据学校编号查询某个项目的情况system(cls);choolsch;out请输入你要查看的学校编号XXX;ultima:iteratorit_school=XXX(XXX);f(it_school=XXX()cout没有此学校endl;eturn;out请输入你要查看该学校的那个项目的获奖情况XXX;ultima:iteratorit_item=XXX(XXX);f(it_item=XXX()cout没有此项目endl;eturn;out该学校在此项目的男子组中获奖情况:;oolis_award=false;nti;or(i=1;second).range_num;+)if(it_item-second).winner_idi=XXX)couti;s_award=true;f(is_award=false)cout没有任何奖项;outendl;eturn;)voidSortMeeting:search_by_item()/根据项目编号查询获前三或前五的学校情况system(cls);temitm;out请输入你要查询的项目编号XXX;ultima:iteratorit_item=XXX(XXX);f(it_item=XXX()cout没有此项目endl;eturn;out该项目的获奖情况:endl;nti;or(i=1;second).range_num;+)cout第i名:second).winner_idiendl;eturn;.2.8删除函数函数原型:voidSortMeeting:del()此函数用户可以根据需要对项目进行更新,把不存在的项目,将其删除。代码如下:voidSortMeeting:del()system(cls);temitm;out请输入你要删除的项目编号:XXX;ultima:iteratorit_item=XXX(XXX);f(it_item=XXX()cout没有此项目编号!endl;ystem(ause);eturn;XXX(it_item);date();out更新项目成功!endl;ystem(ause);eturn;.2.9排序函数函数原型:voidSortMeeting:sort()进入该函数,有一个菜单界面,用户可以根据需要,进行选择,对数据信息进行操作,该排序函数中还分有子排序函数,层次分明,用switch()语句完成功能设计。代码如下:voidSortMeeting:sort()system(cls);out1.按学校编号排序endl;out2.按学校总分排序endl;out3.按男子总分排序endl;out4.按女子总分排序endl;out0.返回上级菜单select;witch(select)case1:sort_by_id();reak;ase2:sort_by_total();reak;ase3:sort_by_man();reak;ase4:sort_by_women();reak;ase0:system(ause);eturn;efault:cout输入endl;ystem(ause);eturn;ystem(ause);.3.0子排序函数1)voidSortMeeting:sort_by_id()/按学校编号排序system(cls);ultima:iteratorit_school;outsetiosflags(ios:left);outsetw
(20)学校编号setw
(20)学校名称setw
(10)总分setw
(10)男子总分setw
(20)女子总分endl;or(it_school=XXX();t_school!=XXX();t_school+)coutsetw
(20)second).school_idsetw
(20)second).school_namesetw
(10)second).total_scoresetw
(10)second).man_scoresetw
(20)second).women_scoreend;)voidSortMeeting:sort_by_total()/按学校总分排序system(cls);ultima:iteratorit_school;ultimaschool_tem;choolsch;or(it_school=XXX();t_school!=XXX();t_school+)sch=it_school-second;XXX(air(XXX,sch);outsetiosflags(ios:left);outsetw
(20)学校编号setw
(20)学校名称setw
(10)总分setw
(10)男子总分setw
(20)女子总分endl;ultima:iteratorit_tem;or(it_tem=XXX();t_tem!=XXX();t_tem+)coutsetw
(20)second).school_idsetw
(20)second).school_namesetw
(10)second).total_scoresetw
(10)second).man_scoresetw
(20)second).women_scoreendl;)voidSortMeeting:sort_by_man()/按男子团体总分排序system(cls);ultima:iteratorit_school;ultimaschool_tem;choolsch;or(it_school=sXXX();t_school!=XXX();t_school+)sch=it_school-second;XXX(air(XXX,sch);outsetiosflags(ios:left);outsetw
(20)学校编号setw
(20)学校名称setw
(10)总分setw
(10)男子总分setw
(20)女子总分endl;ultima:iteratorit_tem;or(it_tem=XXX();t_tem!=XXX();t_tem+)coutsetw
(20)second).school_idsetw
(20)second).school_namesetw
(10)second).total_scoresetw
(10)second).man_scoresetw
(20)second).women_scoreendl;)voidSortMeeting:sort_by_women()/按女子团体总分排序system(cls);ultima:iteratorit_school;ultimaschool_tem;choolsch;or(it_school=XXX();t_school!=XXX();t_school+)sch=it_school-second;XXX(air(XXX,sch);outsetiosflags(ios:left);outsetw
(20)学校编号setw
(20)学校名称setw
(10)总分setw
(10)男子总分setw
(20)女子总分endl;ultima:iteratorit_tem;or(it_tem=XXX();t_tem!=XXX();t_tem+)coutsetw
(20)second).school_idsetw
(20)second).school_namesetw
(10)second).total_scoresetw
(10)second).man_scoresetw
(20)second).women_scoreendl;.3.1更新计算分数函数函数原型:voidSortMeeting:udate()此函数,对各个学校、男子团体以及女子团体总分的一个计算操作函数,具体代码如下:voidSortMeeting:udate()multima:iteratorit_school=XXX();or(it_school;t_school!=XXX();t_school
举报
