C++编程课程设计:运动会成绩查询系统_第1页
C++编程课程设计:运动会成绩查询系统_第2页
C++编程课程设计:运动会成绩查询系统_第3页
C++编程课程设计:运动会成绩查询系统_第4页
C++编程课程设计:运动会成绩查询系统_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

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

文档简介

1、 课程设计报告书专 业:计算机科学与技术 课程设计名称:数据结构课程设计题 目:xxx班 级:xxx学号:xxx姓名:xxx同 组 人 员: xxx指 导 老 师: 完 成 时 间:2012年2月17日摘要运动会成绩查询系统是运动会管理中的一个重要内容,随着时代的进步,参加运动会的运动员数量也不断增加、项目也越来越多、运动会举办也越来越频繁,对成绩的管理要求也越来越高。如何管理好各单位、运动员的成绩的信息,对运动会成绩管理系统的要求也越来越高,所以必须要不断地更新运动会成绩管理系统,才能满足社会日益发展的需要。本文是采用vc+6.0作为前台开发工具,旨在实现对现有的运动会成绩数据库存储的基础上

2、,提供信息咨询,信息检索,信息存取等服务,在此论文中主要实现对存储在数据库中的数据表进行这些简单的操作,为提高运动会成绩查询系统的效率提供了便利。关键词:vc+6.0;运动会成绩查询;目录目录1第一章开发环境和开发工具11.1c/c+语言简介11.2 开发背景11.3 开发环境1第二章 算法思想22.1 系统需求分析22.2 系统总体设计22.2.1 系统设计目标22.2.2 开发设计思想32.2.3 系统功能模块设计42.3 算法思想描述4第三章算法实现63.1 数据结构63.2 程序模块63.3 各模块之间的调用关系63.4 源程序代码6第四章测试与分析144.1 测试数据选择144.2

3、测试结果分析15总 结20心得体会21参考文献22 第一章 开发环境和开发工具1.1 c/ c +语言简介c语言是一种计算机程序设计语言。它既具有高级语言的特点,又具有汇编语言的特点。它由美国贝尔研究所的d.m.ritchie于1972年推出。1978后,c语言已先后被移植到大、中、小及微型机上。它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。它的应用范围广泛,具备很强的数据处理能力,不仅仅是在软件开发上,而且各类科研都需要用到c语言,适于编写系统软件,三维,二维图形和动画。1.2 开发背景 随着科学技术的不断发展,计算机科学日渐成熟,

4、其强大的功能已为人们所深刻认识,它己进入人类社会的各个领域并发挥着越来越重要的作用。采用计算机进行信息化管理已成为衡量企业管理科学化和现代化的重要标志,而人事管理的全面自动化、信息化则是其中重要的组成部分。人事管理的好坏对于企业的决策者和管理者来说都至关重要,在很大程度上影响着企业的经济效益和社会效益。因此,本文所研究的人事管理信息系统具有一定的使用价值和现实意义。1.3 开发环境本文所采用的开发环境主要是基于c语言在microsoft visual c+平台上开发的系统,界面友好,功能强大,调试也很方便。这是微软出的一个c语言集成开发环境(ide),主要有:vc+6.0等,分为企业版和学生版

5、等。对于初学者vc+6.0是比较容易上手的,但其对标准支持的不好可能使人养成不良的编程习惯。 第二章 算法思想 2.1 系统需求分析数据结构不仅是一般程序设计(特别是非数值性程序设计)的基础,而且是设计和实现编译程序、操作系统、数据库系统及其他系统程序的重要基。本实验中,对不同的对象采取不同的存储结构,对参赛学校采取链式结构,而对于参赛运动员采取一个结构就可以了。本程序中主要用到线性表的一些基本操作,将各学校信息,运动员信息,项目信息都构造成线性表。具体功能通过主函数分别调用各函数实现。参考本实验的功能要求,本程序分为七个模块:主函数、信息录入函数、信息统计函数、信息查询函数,信息排序函数、存

6、盘函数、读盘函数。信息录入函数有包括学校信息录入函数(包括学校总数、学校名称等),竞赛项目录入函数(男子竞赛项目总数、女子竞赛项目总数、竞赛项目名称、取名次方法和各名次对应的分值)、比赛结果录入函数(各名次的学生信息等)。信息统计不再结果中显示出来,为了信息查询和排序输出。信息查询函数包括按学校编号查询、按学校名称查询、按项目编号查询三个子函数。信息排序函数包括按男子总分排序函数、按女子总分排序函数、按团体总分排序函数。2.2 系统总体设计2.2.1 系统设计目标 本文研究开发的运动会管理系统用于支持用于查询各个学校在运动会中的成绩。有几种目标: 支持输入各个项目的前三名或前五名的成绩;能统计

