C语言课程设计学校运动会管理系统专业:网络工程班级:网133报告人:王先海139074347刘随心139074338葛翔139074332指导老师:陶陶报告日期:2014年12月13号一、需求分析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_i按姓名查找裁判员信息该函数无形参printf()输出信息,无返回在main()中被反复调用nformation()值show_all_events()输出输出全部比赛项目该函数无形参printf()输出信息,无返回值在main()中被反复调用Output_on_a_single_information()输出单项比赛信息该函数无形参printf()输出信息,无返回值在main()中被反复调用sort()按百米赛跑成绩排名该函数无形参printf()输出信息,无返回值在main()中被反复调用keep()按三级跳成绩排名该函数无形参printf()输出信息,无返回值在main()中被反复调用sheep()按撑杆跳成绩排名该函数无形参printf()输出信息,无返回值在main()中被反复调用四、调试与测试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、附录(源代码)#includestdio.h#includestdlib.h#includestring.h//#includeconio.h#defineN20structathletes{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_na