运动会分数统计系统课程设计说明书_第1页
运动会分数统计系统课程设计说明书_第2页
运动会分数统计系统课程设计说明书_第3页
运动会分数统计系统课程设计说明书_第4页
运动会分数统计系统课程设计说明书_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、合 肥 师 范 学 院(本 科)课程设计说明书课 程数据结构题 目运动会分数统计系统姓 名朱茜 刘金玉 史雯学 号1110451018 1110451112 1110451088专业班级2011级计算机软件2班指导教师程敏完成日期2012年12月25日- 19 -1、绪言21世纪是个信息化的时代,现代计算机技术的发展,为各行各业的发展创造了一个全新的时代背景人们的生活、工作等已经越来越离不开计算机科学的运用,体育作为个人、家庭、社会的一个主要实践领域,大大小小的运动会也在各大中院校中展开,自从计算机科学涉及运动领域后,人们对运动会的管理也从人工的向自动化转变。运用数据结构的知识解决运动会分数统

2、计的问题,编写一个程序来完成运动会分数统计系统. 本程序设计中,可以输入参加运动会的学校编号及项目编号;根据具体情况选择输入参加项目的男女类别和取成绩名次类别;最后选择输入名次;实现数据统计,排序输出,学院及项目查询等功能。数据结构课程设计是为数据结构课程独立开设的实践性教学环节。课程设计的目的是要求学生达到熟练掌握C语言的基本知识和技能;了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力;提高程序设计和调试能力。学生通过上机实习,验证自己设计的算法的正确性。学会有效利用基本调试方法,迅速找出程序代码中的错误并且修改;培养算法分析能力,分析所设计算法的时间复杂度和空间复杂度,进一

