c语言课程设计运动会比赛计分系统(含任务书)_第1页
c语言课程设计运动会比赛计分系统(含任务书)_第2页
c语言课程设计运动会比赛计分系统(含任务书)_第3页
c语言课程设计运动会比赛计分系统(含任务书)_第4页
c语言课程设计运动会比赛计分系统(含任务书)_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

1、一、 课程设计目的将理论教学中涉及到的知识点贯穿起来,对不同的数据类型、程序控制结构、数据结构作一比较和总结,结合设计题目进行综合性应用,对所学知识达到融会贯通的程度。通过课程设计,学生在下述各方面的能力应该得到锻炼:(1)进一步巩固、加深学生所学专业课程c语言教程的基本理论知识,理论联系实际,进一步培养学生综合分析问题,解决问题的能力。 (2)全面考核学生所掌握的基本理论知识及其实际业务能力,从而达到提高学生素质的最终目的。 (3)利用所学知识,开发小型应用系统,掌握运用c语言编写调试应用系统程序,训练独立开发应用系统,进行数据处理的综合能力。(4)对于给定的设计题目,如何进行分析,理清思路

2、,并给出相应的数学模型。 (5)掌握自顶而下的设计方法,将大问题进行模块化,领会结构化程序设计的方法。(6)熟练掌握c语言的基本语法,灵活运用各种数据类型。(7)进一步掌握在集成环境下如何调试程序(单步调试,设置断点、观察表达式,分块调试)和修改程序。二、 课程设计名称及内容课程设计名称:运动会比赛计分系统设计内容:设计一个运动会比赛计分系统,该系统要求对运动会比赛得分进行管理和维护。三、 任务和要求要求:初始化输入:n-参赛学校总数,m-男子竞赛项目数,w-女子竞赛项目数各项目名次取法有如下几种:(1) 取前5名:第一名得分7分,第二名得分5,第三名得分3,第四名得分2,第五名得分1;(2)

3、 取前3名:第一名得分5,第二名得分3,第三名得分2;(3) 用户自定义:各名次权值由用户指定。四、 设计方案提示(1)界面系统以菜单方式工作(2)输入数据并存入文件使用到结构体变量和动态链表,由程序提醒用户填写比赛结果,输入各项目获奖运动员信息。对输入的信息进行合法性判断,直到输入正确为止。都输入完成后,调用写文件函数对指定的文件进行写操作,把输入的信息写入到文件中。(3)显示所有记录将文件中的所有记录以表格的形式输出。如果文件未打开会出现“文件打开失败!按任意键返回.”,关闭文件。(4) 查询所有信息记录完毕后,用户可以查询各个学校的比赛成绩,生成团体总分报表,查看参赛学校信息和比赛项目信

4、息等。二:算法设计:信息输入模块、比赛结果录入模块以及查询模 题目的总体要求是要建立三个模块:信息输入模块、 建立三个模块 块。 在建立完之后,要求该程序能够在用户将各种必要的信息记录之后,用户可以查询所 有学校的比赛成绩, 而且也可以生成团体总分表, 查看参赛学校信息和比赛项目信息等一切 录入的信息,为此,要示编程人员能通过一些具体的程序将以上的功能加以实现。 在建立三个模块的大前提下,我们将采用结构体,循环体,指针和各种函数来实现这 种功能,在数据结构体中,要采用结构体数组,其中包括学校、项目、运动员三个结构体。 学校结构体成员包括学校校名、竞赛项目、得分项目结构体成员包括项目名、权值。

5、(1)在此程序中,包括几个头文件:mainfile.h; dos.h; conio.h; momery.h; 接下来,定义全 ) 局变量,其中包括“参赛学校项目数 n;男子项目数 m;女子项目数 w;参赛学校g_school; 竞赛项目 g_sport; 各名次链表指针 ptrhead,ptrthis,ptrnew; 总体设计:系统设计为信息输入模块、比赛结果录入模块和查询模块三个模块。 总体设计:系统设计为信息输入模块、比赛结果录入模块和查询模块三个模块。 (2)各种结构的分析: )各种结构的分析: 静态存储方式: 它是指在程序运行期间由系统分配固定的存储空间的方式, 全局变量全部存 静态存