7、各学校总分;可以按学校编号或名称、学校总分、男女团体总分排序输出。可以按学校编号查询学校某个项目的情况;可以按项目编号查询取得前三或前五名的学校。数据存入文件并能随时查询 输入数据形式和范围:可以输入学校的名称,运动项目的名称;输出形式有提示,各学校分数为整形;界面要求有合理的提示,每个功能可以设立菜单,根 据提示,可以完成相关的功能要求。存储结构:学生自己根据系统功能要求自己设计,但是要求运动会的相关数据要存储在数据文件中。测试数据:要求使用全部合法数据、整体非法数据、局部非法数据。进行程序 测试,以保证程序的稳定。2.2.2 开发设计思想 基于以上系统设计目标,本文在开发运动会管理系统时遵

8、循了以下开发设计思想: 采用现有的软硬件环境及先进的管理系统开发方案,从而达到充分利用现有资源,提高系统开发水平和应用效果的目的。尽量达到操作过程中的直观、方便、实用、安全等要求。系统采用模块化程序设计方法,既便于系统功能的各种组合和修改,又便于未参与开发的技术维护人员补充、维护。系统应具备数据库维护功能,及时根据用户需求进行数据的添加、删除、修改、备份等操作。2.2.3 系统功能模块设计 本系统分为四个模块:输入成绩模块、计算成绩模块、分析排名模块、查询模块。得到如图2-1所示的系统功能模块图。输入学校信息运动会查询系统输入成绩计算成绩分析排名查询输入项目信息计算男女团成绩计算学校总成绩学校

9、排名男女团排名得分查询项目查询图2-1系统功能模块图2.3 算法思想描述本实验中,对不同的对象采取不同的存储结构,对参赛学校采取链式结构,而对于参赛运动员采取一个结构就可以了。本程序中主要用到线性表的一些基本操作,将各学校信息,运动员信息,项目信息都构造成线性表。具体功能通过主函数分别调用各函数实现。参考本实验的功能要求,本程序分为七个模块:主函数、信息录入函数、信息统计函数、信息查询函数,信息排序函数、存盘函数、读盘函数。信息录入函数有包括学校信息录入函数(包括学校总数、学校名称等),竞赛项目录入函数(男子竞赛项目总数、女子竞赛项目总数、竞赛项目名称、取名次方法和各名次对应的分值)、比赛结果

10、录入函数(各名次的学生信息等)。信息统计不再结果中显示出来,为了信息查询和排序输出。信息查询函数包括按学校编号查询、按学校名称查询、按项目编号查询三个子函数。信息排序函数包括按男子总分排序函数、按女子总分排序函数、按团体总分排序函数。第三章 算法实现3.1 数据结构运动会管理系统是一个数据库应用系统,各个学校的所有信息都保存在数据库中。 3.2 程序模块程序分为四个模块:输入成绩模块、计算成绩模块、分析排名模块、查询模块。3.3 各模块之间的调用关系l 输入成绩模块:让用户输入学校信息,比赛项目信息,比赛成绩信息。l 计算成绩模块:计算用户输入的比赛成绩,计算男团分数、男团分数、总分。l 分析

11、排名模块:对学校的男团分、女团分和总分进行排名。l 查询模块:让用户查询各学校成绩,男团排名,女团排名,总排名和各项目的前几名。l 模块调用关系:计算成绩模块调用输入成绩模块,分析排名模块调用计算成绩模块,查询模块调用计算成绩模块、分析排名模块。函数 函数功能 时间复杂度 void information 输入信息建立系统 o(n*n)void output 输出信息 o(n*n)void inquiry 查询信息 o(n*n)void main 输入主界面 ,调用各个函数 o(n*n)3.4 源程序代码#include#include#include #include #define n 3

12、/学校数目 #define m 2/男子项目数目 #define w 1/女子项目数目#define null 0typedef struct int itemnum; /项目编号 int top; /取名次的数目 int range5; /名次 int mark5; /分数itemnode; /定义项目结点的类型typedef structint dai;int schoolname;int schoolnum; /学校编号 int score; /学校总分 int mscore; /男团体总分 int wscore; /女团体总分 itemnode cm+w; /项目数组headnode;

