




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、目录 二、流程图 三、源程序清单 四、调试过程 五、程序有待改进的地方 六、本次实习的收获和建议 附录 、程序分析与设计 符) (标题四号宋体加黑,正文五号宋体,行间距固定值 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)修改函数 提醒用户输入运动员的姓名,根据姓名逐一比对信息
4、,若找到则提供修改 选项,对数据进行覆盖 (8)得分计算函数 根据用户输入各项成绩排名,进行得分运算 并得出学院排名 (9)删除函数 用于输入信息的删除 (10)插入函数 用于输入新的信息 (11)保存函数 将用户输入的信息保存到文本文件中 12)显示函数 显示用户保存的信息 二、流程图 三、源程序清单 (此部分采用小五号宋体,行间距固定值 14) #include #include #include #include #include #defineloadsizeof(student) #defineN7 voidread(); voidsave(); intsize=3; structs
5、tudent charnum10; charname20; intscorem,scoreq,scoreg,scorey; charximing20; stuN,temp; voidinput()/ 输入原始数据 / system(cls); printf(t* 输入界面 *n); printf( 请输入运动员号码 , 姓名,100成绩,铅球成绩,跳高成绩 ,跳远成绩 , 系名 :n); for(inti=0;isize;i+) scanf(%s%s%d%d%d%d%s, printf( 输出运动员号码 ,姓名,100成绩,铅球成绩,跳高成绩 ,跳远成绩,系 名:n); for(i=0;isi
6、ze;i+) printf(%st%st%dt%dt%dt%dt%sn,stui.num,,stu i.scorem,stui.scoreq,stui.scoreg,stui.scorey,stui.ximing); voidfind()/ 查找函数 / system(cls); printf(t* * 查找界面 *n); charfs20; read(); printf( 输入你要查找运动员的号码或姓名 :); scanf(%s, for(inti=0;isize;i+) if(strcmp(stui.num,fs)=0) printf( 你要找的运动员已找到 :n); p
7、rintf( 该生的号码,姓名,100米成绩,铅球成绩,跳高成绩 ,跳远成 绩,系名:n); printf(%st%st%dt%dt%dt%dt%sn,stui.num,,stu i.scorem,stui.scoreq,stui.scoreg,stui.scorey,stui.ximing); break; elseif(strcmp(,fs)=0) printf( 你要找的运动员已找到 :n); printf( 该生的号码,姓名,100米成绩,铅球成绩,跳高成绩 ,跳远成 绩,系名:n); printf(%st%st%dt%dt%dt%dt%sn,stu
8、i.num,,stu i.scorem,stui.scoreq,stui.scoreg,stui.scorey,stui.ximing); break; else printf(你要找的运动员未找到 :n); printf(该运动员缺赛或不存在 !); break; voidpaixu()/ 排序函数 / * system(cls); *n); printf( 对一百米的成绩排序 :n); for(inti=0;isize;i+) for(intj=i+1;jsize;j+) if(stui.scoremstuj.scorem) temp=stui; stui=stuj; s
9、tuj=temp; printf( 排序后 :n); for(i=0;isize;i+) printf(%st%st%dt%dt%dt%dt%sn,stui.num,,stu i.scorem,stui.scoreq,stui.scoreg,stui.scorey,stui.ximing); voidxiugai()/ 修改函数 / system(cls); printf(t* * 修改界面 * *n); charch220,c; charnum10,name20; intscorem,scoreq,scoreg,scorey,i; charximing20; printf(
10、 原始数据 :n); /*for(inti=0;isize;i+) printf(%st%st%dt%dt%dt%dt%sn,stui.num,,stu i.scorem,stui.scoreq,stui.scoreg,stui.scorey,stui.ximing);* / read(); printf( 输入你要修改运动员的姓名 :); scanf(%s,ch2); for(i=0;isize;i+) if(strcmp(,ch2)=0) printf(1. 修改号码 n2. 修改姓名 n3. 修改 100米成绩 n4. 修改铅 球成绩n5修改跳高成绩n
11、6.修改跳远成绩n7修改系名n); scanf(%d, switch(c) case1: printf( 请输入你修改的运动员号码 :); scanf(%s, strcpy(stui.num,num); break; case2: printf( 输入你修改的运动员姓名 :n); scanf(%s, strcpy(,name); break; case3: printf( 输入你修改的运动员 100米成绩 :); scanf(%d, stui.scorem=scorem; break; case4: printf( 输入你修改运动员铅球成绩 :); scanf(%d, stu
12、i.scoreq=scoreq; break; case5: printf( 输入你修改运动员跳高成绩 :); scanf(%d, stui.scoreq=scoreq; break; case6: printf( 输入你修改运动员跳远成绩 :); scanf(%d, stui.scorey=scorey; break; case7: printf( 输入你修改运动员系名 :); scanf(%s, strcpy(stui.ximing,ximing); break; default: printf( 你的输入有误 :n); printf( 修改后的运动员数据 :n); for(inti=0;
13、isize;i+) printf(%st%st%dt%dt%dt%dt%sn,stui.num,,stu i.scorem,stui.scoreq,stui.scoreg,stui.scorey,stui.ximing); save(); voiddefen() / 得分函数 system(cls); printf(t* * 得分界面 *n); intx,y,z,w,o,p,q,i; charch120=ruanjian,ch220=shumei,ch320=guangdian; printf( 原始数据 :n); /*for(inti=0;isize;i+) printf(
14、%st%st%dt%dt%dt%dt%sn,stui.num,,stu i.scorem,stui.scoreq,stui.scoreg,stui.scorey,stui.ximing);* read(); printf( 各系的得分总分排序 :n); for(i=0;isize;i+) if(stui.scorem=1)x=3; elseif(stui.scorem=2)x=2; elseif(stui.scorem=3)x=1; elsex=0; if(stui.scoreq=1)y=3; elseif(stui.scoreq=2)y=2; elseif(stui.sco
15、req=3)y=1; elsey=0; if(stui.scoreg=1)z=3; elseif(stui.scoreg=2)z=2; elseif(stui.scoreg=3)z=1; elsez=0; if(stui.scorey=1)w=3; elseif(stui.scorey=2)w=2; elseif(stui.scorey=3)w=1; elsew=0; for(i=0;isize;i+) if(strcmp(stui.ximing,ch1)=0) o=x+y+z+w; printf( 软件系总得分 :%dn,o); elseif(strcmp(stui.ximing,ch2)=
16、0) p=x+y+z+w; printf( 数媒系总得分 :%dn,p); elseif(strcmp(stui.ximing,ch3)=0) q=x+y+z+w; printf( 光电系总得分 :%dn,q); voidshancchu()/ 删除函数 / system(cls); printf(t* * 删除界面 * *n); charch120; printf( 原始数据 :n); inti; /*for(inti=0;isize;i+) printf(%st%st%dt%dt%dt%dt%sn,stui.num,,stu i.scorem,stui.scoreq,st
17、ui.scoreg,stui.scorey,stui.ximing);* / read(); printf( 输入你要删除的运动员的姓名 :n); scanf(%s, for(i=0;isize;i+) if(strcmp(,ch1)=0) for(intj=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,,stu i.scorem,stui.scoreq,stui.scoreg,stui.s
18、corey,stui.ximing); size-; save(); voidcharu() / 插入函数 system(cls); * inta; *n); printf( 请输入要插入的运动员个数 :); scanf(%d, for(intj=0;ja;j+) printf( 输入要插入的运动员数据 :n); printf( 号码 :); scanf(%s, printf( 姓名 :); scanf(%s, printf(100 米成绩 :); scanf(%d, printf( 铅球成绩 :); scanf(%d, printf( 跳高成绩 :); scanf(%d, printf( 跳
19、远成绩 :); scanf(%d, printf( 系名 :); scanf(%s, for(inti=0;isize+1;i+) for(intj=i+1;jsize+1;j+) if(stui.scoremstuj.scorem) temp=stui; stui=stuj; stuj=temp; size+; printf( 插入后运动员数据 :n); for(inti=0;isize;i+) printf(%st%st%dt%dt%dt%dt%sn,stui.num,,stu i.scorem,stui.scoreq,stui.scoreg,stui.scorey,st
20、ui.ximing); save(); voidsave() / 保存数据到文件函数 FILE*fp; / 定义指向文件的指针 /charoutfile20; /printf( 输出文件例 如:c:scoreEnteroutfilename,forexamplec:scoren); /scanf(%s,outfile); if(fp=fopen(e:xiao.txt,w)=NULL)/ 为输出打开 一个二进制文件 , 为只写方式 printf( 打不开文件 Cannotopenthefilen); return;/ 若打不开则返回菜单 printf(n保存中 .Savingthefilen);
21、 /fprintf(fp, 运动员号码 , 姓名,100成绩, 铅球成绩 , 跳高成绩,跳远成绩 , 系名 :n); for(inti=0;isize;i+) fprintf(fp,%st%st%dt%dt%dt%dt%sn,stui.num,, stui.scorem,stui.scoreq,stui.scoreg,stui.scorey,stui.ximin g); fclose(fp);/ 关闭文件 printf( 保存成功 Savethefilesuccessfully!n); voidread() FILE*fp;/ 定义指向文件的指针 if(fp=fopen(e:
22、xiao.txt,r)=NULL) / 为输出打开 一个二进制文件 , 为只写方式 printf( 打不开文件 Cannotopenthefilen); return; / 若打不开则返回菜单 fscanf(fp, 运动员号码 ,姓名,100成绩,铅球成绩,跳高成绩 ,跳远成绩,系 名:n); for(inti=0;itm_year+1900,pt-tm_mon+1,pt-tm_mday);/*显示当前 系统日期 */ printf(= 菜单 =n); printf( 1. 输入 2. 查找 n); printf( 3. 排序 4. 修改 n); printf( 5. 得分 6. 删除 n);
23、 printf( 7. 插入 8. 保存 n); printf( 9. 显示 0.退出 n); printf(= printf( 请选择功能 :bb); /getchar(); scanf(%d, switch(ch1) case1: input(); break; case2: find(); break; case3: paixu(); break; case4: xiugai(); break; case5: defen(); break; case6: shancchu(); break; case7: charu(); break; case8: save(); break; cas
24、e9: read(); break; case0: exit(0); default: printf( 未进行任何操作 !); printf(n); printf( 想要继续操作请按 yn); getchar(); scanf(%2c, while(ch2=y); / 条件判断 voidmain() system(color3f); /Logon(); menu(); 四、调试过程 在程序运行的过程中,出现了很多的错误。有很复杂的问题,也不乏许多 低级的错误。 在写入文件的时候,首先我用的是 fwrite ,而在读入文件的时候用的是 fread ,后来才发现这两个语句都只是对二进制的文件进行操
25、作,实际上我 们要用到的 fscanf 、fprintf 这两个语句。修改完的代码 FILE*fp;/ 定义指向文件的指针 if(fp=fopen(e:xiao.txt,r)=NULL) / 为输出 打开一个二进制文件 , 为只写方式 printf( 打不开文件 Cannotopenthefilen); return; / 若打不开则返回 菜单 fscanf(fp, 运动员号码,姓名, 100成绩,铅球成绩,跳高成绩,跳远 成绩,系名 :n); for(inti=0;isize;i+) fscanf(fp,%st%st%dt%dt%dt%dt%sn, printf(%st%st%dt%dt%dt%dt%sn,stui.num,,s tui.scorem,stui.scoreq,stui.scoreg,stui.scorey,stui.xim ing); fclose(fp); / 关闭文件 做菜单功能多次选择时,令用户输入字符进行选择,然而程序总是退出, 后来才知道 n 也被算入用户输入的字符内,要在字符输入后添加 getchar() 才能避免菜单失效 做显示函
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度美甲店学徒工实习期聘用合同范本下载
- 二零二五年电视广告创意设计服务合同样本
- 2025版高校招生代理服务争议解决协议
- 二零二五年度个人汽车租赁押金合同范本
- 二零二五版写字楼租赁合同:含物业管理服务细则
- 2025版装饰装修工程节能认证合同
- 2025至2030年中国透光立体玻璃行业市场深度评估及投资策略咨询报告
- 早期肺癌的HRCT表现
- 二零二五年度教育培训分期付款协议示范文本
- 2025版专业保安公司保安劳务承包合同
- 化工操作工培训课件
- 2025中国电信安全公司春季校园招聘笔试参考题库附带答案详解(10套)
- 通信技术未来发展趋势
- 整形美容外科进修汇报
- 立达RSBD并条机培训资料讲课文档
- 生产排产管理办法
- 2025年标准黑龙江水利安全员试题及答案
- 中国智能超市手推车行业市场前景预测及投资方向研究报告
- 渝23TJ02 丁基橡胶弹性体复合高分子自粘防水卷材建筑防水构造 DJBT50-167
- 第13课-他们都说我包的饺子好吃(口语)
- 2025年兵团普通职工考试试题及答案
评论
0/150
提交评论