3、步提高程序设计水平;初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能。2、需求分析2.1 功能需求 本系统主要是运动会分数统计方案设计。任务:参加运动会有n个学校,学校编号为1n。比赛分成m个男子项目,和w个女子项目。项目编号为男子1m,女子m+1m+w。不同的项目取前五名或前三名积分;取前五名的积分分别为:7、5、3、2、1,前三名的积分分别为:5、3、2;哪些取前五名或前三名由学生自己设定。(m=20,nn时输出错误:这个学校没有参加此次运动会! 否则,输入项目编号,如果j m+w | j=0,输出此次运动会没有这个项目。否则,使用for循环输出相关数据,从而实现查

4、询功能。功能模块图如图1所示。 图1功能模块图4、系统的实现与调试4.1 系统实现建立数据库、应用系统的编码开发、系统的运行。1:主菜单界面,首先运行文件运动会统计分数。2:输入信息:程序首先赋初值,定义学校的个数为2,男生项目为1,女生项目为1。3:查询信息(例如按编号查询)4.2 调试调试过程主要是运行编制好的程序,然后遇到错误后根据系统的提示,找到相关的问题所在。本系统调试过程中遇到的主要问题、原因和解决方法如下面介绍。调试过程中出现的问题和处理方式:(1)程序出现语法错误发现是输入名次信息的地方忘带地址符&。 添加取地址符。 printf(*名次:); scanf(%d,&hi.cj.

5、ranges);(2)在输出模块不能将全部的学校信息输出,属于算法编写错误,正确的程序应该为:if(hrememberi.mscorehj.mscore)k=rememberi;rememberi=rememberj;rememberj=k;(3)在调用文件时出现问题,后来一步步调试,最终可以运行。5、小结5.1 系统的功能1比赛成绩输入模块比赛成绩输入模块分为:创建信息部分,该部分需输入学校编号,项目编号,取得的名次,以及哪些名次;算法部分,得到排序结果。 2比赛成绩输出模块将以输入的数据按照输出比赛菜单的选择输出相应的数据。3查询比赛成绩模块按照查询比赛结果菜单和其查询方式子菜单查询需要的

6、数据。4调用统计结果将输入的各学校运动会成绩排序输出。5.2 系统及开发过程的特点输出形式:有中文提示,各学校分数为整形界面要求:有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。存储结构:学生自己根据系统功能要求自己设计,但是要求运动会的相关数据要存储在数据文件中。5.3 存在的问题与改进方向功能上有对分数信息的输入、输出、查询、调用等简单的功能。缺点是:输入大量的信息时比较麻烦,但由于对知识掌握不熟练,所以做的不是很好,下次努力改进;在输入信息的时候都是按数字输入,没能实现用学校和运动员的名字输入,这点做的不是很好,下次改进;指针的概念复杂,使用较灵活,但容易出错;对文

7、件的使用掌握不熟练,编写时比较困难,在打开文件时出现问题虽然不影响运行结果但不知如何解决。5.4 自我体会1自从拿到题目到完成整个编程,从理论到实践,可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。今后我必需扎实基础理论、认真思考,一步一个脚印的走下去,才可以达到我们预期的彼岸!一个复杂的程序需要函数调用、结构体、数组、指针、文件等的综合运用,各个部分间紧密联系。同时,他们的使用使程序更加灵活、简洁、方便。单纯掌握课本上的知识是不够的,还需课外的阅读。只靠个人的努力是不够的,小组成员之间的合作、明确的分工可使工作完成得更快。 附录1:程序源

8、代码 #include#include#include #include #define n 3 /学校数目 #define m 2 /男子项目数目 #define w 2 /女子项目数目#define null 0typedef struct int itemnum; /项目编号 int top; /取名次的数目 int range5; /名次 int mark5; /分数itemnode; /定义项目结点的类型typedef structint schoolnum; /学校编号 int score; /学校总分 int mscore; /男团体总分 int wscore; /女团体总分 i

9、temnode cm+w; /项目数组headnode; /定义头结点类型headnode hn; /定义一个头结点数组void inputinformation() /输入信息,建立系统int i,j,k,s; for(i=0;in;i+) hi.score=0; hi.mscore=0; hi.wscore=0; /初始化头结点 for(i=0;in;i+) printf(*学校编号:); scanf(%d,&hi.schoolnum); /输入头结点信息 for(j=0;jm+w;j+) printf(*项目编号:); scanf(%d,&hi.cj.itemnum); printf(*

10、取前3名or前5名:); scanf(%d,&hi.cj.top); printf(*获得几个名次:); scanf(%d,&k); /输入项目信息 for(s=0;s5;s+) hi.cj.ranges=0, hi.cj.marks=0; /初始化排名和分数 for(s=0;sk;s+) printf(*名次:); scanf(%d,&hi.cj.ranges); /输入所获名次信息 if(hi.cj.top=3) switch(hi.cj.ranges) case 0: hi.cj.marks=0; break; case 1: hi.cj.marks=5; break; case 2:

11、hi.cj.marks=3; break; case 3: hi.cj.marks=2; break; else switch(hi.cj.ranges) case 0: hi.cj.marks=0; break; case 1: hi.cj.marks=7; break; case 2: hi.cj.marks=5; break; case 3: hi.cj.marks=3; break; case 4: hi.cj.marks=2; break; case 5: hi.cj.marks=1; break; hi.score=hi.score+hi.cj.marks;/按取前三名还是取前五名

12、分别记分 if(j=m-1)hi.mscore=hi.mscore+hi.cj.marks;/是男子项目则记到男子分数里面去 else hi.wscore=hi.wscore+hi.cj.marks;/是女子项目则记到女子项目里面去 printf(n); void output() /输出函数 int choice,i,j,k;int remembern;int sign; do printf(*1.按学校编号输出.*n); printf(*2.按学校总分输出.*n); printf(*3.按男团总分输出.*n); printf(*4.按女团总分输出.*n); printf(nn* 请选择编号

13、*nn:); scanf(%d,&choice); switch(choice) case 1:for(i=0;in;i+) printf(nn*学校编号:%dn,hi.schoolnum); printf(*学校总分:%dn ,hi.score); printf(*男团总分:%dn,hi.mscore); printf(*女团总分: %dnnn,hi.wscore); /按编号顺序输出 break; case 2: for(i=0;in;i+)rememberi=i; for(i=0;in;i+) for(j=i+1;jn;j+)if(hrememberi.scorehj.score) k=

14、rememberi;rememberi=rememberj;rememberj=k; / 用冒泡排序方法,用辅助数组记住头结点下标 for(i=0;in;i+) printf(nn*学校编号:%dn,hrememberi.schoolnum); printf(*学校总分:%dn ,hrememberi.score); printf(*男团总分:%dn,hrememberi.mscore); printf(*女团总分: %dnnn,hrememberi.wscore); /按所记下标顺序输出 /按学校总分输出 break; case 3: for(i=0;in;i+) rememberi=i;

15、for(i=0;in;i+) for(j=i+1;jn;j+)if(hrememberi.mscorehj.mscore)k=rememberi;rememberi=rememberj;rememberj=k; for(i=0;in;i+) printf(nn*学校编号:%dn,hrememberi.schoolnum); printf(*学校总分:%dn ,hrememberi.score); printf(*男团总分:%dn,hrememberi.mscore); printf(*女团总分: %dnnn,hrememberi.wscore); /按男团总分输出 break; case 4:

16、 for(i=0;in;i+) rememberi=i; for(i=0;in;i+) for(j=i+1;jn;j+) if(hrememberi.wscorehj.wscore) k=rememberi; rememberi=rememberj; rememberj=k; for(i=0;in)printf(错误:这个学校没有参加此次运动会!nnn); elseprintf(要查询的项目编号:); scanf(%d,&j); if(jm+w|j=0) printf(此次运动会没有这个项目nnn);/学校编号超出范围,则输出警告 elseprintf(这个项目取前 %d名,该学校的成绩如下:

17、n, h0.cj-1.top); for(k=0;km+w|s=0)printf(此次运动会不包括这个项目.nnn); /项目编号超出范围则输出警告elseprintf(该项目取前 %d名,取得名次的学校n,h0.cs-1.top);for(i=0; in;i+) for(j=0;j5;j+) if(hi.cs-1.rangej!=0) printf(学校编号:%d,名次:%dn,hi.schoolnum,hi.cs-1.rangej); /输出该项目取得名次学校的成绩 printf(nnn继续 2,跳出 0n);scanf(%d,&i);printf(nnn);while(i=2); bre

18、ak;void writedata() /把数据存储在文件中 FILE *report; int i; if(report=fopen(sportsdata.txt,w)=null) printf(不能打开文件n); exit(1); for(i=0;in;i+)fwrite(&hi,sizeof(headnode),1,report); fclose(report); /按头结点块写入 void readdata() /读出文件中数据的函数 FILE *report; int i,j,k,s; if(report=fopen(sportsdata.txt,r)=null) printf(fi

19、le can not be openedn); exit(1); for(i=0;in;i+) printf(*学校编号:); fread(&k,sizeof(int),1,report); printf(%dn,k); printf(*学校总分:); fread(&k,sizeof(int),1,report); printf(%dn,k); printf(*男团总分:); fread(&k,sizeof(int),1,report); printf(%dn,k); printf(*女团总分:); fread(&k,sizeof(int),1,report); printf(%dn,k); printf(nnn); getch(); for(j=0;jm+w;j+) printf(*项目编号:); fread(&k,sizeof(int),1,report); printf(%dn,k); printf(*所取名次数量:); fread(&k,sizeof(int),1,report); printf(%dn,k); for(s=0;s5;s+)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论