13、/定义头结点类型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(%s,&hi.schoolname);printf(*学校编号:); scanf(%d,&hi.schoolnum); /输入头结点信息 for(j=0;jm+w;j+) printf(*项目编号:); scanf(%d,&hi.cj.itemnum

14、); printf(*取前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; brea

15、k; case 2: 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;/

16、按取前三名还是取前五名分别记分 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 sign; do printf(*1.按学校编号输出.*n); printf(*2.按学校名称输出.*n); printf(*3.按学校总分输出.*n); printf(*4.按男团总分输出.*n); printf(*5.按女团总分输出.

17、*n); printf(nn* 请选择编号*nn:); scanf(%d,&choice); switch(choice) case 1: printf(学校编号 学校名称 学校总分 男团总分 女团总分n); for(i=0;in;i+) printf(%8d %8s %8d %8d %8dn,hi.schoolnum,hi.schoolname,hi.score,hi.mscore,hi.wscore); /按编号顺序输出 break; case 2: printf(学校名称 学校编号 学校总分 男团总分 女团总分n); for(i=0;in;i+) printf(%8s %8d %8d %

18、8d %8dn,hi.schoolname,hi.schoolnum,hi.score,hi.mscore,hi.wscore); /按学校名称输出 break; case 3: printf(学校名次 学校总分 学校名称 学校编号 男团总分 女团总分n); for(i=0;in;i+) hi.dai=hi.score; for(i=0;in;i+) for(j=0;jn-i;j+) if(hj.daihj+1.dai) k=hj.dai;hj.dai=hj+1.dai;hj+1.dai=k; for(i=0;in;i+) for(j=0;jn;j+) if(hj.score=hi.dai)

19、printf(第%d名 %12d %8s %8d %8d %8d n,i+1,hj.score,hj.schoolname,hj.schoolnum,hj.mscore,hj.wscore); /按学校总分输出 break; case 4: printf(学校名次 男团总分 学校名称 学校编号 学校总分 女团总分n); for(i=0;in;i+) hi.dai=hi.mscore; for(i=0;in;i+) for(j=0;jn-i;j+) if(hj.daihj+1.dai) k=hj.dai;hj.dai=hj+1.dai;hj+1.dai=k; for(i=0;in;i+) for

20、(j=0;jn;j+) if(hj.mscore=hi.dai) printf(第%d名 %12d %8s %8d %8d %8d n,i+1,hj.mscore,hj.schoolname,hj.schoolnum,hj.score,hj.wscore); /按男团总分输出 break; case 5: printf(学校名次 女团总分 学校名称 学校编号 学校总分 男团总分n); for(i=0;in;i+) hi.dai=hi.wscore; for(i=0;in;i+) for(j=0;jn-i;j+) if(hj.daihj+1.dai) k=hj.dai;hj.dai=hj+1.d

21、ai;hj+1.dai=k; for(i=0;in;i+) for(j=0;jn)printf(错误:这个学校没有参加此次运动会!nnn); elseprintf(要查询的项目编号:); scanf(%d,&j); if(jm+w|j=0) printf(此次运动会没有这个项目nnn);/学校编号超出范围,则输出警告 else printf(这个项目取前 %d名,该学校的成绩如下:n, h0.cj-1.top); for(k=0;km+w|s=0)printf(此次运动会不包括这个项目.nnn);/项目编号超出范围则输出警告elseprintf(该项目取前 %d名,取得名次的学校n,h0.cs

22、-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); break;void main() int choice;printf(=欢迎使用=n); printf(nn*运动会分数统计系统*n); printf(nn*1.输入信息*n);printf(*2.输出信息*n);prin

23、tf(*3.查询信息*n); printf(*4.退出系统*nnn);printf(=nn);printf(*请选择要实现步骤的编号:nn);scanf(%d,&choice);switch(choice) case 1: inputinformation();main(); case 2: output();main(); case 3: inquiry();main(); case 4: exit(0); default: printf(输入错误请重新输入!); 第四章 分析和测试4.1:测试数据选择学校:11代号:1项目 名次1 12 13 1学校:22代号:2项目 名次1 2 2 23

24、 2学校:33代号:3项目 名次1 32 33 3其中项目1、2为男子项目 项目3为女之项目。4.2 测试结果分析 图1 界面 图 2 输入信息 图 3 按学校编号输出 图 4 按学校名称输出 图 5 按学校总分输出 图 6 按男团总分输出 图 7 按女团总分输出 图 9 查询系统总 结在今后的工作、学习中我将认真总结经验教训,努力使自己成为一名技术过硬、工作严谨、思维活跃的工程人员,为提高人们的生活质量做出更大的贡献。本文所述运动会查询系统特色在于能输入各个项目的前三名或前五名的成绩,能统计各学校总分,可以按学校编号或名称、学校总分、男女团体总分排序输出,可以按学校编号查询学校某个项目的情况;可以按项目编号查询取得前三或前五名的学校,数据存入文件并能随时查询。当然,这个运动会查询系统也有很多不足之处,例如不能具体到个体,不能查询各个学生的成绩,存储结构不太完美,算法也不能说是最完美的。运动会

温馨提示

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

评论

0/150

提交评论