6、储方式: 放在静态存储区中,在程序开始执行时给全局变量分配存储区,程序执行完毕就释放,在程 序执行过程中它们占据固定的存储单元,而不是动态地进行分配和释放。 用 static 声明局部变量:使用该变量可以使局部变量的值在函数调用结束后不消失而保留原 值,这即为静态局部变量的特点。 静态局部变量属于静态存储类别, 在静态存储区内分配存储单元, 在程序整个运行期间都不 释放。对静态局部变量是在编译时赋初值的,即只赋初值一次,在程序运行时它已有初值, 以后每次调用函数时不再重新赋初值而只是保留上次函数调用结束时的值。 如在定义局部变 量时不赋初值的话, 则对静态局部不说, 编译时自动赋初值 0 (对

7、数值型变量) 或空字符 总体设计 信息输入模块 比赛结果录入模块 查询模块 设置参赛信息 设置竞赛项目总数 主菜单 设置竞赛项目信息 设置项目名次取法 生成报表 打印竞赛项目信息 填充参赛信息 请输入您的选择 开始。而对自动变量来说,如果不赋初值则它的值是一个不确定的值。虽然静态局部 变量在函数调用结束后仍然存在,但其他函数是不能引用它的。 malloc 函数 函数的作用是在内存的动态存储区中分配一个长度为 size 的连续空间。此函数的值 是一个指向分配域起始地址的指针,如果此函数未能成功地执行,则返回空指针。 链表是动态地进行存储分配的一种结构, 所谓建立动态链表是指在程序执行过程中从无到

8、有 地建立一个链表,即一个一个地开辟结点和输入各结点数据,并建立起前后相链的关系。 循环结构是结构程序设计的基本结构之一,它和顺序结构、选择结构共同作为各种复 循环结构 杂程序的基本构造单元。通常用 while、dowhile 语句实现循环,最常用的是 for 语句的循 环,夺循环中还有循环的嵌套,它是指一个循环体内又包含另一个完整的循环结构。用语句 来实现从循环体内跳出来,即提前结束循环,接着执行循环下面的语句,但 break 语句不能 用于循环语句和 swich 语句之外的任何其他语句中。另外一种就是 continue 语句,它的作用 是结束本次循环, 即跳过循环体中下面尚未执行的语句,

9、接着进行下一次是否执行循环的判 定。 swich 语句 语句是多分支选择语句,它后面括号内的“表达式” ,ansi 标准允许它为任何类 型。当表达式的值与一个 case 后面的常量表达式的值相等时,就执行此 case 后面的语句, 若所有的 case 中的常量表达式的值都没有与表达式的值匹配的, 就执行 default 后面的语句, 每一个 case 的常量表达式的值必须都不相同;否则就会出现相互矛盾的现象。各个 case 和 default 的出现次序不影响执行结果,执行完一个 case 后面的语句后,流程控制转移到下一 个 case 继续执行。 “case 常量表达式”只是起语句标号作用,

10、并不是在该处进行条件判断。 在执行 swich 语句时,根据 swich 后面表达式的值找到匹配的入口标号,就从此标号开始执 行下去,不再进行判断程序流程图 开始 请输入您的选择 c s i p q 编号 n=0? i0 4 1 n5 n3 输出 *menu1* * 1.enter! 2.record! 3.search! * choice your number:( ) 二、课程设计体会 在此次的 c 语言的课程设计中,我不仅 学到了许多有庆这方面的专业知识, 更重要的是我学会了如何在拿到一个题目时进行简单的 程序分析,并编译出一些相对简单的程序,当然了,对自己编译出的不对的程序,我也能进

11、行一些分析,并对其进行完善。在此次的学习过程中,老师教给了我们很多的东西,从一开 始的不懂 vc+这种软件,到最后的我们可以进行较熟练的应用它,也许在这过程中,我们 无论是学生还是老师都遇到了一些小的困难, 但是在我们师生的共同努力下, 我们最终还是 克服了它,单从这一点来说,我们就学到了许多的东西,比如 teamwork,同学之间的相互 帮助以及与老师的配合,都证明了这一点,我相信这是我此次学习 c 语言程序的最大收获。 在我的程序设计的过程中,遇到了很大有难题,特别是在刚拿到我的题目时,头脑中 根本没有头绪,更不要说去编译程序了,当时真的很担心是否可以完成老师布置的任务,但 慢慢的在学习的

12、过程中,我开始懂得了一些编译的方法,就尝试着去编译一些程序,结果还 是很好,最后我编出了我题目的程序,但是在程序的运行过程中,又遇到了新的难题,那就 是我所编的程序中有太多的错误,根本无法进行运行,没办法,只好硬着头皮修改,不过还好,在老师和同学们的帮助下,我最终将我的程序成功地进行了运行,在我自己的程序运行 时,心中有一种说不出的高兴,是的,自己这几天的努力总是没有白费。 五附录:源代码:#include#include#include#define n 2#define m 1#define w 1typedef structint top; int range5;int mark5; i

