运动会分数统计系统数据结构课程设计论文Word格式.docx

上传人:b****5 文档编号:18139499 上传时间:2022-12-13 格式:DOCX 页数:44 大小:420.37KB
下载 相关 举报
运动会分数统计系统数据结构课程设计论文Word格式.docx_第1页
第1页 / 共44页
运动会分数统计系统数据结构课程设计论文Word格式.docx_第2页
第2页 / 共44页
运动会分数统计系统数据结构课程设计论文Word格式.docx_第3页
第3页 / 共44页
运动会分数统计系统数据结构课程设计论文Word格式.docx_第4页
第4页 / 共44页
运动会分数统计系统数据结构课程设计论文Word格式.docx_第5页
第5页 / 共44页
点击查看更多>>
下载资源
资源描述

运动会分数统计系统数据结构课程设计论文Word格式.docx

《运动会分数统计系统数据结构课程设计论文Word格式.docx》由会员分享,可在线阅读,更多相关《运动会分数统计系统数据结构课程设计论文Word格式.docx(44页珍藏版)》请在冰豆网上搜索。

运动会分数统计系统数据结构课程设计论文Word格式.docx

输入要求:

可输入学院信息(学院编号、学院名称、运动员编号、运动员姓名、运动员性别、项目编号、项目名称、名次),有中文提示,在输入的同时限定输入数据的大小以及一些错误输入。

输出要求:

输出内容整洁,排列有序。

界面要求:

界面布局合理整洁,有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。

存储结构:

学生自己根据系统功能要求自己设计,但是要求运动会的相关数据要存储在数据文件中。

2.总体设计

2.1系统设计方案

根据课程设计任务书要求,本方案要求准备结构体数组、读写文件。

还能把信息直接输入存储到文件中,读取文件中信息,从而得到结果。

1)菜单设计

分为主函数菜单,比赛数据输入菜单,学院、男子团体、女子团体总分排序输出菜单,查询学院成绩菜单、查询项目排名菜单。

2)数据保存方式

建立文件,数据保存在文件中。

3)数据类型

采用结构体类型。

4)存储结构

采用结构体类型数组存储结构存储。

5)算法设计

输入比赛结果模块中运用了冒泡算法将输入的数据排序。

2.2功能模块设计

根据分析整个系统主要划分为4个功能模块,分别执行要求中的功能。

该系统分为比赛数据输入、总分排序输出、查询比赛成绩模块。

总分排序输出模块有三个子模块,分别是:

按学校总分排序输出模块、按男子团体总分排序输出模块和按女子团体总分排序输出模块;

查询比赛成绩模块分为按学院编号查询模块和按项目编号查询两个子模块。

图2.1功能模块图

1)比赛数据输入模块

比赛成绩输入模块分为:

创建信息部分,创建学院数,男子项目数,女子项目数,学院信息,比赛项目信息,运动员信息,成绩输入部分需根据项目编号,按排名依次输入学院编号,运动员编号,最后将数据依次写入文件。

2)比赛成绩输出模块

读取比赛数据,冒泡算法排序,按选择输出学院、男子团体或女子团体总分的排名情况。

3)查询比赛成绩模块

选择按学院编号查询模块或按项目编号查询输入相应的编号输出查询结果。

3.详细设计

3.1数据结构定义

建立结构体如下:

typedefstructPlayerInfo//存储运动员相关信息

{

charPlayerName[MAXSIZE];

intSex;

//运动员性别

intPlayerNumber;

intPlayerScore;

structPlayerInfo*next;

}Player;

typedefstructSchoolInfo//存储学校相关信息

charSchoolName[MAXSIZE];

intSchoolNumber;

intSchoolScore;

//学校总分

intWomenScore;

//女子总分

intMenScore;

//男子总分

Player*PlayerHead;

intPlayerData;

structSchoolInfo*next;

}School;

typedefstructMatchItem//存储运动项目的相关信息

charMatchName[MAXSIZE];

intMatchNumber;

intrange[5];

//存储获得前三名或前五名的学校

intPlayer[5];

//存储获得前三名或前五名的运动员

structMatchItem*next;

}MatchPro;

typedefstructPreNews//存储要输入的学校,男女项目个数

intSchoolSum;

//学校总数

intManItemSum;

//男子项目总数

intWomanItemSum;

//女子项目总数

intPlayerSum;

//运动员总数

}PNews;

3.2比赛数据输入模块

比赛数据输入模块需要输入学院数,男子项目数,女子项目数,学院信息,比赛项目信息,运动员信息,成绩输入部分需根据项目编号,按排名依次输入学院编号,运动员编号,最后将数据依次写入文件。

图3.1比赛数据输入流程图

