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

下载本文档

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

文档简介

1、* 实践教学实践教学 * 兰州理工大学兰州理工大学 计算机与通信学院 2010 年春季学期 计算机语言计算机语言 b 课程设计课程设计 题 目:运动会分数统计系统 专业班级: 姓 名: 学 号: 指导教师: 成 绩: 目目 录录 摘摘 要要.1 前前 言言.4 正正 文文.5 1.需求分析.5 2.概要设计.6 3.详细设计.7 4.调试分析.8 5.测试结果.8 6.说明书.8 总总 结结.9 参考文献参考文献.10 致致 谢谢.11 附件附件 部分部分源源程序代码程序代码.12 摘摘 要要 建立一个“运动会分数统计系统”,系统以菜单方式工作,编写存放有运动 会的相关信息,要求输入男、女参赛

2、项目数及项目编号,项目名次、得分,参赛 学校编号、运动员编号、性别;产生各学校的成绩单,内容包括各校所取得的每 项成绩的项目号、名次(成绩)、姓名;产生团体总分报表,内容包括校号、男子 团体总分、女子团体总分和团体总分。要求系统能实现查询、排序、删除、修改 功能。 前前 言言 运动会分数统计系统 的发展历史可以追溯到 20 世纪 60 年代末期。由于当 时计算机技术已经进入实用阶段,同时大型运动会用手工来计算既费时费力又非 常容易出差错,为了解决这个矛盾,运动会分数统计系统应运而生。当时由于技 术条件和需求的限制,用户非常少,而且那种系统充其量也只不过是一种自动计 算工具,几乎没有报表生成功能

3、和薪资数据分析功能。但是,它的出现为运动会 分数统计展示了美好的前景,即用计算机的高速度和自动化来替代手工的巨大工 量,用计算机的高准确性来避免手工的错误和误差,使大规模集中处理大型运动 会成为可能。 正正 文文 一.需求分析 1 问题描述 运动会分数统计系统 参加运动会有 n 个系,系编号为 1n。比赛分成 m 个男子项目,和 w 个 女子项目。项目编号为男子 1m,女子 m+1m+w。不同的项目取前五名 或前三名积分;取前五名的积分分别为:7、5、3、2、1,前三名的积分分别为: 5、3、 2;哪些取前五名或前三名由学生自己设定。 (m=20,n=20) 2.基本要求: 1).可以输入各个

4、学校、各项目、以及各项目前三名的数据信息; 2)能统计各学校总分、男子项目和女子项目总分; 3)可以按学校编号(或学校名称) 、学校总分、男女团体总分排序输出; 4).可以按学校编号(或学校名称)查询学校某个项目的情况;可以按项目 编号查询取得前三的学校。 3、系统总体设计 整整 体体 结结 构构 图图 运动会 分数统计系统 输 入 排 序 查 询 退出 二、概要设计 1.数据结构 学校:名称,编号,总分,男子团体总分,女子固体总分。 运动项目: 项目编号,名称,男子项目,女子项目,前三名,前五名, 2.程序模块及之间的调用关系 初始化界面 初始化数据 输入学校名称 输入运动项目 按学校编号输

5、出总 分 按总分排序 按男团体总分排序 按女团体总分排序 按项目编号查询 按学校编号查询 退 出 显示提示菜单 操 作 退 出 返 回 三、详细设计 (1)本程序中学校的存储结构为链表, 其中 schoolschool 类为:类为: class school:public athlete /*学校*/ public: int count; /*学校获奖数*/ int serial; /*学校编号*/ int menscore; /*男选手总分*/ int womenscore; /*女选手总分*/ int totalscore; /*总分*/ athlete athmaxsize; /*获奖运

6、动员信息数组,包括分数,名次, 项目*/ school *prev;/前指针 school *next; /后指针 ; 其中部分主要的函数:其中部分主要的函数: 添加操作 add(school* i serial =要添加的编号) (first-athfirst-count).item =要添加的项目号; (first-athfirst-count).range =i(名次) first 指向的学校的项目加一; 更新总分 break; first = first-next; 开始 输入项目编号 temp 是数字 n 0temp18 n y 输出“项目 不存 学校遍历 结束 temp 存在 y

7、n next school n temp 是奇数 ny 取 5 名取 3 名 输入获奖的 学校编号se 1senext; 输出向量中的内容 1. 所有学校总分统计表 2. 学校成绩查询 3. 项目情况查询 4. 返回主菜单 1. 按学校编号统计 2. 按学校名次统计 3. 按男团总分统计 4. 按女团总分统计 5. 返回查询菜单 6. 返回主菜单 四、调试分析 本程序相对来说比较容易看明白,其中涉及到的一些函数相对来说比较容易。 通过调试,运行,基本上达到了要求,但还存在一些缺点。如:不够人性化等。 五、测试结果测试结果 1. .主菜单窗口主菜单窗口 /按学校编号顺序输出所有参赛学校运动会成绩

