学校运动会管理系统.docx
- 文档编号:7993994
- 上传时间:2023-05-12
- 格式:DOCX
- 页数:35
- 大小:250.13KB
学校运动会管理系统.docx
《学校运动会管理系统.docx》由会员分享,可在线阅读,更多相关《学校运动会管理系统.docx(35页珍藏版)》请在冰点文库上搜索。
学校运动会管理系统
C
语
言
课
程
设
计
学校运动会管理系统
一、需求分析
1、问题描述:
建立运动员信息系统,包括运动员、裁判员以及运动信息的成绩管理,运动员信息为编号、姓名、身份信息(教师、学生)、参加的比赛项目等;裁判员信息为编号、姓名、身份信息(教师、学生)、裁判的项目;运动会信息包含各个比赛项目的信息、时间安排、裁判信息、比赛成绩等。
2、功能要求:
(1)各种运动信息需要利用文件的形式进行存储。
(2)输入功能:
可以从键盘或文件中一次性输入多条信息;
(3)输出功能:
可将运动员、裁判员、以及比赛信息打印输出或显示;
(4)查找功能:
根据运动员、裁判员等查找出所需要的比赛信息;
(5)增加、删除、修改功能:
完成运动员信息的多种更新;
(6)统计功能:
完成各类比赛信息的统计功能,例如某项比赛的名词排名,各个运动员的积分成绩统计等。
二、总体设计
1、将学校运动会管理系统系统进行模块化分析
三、详细设计
本程序包含除main函数外包含20个函数:
menu()、menu2()、reads(structathletesath[N])、reads1(structrefereeref[N])、reads2(structAll_the_eventssport[N])、save(structathletesath[N],intn)、show_athletes()、how_referee()、add()、According_to_the_number_to_find_players_information()、According_to_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_on_a_single_information()、sort()、keep()、sheep()。
此外还定义了三个结构体类型:
structathletes、structreferee、structAll_the_events。
函数名
功能
入口
出口
调用关系
menu()
输出菜单选项
该函数无形参
printf()输出信息,无返回值
在main()中被反复调用
menu2()
输出输出单项比赛信息菜单选项
该函数无形参
printf()输出信息,无返回值
在main()中被反复调用
reads(structathletesath[N])
读取运动员文件中的内容
形参结构体structathletesath[N]
returni
在需要运动员数据时被调用
reads1(structrefereeref[N])
读取裁判员取文件中的内容
形参结构体structrefereeref[N]
returni
在需要裁判员数据时被调用
reads2(structAll_the_eventssport[N])
读取全部比赛项目文件中的内容
形参结构体structAll_the_eventssport[N]
returni
在需要全部比赛项目数据时被调用
save(structathletesath[N],intn)
运动员信息改变后更新文件
形参结构体structathletesath[N],intn
将运动员信息存入文件,无返回值
在文件需要被保存时调用
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()输出信息,无返回值
在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()
按姓名删除该运动员信息
该函数无形参
在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()输出信息,无返回值
在main()中被反复调用
sort()
按百米赛跑成绩排名
该函数无形参
printf()输出信息,无返回值
在main()中被反复调用
keep()
按三级跳成绩排名
该函数无形参
printf()输出信息,无返回值
在main()中被反复调用
sheep()
按撑杆跳成绩排名
该函数无形参
printf()输出信息,无返回值
在main()中被反复调用
4、调试与测试
1、测试目的:
测试出每个调用函数存在的数据调用错误,在分步调试的过程中检查出所用语句的错误,在检查程序的过程中尽量做出一定的更改,已达到让程序更加简洁的目的。
2、测试方法:
对每一个调用的函数进行分步调试,之后再运行成功后根据运行结果对源程序做出相应的更改。
3、测试错误:
a.搜索号码修改运动员信息时,发现文件被删除b.按三级跳成绩排名时,发现有数据被后面的数据覆盖c.等等
4、解决措施:
a.我还没找到方法耶。
b.将结构体structAll_the_events中的charplace[10]改成charplace[20]
五、测试结果
1、输出菜单
2、增加运动员信息
3、输出全部运动员信息
4、按号码查找运动员信息
5、按姓名查找运动员信息
6、输出全部裁判员信息
7、按姓名查询裁判员信息
8、输出全部比赛项目
9、输出单项比赛信息
6、用户手册:
进入输出菜单选项界面->一般最开选择操作2,先增加运动员信息->再根据用户需求选择操作->最后选择操作13,退出系统。
7、附录(源代码)
#include
#include
#include
//#include
#defineN20
structathletes
{
charnum[20];
charname[10];
charIdentity_information[10];
floatbaimi;
floatsanjitiao;
floatchenggantiao;
};
structreferee
{
charnum[20];
charname[10];
charIdentity_information[10];
charbaimi[10];
charsanjitiao[10];
charchenggantiao[10];
};
structAll_the_events
{
charsport_name[10];
chartime[20];
charreferee[10];
charplace[20];
};
voidmenu();//输出菜单选项
voidmenu2();//输出输出单项比赛信息菜单选项
intreads(structathletesath[N]);//读取运动员文件中的内容
intreads1(structrefereeref[N]);//读裁判员取文件中的内容
intreads2(structAll_the_eventssport[N]);//读取全部比赛项目文件中的内容
voidsave(structathletesath[N],intn);//运动员信息改变后更新文件
voidshow_athletes();//输出全部运动员信息
voidshow_referee();//输出全部裁判员信息
voidadd();//增加运动员信息
voidAccording_to_the_number_to_find_players_information();//按号码查找运动员信息
voidAccording_to_the_name_to_find_players_information();//按姓名查找运动员信息
voidAccording_to_the_number_to_Modify_the_players_information();//搜索号码修改运动员信息
voidAccording_to_the_name_to_Modify_the_players_information();//搜索号码姓名修改运动员信息
voidAccording_to_the_name_to_delete_the_players_information();//按姓名删除该运动员信息
voidAccording_to_the_name_to_find_referee_information();//按姓名查找裁判员信息
voidshow_all_events();//输出输出全部比赛项目
voidOutput_on_a_single_information();//输出单项比赛信息
voidsort();//按百米赛跑成绩排名
voidkeep();//按三级跳成绩排名
voidsheep();//按撑杆跳成绩排名
voidmain()
{
intn;
while
(1)
{
menu();
printf("\n请输入您要选择的操作序号,按回车键确认:
");
scanf("%d",&n);
switch(n)
{
case1:
show_athletes();break;
case2:
add();break;
case3:
According_to_the_number_to_find_players_information();break;
case4:
According_to_the_name_to_find_players_information();break;
case5:
According_to_the_number_to_Modify_the_players_information();break;
case6:
According_to_the_name_to_Modify_the_players_information();break;
case7:
According_to_the_name_to_delete_the_players_information();break;
case9:
show_referee();break;
case10:
According_to_the_name_to_find_referee_information();break;
case11:
show_all_events();break;
case12:
Output_on_a_single_information();break;
case13:
exit(0);
default:
printf("输入错误,请输入列表中存在的序号!
\n");
}
}
}
voidmenu()//输出菜单选项
{
printf("*════════*\n");
printf("════════╣*运动会管理系统*╠═════\n");
printf("║*════════*║\n");
printf("║【1】输出全部运动员信息║\n");
printf("║║\n");
printf("║【2】增加运动员信息║\n");
printf("║║\n");
printf("║【3】按号码查找运动员信息║\n");
printf("║║\n");
printf("║【4】按姓名查找运动员信息║\n");
printf("║║\n");
printf("║【5】搜索号码修改运动员信息║\n");
printf("║║\n");
printf("║【6】搜索姓名修改运动员信息║\n");
printf("║║\n");
printf("║【7】按姓名删除运动员信息║\n");
printf("║║\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("║║\n");
printf("║【13】退出系统║\n");
printf("═══════════════════════\n");
}
voidmenu2()//输出输出单项比赛信息菜单选项
{
printf("*════════*\n");
printf("════════╣*单项比赛信息*╠═════\n");
printf("║*════════*║\n");
printf("║【1】百米赛跑║\n");
printf("║║\n");
printf("║【2】三级跳║\n");
printf("║║\n");
printf("║【3】撑杆跳║\n");
printf("║║\n");
printf("║【4】退出系统║\n");
printf("═══════════════════════\n");
}
intreads(structathletesath[N])//读取运动员文件中的内容
{
FILE*fp;
inti=0;
if((fp=fopen("f:
\\程序设计\\athletes.txt","r"))==NULL)
{
printf("文件打开失败!
\n");
return0;
}
else
{
for(i=0;!
feof(fp);i++)
fscanf(fp,"%s%s%s%f%f%f\n",ath[i].num,ath[i].name,ath[i].Identity_information,&ath[i].baimi,&ath[i].sanjitiao,&ath[i].chenggantiao);
}
fclose(fp);
returni;
}
intreads1(structrefereeref[N])//读取裁判员取文件中的内容
{
FILE*fp;
inti=0;
if((fp=fopen("f:
\\程序设计\\referee.txt","r"))==NULL)
{
printf("文件打开失败!
\n");
return0;
}
else
{
for(i=0;!
feof(fp);i++)
fscanf(fp,"%s%s%s%s%s%s\n",ref[i].num,ref[i].name,ref[i].Identity_information,ref[i].baimi,ref[i].sanjitiao,ref[i].chenggantiao);
}
fclose(fp);
returni;
}
intreads2(structAll_the_eventssport[N])//读取全部比赛项目文件中的内容
{
FILE*fp;
inti=0;
if((fp=fopen("f:
\\程序设计\\All_the_events.txt","r"))==NULL)
{
printf("文件打开失败!
\n");
return0;
}
else
{
for(i=0;!
feof(fp);i++)
fscanf(fp,"%s%s%s%s\n",sport[i].sport_name,sport[i].time,sport[i].referee,sport[i].place);
}
fclose(fp);
returni;
}
voidsave(structathletesath[N],intn)//运动员信息改变后更新文件
{
FILE*fp;
inti=0;
if((fp=fopen("f:
\\程序设计\\athletes.txt","w"))==NULL)
{
printf("文件打开失败!
\n");
return;
}
else
{
for(i=0;i printf("%s%s%s%f%f%f\n",ath[i].num,ath[i].name,ath[i].Identity_information,ath[i].baimi,ath[i].sanjitiao,ath[i].chenggantiao); } fclose(fp); } voidshow_athletes()//输出全部运动员信息 { structathletesath[N]; inti,n; n=reads(ath); printf("*****************************所有的学生信息如下***************************\n\n"); printf("序号号码姓名身份百米赛跑(s)三级跳(m)撑杆跳(m)\n"); printf("**************************************************************************\n"); for(i=0;i printf("\n%3d%12s%8s%8s%10.1f%12.1f%12.1f\n",i+1,ath[i].num,ath[i].name,ath[i].Identity_information,ath[i].baimi,ath[i].sanjitiao,ath[i].chenggantiao); getch(); } voidadd()//增加运动员信息 { FILE*fp; intn,i; structathletesath; if((fp=fopen("f: \\程序设计\\athletes.txt","a"))==NULL)//如果文件已经存在,可以追加学生信息 { if((fp=fopen("f: \\程序设计\\athletes.txt","w"))==NULL)//文件不存在时,创建新文件,输入学生信息 { printf("文件打开失败! \n"); return; } } printf("请输入要添加的运动员数量,按回车键确认: "); scanf("%d",&n); for(i=1;i<=n;i++) { printf("\n请输入第%d个运动员的号码、姓名、身份,用空格分开,并按回车键确认: \n",i); scanf("%s%s%s",ath.num,ath.name,ath.Identity_information); printf("\n请输入第%d个运动员的百米赛跑(单位: s)、三级跳(单位: m)和撑杆跳(单位: m)三项成绩,用空格分开,没参加的项目用0表示,并按回车键确认: \n",i); scanf("%f%f%f",&ath.baimi,&ath.sanjitiao,&ath.chenggantiao); fprintf(fp,"%s%s%s%f%f%f\n",ath.num,ath.name,ath.Identity_information,ath.baimi,ath.sanjitiao,ath.chenggantiao); } fclose(fp); } voidAccording_to_the_num
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学校 运动会 管理 系统