此模块定义变量i,j先初始化储存分数的数组各元素,定义flag标记,while循环与for循环实现各学校信息的输入,包括学校编号、项目编号、运动员编号,使用if语句实现对输入的数据判断是否合法,选择是取前三名或前五名,使用switch语句选择添加总分。

3.3比赛成绩输出模块

比赛成绩输出模块实现按要求输出相应的数据。

有以下输出选项:

按学校总分排序输出、按男子团体总分排序输出和按女子团体总分排序输出。

模块定义了inti,j,k,flag;

SchoolPTemp={0}变量,for循环包括switch语句,选择输出按学校总分排序输出、按男子团体总分排序输出和按女子团体总分排序输出相应的数据,同时实现冒泡排序。

for循环实现输出各个方式输出的每个数据。

3.3查询比赛成绩模块

查询比赛成绩模块包括:

按学校编号查询,按项目编号查询。

此模块定义了inti,j;

switch(choice)实现查询的两种方式的选择,使用while循环与for循环查询相关数据,从而输出相关数据,从而实现查询功能。

4.调试与测试

程序测试是程序质量保证的关键步骤从用户的角度来看,普遍希望通过程序测试暴露程序中隐藏的错误和缺陷,所以程序测试应该是“为了发现错误而执行程序的过程”。

或者说,程序测试应该根据程序开发各阶段的规格说明和程序的内部结构而精心设计一批测试用例(即输入数据及其预期的输出结果),并利用这些测试用例去运行程序,以发现程序错误或缺陷。

过度测试则会浪费许多宝贵的资源。

到测试后期,即使找到了错误,然而付出了过高的代价。

调试过程主要是运行编制好的程序,然后遇到错误后根据系统的提示,找到相关的问题所在。

以下是程序调试与测试的展示。

4.1测试数据

4.1.1School.txt

cqkjxy1133105

czw1113

ld210

zql310

dx420

tjb520

cqdx2205155

fuc6117

kyo713

uyo810

udo920

ngd1020

cqsfxy3218135

zxx11121

wxx1210

lxx1310

cxx1420

txx1520

cqykdx4161245

tmd16116

tnn1710

tmm1810

ccc1920

xxx2020

scmsxy512845

csa21112

wqe2210

fgd2310

yjg2420

fdr2520

4.1.2MatchItem.txt

feifei54173132814525

tiaotiao45244193122915

paopao33112711

tiaolou22631352341814

tiaogao11226313417522

4.1.3PreNews.txt

53225

4.1程序主界面

图4.1程序主界面

4.2输入数据

图4.2数据输入

(1)

图4.3数据输入

(2)

图4.4数据输入(3)

4.3排序输出学校总分

图4.5排序输出学校总分

4.4排序输出男子团体总分

图4.6排序输出男子团体总分

4.5排序输出女子团体总分

图4.7排序输出女子团体总分

4.6按学校查询项目数据

图4.8按学校查询项目数据

4.7按项目查询数据

图4.9按学校查询项目情况

5.总结

课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新月异,当今计算机应用在生活中可以说得是无处不在。

因此作为二十一世纪的大学来说掌握计算机开发技术是十分重要的。

回顾起此次课程设计,至今我们仍感慨颇多,的确,自从拿到题目到完成整个编程,从理论到实践,可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。

通过这次课程设计使我们懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。

在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对一些前面学过的知识理解得不够深刻,掌握得不够牢固,比如说结构体,指针……通过这次课程设计之后,我们把前面所学过的知识又重新温故了一遍。

善于总结,也是学习能力的一种体现,每次完成一个编程任务,完成一段代码,都应当有目的的跟踪该程序的应用状况,随时总结,找到自己的不足,这样所编写的程序才能逐步提高.

参考文献

[1]严蔚敏吴伟民.数据结构.清华大学出版社.2007.3

[2]李春葆.数据结构教程.清华大学出版社.2005.1

[3](美)StephenPrata.CPrimerPlus中文版(第五版).人民邮电出版社.2005.2

[4]杨路明郭浩志.C语言程序设计教程.北京邮电大学出版社.2005.12

[5]谭浩强.C程序设计.第三版.清华大学出版社.2005.2

[6]徐孝凯.数据结构实用教程.清华大学出版社.2006.8

[7]刘大有.数据结构C语言版.高等教育出版社.2004

致谢

首先感谢在本次课程设计中老师们的辛勤指导,感谢XX师,还要感谢在本次课程设计中帮助我的同学,感谢XX等同学的帮助,最终在老师和同学的帮助和指导下完成了这次的课程设计。

附录:

程序代码:

#include<

stdio.h>

stdlib.h>

malloc.h>

string.h>

conio.h>

#defineMAXSIZE20