13、nt itemnum;itemnode;typedef struct int schoolnum; int score; int mscore; int wscore; itemnode cm+w;headnode;headnode hn;void input() int i,j,k,s; for(i=0;in;i+) hi.schoolnum=0; hi.score=0; hi.mscore=0; hi.wscore=0; for(i=0;in;i+) printf(n学 校 编 号:); scanf(%d,&hi.schoolnum); for(j=0;jm+w;j+) printf(n项

14、 目 编 号:); scanf(%d,&hi.cj.itemnum); printf(n取前3或前5名:); scanf(%d,&hi.cj.top); while(hi.cj.top!=3&hi.cj.top!=5) printf(n输入错误,请重新输入!:); scanf(%d,&hi.cj.top);break; printf(n获得几个名次:); scanf(%d,&k); for(s=0;s5;s+) hi.cj.ranges=0; for(s=0;sk;s+) l: printf(n名 次:); scanf(%d,&hi.cj.ranges); if(hi.cj.top=3) sw

15、itch(hi.cj.ranges) case 0:hi.cj.marks=0; break; case 1:hi.cj.marks=5; break; case 2:hi.cj.marks=3; break; case 3:hi.cj.marks=2; break;default:puts(输入错误!请重新输入!);goto l; 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=

16、3; break; case 4:hi.cj.marks=2; break; case 5:hi.cj.marks=1; break;default:puts(输入错误!请重新输入!);goto l; hi.score=hi.score+hi.cj.marks; 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,t; int an; int sign; do printf(n*1.按学校编号输出*n);

17、printf(*2.按学校总分输出*n); printf(*3.按男团总分输出*n); printf(*4.按女团总分输出*n); printf(*请根据提示进行操作!:); scanf(%d,&choice); printf(n); switch(choice) case 1:for(i=0;in;i+) printf(n学校编号:%dn,hi.schoolnum); printf(学校总分:%dn,hi.score); printf(男团总分:%dn,hi.mscore); printf(女团总分:%dn,hi.wscore); printf(n); break; case 2:for(i

18、=0;in;i+) ai=i; for(i=0;in;i+) for(j=i+1;jn;j+) if(hai.scorehj.score) t=ai; ai=aj; aj=t; for(i=0;in;i+) printf(n学校编号:%dn,hai.schoolnum); printf(*学校总分:%dn,hai.score); printf(*男团总分:%dn,hai.mscore); printf(*女团总分:%dn,hai.wscore); printf(n); break; case 3:for(i=0;in;i+) ai=i; for(i=0;in;i+) for(j=i+1;jn;

19、j+) if(hai.mscorehj.mscore) t=ai; ai=aj; aj=t; for(i=0;in;i+) printf(n学校编号:%dn,hai.schoolnum); printf(*学校总分:%dn,hai.score); printf(*男团总分:%dn,hai.mscore); printf(*女团总分:%dn,hai.wscore); printf(n); break; case 4:for(i=0;in;i+) ai=i; for(i=0;in;i+) for(j=i+1;jn;j+) if(hi.wscorehj.wscore) t=ai; ai=aj; aj

20、=t; for(i=0;in)|(im+w|j=0) printf(*此次运动会没有这个项目*n); else printf(这个项目取前 %d名,该学校的成绩如下:n, h0.cj-1.top); for(k=0;km+w|s=0) printf(此次运动会不包括这个项目n); else printf(该项目取前 %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(是否

21、继续操作(1/0)?:); scanf(%d,&i); printf(n); while(i=1); break; void write() int i,j,s; file *fp; if(fp=fopen(sportsdata结果.txt,a+)=null) printf(不能打开文件n); exit(1); fputs(学校编号 学校总分 男子总分 女子总分 ,fp);fputs(n,fp); for(i=0;in;i+) fprintf(fp,%2dtt ,hi.schoolnum); fprintf(fp,%2dtt,hi.score); fprintf(fp,%2dtt,hi.msc

22、ore); fprintf(fp,%2d ,hi.wscore); fputs(n,fp); fclose(fp); void read() file *fp; int i,j,s; if(fp=fopen(sportsdata.txt,r)=null) printf(文件不存在,不能打开文件!n); exit(1); for(i=0;in;i+) fscanf(fp,%d,&hi.schoolnum); / for(j=0;jm+w;j+) / fscanf(fp,%d,&hi.cj.itemnum); fscanf(fp,%d,&hi.cj.top); / for(s=0;s5;s+) / fscanf(fp,%d,&hi.cj.ranges); / / fclose(fp); int main() file *fp; int choice; int flag1=1,flag2=1; system(cls); do printf(n#*欢迎使用程序*#n); printf(n#*校级运动会分数统计系统*#n); printf(nn #1.录入信息#n); printf(nn #2.读取信息#n); printf(nn #3.显示信息#n); printf(nn #4.查询信息#n); printf(nn #5.退出程序#n); printf(n#*#n); printf

温馨提示

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

评论

0/150

提交评论