《软件工程课程设计(共48页).doc》由会员分享,可在线阅读,更多相关《软件工程课程设计(共48页).doc(48页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上软件工程课程设计专心-专注-专业分类号 编 号 华北水利水电大学 North China Institute of Water Conservancy and Hydroelectric Power 课 程 设 计题目 田径运动会管理信息系统 学 院 信息工程学院 专 业 计算机科学与技术 小组成员1 吴辉密( 19619) 小组成员2 张秋敏( 19621) 小组成员3 张馥雅( 19622) 小组成员4 张倩倩( 19623) 指 导 教 师 白娟 12 月 6 日华北水利水电大学 软件工程 课程设计报告 第 一 学期 级 计算机科学与技术 专业小组成员1: 吴辉
2、密( 19619) 分工: 运动员信息的录入、修改、查询、显示 小组成员2: 张秋敏( 19621) 分工: 比赛项目信息的录入、修改、查询、显示 小组成员3: 张馥雅( 19622) 分工: 需求分析、概要设计、资料的搜集等 小组成员4: 张倩倩( 19623) 分工: 比赛成绩的录入、修改、查询、显示 目 录摘 要1一、需求分析21.1 可行性分析21.2.1 C/ C +语言简介21.2.2 开发背景31.2.3开发环境31.3 系统需求分析31.4 系统总体设计4二、概要设计42.1 数据结构42.2程序模块5三、详细设计6四、程序代码7五、测试9六、附录12七、心得体会29参 考 文
3、 献30田径运动会管理系统的设计与实现摘 要 运动会管理是一个重要内容,随着时代的进步,参加运动会的运动员数量也不断增加、项目也越来越多、运动会举办也越来越频繁,对运动会管理要求也越来越高。如何管理好各单位、运动员的成绩的信息,对运动会管理系统的要求也越来越高,因此必须要不断地更新运动会管理系统,才能满足社会日益发展的需要。本文是采用VC+6.0作为前台开发工具,旨在实现对现有的运动会管理的基础上,提供信息录入,信息删除,信息查询,信息输出等服务,在此实验报告中主要实现对存储在管理系统中的数据表进行这些简单的操作,为提高运动会管理系统的效率提供了便利。关键词:VC+6.0;运动会信息管理;第一
4、章 需求分析1.1 可行性分析 计算机以其强大的性能价格优势给人们的工作、学习和生活带来极大的方便计算机代替人工处理一些事务已成为必然。整个人类社会已进入高度信息化,人们对信息和数据的利用和处理已经进入自动化、网络化和社会化的阶段。如在查找资料、处理日常办公事务、科研生产等方面,无不需要利用大量的信息资源。因此,如何有效地进行数据信息的管理和利用,已经成为人们普遍关注的课题。信息在不同的领域里有着不同的概念,在管理科学领域中,一般认为信息是经过加工处理后的一种数据形式,是一种有次序的符号排列,它是系统传输和处理的对象。处在信息时代的今天,信息的作用越来越为人们所重视。制定成绩计划,研究投资策略
5、,都离不开对信息的充分利用。在当今社会上,体育运动越来越普及,参与运动会的人越来越多,素质越来越高。传统的运动会,一般是以人手组织为主,运动员的报名、赛事的安排、比赛场地的安排和成绩的记录等操作全都由人手操作,参加人数越多,运动会的规模就越大,管理工作就更加费时费力,而且容易出错。学校田径运动会管理系统则为组织者提供一个简捷方便的方式来组织管理运动会,学校田径运动会管理系统是一种”人机交互系统”,经过简单的键盘输入与鼠标点击来完成烦琐的记录与安排工作,保证运动会的正常流畅的进行。学校田径运动会管理系统是典型的数据库应用系统,可完成田径运动会管理中的运动员基本信息录入,竞赛成绩处理及公告,成绩统
6、计信息查询等事务处理功能。根据学校田径运动会的一般进程,本系统分为数据修改、查询、删除、计算等四个工具模块来完成所期望的功能。依据关系型数据库理论设计数据库的结构。使用该系统能够极大地减小工作人员的劳动量,同时还可大大提高工作效率、可靠性和正确性。1.2 开发环境和开发工具1.2.1 C/ C +语言简介C语言是一种。它既具有的特点,又具有的特点。它由美国贝尔研究所的D.M.Ritchie于1972年推出。1978后,C语言已先后被移植到大、中、小及微型机上。它能够作为工作系统设计语言,编写系统,也能够作为应用程序设计语言,编写不依赖计算机硬件的应用程序。它的应用范围广泛,具备很强的数据处理能
7、力,不但仅是在软件开发上,而且各类科研都需要用到C语言,适于编写系统软件,三维,二维图形和动画。1.2.2 开发背景 随着科学技术的不断发展,计算机科学日渐成熟,其强大的功能已为人们所深刻认识,它己进入人类社会的各个领域并发挥着越来越重要的作用。采用计算机进行信息化管理已成为衡量企业管理科学化和现代化的重要标志,而人事管理的全面自动化、信息化则是其中重要的组成部分。人事管理的好坏对于企业的决策者和管理者来说都至关重要,在很大程度上影响着企业的经济效益和社会效益。因此,本文所研究的人事管理信息系统具有一定的使用价值和现实意义。信息录入,学生信息录入,成绩录入三个模块的相关内容,最后的整体代码由两
8、个人组合完成。1.2.3开发环境本文所采用的开发环境主要是基于C+语言在Visual C+平台上开发的系统,界面友好,功能强大,调试也很方便。这是微软出的一个C语言集成开发环境(IDE),主要有:VC+6.0等,分为企业版和学生版等。对于初学者VC+6.0是比较容易上手的,但其对标准支持的不好可能使人养成不良的编程习惯。1.3 系统需求分析本实验中,对不同的对象采取不同的存储结构,对比赛项目采取链式结构,而对于参赛运动员采取一个结构就能够了。本程序中主要用到线性表的一些基本操作,将比赛项目信息,运动员信息,赛事信息都构造成线性表。具体功能经过主函数分别调用各函数实现。参考本实验的功能要求,本程
9、序分为七个模块:主函数、信息录入函数、信息修改函数、信息删除函数、信息查询函数,信息输出函数。信息录入函数有包括比赛项目信息录入函数(包括比赛编号、名称等),运动员信息录入函数(运动员的编号、姓名、性别、年龄、工作单位或省份)、比赛赛事信息录入函数(某运动员参加某比赛项目,成绩、名次)。信息修改函数包括比赛项目、运动员信息、赛事信息修改。信息查询函数包括根据比赛项目、运动员编号进行查修信息输出函数包括比赛项目、运动员信息、赛事信息输出等。1.4 系统总体设计 支持输入各个项目的基本信息;能够按比赛项目编号或名称查询、删除、修改信息。能够按运动员编号或姓名查询、删除、修改信息数据输入信息并能随时
10、查询 1.5 数据流图第二章 概要设计说明本系统中用到的所有数据类型的定义及存储结构,主程序的流程以及各程序模块之间的调用关系。2.1 数据结构从整个管理系统来看,我们知道这里主要有三个主体,一个是比赛项目信息,一个是运动员,另一个是比赛事项目信息。这三者不单单是作为简单的主体存在,她们都有很多功能,因此我们使用类和链表来定义。如下:比赛项目的定义:class Matchpublic:Match *next;/为创立链表做准备int number; /比赛项目编号char call10; /比赛项目名称char time10; /比赛时间char place20; /比赛地点 friendvo
11、id input1();运动员的定义:class Athletepublic:Athlete *next;int number; /运动员的编号char name10; /运动员的姓名 char part20; /运动员所属工作单位或省份char sex20; /运动员性别int age; /运动员年龄friend void input2();比赛赛事项目的定义:class Messagepublic:Message *next;char name10; /运动员姓名char avent10; /运动员参加的某比赛项目名称int score ; /成绩int ca;/名次 friend voi
12、d input3();2.2程序模块 田径运动会管理系统 数据的修改 数据的录入 退出系统 数据的显示 数据的查询 数据的删除 比赛赛事信息显示运动员信息显示比赛项目信息显示运动员信息查询比赛项目信息查询比赛赛事信息查询比赛项目信息删除比赛赛事信息删除运动员信息删除比赛赛事信息输入运动员信息输入比赛项目信息输入 比赛项目信息修改比赛赛事信息修改运动员信息修改 经过对某高校运动会管理信息系统的基本功能调研和分析,各个子系统的主要功能如下: 比赛项目信息管理:主要负责比赛项目信息的录入、修改、查询,显示比赛项目信息; 运动员注册:负责参赛运动员的注册登记,并可随时查询、打印参赛运动员信息; 成绩统
13、计:用于录入、统计各项比赛的的预、决赛成绩,统计各运动员积分。本模块能够查询每个参赛运动员的成绩信息,打印各种成绩报表。第三章 详细设计开 始显示主菜单输入选择是否合理 提示错误信息YN是否为1是否为3NNN是否为2是否为4YYY Y N调用录入函数调用修改函数调用删除函数调用查询函数 是否为5是否为6N Y Y 退出系统调用显示函数 图3-1主菜单流程图 开始主菜单 数据录入是否为1是否为2是否为3请输入比赛项目信息请输入运动员信息请输入比赛赛事信息YNNYYY是否继续输入YN图3-2 数据的录入流程图开始主菜单 数据查询是否为1 是否为2 是否为3请输入对应信息的编号请输入对应信息的编号是
14、否为1是否为2YYNYN请输入比赛项目的编号请输入比赛项目的名称是否为1是否为2请输入运动员的编号请输入运动员的姓名请输入运动员的姓名和比赛的项目YYNYYYYYN图3-3 数据的查询流程图第四章 程序代码比赛项目信息录入:void input1() ofstream fout(e:比赛项目.dat,ios:app);char ch;Match a;do cout请分别输入比赛项目编号、名称、比赛时间、比赛地点.a.numbera.calla.placea.time; a.next=NULL; fout.write(char *)&a,sizeof(Match); cout是否继续输入,如果继
15、续键入Y|ych;while(ch=y|ch=Y); fout.close();运动员信息修改:int change2()/对运动员相关信息修改cout您正在进行修改运动员基本信息操作!endl;creat2(); Athlete *p1; p1=head4;cout请输入要修改运动员的编号:number1;while(p1!=NULL) if(p1-number=number1) sign=1;break; p1= p1-next; if (sign=0) cout没有找到要修改的记录!endl; elsecout请选择要修改运动员的哪些信息endl;cout-修改运动员的编号-1endl;
16、cout-修改运动员的姓名-2endl;cout-修改运动员所属工作单位或省份-3endl;cout-修改运动员性别-4endl; cout-修改运动员年龄-4endl;cout请输入对应信息的编号a;switch(a)case 1:cout请输入新的运动员编号:nu; p1-number=nu; cout运动员的编号修改成功!endl; break; case 2:cout请输入新的运动员姓名:info; strcpy(p1-name,info);cout运动员姓名修改成功!endl; break;case 3:cout请输入新的运动员所属工作单位或省份:info;strcpy(p1-par
17、t,info);cout运动员所属工作单位或省份修改成功!endl; break;case 4:cout请输入新的性别:info;strcpy(p1-sex,info);cout运动员性别修改成功!endl; break;case 5:cout请输入新的年龄:nu;p1-age=nu,cout运动员年龄修改成功!next; fout.close(); return 0;比赛赛事信息显示:void print3() creat3(); Message *p1=head7; cout请分别输出比赛参赛运动员姓名、比赛项目名称、比赛成绩、比赛名次.endl; while(p1!=NULL) cout
18、nametaventtscoretcanext; 第五章 结果与测试5.1 实验结果:算法结果以截屏的形式显示出 :信息录入信息修改信息删除信息查询信息输出及退出系统5.2 测试5.2.1 数据的录入测试表5-1 比赛项目的录入时输入名称测试用例输入预期的输出实际的输出评价比赛项目的名称(不超过20个字节)成功,不会出现信息的错误显示结果第正确的该功能可行比赛项目的名称(超过20个字节)不成功,会出现错误信息显示结果是错误的该功能不可行表5-2 比赛项目的录入时输入时间测试用例输入预期的输出实际的输出评价比赛时间(不超过10个字节)成功,不会出现信息的错误显示结果第正确的该功能可行比赛时间(超
19、过10个字节)不成功,会出现错误信息显示结果是错误的该功能不可行表5-3 比赛项目的录入时输入地点测试用例输入预期的输出实际的输出评价比赛地点(不超过20个字节)成功,不会出现信息的错误显示结果是正确的该功能可行比赛地点(超过20个字节)不成功,会出现错误信息显示结果是错误的该功能不可行表5-5 运动员的录入时输入名称测试用例输入预期的输出实际的输出评价运动员名字(不超过10个字节)成功,不会出现信息的错误显示结果是正确的该功能可行运动员名字(超过10个字节)不成功,会出现错误信息显示结果是错误的该功能不可行表5-6 运动员的录入时输入名称测试用例输入预期的输出实际的输出评价运动员单位(不超过
20、20个字节)成功,不会出现信息的错误显示结果是正确的该功能可行运动员单位(超过20个字节)不成功,会出现错误信息显示结果是错误的该功能不可行5.2.1 数据的删除测试表5-4 运动员的删除时输入编号测试用例输入预期的输出实际的输出评价要删除的运动员的编号成功显示结果是错误的该功能不可行第六章 附录源代码:#include#include#includeusing namespace std;void fun1() cout*endl; coutendl; cout*学校运动会管理系统*endl;cout-数据录入 请按:1-endl;cout-数据修改 请按:2-endl;cout-数据删除
21、请按:3-endl;cout-数据查询 请按:4-endl;cout-数据显示 请按:5-endl;cout-退出系统 请按:6-endl;coutendl;cout*endl;coutendl;cout*请输入一个数据,并按回车键!*endl;class Matchpublic:Match *next;/为创立链表做准备int number; /比赛项目编号char call10; /比赛项目名称char time10; /比赛时间char place20; /比赛地点 friendvoid input1();void input1() ofstream fout(e:比赛项目.dat,io
22、s:app);char ch;Match a;do cout请分别输入比赛项目编号、名称、比赛时间、比赛地点.a.numbera.calla.placea.time; a.next=NULL; fout.write(char *)&a,sizeof(Match); cout是否继续输入,如果继续键入Y|ych;while(ch=y|ch=Y); fout.close();Match *head1;void creat() head1=NULL; Match *p,*q=head1; ifstream fin(e:比赛项目.dat,ios:in); if(!fin) cout文件打开失败!nex
23、t=p;q=p; p=new Match; fin.read(char*)p,sizeof(Match); fin.close();int change1() /对比赛项目相关信息修改cout您正在进行修改比赛项目有关事项操作!endl;creat(); Match *p1; p1=head1;cout请输入要修改比赛项目的编号:number1;while(p1!=NULL) if(p1-number=number1) sign=1;break; p1= p1-next; if (sign=0)cout没有找到要修改的记录!endl; elsecout请选择要修改比赛项目的那些信息endl;c
24、out-修改比赛项目的编号-1endl;cout-修改比赛项目的名称-2endl;cout-修改比赛时间-3endl;cout-修改比赛地点-4endl;cout请输入对应信息的编号a;switch(a)case 1:cout请输入新的比赛编号:nu; p1-number=nu; cout比赛项目编号修改成功!endl; break; case 2:cout请输入新的比赛项目名称:info; strcpy(p1-call,info);cout比赛项目名称修改成功!endl; break; case 3:cout请输入新的比赛时间:info;strcpy(p1-time,info);cout比赛
25、项目时间修改成功!endl; break; case 4:cout请输入新的比赛地点:info;strcpy(p1-place,info);cout比赛项目地点修改成功!next; fout.close(); return 0;int delete1() /对比赛项目相关信息进行删除 creat(); Match *p1,*p2; p2=p1=head1;cout请选择要删除比赛项目的那些信息endl;cout-删除比赛项目的编号-1endl;cout-删除比赛项目的名称-2endl; cout请输入对应信息的编号n; int num,flag=0; char cal10; switch(n)
26、 case 1: cinnum; while(p1!=NULL) if(p1-number=num) flag=1;break; p2=p1; p1= p1-next; if (flag=0) cout没有找到要删除的记录!next=p1-next;case 2: cincal; while(p1!=NULL) if(!strcmp(p1-call,cal) flag=1;break; p2=p1; p1= p1-next; if (flag=0) cout没有找到要删除的记录!next=p1-next; ofstream fout(e:比赛项目.dat,ios:out); p1=head1;
27、while(p1!=NULL) fout.write(char*)p1,sizeof(Match);p1=p1-next; fout.close();return 0;void print1() creat(); Match *p1=head1; cout请分别输出比赛项目编号、名称、比赛时间、比赛地点.endl;while(p1!=NULL) coutnumbertcallttimetplacenext; void find1() creat(); Match *p1; p1=head1; int sign=0;/设置的标记变量 cout请选择要查询比赛项目的哪些信息endl;cout-按比
28、赛项目的编号查询-1endl;cout-按比赛项目的名称查询-2endl;cout-按比赛时间查询-3endl;cout-按比赛地点查询-4endl;cout请输入对应信息的编号a;switch(a)case 1:cout请输入要查询的比赛编号:nu; while(p1!=NULL) if(p1-number=nu) sign=1;break; p1= p1-next; if (sign=0) cout没有找到要查询的记录!endl; else coutnumbertcallttimetplaceendl; break; case 2:cout请输入要查询的比赛项目名称:info; while
29、(p1!=NULL) if(p1-call=info) sign=1;break; p1= p1-next; if (sign=0) cout没有找到要查询的记录!endl; else coutnumbertcallttimetplaceendl; break; case 3:cout请输入要查询的比赛时间:info;while(p1!=NULL) if(!strcmp(p1-time,info) sign=1;break; p1= p1-next; if (sign=0) cout没有找到要查询的记录!endl; else coutnumbertcallttimetplaceendl; break; case 4:cout请输入要查询的比赛地点:info;while(p1!=NULL) if(!strcmp(p1-place,info) sign=1;break; p1= p1-next; if (sign=0) cout没有找到要查询的记录!endl; else coutnumbertcallttimetplaceendl;break;int find()/进行查找coutendl;coutttt请输入要查询的信息:endl;couttt比赛项目信息查询 请按:1endl;couttt运动员信息查询 请按:2endl;couttt比赛赛事信息查询 请按:3j;switc