typedefstructPlayerInfo

typedefstructSchoolInfo

typedefstructMatchItem

typedefstructPreNews

voidChiefMenu(MatchPro*MatchHead,PNews*PreNode,School*SchoolHead);

PNews*BeginInput(PNews*PreNode);

voidPreNews_Write(PNews*PreNode);

School*Add_School(School*SchoolHead,PNews*PreNode);

voidSchool_Write(School*SchoolHead,PNews*PreNode);

MatchPro*MatchInput(MatchPro*MatchHead,PNews*PreNode,School*SchoolHead);

voidMatch_Write(MatchPro*MatchHead,PNews*PreNode,School*SchoolHead);

PNews*PreNews_read(PNews*PreNode);

School*School_Array_Read(PNews*PreNode);

MatchPro*Match_Read(MatchPro*MatchHead,PNews*PreNode);

School*CountSchoolScore(School*SchoolHead,PNews*PreNode);

School*SchoolOrder(School*SchoolHead,intTotal_PointsType,PNews*PreNode);

voidShowScore(School*SchoolHead,PNews*PreNode,intTotal_PointsType);

intShowScore_School(MatchPro*MatchHead,School*SchoolHead,PNews*PreNode);

intQueryItem(MatchPro*MatchHead,School*SchoolHead,PNews*PreNode);

voidClearNode(MatchPro*MatchHead);

voidChiefMenu(MatchPro*MatchHead,PNews*PreNode,School*SchoolHead)

intchoice=1;

while(choice)

{

printf("

欢迎进入运动会分数统计系统!

\n\n"

);

printf("

1.按系统提示输入关于运动会各种信息!

2.排序输出学校总分.\n\n"

3.排序输出男子团体总分.\n\n"

4.排序输出女子团体总分.\n\n"

5.按学校编号查询学校某个项目的情况.\n\n"

6.按项目编号查询取得前三名或前五名的学校.\n\n"

0.退出运动会分数统计系统!

\n\n\n请输入你要进行的步骤:

"

scanf("

%d"

&

choice);

system("

cls"

switch(choice)

{

case1:

Match_Write(MatchHead,PreNode,SchoolHead);

break;

case2:

ShowScore(SchoolHead,PreNode,1);

case3:

ShowScore(SchoolHead,PreNode,2);

case4:

ShowScore(SchoolHead,PreNode,3);

case5:

QueryItem(MatchHead,SchoolHead,PreNode);

case6:

ShowScore_School(MatchHead,SchoolHead,PreNode);

case0:

free(SchoolHead);

free(MatchHead);

free(PreNode);

choice=0;

printf("

您已安全的退出程序!

\n"

}

default:

您输入的有误"

}

getch();

}

}

PNews*BeginInput(PNews*PreNode)

intSchoolCount=0;

intWomenCount=0;

intMenCount=0;

intPlayerCount=0;

while

(1)

请输入参加比赛的学校个数:

SchoolCount);

if(SchoolCount<

=20&

&

SchoolCount>

=5)

PreNode->

SchoolSum=SchoolCount;

else

输入数据不合法,请重新输入!

\n"

}

请输入男子比赛的项目个数:

MenCount);

if(MenCount>

20||MenCount<

0)

输入数据不合法,请重新输入!

ManItemSum=MenCount;

请输入女子比赛的项目个数:

WomenCount);

if(WomenCount>

20||WomenCount<

WomanItemSum=WomenCount;

请输入运动员个数:

PlayerCount);

if(PlayerCount<

PlayerSum=PlayerCount;

return(PreNode);

voidPreNews_Write(PNews*PreNode)

FILE*fp=NULL;

if((fp=fopen("

PreNews.txt"

"

w+"

))==NULL)

Cannotopenfile,strikeanykeyexit!

exit(-1);

fprintf(fp,"

%3d%3d%3d%3d\n"

PreNode->

SchoolSum,PreNode->

ManItemSum,PreNode->

WomanItemSum,PreNode->

PlayerSum);

fclose(fp);

写入成功!

School*Add_School(School*SchoolHead,PNews*PreNode)

inti=0,j=0,k=0;

SchoolHead=(School*)malloc(sizeof(School)*PreNode->

SchoolSum);

if(NULL==SchoolHead)

分配内存失败,程序结束"

for(i=0;

i<

PreNode->

SchoolSum;

i++)

请输入第%d个学校的名称\n"

i+1);

%s"

SchoolHead[i].SchoolName);

SchoolHead[i].SchoolNumber=i+1;

SchoolHead[i].SchoolScore=0;

SchoolHead[i].MenScore=0;

SchoolHead[i].WomenScore=0;

SchoolHead[i].Play

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 电子电路

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1