8、 void serialsort(vectoriv.size();i+) cout*vi; 2.2. 输入各个项目成绩并存储文件输入各个项目成绩并存储文件 3.3. 统计各学校总分统计各学校总分 4.4. 按学校编号排序输出按学校编号排序输出 5.5. 按学校总分排序输出按学校总分排序输出 6.6. 按男团体总分排序输出按男团体总分排序输出 7. 按女团体总分排序输出 8. 按学校编号查询学校某个项目情况 9. 按项目编号查询取得名次的学校 六、说明书六、说明书 1、运行环境 windows,vc+6.0 2 根据正确的提示安装软件。 3、intel486 以上系列、amd k6 以上系列等

9、pc 台式机和便携式电脑都可运行。 4、操作过程 用户进入程序启动界面,等 l 完成后进入主菜单.主菜单有以下 8 个选项 1.输入学校 2.输入运动项目 3.按学校编号输出总分 4.按总分排序 5.按男团体总分排序 6.按女团体总分排序 7.按项目编号查询 8.按学校编号查询 总总 结结 该系统以运动会分数统计为背景,涵盖了运动员检录、运动员成绩的排序、 运动员评奖等的多种功能,并且有一定的可行性和安全性,确保了各项指定功能 得以运行。本系统以基本函数、结构体、枚举性、文件以及链表等多方位知识贯 穿实现。 通过此次程序设计实践,是同学们对所学知识的综合运用,也是程序 设计得以提高的表现。 通

10、过此次编程培养了我们结构化程序设计的思想,加深了对高级语言基本语 言要素和控制结构的理解,锻炼我们独立思考制作程序的能力,并且掌握了一些 课程设计的相关知识与实践操作能力,为以后的学习提供了锻炼的机会。 经过设计和开发,能够完成运动员检录、运动员成绩的排序、运动员评奖等 的多种操作。并提供部分系统维护功能,使用户方便进行数据备份和恢复、数据删 除。对于数据的一致性的问题也通过程序进行了有效的解决。从而是我对 c 语言 这门课程有了更好的了解。 但是由于设计时间较短,所以该系统还有许多不尽如人意的地方,比如联机 文档比较少,用户界面不够美观,出错处理不够等多方面问题。这些都有待进一 步改善。 参

11、考文献参考文献 1、 c/c+程序设计教程,王连相,中国铁道出版社,2006 2 、 c 语言程序设计,谭浩强,清华大学出版社,1999 3、 c 程序设计题解与上机指导,谭浩强,清华大学出版社,1999 4、 c/c+程序设计上机指导与测试,王连相,中国铁道出版社,2006 5、 c 语言函数手册,机械工业出版社,1999 6 、 c 语言的实际应用,安徽科学技术出版社,2000 致致 谢谢 在编写程序的过程中,我们得到了丁政建老师的精心指导以及孜孜不倦的教 诲,在老师的指导下,我们的能力得到了提高,同时养成了科学、严谨的作风和 习惯,在此,我们对老师的精心栽培表示衷心的感谢! 感谢同学们对

12、我的帮助和指点,尤其感谢我的舍友在非常时期,在生活和学 习上帮我许多忙。 在课设即将完成之际,我的心情无法平静,从开始进入课题到课设的顺利完 成,有多少可敬的师长、同学、朋友给了我无言的帮助,在这里请接受我诚挚的 谢意。 附件附件 部分原程序代码部分原程序代码 #include #include #include #include /#include /*屏幕操作函数*/ #define max 50 /#define null 0 typedef struct node1 int school; /*学校编号*/ int record; /*项目成绩*/ struct node1 *next

