《2022年校运动会管理系统报告C语言.docx》由会员分享,可在线阅读,更多相关《2022年校运动会管理系统报告C语言.docx(36页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选学习资料 - - - - - - - - - 目 录陈一、程序分析与设计 . 2二、流程图 . 4三、源程序清单 . 4四、调试过程 . 15 五、程序有待改进的地方 . 19 六、本次实习的收成和建议. 19 附录 . 错误!未定义书签;名师归纳总结 - - - - - - -第 1 页,共 20 页精选学习资料 - - - - - - - - - 一、程序分析与设计(标题四号宋体加黑,正文五号宋体,行间距固定值 1题目描述18,首行缩进 2字符)初始化输入 :N- 参赛院系总数, M- 男子竞赛项目数, W-女子竞赛项目数;即 要求输入一些基础数据,如院系名称,每个院系参赛选手及选手编
2、号;竞赛 项目名称与代号;这些数据储备在文本文件中,不需要每次都单条录入;各项目名次取法有如下几种:取前 4 名:第 1 名得分 6,第 2 名得分 4,第 3 名得分 2,第 4 名得分 1;由程序提示用户填写竞赛结果,输入各项目获奖运动员的信息;全部信息记录完毕后,用户可以查询各个院系或个人的竞赛成果,生成团体 总分报表,查看参赛院系信息、获奖运动员、竞赛项目信息等;2需求分析 依据题目要求应供应键盘式菜单实现功能挑选,仍应供应信息的输入操作,由于在程序中供应查询功能所以应有显示、查找等操作;3总体设计 依据上面的需求分析,可以将这个系统的设计分为 1、信息输入模块 2、比 3、查询模块;
3、具体校际运动会治理系统分为 信息的输入、赛结果录入模块 结果的输入、学校各个项目的得分的查寻、总体报表的生成;4具体设计(1)主函数 主函数一般设计的比较简洁,只供应输入,处理和输出部分的函数调用;其 中功能模块用菜单方式挑选;(2)密码登陆函数 第一进入欢迎界面, 提示用户输入密码进入系统, 密码输入次数限制为三次,三次输入错误就退出系统,登陆胜利显示菜单栏名师归纳总结 - - - - - - -第 2 页,共 20 页精选学习资料 - - - - - - - - - (3)菜单函数 提示用户依据要求挑选功能,以及多次功能选取(4)输入函数 进入该功能后提示用户输入相应信息,即数据结构,数据
4、结构采纳结构体的 形式,选手结构体成员包括选手的姓名、编号、各项目的成果排名、选手所在学院等;(5)查找函数 提示用户输入运动员的姓名或编号,依据姓名或编号逐一比对信息,如条件满意就输出该选手的数据,如不满意就返回(6)排序函数你要找的运动员未找到依据运动员的百米成果进行冒泡排序,并输出结果(7)修改函数 提示用户输入运动员的姓名,依据姓名逐一比对信息,如找到就供应修改选 项,对数据进行掩盖(8)得分运算函数 依据用户输入各项成果排名,进行得分运算并得出学院排名(9)删除函数 用于输入信息的删除(10)插入函数 用于输入新的信息(11)储存函数 将用户输入的信息储存到文本文件中(12)显示函数
5、 显示用户储存的信息名师归纳总结 - - - - - - -第 3 页,共 20 页精选学习资料 - - - - - - - - - 二、流程图三、源程序清单(此部分采纳小五号宋体,行间距固定值 14)#include #include #include #include #include #define load sizeofstudent #define N 7 名师归纳总结 - - - - - - -第 4 页,共 20 页精选学习资料 - - - - - - - - - void read; void save; int size=3; struct student char num1
6、0; char name20; int scorem,scoreq,scoreg,scorey; char ximing20; stuN,temp; void input / 输入原始数据 / systemcls; printft* 输入界面 *n; printf 请输入运动员号码 , 姓名 ,100 成果 , 铅球成果 , 跳高成果 , 跳远成果 , 系名 :n; forint i=0;isize;i+ scanf%s%s%d%d%d%d%s,&stui.num,&stui.name,&stui.scorem,&stui.scoreq,&stui.scoreg,&stui.scorey,&s
7、tui.ximing; printf 输出运动员号码 , 姓名 ,100 成果 , 铅球成果 , 跳高成果 , 跳远成果 , 系名 :n; fori=0;isize;i+ printf%st%st%dt%dt%dt%dt%sn,stui.num,stui.name,stui.scorem,stui.scor eq,stui.scoreg,stui.scorey,stui.ximing; void find / 查找函数 / systemcls; printft* 查找界面 *n; char fs20; read; printf输入你要查找运动员的号码或姓名:; scanf%s,&fs; for
8、int i=0;isize;i+ ifstrcmpstui.num,fs=0 printf 你要找的运动员已找到 :n; printf 该生的号码 , 姓名 ,100 米成果 , 铅球成果 , 跳高成果 , 跳远成果 , 系名 :n; printf%st%st%dt%dt%dt%dt%sn,stui.num,stui.name,stui.scorem,stui.scor eq,stui.scoreg,stui.scorey,stui.ximing; break; else ifstrcmpstui.name,fs=0 名师归纳总结 printf你要找的运动员已找到:n; 第 5 页,共 20
9、页- - - - - - -精选学习资料 - - - - - - - - - printf 该生的号码 , 姓名 ,100 米成果 , 铅球成果 , 跳高成果 , 跳远成果 , 系名 :n; printf%st%st%dt%dt%dt%dt%sn,stui.num,stui.name,stui.scorem,stui.scor eq,stui.scoreg,stui.scorey,stui.ximing; break; else printf你要找的运动员未找到:n; printf该运动员缺赛或不存在.; break; void paixu / 排序函数 / systemcls; printf
10、t* 排序界面 *n; printf 对一百米的成果排序 :n; forint i=0;isize;i+ forint j=i+1;jsize;j+ ifstui.scoremstuj.scorem temp=stui; stui=stuj; stuj=temp; printf 排序后 :n; fori=0;isize;i+ printf%st%st%dt%dt%dt%dt%sn,stui.num,stui.name,stui.scorem,stui.scor eq,stui.scoreg,stui.scorey,stui.ximing; void xiugai / 修改函数 / system
11、cls; printft* 修改界面 *n; char ch220,c; char num10,name20; int scorem,scoreq,scoreg,scorey,i; char ximing20; printf 原始数据 :n; /*forint i=0;isize;i+ printf%st%st%dt%dt%dt%dt%sn,stui.num,stui.name,stui.scorem,stui.scor名师归纳总结 - - - - - - -第 6 页,共 20 页精选学习资料 - - - - - - - - - eq,stui.scoreg,stui.scorey,stui
12、.ximing;*/ read; printf输入你要修改运动员的姓名:; scanf%s,ch2; fori=0;isize;i+ ifstrcmpstui.name,ch2=0 printf1. 修改号码 n2. 修改姓名 n3. 修改 100米成果 n4. 修改铅球成果 n5. 修改跳高成 绩n6. 修改跳远成果 n7. 修改系名 n; scanf%d,&c; switchc case 1: printf请输入你修改的运动员号码:; scanf%s,# strcpystui.num,num; break; case 2: printf输入你修改的运动员姓名:n; scanf%s,
13、&name; strcpystui.name,name; break; case 3: printf输入你修改的运动员100米成果 :; scanf%d,&scorem; stui.scorem=scorem; break; case 4: printf输入你修改运动员铅球成果:; scanf%d,&scoreq; stui.scoreq=scoreq; break; case 5: printf输入你修改运动员跳高成果:; scanf%d,&scoreg; stui.scoreq=scoreq; break; case 6: 名师归纳总结 - - - - - - -第 7 页,共 20 页精
14、选学习资料 - - - - - - - - - printf输入你修改运动员跳远成果:; scanf%d,&scorey; stui.scorey=scorey; break; case 7: printf输入你修改运动员系名:; scanf%s,&ximing; strcpystui.ximing,ximing; break; default: printf 你的输入有误 :n; printf修改后的运动员数据:n; forint i=0;isize;i+ printf%st%st%dt%dt%dt%dt%sn,stui.num,stui.name,stui.scorem,stui.scor
15、 eq,stui.scoreg,stui.scorey,stui.ximing; save; void defen / 得分函数 systemcls; printft* 得分界面 *n; int x,y,z,w,o,p,q,i; char ch120=ruanjian,ch220=shumei,ch320=guangdian; printf 原始数据 :n; /*forint i=0;isize;i+ printf%st%st%dt%dt%dt%dt%sn,stui.num,stui.name,stui.scorem,stui.scor eq,stui.scoreg,stui.scorey,s
16、tui.ximing;*/ read; printf各系的得分总分排序:n; fori=0;isize;i+ ifstui.scorem=1 x=3; else ifstui.scorem=2 x=2; else ifstui.scorem=3 x=1; else x=0; ifstui.scoreq=1 y=3; else ifstui.scoreq=2 y=2; else ifstui.scoreq=3 y=1; else y=0; 名师归纳总结 - - - - - - -第 8 页,共 20 页精选学习资料 - - - - - - - - - ifstui.scoreg=1 z=3; e
17、lse ifstui.scoreg=2 z=2; else ifstui.scoreg=3 z=1; else z=0; ifstui.scorey=1 w=3; else ifstui.scorey=2 w=2; else ifstui.scorey=3 w=1; else w=0; fori=0;isize;i+ ifstrcmpstui.ximing,ch1=0 o=x+y+z+w; printf 软件系总得分 :%dn,o; else ifstrcmpstui.ximing,ch2=0 p=x+y+z+w; printf 数媒系总得分 :%dn,p; else ifstrcmpstui
18、.ximing,ch3=0 q=x+y+z+w; printf 光电系总得分 :%dn,q; void shancchu/ 删除函数 / systemcls; printft* 删除界面 *n; char ch120; printf 原始数据 :n; int i; /*forint i=0;isize;i+ printf%st%st%dt%dt%dt%dt%sn,stui.num,stui.name,stui.scorem,stui.scor eq,stui.scoreg,stui.scorey,stui.ximing;*/ read; printf输入你要删除的运动员的姓名:n; scanf
19、%s,&ch1; fori=0;isize;i+ ifstrcmpstui.name,ch1=0 forint j=i;jsize-1;j+ 名师归纳总结 - - - - - - -第 9 页,共 20 页精选学习资料 - - - - - - - - - stuj=stuj+1; printf删除后的运动员数据:n; fori=0;isize-1;i+ printf%st%st%dt%dt%dt%dt%sn,stui.num,stui.name,stui.scorem,stui.scor eq,stui.scoreg,stui.scorey,stui.ximing; size-; save;
20、void charu / 插入函数 systemcls; int a; printft* 插入界面 *n; printf 请输入要插入的运动员个数 :; scanf%d,&a; forint j=0;ja;j+ printf输入要插入的运动员数据:n; printf号码 :; scanf%s,&stusize.num; printf 姓名 :; scanf%s,&stusize.name; printf100 米成果 :; scanf%d,&stusize.scorem; printf 铅球成果 :; scanf%d,&stusize.scoreq; printf 跳高成果 :; scanf%
21、d,&stusize.scoreg; printf 跳远成果 :; scanf%d,&stusize.scorey; printf 系名 :; scanf%s,&stusize.ximing; forint i=0;isize+1;i+ forint j=i+1;jsize+1;j+ ifstui.scoremstuj.scorem temp=stui; stui=stuj; stuj=temp; size+; printf插入后运动员数据:n; forint i=0;isize;i+ 名师归纳总结 - - - - - - -第 10 页,共 20 页精选学习资料 - - - - - - -
22、- - printf%st%st%dt%dt%dt%dt%sn,stui.num,stui.name,stui.scorem,stui.scor eq,stui.scoreg,stui.scorey,stui.ximing; save; void save / 储存数据到文件函数 FILE *fp; / 定义指向文件的指针 /char outfile20; /printf 输出文件例如 :c:score Enter outfile name,for example c:scoren; /scanf%s,outfile; iffp=fopene:xiao.txt,w=NULL / 为输出打开一个
23、二进制文件, 为只写方式 printf打不开文件 Cannot open the filen; / 如打不开就返回菜单return; printfn 储存中 .Saving the file.n; /fprintffp, 运动员号码 , 姓名 ,100 成果 , 铅球成果 , 跳高成果 , 跳远成果 , 系名 :n; forint i=0;isize;i+ fprintffp,%st%st%dt%dt%dt%dt%sn,stui.num,stui.name,stui.scorem,stui.scoreq,stui.scoreg,stui.scorey,stui.ximing; fclosefp
24、; / 关闭文件 printf 储存胜利 .Save the file successfully.n; void read FILE *fp;/定义指向文件的指针/ 为输出打开一个二进制文件, 为只iffp=fopene:xiao.txt,r=NULL 写方式 printf打不开文件 Cannot open the filen; / 如打不开就返回菜单return; fscanffp, 运动员号码 , 姓名 ,100 成果 , 铅球成果 , 跳高成果 , 跳远成果 , 系名 :n; forint i=0;itm_year+1900,pt-tm_mon+1,pt-tm_mday; /* 显示当前
25、系统日期 */ printf= 菜单 =n; printf 1. 输入 2. 查找 n; printf 3. 排序 4. 修改 n; printf 5. 得分 6. 删除 n; printf 7. 插入 8. 储存 n; printf 9. 显示 0. 退出 n; printf=n; printf 请挑选功能 : bb; /getchar; scanf%d,&ch1; switchch1 名师归纳总结 - - - - - - -第 13 页,共 20 页精选学习资料 - - - - - - - - - case 1: input; break; case 2: find; break; cas
26、e 3: paixu; break; case 4: xiugai; break; case 5: defen; break; case 6: shancchu; break; case 7: charu; break; case 8: save; break; case 9: read; break; case 0: exit0; default: printf 未进行任何操作 .; printfn; printf想要连续操作请按yn; getchar; scanf%2c,&ch2; whilech2=y; / 条件判定 void main systemcolor 3f; /Logon; m
27、enu; 名师归纳总结 - - - - - - -第 14 页,共 20 页精选学习资料 - - - - - - - - - 四、调试过程在程序运行的过程中,显现了很多的错误;有很复杂的问题,也不乏很多低级的错误;在写入文件的时候,第一我用的是 fwrite ,而在读入文件的时候用的是 fread,后来才发现这两个语句都只是对二进制的文件进行操作,实际上我们要用到的 fscanf、fprintf 这两个语句;修改完的代码FILE *fp;/ 定义指向文件的指针iffp=fopene:xiao.txt,r=NULL 文件 ,为只写方式 /为输出打开一个二进制printf 打不开文件 Cannot
28、 open the filen; return; /如打不开就返回菜单 fscanffp, 运动员号码, 姓名, 100成果,铅球成果, 跳高成果, 跳远成果, 系名 :n; forint i=0;isize;i+ fscanffp,%st%st%dt%dt%dt%dt%sn,&stui.num,&stui.name,&stui.scorem, &stui.scoreq,&stui.scoreg,&stui.scorey,&stui.ximing; printf%st%st%dt%dt%dt%dt%sn,stui.num,stui.name,stui.scorem,stui.scor eq,stui.