软件工程大作业-------运动会管理系统学号:030850113姓名:薛八阳指导老师:陆熊目录:1、可行性研究报告2、需求规格说明书3、总体设计说明书4、详细设计报告5、源程序6、测试用例及结果1、可行性研究报告1、引言编写目的:可行性研究的目的是为了对问题进行研究,以最小的代价在最短的时间内确定问题是否可以解决,经过对此项目进行详细调查研究,初拟系统实现报告,对软件开发中将要面临的问题及其解决方案进行初步设计及合理安排。明确开发风险及其所带来的经济效益。软件名称:运动会管理系统开发者:个人用户:用于校运动会的管理软件的功能:设计一个实用的校运动会管理系统,功能包括报名编号、安排比赛、登录成绩、公布名次。基本要求:①主要功能:报名编号,安排比赛,成绩登录,名次公布。②性能要求:能够方便运动员进行报名,登录成绩,查询名次,界面要清晰明了。③输入要求:数据完整,准确。④输出要求:简洁明了。2、技术可行性分析:基于vc++DOS界面,可以很容易的实现各个功能,用户首先运行程序,即可登陆软件,界面相对友好,首先进入界面,显示“欢迎进入系统”的语句,以及软件所提供的功能选择,如;1、报名编号,2、安排比赛,3、登录成绩,4、公布名次,5、退出。如此用户可以根据提示很容易的进行软件操作,这样软件的操作已经具有了可行性,至于软件的实现大体流程如下:报名编号→安排比赛→成绩登录→名次公布→退出在程序中可多处设计人性化提示,使程序使用起来更方便准确。比如多处提示功能选择,这样可以很方便的切换功能,这样软件更加友好使用,程序实现方面也是比较轻松,具有较高的可实现性。3、决定可行性的主要因素:成本/效益分析结果,效益成本。技术可行,现有技术可完全承担开发任务。操作可行,软件能被原有工作人员快速接受。结论:通过分析,从各方面考虑都具有可行性,可以马上着手进行开发。2、需求规格说明书1、引言编写目的:使用户和软件开发者双方对软件的初始规定有一个共同的理解,使之成为整个开发工作的基础。项目背景:a、委托单位:校方运动会管理组织b、开发单位:个人2、任务概述(1)目标:通过设计及编程最终获得一个具有报名编号、比赛安排、成绩登录、公布名次等功能的运动会管理系统软件。(2)用户的特点:需在无相关专业知识下即可使用。3、数据描述数据流图:运动员信息比赛信息———————————运动员姓名、项目报名编号项目名称比赛安排时间、地点管理员项目编号成绩登录成绩项目名称公布名次功能选择退出————————————成绩档案名次档案数据字典:运动员成绩档案数据流名:运动员文件名:成绩档案别名:描述:用于记录用动员的比赛成绩组成:姓名+参加项目组成:{姓名+项目+编号+成绩}备注:组织:按编号有小到大排列运动员信息名次档案文件名:运动员信息文件名:名次档案描述:用于记录参加比赛成员的信息描述:用于保存用动员的比赛名次组成:{姓名+参加项目+编号}组成:{姓名+项目+编号+成绩+名次}组织:按编号有小到大排列组织:按照名次有小到大的顺序排列3、总体设计说明书1、引言编写目的:项目背景:a、委托单位:校方运动会管理组织b、开发单位:个人2、概要设计:(1)需求规定:本系统主要用于运动会系统的管理,包括四个功能:报名编号、安排比赛、成绩登录、公布名次。(2)运行环境:基于DOS界面运行的软件。(3)功能需求与程序的关系在主函数里面进行功能分配:1、报名编号,2、安排比赛,3、成绩登录,4、公布名次然后,每个功能均通过不同的函数来实现:1、报名编号:运动员报名时有多个项目(如:110米栏、撑杆跳、长跑、跳远),可以对每个项目创建一个链表用于记录各个参赛运动员的信息,并进行编号,每个链表用不同的头结点进行标记,后面的操作也可针对头结点进行。2、安排比赛:对每个项目须分别进行比赛安排,可以定义一个结构体,并定义多个变量,每个变量对应一个项目,结构体里面包含两个成员:时间和地点。不同的变量即可记录不同项目的比赛安排,比且可以对变量进行修改,这样就可以实现比赛安排。3、成绩登录:创建的运动员信息的节点,应包括:姓名、编号、成绩。这样在此功能下,输入编号即可找到运动员信息,并输出姓名,并提示输入成绩,待成绩输入完毕,即可提示成绩登录成功。4、公布名次:需要针对各个项目依次输出,首先要选择需要公布名次的项目,待确定后,进行遍历链表,按照成绩由大到下排列出名次,并遍历输出,这样就可以是现成的排序输出,即名次公布。5、退出:待用户使用完毕,可根据功能选择键,退出系统。3、运行设计(1)运行模块组合:不同功能分为不同的模块,选择不同的功能即可运行不同的模块。(2)运行控制:具体操作步骤可根据系统提示进行,控制方式采用功能键选择。4、系统出错处理设计(1)出错信息:软件在使用时,部分地方可能会用于用户输入错误指令而使系统陷入死循环,进而出现软件崩溃,此时只要关闭软件重新启动即可。(2)补救措施:设计人员可以对源代码进行修改,尽量避免死循环的出现,同时设置温馨提示语言提醒用户输入了错误代码,同时返回主功能单或者上次使用的功能。(3)系统维护设计:软件的每个功能均采用独立的模块,相互之间基本不会造成影响,方便软件的测试和维护,软件升级时只需对各个模块但对进行修改和调试。4、详细设计报告1、引言编写目的:用于程序运行过程中的描述,主要内容是对逐个模块的程序描述,包裹算法和逻辑流程,输入/输出项,与外部的接口等。项目背景:来源:校运动会管理系统2、总体设计需求概述:设计一个实用的校运动会管理系统,内容包括报名编号、安排比赛、登录成绩、公布名次。3、程序描述(1)主函数进行功能分配:程序流程图如下:DOCASECASE1CASE2CASE3CASE4CASE5报名编号安排比赛登录成绩公布名次退出(2)报名编号:程序流程图如下:DOCASECASE1CASE2CASE3CASE4110米栏报名撑杆跳报名长跑报名跳远报名(3)比赛安排:程序N-S图如下:ch=1=2=3=4项目1项目2项目3项目4(4)成绩登录:PDL语言如下:IFch==1Setmarktohead1-next-mark;ELSEIFch==2Setmarktohead2-next-mark;ELSEIFch==3Setmarktohead3-next-mark;ELSEIFch==4Setmarktohead4-next-mark;ELSEReturn0;ENDIF;(5)公布名次:程序PAD图如下:=1110米栏名次公布=2撑杆跳名次公布ch=3长跑名次公布=4跳远名次公布(6)退出:#includestdlib.hExit(0);5、源程序#includeiostream.h#includestdlib.hstructnode{charname[20];intnum,ch;intmark;node*next;};inti=1,j=1,m=1,n=1;node*head1,*head2,*head3,*head4;voidf1();voidf0();voidf11(){cout您选择的项目为:110米栏endl;node*p,*p1;p=newnode;cout请输入你的姓名:endl;cinp-name;//cin.getline(p-name,20);p-ch=1;p-num=i;p-next=NULL;cout报名成功!endl;coutp-name(先生/女士),你的编号为p-numendl;cout预祝您在比赛中取得优异成绩!!endl;p1=head1;while(p1-next!=NULL)p1=p1-next;p1-next=p;i++;coutendl;charsb;cout温馨提示:继续报名,请输入A;返回主界面,请输入Bendl;cinsb;if(sb=='A')f1();else{coutendl;cout欢迎回到主界面!!endl;}}voidf12(){cout您选择的项目为:撑杆跳endl;node*p,*p1;p=newnode;cout请输入你的姓名:endl;cinp-name;//cin.getline(p-name,20);p-ch=1;p-num=j;p-next=NULL;cout报名成功!endl;coutp-name(先生/女士),你的编号为p-numendl;cout预祝您在比赛中取得优异成绩!!endl;p1=head1;while(p1-next!=NULL)p1=p1-next;p1-next=p;j++;coutendl;charsb;cout温馨提示:继续报名,请输入A;返回主界面,请输入Bendl;cinsb;if(sb=='A')f1();else{coutendl;cout欢迎回到主界面!!endl;}}voidf13(){cout您选择的项目为:长跑endl;node*p,*p1;p=newnode;cout请输入你的姓名:endl;cinp-name;//cin.getline(p-name,20);p-ch=1;p-num=m;p-next=NULL;cout报名成功!endl;coutp-name(先生/女士),你的编号为p-numendl;cout预祝您在比赛中取得优异成绩!!endl;p1=head1;while(p1-next!=NULL)p1=p1-next;p1-next=p;m++;coutendl;charsb;cout温馨提示:继续报名,请输入A;返回主界面,请输入Bendl;cinsb;if(sb=='A')f1();else{coutendl;cout欢迎回到主界面!!endl;}}voidf14(){cout您选择的项目为:跳远endl;node*p,*p1;p=newnode;cout请输入你的姓名:endl;cinp-name;//cin.getline(p-name,20);p-ch=1;p-num=n;p-next=NULL;cout报名成功!endl;coutp-name(先生/女士),你的编号为p-numendl;cout预祝您在比赛中取得优异成绩!!endl;p1=head1;while(p1-next!=NULL)p1=p1-next;p1-next=p;n++;coutendl;charsb;coutendl;cout温馨提示:继续报名,请输入A;返回主界面,请输入Bendl;cinsb;if(sb=='A')f1();else{coutendl;cout欢迎回到主界面!!endl;}}voidf1(){cout您好!!有如下运动项目可供选择:endl;intch=0;cout1、110米栏endl;cout2、撑杆跳endl;cout3、长跑endl;cout4、跳远endl;coutendl;cout请选择项目(1|2|3|4):endl;cinch;switch(ch){case1:f11();break;case2:f12();break;case3:f13();break;case4:f14();break;default:f0();}}structnode1{inta,b,c,d;charad[20];};node1x1,x2,x3,x4;voidf2(){cout您好!请根据提示进行比赛安排。endlendl;cout请选择需要进行比赛安排的项目:end