13、; /*链域*/ schools; typedef struct int item; /*项目编号*/ schools *firstschool; /*链域指向链表中第一个结点*/ item; typedef struct int z; /* 项目总数 */ item amax; allitems; typedef struct node2 int item; /*该学校获奖的项目*/ int record; /*项目成绩*/ struct node2 *next; /*链域*/ items; typedef struct int school; /*学校编号*/ int score; /*学

14、校总分*/ int boys; /*男团体总分*/ int girls; /*女团体总分*/ items *firstitem; /*链域指向链表中第一个获奖项目的结点*/ schnode; typedef struct int n; /* 学校总数 */ schnode bmax; allnode; allitems *g1; allnode *g2; void funct1(allitems *g1,allnode *g2) schools *p1; items *p2; int i,j,k,m,w,h,x; p1=(schools *)malloc(sizeof(schools); p2

15、=(items *)malloc(sizeof(items); if(!p1|!p2) exit(1); printf(n *输入各个项目信息 * nn); printf( 输入男子项目总数 m:); scanf(%d, if(m20) printf( 输入有误,m 是 20 以内的整数,请重新输入:); scanf(%d, printf( 输入女子项目总数 w:); scanf(%d, if(w20) printf( 输入有误,w 是 20 以内的整数,请重新输入:); scanf(%d, printf( 输入参加运动会的学校总数 n:); scanf(%d, if(g2-nn20) pri

16、ntf( 输入有误,n 是 20 以内的整数,请重新输入:); scanf(%d, g1-z=m+w; printf( 则项目编号为男子 1-%d,女子%d-%d,m,m+1,g1-z); printf(nn *记录运动会成绩*); printf(nn (输入 0 标志结束)n); for(k=1;kz;k+) g1-ak.item=k; g1-ak.firstschool=null; for(k=1;kn;k+) g2-bk.school=k; g2-bk.firstitem=0; g2-bk.score=0; g2-bk.boys=0; g2-bk.girls=0; g2-b0.score

17、=0; g2-b0.boys=0; g2-b0.girls=0; while(i!=0) printf(n 项目:); scanf(%d, if(i!=0) printf( 1.前三名 2.前五名n); printf( 请选择:); scanf(%d, if(j!=1 scanf(%d, if(j=1) h=3; do printf( 第%d 名:学校(学校编号为数字),h); scanf(%d, p1=(schools *)malloc(sizeof(schools); p1-school=x; p2=(items *)malloc(sizeof(items); p2-item=i; if(

18、h=3) p2-record=p1-record=2; if(h=2) p2-record=p1-record=3; if(h=1) p2-record=p1-record=5; p1-next=g1-ai.firstschool; g1-ai.firstschool=p1; p2-next=g2-bx.firstitem; g2-bx.firstitem=p2; g2-bx.score=g2-bx.score+p2-record; /* 累计总分 */ if(ibx.boys=g2-bx.boys+p2-record; /* 累计男 团体总分 */ else g2-bx.girls=g2-b

19、x.girls+p2-record; /* 累计女团 体总分 */ h-; while(x!=0 if(j=2) h=5; do printf( 第%d 名:学校(学校编号为数字),h); scanf(%d, p1=(schools *)malloc(sizeof(schools); p1-school=x; p2=(items *)malloc(sizeof(items); p2-item=i; if(h=5) p2-record=p1-record=1; if(h=4) p2-record=p1-record=2; if(h=3) p2-record=p1-record=3; if(h=2

20、) p2-record=p1-record=5; if(h=1) p2-record=p1-record=7; p1-next=g1-ai.firstschool; g1-ai.firstschool=p1; p2-next=g2-bx.firstitem; g2-bx.firstitem=p2; g2-bx.score=g2-bx.score+p2-record; /* 累计总 分 */ if(ibx.boys=g2-bx.boys+p2-record; /* 累计男 团体总分 */ else g2-bx.girls=g2-bx.girls+p2-record; /* 累计女团 体总分 */

21、 h-; while(x!=0 void save() file *fp1,*fp2; fp1=(file *)malloc(sizeof(file); fp2=(file *)malloc(sizeof(file); if(fp1=fopen(sports1,wb)=null) printf(cannot open file.n); return; if(fwrite(g1,sizeof(allitems),1,fp1)!=1) printf(file write error.n); fclose(fp1); if(fp2=fopen(sports2,wb)=null) printf(can

22、not open file.n); return; if(fwrite(g2,sizeof(allnode),1,fp2)!=1) printf(file write error.n); fclose(fp2); void funct2(allnode *g2) /* 输出各学校总分 */ int k; printf(nn * 输出各学校总分 *n); printf( 学校编号t 总分 n); for(k=1;kn;k+) printf( %dttt %dn,k,g2-bk.score); printf(n); system(pause); printf( 按任意键返回主菜单.); getch

23、ar(); void funct3(allnode *g2) /* 按学校编号排序输 出 */ int k; items *p2; p2=(items *)malloc(sizeof(items); printf(nn * 按学校编号排序输出 *n); printf( 学校编号ttt 获奖情况 n); scanf(%d, for(k=1;kn;k+) printf(tttttt%dt,k); p2=g2-bk.firstitem; while(p2!=null) printf(项目%d:得%d 分 ,p2-item,p2-record); p2=p2-next; printf(n); prin

24、tf(n); system(pause); printf(按任意键返回主菜单.); getchar(); void funct4(allnode *g2) /* 按学校总分排序输出 */ int i,j,k; items *p2; printf(nn * 按学校总分排序输出 *n); printf( 学校编号tt 总分 n); scanf(%d, /printf(输入要查询的项目编号:); for(i=2;in;i+) printf(%dt,k); p2=g2-bk.firstitem; while(p2!=null) printf(%d tt%dn,g2-bk.school,g2-bk.sc

25、ore); p2=p2-next; printf(n); g2-b0.score=g2-bi.score; g2-b0.boys=g2-bi.boys; g2-b0.girls=g2-bi.girls; g2-b0.school=g2-bi.school; j=i-1; while(g2-b0.scorebj.score g2-bj+1.boys=g2-bj.boys; g2-bj+1.girls=g2-bj.girls; g2-bj+1.school=g2-bj.school; j-; g2-bj+1.score=g2-b0.score; g2-bj+1.boys=g2-b0.boys; g

26、2-bj+1.girls=g2-b0.girls; g2-bj+1.school=g2-b0.school; for(k=1;kn;k+) printf(%d tt%dn,g2-bk.school,g2-bk.score); system(pause); printf(按任意键返回主菜单.); getchar(); void funct5(allnode *g2) /* 按男团体总分排序输出 */ int i,j,k; items *p2; p2=(items *)malloc(sizeof(items); printf(nn * 按男团体总分排序输出 *n); printf(学校编号tt 男

27、团体总分 n); scanf(%d, /printf(输入要查询的学校编号:); for(i=2;in;i+) printf(%dt,k); p2=g2-bk.firstitem; while(p2!=null) printf(%dtt %dn,g2-bk.school,g2-bk.boys); p2=p2-next; printf(n); g2-b0.score=g2-bi.score; g2-b0.boys=g2-bi.boys; g2-b0.girls=g2-bi.girls; g2-b0.school=g2-bi.school; j=i-1; while(g2-b0.boysbj.bo

28、ys g2-bj+1.boys=g2-bj.boys; g2-bj+1.girls=g2-bj.girls; g2-bj+1.school=g2-bj.school; j-; g2-bj+1.score=g2-b0.score; g2-bj+1.boys=g2-b0.boys; g2-bj+1.girls=g2-b0.girls; g2-bj+1.school=g2-b0.school; for(k=1;kn;k+) printf(%dtt %dn,g2-bk.school,g2-bk.boys); system(pause); / 暂停等待 printf(按任意键返回主菜单.); getch

29、ar(); void funct6(allnode *g2) /* 按女团体总分排序输出 */ int i,j,k; items *p2; p2=(items *)malloc(sizeof(items); printf(nn * 按女团体总分排序输出 *n); printf(学校编号tt 女团体总分 n); scanf(%d, / printf(输入要查询的项目编号:); for(i=2;in;i+) printf(%dt,k); p2=g2-bk.firstitem; while(p2!=null) printf(%dtt %dn,g2-bk.school,g2-bk.girls); p2

30、=p2-next; printf(n); g2-b0.score=g2-bi.score; g2-b0.boys=g2-bi.boys; g2-b0.girls=g2-bi.girls; g2-b0.school=g2-bi.school; j=i-1; while(g2-b0.girlsbj.girls g2-bj+1.boys=g2-bj.boys; g2-bj+1.girls=g2-bj.girls; g2-bj+1.school=g2-bj.school; j-; g2-bj+1.score=g2-b0.score; g2-bj+1.boys=g2-b0.boys; g2-bj+1.g

31、irls=g2-b0.girls; g2-bj+1.school=g2-b0.school; for(k=1;kn;k+) printf(%dtt %dn,g2-bk.school,g2-bk.girls); system(pause); printf(按任意键返回主菜单.); getchar(); void funct7(allnode *g2) /* 按学校编号查询学校某个项目情 况 */ int i,j; items *p2; printf(n * 按学校编号查询学校某个项目情况 *n); printf( 输入要查询的学校编号:); scanf(%d, printf( 输入要查询的项目编

32、号:); scanf(%d, p2=g2-bi.firstitem; while(p2!=null) if(p2-item=j) printf( 学校编号:%dt 项目%d:得%d 分 n,i,p2-item,p2-record); p2=p2-next; printf(n); system(pause); printf( 按任意键返回主菜单.); getchar(); void funct8(allitems *g1) /* 按项目编号查询取得名次的学校 */ int i; schools *p1; printf(n* 按项目编号查询取得名次的学校 *n); printf(输入要查询的项目编号:); scanf(%d, printf(项目编号ttt 取得名次的学校n); printf(%dt,i); p1=g1-ai.firstschool; while(p1!=null) printf( 学校%d:得%d 分 ,p1-school,p1-record); p1=p1-next; printf(nn); system(pause);

温馨提示

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

评论

0/150

提交评论