计算机学院信管专业
数据结构课程设计
题 目: 运动会分数统计 班 级:
姓 名: 学 号: 同组人姓名:
起 迄 日 期: 课程设计地点: 指导教师:
评阅意见: 成绩评定: 评阅人: 日期: 完成日期:2013年12月
.\\
目录
1、需求分析……………………………………………………02 2、概要设计……………………………………………………03 3、详细设计……………………………………………………04 4、调试分析和测试结果………………………………………05 5、总结…………………………………………………………13 6、参考文献……………………………………………………14 7、致谢…………………………………………………………14 8、附录…………………………………………………………14
.\\
1、需求分析
(1)任务:
参加运动会有n个学校,学校编号为1……n。比赛分成m个男子项目,和w个女子项目。项目编号为男子1……m,女子m+1……m+w。不同的项目取前五名或前三名积分;取前五名的积分分别为:7、5、3、2、1,前三名的积分分别为:5、3、2;哪些取前五名或前三名由学生自己设定。(m<=20,n<=20)
(2)功能要求:
a).可以输入各个项目的前三名或前五名的成绩; b).能统计各学校总分,
c).可以按学校编号、学校总分、男女团体总分排序输出;
d).可以按学校编号查询学校某个项目的情况;可以按项目编号查询取得前三或前五名的学校。
(3)规定:
输入数据形式和范围:20以内的整数(如果做得更好可以输入学校的名称,运动项目的名称)
(4)输出形式:
有中文提示,各学校分数为整形
(5)界面要求:
有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。
(6)存储结构:
学生自己根据系统功能要求自己设计,但是要求运动会的相关数据要存储在数据文件中。
(7)测试数据:
要求使用1、全部合法数据;2、整体非法数据;3、局部非法数据。进行程序测试,以保证程序的稳定。测试数据及测试结果请在上交的资料中写明;
.\\
2、概要设计
(1)文字分析
本课设要求输入信息,统计分数,执行排序与查找功能,在要求中没有在建立数据之后进行插入和删除操作,而在排序和查找过程中有许多的随机读取数据操作,因此使用顺序结构而不用链表。由于各个要求属性具有一定的联系,在定义数据时使用结构体和结构体数组来存储信息数据。考虑到程序的要求在设计函数时将学校个数和项目个数设计为可变的数据,为方便使用设计菜单函数(menu),而由于要求将信息存储在文件中故设计文件的存储(savetofile)与读取函数(readfromfile),信息输入函数(input)在输入基本信息后由系统统计总分的内容并全部存入文件file中,在接下来的函数中开始都需要读取文件中的信息,信息的输出(output)输出输入函数中统计后的各项信息,在排序输出(sortput)中使用冒泡排序法进行不同关键字的排序,查询函数(search)采用顺序表的查找来完成。
开始 进入主菜单 菜单选项(0—4) 1.信息输入 2.统计输出 3.排序输出 4.信息查询 5.退出 结束
.\\
3、详细设计
(1)项目数据表:
运动会系统先制定本次运动会所需的参赛项目。本数据表根据要求设计存储每个项目的编号、要取的名次、各个名次名称及各名次对应的分数。用于对以后项目情况的统计已及查询。其中inum,top,range由输入信息输入,而mark有range和top决定。 typedef struct {
int inum; /*项目编号*/
int top; /*取名次的数目*/ int range[5]; /*名次*/ int mark[5]; /*分数*/
}itemnode; /*存放项目信息*/
(2)学校数据表:
本数据表根据要求储存了各个参赛学校的总体情况,包括学校的编号、学校总分、男子团体总分、女子团体总分,并且包括项目数据数组t[n]。其中snum和t[n]中部分数据由输入信息输入,而其他三项内容score,mscore,wscore将由系统进行自动统计。 typedef struct {
int snum; /*学校编号*/
int score; /*学校总分*/ int mscore; /*男团体总分*/ int wscore; /*女团体总分*/ itemnode t[M+W]; /*项目数组*/ }snode; /*存放学校信息*/
snode a[N]; /* 定义一个学校数组*/ 这二个数据表相关联接,a[n]中包括t[n],形成一个整体。