运动会比赛计分系统文档格式.docx
《运动会比赛计分系统文档格式.docx》由会员分享,可在线阅读,更多相关《运动会比赛计分系统文档格式.docx(28页珍藏版)》请在冰豆网上搜索。
2.2.1主函数3
2.2.2数组4
2.2.3文件的储存5
2.3程序流程图5
3调试与运行7
3.1调试结果7
3.1.1首先运行文件运动会统计分数7.exe7
3.1.2输入信息8
3.1.3输出信息8
3.1.4查询信息11
3.1.5调用信息11
3.2调试过程中出现的问题和处理方式11
4总结12
4.1调试中所遇到的较重要问题的回顾12
4.1.1提出问题12
4.1.2解决问题12
4.1.3提出问题12
4.1.4分析问题12
4.1.5解决问题12
4.1.6提出问题13
4.1.7分析问题13
4.1.8解决问题13
4.2算法的效率及改进设想13
5心得体会14
附115
附226
附327
附428
附529
参考文献30
一、概述
1.1设计目的
《数据结构》主要介绍一些最常用的数据结构,阐明各种数据结构内在的逻辑关系,讨论其在计算机中的存储表示,以及在其上进行各种运算时的实现算法,并对算法的效率进行简单的分析和讨论。
数据结构是介于数学、计算机软件和计算机硬件之间的一门计算机专业的核心课程,它是计算机程序设计、数据库、操作系统、编译原理及人工智能等的重要基础,广泛的应用于信息学、系统工程等各种领域。
数据结构课程设计是为数据结构课程独立开设的实践性教学环节。
数据结构课程设计对于巩固数据结构知识,加强学生的实际动手能力和提高学生综合素质是十分必要的。
课程设计的目的:
1)要求学生达到熟练掌握C语言的基本知识和技能。
2)了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力。
3)提高程序设计和调试能力。
学生通过上机实习,验证自己设计的算法的正确性。
学会有效利用基本调试方法,迅速找出程序代码中的错误并且修改。
4)培养算法分析能力。
分析所设计算法的时间复杂度和空间复杂度,进一步提高程序设计水平。
5)初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能。
1.2课程设计内容
问题描述:
参加运动会有n个学校,学校编号为1……n。
比赛分成m个男子项目,和w个女子项目。
项目编号为男子1……m,女子m+1……m+w。
不同的项目取前五名或前三名积分;
取前五名的积分分别为:
7、5、3、2、1,前三名的积分分别为:
5、3、2;
哪些取前五名或前三名由学生自己设定。
(m<
=20,n<
=20)
功能要求:
(1)系统以菜单方式工作
(2)由程序提醒用户填写比赛结果,输入各项目获奖运动员信息。
(3)所有信息记录完毕后,用户可以查询各个学校的比赛成绩
(4)查看参赛学校信息和比赛项目信息等。
界面要求:
有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。
1.3相关知识
1)链表的存储用法:
是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。
链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。
每个结点包括两个部分:
一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。
2)文件与结构体存储:
结构体是一种复杂的数据类型,结构体类型的定义只是列出了该结构的组成情况,编译系统并未因此而分配存储空间,当定义了结构体类型的变量或数组后,编译系统才会分配存储空间
3)栈的出栈用法:
堆栈是RAM中划出的一片特殊存储区,用于临时存放一些重要数据(这些数据存放一会后是必须回到原位的),其中数据的位置由堆栈指针确定,而数据的存放和读取则由入栈指令和出栈指令控制,入出必须对应成对的使用才能使压入的数据正确的回到压入前的位置。
4)查找方法:
顺序查找是一种最基本和最简单的查找方法。
它的思路是,从表中的第一个元素开始,将给定的值与表中逐个元素的关键字进行比较,直到两者相符,查到所要找的元素为止。
否则就是表中没有要找的元素,查找不成功。
对于表中记录的关键字是无序的表,只能采用这种方法。
存储结构:
顺序存储方法:
它是把逻辑上相邻的结点存储在物理位置相邻的存储单元里,结点间的逻辑关系由存储单元的邻接关系来体现。
由此得到的存储表示称为顺序存储结构。
5)链接存储方法:
它不要求逻辑上相邻的结点在物理位置上亦相邻,结点间的逻辑关系是由附加的指针字段表示的。
由此得到的存储表示称为链式存储结构。
索引存储方法:
除建立存储结点信息外,还建立附加的索引表来标识结点的地址。
散列存储方法:
就是根据结点的关键字直接计算出该结点的存储地址。
二、系统设计
2.1系统功能要求
1).可以输入各个项目的前三名或前五名的成绩;
这里需要用到栈的存储用法,链表的存储用法,结构存储。
2).能统计各学校总分
这里就应该采用文件与结构体存储,并处理好关系。
3).可以按学校编号、学校总分、男女团体总分排序输出;
这里要用到的是栈的出栈用法,链表的用法,文件等。
4).可以按学校编号查询学校某个项目的情况;
可以按项目编号查询取得前三或前五名的学校。
而这里要用到的是文件,查找方法,存储结构这三大块。
2.2数据结构设计
2.2.1主函数
voidmain()
{
intchoice;
printf("
\n╔===================★welcome★======================╗\n"
);
\n******************运动会比赛计分系统*******************\n"
\n★★★★★★Designby谭斌★★★★★★\n"
\n\n********************1.输入比赛信息*********************\n"
********************2.输出比赛信息*********************\n"
********************3.查询比赛信息*********************\n"
********************4.退出系统*********************\n\n"
╚======================================================╝\n\n\n"
请选择要实现步骤的编号:
\n\n"
scanf("
%d"
&
choice);
switch(choice)
{
case1:
inputinformation();
writedata();
main();
case2:
output();
case3:
inquiry();
case4:
exit(0);
default:
}
}
2.2.2数组
typedefstruct
intitemnum;
//项目编号
inttop;
//取名次的数目
intrange[5];
//名次
intmark[5];
//分数
}itemnode;
//定义项目结点的类型
{
intschoolnum;
//学校编号
intscore;
//学校总分
intmscore;
//男团体总分
intwscore;
//女团体总分
itemnodec[m+w];
//项目数组
}headnode;
//定义头结点类型
headnodeh[n];
//定义一个头结点数组
2.2.3文件的储存
voidwritedata()//把数据存储在文件中
FILE*report;
inti;
if((report=fopen("
sportsdata.txt"
"
w"
))==null)
{
printf("
不能打开文件\n"
exit
(1);
for(i=0;
i<
n;
i++)
fwrite(&
h[i],sizeof(headnode),1,report);
fclose(report);
}
2.3程序流程图
1)设计运动会的学校编号或名称、项目成绩、男女团体总分的数据存储系统设计图
图
(1)
2)查询团体总分程序设计图
图
(2)
继续
3)总流程图
图(4)
3调试与运行
3.1调试结果
3.1.1首先运行文件运动会统计分数7.exe
3.1.2输入信息
程序首先赋初值,定义学校的个数为2,男生项目为1,女生项目为1。
输入1得到进入输入信息模块。
按回车键可得到学校的得分信息和按编号获得的所以信息。
3.1.3输出信息
输入2进入输出信息模块,该模块分四项:
(1)按学校编号输出:
(2)按学校总分输出:
(3)按男团总分输出:
(4)按女团总分输出:
(5)输入2返回输出信息模块,输入0返回主菜单。
3.1.4查询信息
见商景阳论文
3.1.5调用信息
输入4时显示出所有的信息:
3.2调试过程中出现的问题和处理方式
为了使系统具有一点的容错性,当输入错误信息时应给出相应提示以正确输入数据,如:
printf("
要查询的项目编号:
"
scanf("
s);
if(s>
m+w||s==0)
printf("
此次运动会不包括这个项目.\n\n\n"
想在每次查询结束想返回主菜单进行其它项时,应在main()函数中调用其它函数时再调用main()函数,如:
inputinformation();
writedata();
readdata();
main();
output();
inquiry();
readdata();
程序出现语法错误,发现是输入名次信息的地方忘带地址符&
,或是程序不完整,只写了一个大括号。
如:
*****名次:
h[i].c[j].range[s]);
附录五:
总结
4.1调试中所遇到的较重要问题的回顾
4.1.1提出问题
所有输入输出内容只能在一屏内显示,学过c语言,很知道”\n”是换行,”\f”是换屏的,可是在这里就是无法实现。
4.1.2解决问题
输入clrscr();
4.1.3提出问题
设置选项,供用户输入选择时,当按任意键时都会跳入下一步操作,或者直接退出系统。
4.1.4分析问题
在供用户选择时,提供了几个选项,就写几个case语句,但是当用户输入的并不是这几个数字时,系统就不能做出正确判断。
4.1.5解决问题
修改case语句,添加defa