资源预览内容
第1页 / 共21页
第2页 / 共21页
第3页 / 共21页
第4页 / 共21页
第5页 / 共21页
第6页 / 共21页
第7页 / 共21页
第8页 / 共21页
第9页 / 共21页
第10页 / 共21页
亲,该文档总共21页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
数据结构课程设计 目录1. 需求分析-2 1.1问题描述-21.2基本任务-22. 概要设计-22.1主界面设计-22.2数据结构设计-32.3系统功能设计-33. 模块设计-33.1模块设计-33.2系统子模块及功能设计-43.3系统模块之间的调用关系-44. 详要设计-54.1数据结构设计-54.2系统主要模块设计-65. 调试分析-85.1创建学校链表-85.2添加获奖学生-85.3按项目查学校成绩-115.4按学校编号查参加项目-146. 用户使用说明-157. 参考文献-158. 对软件自我评价-159. 程序设计源代码-1610. 心得体会-22一需求分析 1.1 问题描述1. 课程设计题目:运动会分数统计。2. 任务:加运动会有n个学校,学校编号为1n。比赛分成m个男子项目,和w个女子项目。项目编号为男子1m,女子m+1m+w。不同的项目取前五名或前三名积分;取前五名的积分分别为:7、5、3、2、1,前三名的积分分别为:5、3、2;哪些取前五名或前三名由学生自己设定。(m=20,n=20)3. 问题分析:1)、每个学校有运动员要参加运动项目,故存储结构要有三个,项目结构体,学生信息结构体和学校链表。每个结点存储一个学校,每个学校可以有多名运动员参加运动项目。由此,存储结构就建立了。2)、要求不同的项目根据具体情况取去前五名或前三名积分,则可以设定标准,即当参加某项目的运动员数等于或多于五人时,就取该项目的前五名进行积分,取前五名的积分分别为:7,5,3,2,1。当参加某一项目的人数少于五人时,则去该项目的前三名进行积分,去取前三名的积分分别为:5,3,2。3)、要求能统计学校的总分,并可以按学校编号输出每个学校的参赛信息及每个学校每个运动员的信息和所有运动项目清单。以上这些功能可以通过遍历学校链表来实现。4)、要求可以学校编号查询学校某个项目的情况,用户输入学校编号和项目编号,通过遍历学校链表即可实现。5)、要求可以按编号查询取得前三或前五名的学校,用户输入要查询的项目的编号,通过遍历学校链表即可实现。6)、设置菜单函数menu(),产生用户界面。 规定: 输入数据形式和范围:可以输入学校的名称,运动项目的名称输出形式:有中文提示,各学校分数为整形界面要求:有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。存储结构:学生自己根据系统功能要求自己设计,但是要求运动会的相关数据要存储在数据文件中。测试数据:要求使用1、全部合法数据;2、整体非法数据;3、局部非法数据。进行程序测试,以保证程序的稳定。 1.2 基本任务通过用户调查分析及实际需求,系统需要实现如下基本任务:1) .输入各个项目的前三名或前五名的成绩;2) .统计各学校总分;3).按学校编号或名称、男女团体总分排序输出;4).按学校编号查询学校某个项目的情况;可以按项目编号查询取得前三或前五名的学校。数据存入文件并能随时查询。二概要设计为了完成需求分析的基本任务,主要从以下3个方面进行设计: 2.1 主界面设计为了实现运动会分数统计的各项功能,设计了一个含有多个菜单项的主控菜单模块以链接系统的各项功能,以方便用户使用系统。系统主控菜单运行界面如图1所示:图1 运动会分数统计主菜单 2.2 数据结构设计系统采用数据的存储结构定义:运动项目结构体、 运动员信息结构体、学校链表此外,还定义了一些全局变量:学校总数SchoolCount、男生项目总数BoyProject、女生项目总数GirlProject、项目总数TotalProject、项目表Project_T41。 2.3 系统功能设计创建学校的链表: void CreatSchoolLink(School &head);添加获奖学生: void AddStudentLink(School &head); 按项目编号查询取得前三或前五名的学校。 void Find_Project_ID(School &head,int Project_ID); 按学校编号查询学校某个项目。 void Find_School_Project(School &head,int School_ID,int Project_ID);成绩统计: void ScoreCount(School &head);输出参赛结果: void OutPut_Link(School head);(7) .添加学生数据: void AddStudent(School &head);(8).菜单函数: int menu();(9).主函数: int main();三模块设计 3.1 模块设计系统主要包含主程序模块和其它链表操作模块。其调用关系如图2所示。ScoreCount(School&head)main()CreatSchoolLink(head)AddStudent(head)OutPut_Link(head)FindProject_ID(head,Project_ID)Find_School_Project(head,School_ID,intProject_ID)menu()AddStudentLink(head) 图2 模块调用示意图 3.2 系统子模块及其功能设计系统设计了8个子功能模块,8个子功能模块的描述如下:创建学校的链表: void CreatSchoolLink(School &head);添加获奖学生: void AddStudentLink(School &head); 按项目编号查询取得前三或前五名的学校。 void Find_Project_ID(School &head,int Project_ID); 按学校编号查询学校某个项目。 void Find_School_Project(School &head,int School_ID,int Project_ID);成绩统计: void ScoreCount(School &head);输出参赛结果: void OutPut_Link(School head);(8) .添加学生数据: void AddStudent(School &head);(8).菜单函数: int menu(); 3.3 系统模块之间的调用关系系统的10个子模块之间的主要调用关系如图3所示:Menu() 图3 系统函数调用关系图四详细设计 4.1 数据结构设计系统采用线性表的链式存储结构存储学校信息。结点定义如下:typedef struct SchoolNodeint number;/学校编号 char name10; int count;/运动员人数 int boyscore;/男子团体总分 int girlscore;/女子团体总分 int totalscore;/团体总分 int jifen;/积分 Student students20;/参赛学生 struct SchoolNode *next;SchoolNode,*School; 4.2 系统主要模块设计(1) 创建学校链表算法思想及程序代码:void CreatSchoolLink(School &head)/创建学校的链表 School p; int i; head=p=(School)malloc(sizeof(SchoolNode); for(i=1;inext=(School)malloc(sizeof(SchoolNode); printf(请输入编号为%d的学校的名称:n,i); scanf(%s,p-name); p-number=i; p-count=0; p-boyscore=0; p-girlscore=0; p-totalscore=0; p-jifen=0;
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号