




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上C语言课程设计 学 校 运 动 会 管理系统 专业:网络工程 班级:网133 报告人:王先海 刘随心 葛 翔 指导老师:陶陶 报告日期:2014年12月13号一、 需求分析1、 问题描述: 建立运动员信息系统,包括运动员、裁判员以及运动信息的成绩管理,运动员信息为编号、姓名、身份信息(教师、学生)、参加的比赛项目等;裁判员信息为编号、姓名、身份信息(教师、学生)、裁判的项目;运动会信息包含各个比赛项目的信息、时间安排、裁判信息、比赛成绩等。2、功能要求:(1)各种运动信息需要利用文件的形式进行存储。(2)输入功能:可以从键盘或文件中一次性输入多条信息;(3)输出功能:
2、可将运动员、裁判员、以及比赛信息打印输出或显示;(4)查找功能:根据运动员、裁判员等查找出所需要的比赛信息;(5)增加、删除、修改功能:完成运动员信息的多种更新;(6)统计功能:完成各类比赛信息的统计功能,例如某项比赛的名词排名,各个运动员的积分成绩统计等。二、 总体设计1、 将学校运动会管理系统系统进行模块化分析学校运动会管理系统 统计功能查找功能增加删除修改功能输出功能输入功能 输出全部比赛项目输出单项比赛信息比赛信息模块按姓名删除运动员信息搜索姓名修改运动员信息搜索号码修改运动员信息按姓名查找运动员信息按号码查找运动员信息增加运动员信息输出全部运动员信息学生功能模块按姓名查询裁判员信息裁
3、判员功能模块输出全部裁判员信息学校运动会管理系统三、 详细设计本程序包含除main函数外包含20个函数:menu()、menu2()、reads(struct athletes athN) 、reads1(struct referee refN)、reads2(struct All_the_events sportN) 、save(struct athletes athN,int n)、 show_athletes()、how_referee()、add()、According_to_the_number_to_find_players_information ()、According_to_
4、the_name_to_find_players_information ()、According_to_the_number_to_Modify_the_players_information ()、According_to_the_name_to_Modify_the_players_information ()、According_to_the_name_to_delete_the_players_information ()、According_to_the_name_to_find_referee_information ()、show_all_events () 、Output_o
5、n_a_single_information ()、 sort()、keep() 、sheep()。此外还定义了三个结构体类型:struct athletes、struct referee、struct All_the_events。函数名功能入口出口调用关系menu()输出菜单选项该函数无形参printf()输出信息,无返回值在main()中被反复调用menu2()输出输出单项比赛信息菜单选项该函数无形参printf()输出信息,无返回值在main()中被反复调用reads(struct athletes athN)读取运动员文件中的内容形参结构体struct athletes athNre
6、turn i在需要运动员数据时被调用reads1(struct referee refN)读取裁判员取文件中的内容形参结构体struct referee refNreturn i在需要裁判员数据时被调用reads2(struct All_the_events sportN)读取全部比赛项目文件中的内容形参结构体struct All_the_events sportNreturn i在需要全部比赛项目数据时被调用save(struct athletes athN,int n)运动员信息改变后更新文件形参结构体struct athletes athN ,int n将运动员信息存入文件,无返回值在文
7、件需要被保存时调用show_athletes()输出全部运动员信息该函数无形参printf()输出信息,无返回值在main()中被反复调用add()增加运动员信息 该函数无形参printf()输出信息,无返回值在main()中被反复调用According_to_the_number_to_find_players_information ()按号码查找运动员信息该函数无形参printf()输出信息,无返回值在main()中被反复调用According_to_the_name_to_find_players_information ()按姓名查找运动员信息该函数无形参printf()输出信息,无
8、返回值在main()中被反复调用According_to_the_number_to_Modify_the_players_information ()搜索号码修改运动员信息该函数无形参printf()输出信息,无返回值在main()中被反复调用According_to_the_name_to_Modify_the_players_information ()搜索姓名修改运动员信息该函数无形参printf()输出信息,无返回值在main()中被反复调用According_to_the_name_to_delete_the_players_information ()按姓名删除该运动员信息该函数
9、无形参在main()中被反复调用show_referee()输出全部裁判员信息该函数无形参printf()输出信息,无返回值在main()中被反复调用According_to_the_name_to_find_referee_information ()按姓名查找裁判员信息该函数无形参printf()输出信息,无返回值在main()中被反复调用show_all_events ()输出输出全部比赛项目该函数无形参printf()输出信息,无返回值在main()中被反复调用Output_on_a_single_information ()输出单项比赛信息该函数无形参printf()输出信息,无返回
10、值在main()中被反复调用sort()按百米赛跑成绩排名该函数无形参printf()输出信息,无返回值在main()中被反复调用keep()按三级跳成绩排名该函数无形参printf()输出信息,无返回值在main()中被反复调用sheep()按撑杆跳成绩排名该函数无形参printf()输出信息,无返回值在main()中被反复调用4、 调试与测试 1、测试目的:测试出每个调用函数存在的数据调用错误,在分步调试的过程中检查出所用语句的错误,在检查程序的过程中尽量做出一定的更改,已达到让程序更加简洁的目的。2、测试方法:对每一个调用的函数进行分步调试,之后再运行成功后根据运行结果对源程序做出相应的
11、更改。3、测试错误:a. 搜索号码修改运动员信息时,发现文件被删除 b. 按三级跳成绩排名时,发现有数据被后面的数据覆盖 c.等等 4、解决措施:a.我还没找到方法耶。b.将结构体 struct All_the_events中的 char place10改成char place20五、测试结果1、 输出菜单2、 增加运动员信息3、输出全部运动员信息4、按号码查找运动员信息5、按姓名查找运动员信息6、输出全部裁判员信息 7、按姓名查询裁判员信息8、输出全部比赛项目9、输出单项比赛信息6、用户手册:进入输出菜单选项界面->一般最开选择操作2,先增加运动员信息->再根据用户需求选择操作-
12、>最后选择操作13,退出系统。7、附录(源代码)#include<stdio.h> #include<stdlib.h> #include <string.h>/#include<conio.h> #define N 20 struct athletes char num20; char name10;char Identity_information 10;float baimi; float sanjitiao; float chenggantiao; ; struct referee char num20;char name10;ch
13、ar Identity_information 10;char baimi10; char sanjitiao10; char chenggantiao10; ;struct All_the_eventschar sport_name10;char time20;char referee10;char place20;void menu(); /输出菜单选项 void menu2() ;/输出输出单项比赛信息菜单选项int reads(struct athletes athN);/ 读取运动员文件中的内容 int reads1(struct referee refN); / 读裁判员取文件中的
14、内容int reads2(struct All_the_events sportN); / 读取全部比赛项目文件中的内容void save(struct athletes athN,int n); / 运动员信息改变后更新文件 void show_athletes(); / 输出全部运动员信息void show_referee(); / 输出全部裁判员信息void add();/增加运动员信息 void According_to_the_number_to_find_players_information (); /按号码查找运动员信息 void According_to_the_name_t
15、o_find_players_information (); /按姓名查找运动员信息 void According_to_the_number_to_Modify_the_players_information (); /搜索号码修改运动员信息void According_to_the_name_to_Modify_the_players_information (); /搜索号码姓名修改运动员信息void According_to_the_name_to_delete_the_players_information (); /按姓名删除该运动员信息 void According_to_the
16、_name_to_find_referee_information (); /按姓名查找裁判员信息 void show_all_events () ;/ 输出输出全部比赛项目void Output_on_a_single_information ();/输出单项比赛信息void sort(); / 按百米赛跑成绩排名void keep() ;/ 按三级跳成绩排名void sheep(); / 按撑杆跳成绩排名void main() int n; while(1) menu(); printf("n 请输入您要选择的操作序号,按回车键确认:"); scanf("%d
17、",&n);switch(n) case 1: show_athletes();break; case 2: add();break; case 3: According_to_the_number_to_find_players_information ();break; case 4: According_to_the_name_to_find_players_information ();break; case 5: According_to_the_number_to_Modify_the_players_information ();break; case 6: A
18、ccording_to_the_name_to_Modify_the_players_information ();break; case 7: According_to_the_name_to_delete_the_players_information ();break; case 9: show_referee();break;case 10:According_to_the_name_to_find_referee_information ();break;case 11:show_all_events () ;break;case 12:Output_on_a_single_info
19、rmation ();break;case 13: exit(0);default: printf("输入错误,请输入列表中存在的序号!n "); void menu() /输出菜单选项 printf(" * n"); printf(" *运动会管理系统* n"); printf(" * n"); printf(" 【1】输出全部运动员信息 n"); printf(" n");printf(" 【2】增加运动员信息 n"); printf(" n
20、"); printf(" 【3】按号码查找运动员信息 n"); printf(" n"); printf(" 【4】按姓名查找运动员信息 n"); printf(" n");printf(" 【5】搜索号码修改运动员信息 n");printf(" n");printf(" 【6】搜索姓名修改运动员信息 n");printf(" n");printf(" 【7】按姓名删除运动员信息 n");printf(&q
21、uot; n");printf(" 【8】运动员积分排名 n");printf(" n");printf(" 【9】输出全部裁判员信息 n");printf(" n");printf(" 【10】按姓名查询裁判员信息 n");printf(" n");printf(" 【11】输出全部比赛项目 n");printf(" n");printf(" 【12】输出单项比赛信息 n");printf("
22、n");printf(" 【13】退出系统 n");printf(" n");void menu2() /输出输出单项比赛信息菜单选项 printf(" * n"); printf(" * 单项比赛信息 *n"); printf(" * n"); printf(" 【1】百米赛跑 n"); printf(" n");printf(" 【2】三级跳 n"); printf(" n"); printf(&quo
23、t; 【3】撑杆跳 n"); printf(" n"); printf(" 【4】退出系统 n");printf(" n");int reads(struct athletes athN) / 读取运动员文件中的内容FILE *fp;int i=0;if(fp=fopen("f:程序设计athletes.txt","r")=NULL) printf("文件打开失败!n"); return 0; else for(i=0;!feof(fp);i+) fscanf(fp
24、,"%s %s %s %f %f %fn",athi.num,,athi.Identity_information,&athi.baimi,&athi.sanjitiao,&athi.chenggantiao); fclose(fp); return i; int reads1(struct referee refN) / 读取裁判员取文件中的内容FILE *fp;int i=0;if(fp=fopen("f:程序设计referee.txt","r")=NULL) printf("文
25、件打开失败!n"); return 0; else for(i=0;!feof(fp);i+) fscanf(fp,"%s %s %s %s %s %sn",refi.num,,refi.Identity_information,refi.baimi,refi.sanjitiao,refi.chenggantiao); fclose(fp); return i; int reads2(struct All_the_events sportN) / 读取全部比赛项目文件中的内容FILE *fp;int i=0;if(fp=fopen("f
26、:程序设计All_the_events.txt","r")=NULL) printf("文件打开失败!n"); return 0; else for(i=0;!feof(fp);i+) fscanf(fp,"%s %s %s %sn",sporti.sport_name,sporti.time,sporti.referee,sporti.place); fclose(fp); return i; void save(struct athletes athN,int n) / 运动员信息改变后更新文件 FILE *fp; in
27、t i=0; if(fp=fopen("f:程序设计athletes.txt","w")=NULL) printf("文件打开失败!n");return ; else for(i=0;i<n;i+) printf("%s %s %s %f %f %fn",athi.num,,athi.Identity_information,athi.baimi,athi.sanjitiao,athi.chenggantiao); fclose(fp); void show_athletes() / 输出全
28、部运动员信息 struct athletes athN; int i,n; n=reads(ath); printf("*所有的学生信息如下*nn"); printf(" 序号 号码 姓名 身份 百米赛跑(s) 三级跳(m) 撑杆跳(m) n"); printf("*n"); for(i=0;i<n;i+) printf("n%3d%12s%8s%8s%10.1f%12.1f%12.1fn",i+1,athi.num,,athi.Identity_information,athi.baimi
29、,athi.sanjitiao,athi.chenggantiao); getch(); void add()/增加运动员信息 FILE *fp; int n,i; struct athletes ath; if(fp=fopen("f:程序设计athletes.txt","a")=NULL) /如果文件已经存在,可以追加学生信息 if(fp=fopen("f:程序设计athletes.txt","w")=NULL) / 文件不存在时,创建新文件,输入学生信息 printf("文件打开失败!n"
30、); return; printf("请输入要添加的运动员数量,按回车键确认:"); scanf("%d",&n); for(i=1;i<=n;i+) printf("n请输入第%d个运动员的号码、姓名、身份,用空格分开,并按回车键确认:n",i); scanf("%s%s%s",ath.num,,ath.Identity_information); printf("n请输入第%d个运动员的百米赛跑(单位:s)、三级跳(单位:m)和撑杆跳(单位:m)三项成绩,用空格分开,没参
31、加的项目用0表示,并按回车键确认:n",i); scanf("%f%f%f",&ath.baimi,&ath.sanjitiao,&ath.chenggantiao); fprintf(fp,"%s %s %s %f %f %fn",ath.num,,ath.Identity_information,ath.baimi,ath.sanjitiao,ath.chenggantiao); fclose(fp); void According_to_the_number_to_find_players_info
32、rmation () /按号码查找运动员信息 struct athletes athN; int n,i; char number20; printf("n请输入要查找运动员的号码,按回车键确认:"); scanf("%s",number); n=reads(ath); for(i=0;i<n;i+) if(strcmp(number,athi.num)=0) break; if(i>=n) printf("无此学生信息!"); return; printf("n现输出该运动员的号码,姓名,身份,百米赛跑、三级跳
33、、撑杆跳三门成绩,按回车键确认:n");printf(" 序号 号码 姓名 身份 百米赛跑 三级跳 撑杆跳 n"); printf("*n"); printf("n%3d%12s%11s%11s%11.2f%12.2f%11.2fn",i+1,athi.num,,athi.Identity_information,athi.baimi,athi.sanjitiao,athi.chenggantiao); void According_to_the_name_to_find_players_informati
34、on () /按姓名查找运动员信息 struct athletes athN; int n,i; char name20; printf("n请输入要查找运动员的姓名,按回车键确认:"); scanf("%s",name); n=reads(ath); for(i=0;i<n;i+) if(strcmp(name,)=0) break; if(i>=n) printf("无此学生信息!"); return; printf("n现输出该运动员的号码,姓名,身份,百米赛跑、三级跳、撑杆跳三门成绩,按
35、回车键确认:n");printf(" 序号 号码 姓名 身份 百米赛跑 三级跳 撑杆跳 n"); printf("*n");printf("n%3d%12s%11s%11s%11.2f%12.2f%11.2fn",i+1,athi.num,,athi.Identity_information,athi.baimi,athi.sanjitiao,athi.chenggantiao); void According_to_the_number_to_Modify_the_players_information
36、() /搜索号码修改运动员信息 struct athletes athN; int n,i; char number20; printf("n请输入要更改信息的运动员号码,按回车键确认:"); scanf("%s",number); n=reads(ath); for(i=0;i<n;i+) if(strcmp(number,athi.num)=0) break; if(i>=n) printf("无此运动员信息!"); return; printf("n请输入更改后运动员的号码,姓名,身份,百米赛跑、三级跳、撑
37、杆跳三门成绩,按回车键确认:n"); scanf("%s%s%s%f%f%f",athi.num,,athi.Identity_information,&athi.baimi,&athi.sanjitiao,&athi.chenggantiao);save(ath,n); void According_to_the_name_to_Modify_the_players_information () /搜索姓名修改运动员信息 struct athletes athN; int n,i; char name20; printf
38、("n请输入要更改信息的运动员姓名,按回车键确认:"); scanf("%s",name); n=reads(ath); for(i=0;i<n;i+) if(strcmp(name,)=0) break; if(i>=n) printf("无此运动员信息!"); return; printf("n请输入更改后运动员的号码,姓名,身份,百米赛跑(单位:s)、三级跳(单位:m)和撑杆跳(单位:m)三项成绩,用空格分开,没参加的项目用0表示,并按回车键确认:n"); scanf("
39、;%s%s%s%f%f%f",athi.num,,athi.Identity_information,&athi.baimi,&athi.sanjitiao,&athi.chenggantiao);save(ath,n); void According_to_the_name_to_delete_the_players_information () /按姓名删除该运动员信息 struct athletes athN; char name20;int n,i,j; n=reads(ath); printf("n请输入要删除信息运动员姓
40、名,按回车键确认:"); scanf("%s",name); for(i=0;i<n;i+) if(strcmp(name,)=0)break; if(i>=n) printf("没有找到该运动员信息!n"); return; else for(j=i+1;j<n;j+) athj-1=athj; save(ath,n-1); printf("删除成功!n"); void show_referee() / 输出全部裁判员信息 struct referee refN; int i,n; n=
41、reads1(ref); printf("*所有的裁判员信息如下*nn"); printf(" 序号 号码 姓名 身份 百米赛跑 三级跳 撑杆跳 n"); printf("*n"); for(i=0;i<n;i+) printf("n%3d%8s%8s%8s%10s%8s%8sn",i+1,refi.num,,refi.Identity_information,refi.baimi,refi.sanjitiao,refi.chenggantiao); getch(); void Accord
42、ing_to_the_name_to_find_referee_information () /按姓名查找裁判员信息 struct referee refN; int n,i; char name20; printf("n请输入要查找裁判员的姓名,按回车键确认:"); scanf("%s",name); n=reads1(ref); for(i=0;i<n;i+) if(strcmp(name,)=0) break; if(i>=n) printf("无此裁判员信息!"); return; printf(
43、"*现输出该裁判员信息如下*nn"); printf(" 序号 号码 姓名 身份 百米赛跑 三级跳 撑杆跳 n"); printf("*n"); printf("n%3d%8s%8s%8s%10s%8s%8sn",i+1,refi.num,,refi.Identity_information,refi.baimi,refi.sanjitiao,refi.chenggantiao); void show_all_events () / 输出输出全部比赛项目 struct All_the_events
44、 sportN; int i,n; n=reads2(sport); printf("*输出全部比赛项目*nn"); printf(" 序号 比赛项目 比赛时间 裁判员 比赛地点n"); printf("*n"); for(i=0;i<n;i+) printf("n%3d%12s%10s%11s%13sn",i+1,sporti.sport_name,sporti.time,sporti.referee,sporti.place); getch(); void Output_on_a_single_infor
45、mation ()/输出单项比赛信息int n; while(1) menu2(); printf("n 请输入您要选择的操作序号,按回车键确认:"); scanf("%d",&n);switch(n) case 1: sort();break; case 2: keep();break; case 3: sheep();break; case 4: exit(0);default: printf("输入错误,请输入列表中存在的序号!n "); void sort() / 按百米赛跑成绩排名struct athletes athN,temp; int i,j,n; n=reads(ath); for(i=0;i<n-1;i+) for(j=0;j<n-1;j+) if(athj.baimi>athj+1.baimi)temp=athj;athj=athj+1;athj+1=temp;save(ath,n);j=1; printf("*百米赛跑成绩排序结果如下*nn"); printf(" 名次 号码 姓名 身份 百米赛跑(s)n"); printf("
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 大班组班级管理制度
- 国企改制后管理制度
- 影城经营与管理制度
- 学校汉服社管理制度
- 大学城公司管理制度
- 太平洋公司管理制度
- 华为物料库管理制度
- 教玩具借用管理制度
- 洗煤厂档案管理制度
- Module6单元综合(课件)-外研版级下册
- 真需求-打开商业世界的万能钥匙
- 19S406建筑排水管道安装-塑料管道
- CB/T 3766-1996排气管钢法兰及垫片
- 《民法典》合同编实务培训课件
- 医院胃镜室设备清单
- 第7章食品原料的采购与贮存管理ppt课件
- 食品安全承诺书
- 湘教版高中美术选修:美术鉴赏 第一单元 第二课 图像与眼睛 (教案)
- 《政治学原理(二)》课程教学大纲
- 精选小学数学教师招聘与进城考试试题(10套)
- 石膏板A1级燃烧性能报告
评论
0/150
提交评论