1、校运动会管理系统报告C语言含完整代码陈一、程序分析与设计(标题四号宋体加黑,正文五号宋体,行间距固定值18,首行缩进2字符)1题目描述初始化输入:N-参赛院系总数,M-男子竞赛项目数,W-女子竞赛项目数;即要求输入一些基础数据,如院系名称,每个院系参赛选手及选手编号。竞赛项目名称与代号。这些数据存储在文本文件中,不需要每次都单条录入。各项目名次取法有如下几种: 取前4名:第1名得分6,第2名得分4,第3名得分2,第4名得分1;由程序提醒用户填写比赛结果,输入各项目获奖运动员的信息。所有信息记录完毕后,用户可以查询各个院系或个人的比赛成绩,生成团体总分报表,查看参赛院系信息、获奖运动员、比赛项目
2、信息等。2需求分析 根据题目要求应提供键盘式菜单实现功能选择,还应提供信息的输入操作,由于在程序中提供查询功能所以应有显示、查找等操作。3总体设计根据上面的需求分析,可以将这个系统的设计分为1、信息输入模块 2、比赛结果录入模块 3、查询模块。具体校际运动会管理系统分为 信息的输入、结果的输入、学校各个项目的得分的查寻、总体报表的生成。4详细设计(1)主函数主函数一般设计的比较简洁,只提供输入,处理和输出部分的函数调用。其中功能模块用菜单方式选择。(2)密码登陆函数首先进入欢迎界面,提示用户输入密码进入系统,密码输入次数限制为三次,三次输入错误则退出系统,登陆成功显示菜单栏(3)菜单函数提醒用
3、户根据要求选择功能,以及多次功能选取(4)输入函数进入该功能后提醒用户输入相应信息,即数据结构,数据结构采用结构体的形式,选手结构体成员包括选手的姓名、编号、各项目的成绩排名、选手所在学院等。(5)查找函数提醒用户输入运动员的姓名或编号,根据姓名或编号逐一比对信息,若条件满足则输出该选手的数据,若不满足则返回你要找的运动员未找到(6)排序函数根据运动员的百米成绩进行冒泡排序,并输出结果(7)修改函数提醒用户输入运动员的姓名,根据姓名逐一比对信息,若找到则提供修改选项,对数据进行覆盖(8)得分计算函数根据用户输入各项成绩排名,进行得分运算并得出学院排名(9)删除函数用于输入信息的删除(10)插入
4、函数用于输入新的信息(11)保存函数将用户输入的信息保存到文本文件中(12)显示函数显示用户保存的信息二、流程图三、源程序清单(此部分采用小五号宋体,行间距固定值14)#include#include#include#include#include #define load sizeof(student)#define N 7void read();void save();int size=3;struct student char num10; char name20; int scorem,scoreq,scoreg,scorey; char ximing20;stuN,temp;void
5、 input() um,&stui.name,&stui.scorem,&stui.scoreq,&stui.scoreg,&stui.scorey,&stui.ximing); printf(输出运动员号码,姓名,100成绩,铅球成绩,跳高成绩,跳远成绩,系名:n); for(i=0;isize;i+) printf(%st%st%dt%dt%dt%dt%sn,stui.num,stui.name,stui.scorem,stui.scoreq,stui.scoreg,stui.scorey,stui.ximing);void find() um,fs)=0) printf(你要找的运动员已
6、找到:n); printf(该生的号码,姓名,100米成绩,铅球成绩,跳高成绩,跳远成绩,系名:n); printf(%st%st%dt%dt%dt%dt%sn,stui.num,stui.name,stui.scorem,stui.scoreq,stui.scoreg,stui.scorey,stui.ximing); break; else if(strcmp(stui.name,fs)=0) printf(你要找的运动员已找到:n); printf(该生的号码,姓名,100米成绩,铅球成绩,跳高成绩,跳远成绩,系名:n); printf(%st%st%dt%dt%dt%dt%sn,stu
7、i.num,stui.name,stui.scorem,stui.scoreq,stui.scoreg,stui.scorey,stui.ximing); break; else printf(你要找的运动员未找到:n); printf(该运动员缺赛或不存在!); break; void paixu() coremstuj.scorem) temp=stui; stui=stuj; stuj=temp; printf(排序后:n); for(i=0;isize;i+) printf(%st%st%dt%dt%dt%dt%sn,stui.num,stui.name,stui.scorem,stu
8、i.scoreq,stui.scoreg,stui.scorey,stui.ximing);void xiugai() um,stui.name,stui.scorem,stui.scoreq,stui.scoreg,stui.scorey,stui.ximing);*/ read(); printf(输入你要修改运动员的姓名:); scanf(%s,ch2); for(i=0;isize;i+) if(strcmp(stui.name,ch2)=0) printf(1.修改号码n2.修改姓名n3.修改100米成绩n4.修改铅球成绩n5.修改跳高成绩n6.修改跳远成绩n7.修改系名n); sc
9、anf(%d,&c); switch(c) case 1: printf(请输入你修改的运动员号码:); scanf(%s,&num); strcpy(stui.num,num); break; case 2: printf(输入你修改的运动员姓名:n); scanf(%s,&name); strcpy(stui.name,name); break; case 3: printf(输入你修改的运动员100米成绩:); scanf(%d,&scorem); stui.scorem=scorem; break; case 4: printf(输入你修改运动员铅球成绩:); scanf(%d,&sc
10、oreq); stui.scoreq=scoreq; break; case 5: printf(输入你修改运动员跳高成绩:); scanf(%d,&scoreg); stui.scoreq=scoreq; break; case 6: printf(输入你修改运动员跳远成绩:); scanf(%d,&scorey); stui.scorey=scorey; break; case 7: printf(输入你修改运动员系名:); scanf(%s,&ximing); strcpy(stui.ximing,ximing); break; default: printf(你的输入有误:n); pr
11、intf(修改后的运动员数据:n); for(int i=0;isize;i+) printf(%st%st%dt%dt%dt%dt%sn,stui.num,stui.name,stui.scorem,stui.scoreq,stui.scoreg,stui.scorey,stui.ximing); save();void defen() um,stui.name,stui.scorem,stui.scoreq,stui.scoreg,stui.scorey,stui.ximing);*/ read(); printf(各系的得分总分排序:n); for(i=0;isize;i+) if(st
12、ui.scorem=1) x=3; else if(stui.scorem=2) x=2; else if(stui.scorem=3) x=1; else x=0; if(stui.scoreq=1) y=3; else if(stui.scoreq=2) y=2; else if(stui.scoreq=3) y=1; else y=0; if(stui.scoreg=1) z=3; else if(stui.scoreg=2) z=2; else if(stui.scoreg=3) z=1; else z=0; if(stui.scorey=1) w=3; else if(stui.sc
13、orey=2) w=2; else if(stui.scorey=3) w=1; else w=0; for(i=0;isize;i+) if(strcmp(stui.ximing,ch1)=0) o=x+y+z+w; printf(软件系总得分:%dn,o); else if(strcmp(stui.ximing,ch2)=0) p=x+y+z+w; printf(数媒系总得分:%dn,p); else if(strcmp(stui.ximing,ch3)=0) q=x+y+z+w; printf(光电系总得分:%dn,q); void shancchu()um,stui.name,stui
14、.scorem,stui.scoreq,stui.scoreg,stui.scorey,stui.ximing);*/ read(); printf(输入你要删除的运动员的姓名:n); scanf(%s,&ch1); for(i=0;isize;i+) if(strcmp(stui.name,ch1)=0) for(int j=i;jsize-1;j+) stuj=stuj+1; printf(删除后的运动员数据:n); for(i=0;isize-1;i+) printf(%st%st%dt%dt%dt%dt%sn,stui.num,stui.name,stui.scorem,stui.sc
15、oreq,stui.scoreg,stui.scorey,stui.ximing); size-; save(); void charu() um); printf(姓名:); scanf(%s,&stusize.name); printf(100米成绩:); scanf(%d,&stusize.scorem); printf(铅球成绩:); scanf(%d,&stusize.scoreq); printf(跳高成绩:); scanf(%d,&stusize.scoreg); printf(跳远成绩:); scanf(%d,&stusize.scorey); printf(系名:); sca
16、nf(%s,&stusize.ximing); for(int i=0;isize+1;i+) for(int j=i+1;jsize+1;j+) if(stui.scoremstuj.scorem) temp=stui; stui=stuj; stuj=temp; size+; printf(插入后运动员数据:n); for(int i=0;isize;i+) printf(%st%st%dt%dt%dt%dt%sn,stui.num,stui.name,stui.scorem,stui.scoreq,stui.scoreg,stui.scorey,stui.ximing); save();
17、void save() .Saving the file.n); um,stui.name,stui.scorem,stui.scoreq,stui.scoreg,stui.scorey,stui.ximing); fclose(fp); .Save the file successfully!n); void read() FILE *fp;um,&stui.name,&stui.scorem,&stui.scoreq,&stui.scoreg,&stui.scorey,&stui.ximing); printf(%st%st%dt%dt%dt%dt%sn,stui.num,stui.nam
18、e,stui.scorem,stui.scoreq,stui.scoreg,stui.scorey,stui.ximing); fclose(fp); 入 2.查找 n); printf( 3.排序 4.修改 n); printf( 5.得分 6.删除 n); printf( 7.插入 8.保存 n); printf( 9.显示 0.退出n); printf(=n); printf(请选择功能: bb); um,&stui.name,&stui.scorem,&stui.scoreq,&stui.scoreg,&stui.scorey,&stui.ximing); printf(%st%st%
19、dt%dt%dt%dt%sn,stui.num,stui.name,stui.scorem,stui.scoreq,stui.scoreg,stui.scorey,stui.ximing); fclose(fp); /关闭文件 做菜单功能多次选择时,令用户输入字符进行选择,然而程序总是退出,后来才知道n也被算入用户输入的字符内,要在字符输入后添加getchar()才能避免菜单失效 做显示函数,屏幕显示异常,总是反复显示相同数据和乱码,原来是结构体初始化,当中的数组已经存储了数据,在显示时与函数同时输出了,要再定义一个相同的数组应用它输出。(1) 登陆(2) 菜单(3) 输入(4)查找(5)排序
20、(6)修改(7)得分(8)删除(9)插入(10)保存(11)退出五、程序有待改进的地方六、本次实习的收获和建议通过这次课程设计我得出一个结论:知识必须通过应用才能实现其价值!有些东西以为学会了,但真正到用的时候才发现是两回事,所以我认为只有到真正会用的时候才是真的学会了。同时在设计的过程中发现了自己的不足之处,对一些前面学过的知识理解得不够深刻,掌握得不够牢固,比如说指针。编程时要养成良好的风格,注意相同内容的缩进和对齐。这样做,可以使程序代码出错的情况下,可以快速并且便捷的查找到错误的行,利于很好的修改。在整个设计中我懂得了许多东西,也培养了我独立工作的能力,树立了对自己工作能力的信心,相信会对今后的学习工作生活有非常重要的影响。而且大大提高了动手的能力,使我充分体会到了在创造过程中探索的艰难和成功时的喜悦。虽然这个设计做的也不太好,但是在设计过程中所学到的东西是这次课程设计的最大收获和财富,使我终身受益。 在本次实践中,给我印象最为深刻的是在文件删除程序的编译过程中,这个程序将是关键。老天不会让我太过顺利,他在这最后的时刻设置的障碍,但是我鼓起勇气,到处查找资料,终于让我实现了这个函数,谢谢给我指点迷津的朋友和同学。对我而言,知识上的收获重要,精神上的丰收是可喜的。挫折是一份财富,经历是一份拥有。这次实际操作必将成为我们人生旅途上一个非常美好的回忆!
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1