(完整word版)校运动会管理系统报告C语言(含完整代码)_第1页
(完整word版)校运动会管理系统报告C语言(含完整代码)_第2页
(完整word版)校运动会管理系统报告C语言(含完整代码)_第3页
(完整word版)校运动会管理系统报告C语言(含完整代码)_第4页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、目录陈一、程序分析与设计2二、流程图4三、源程序清单4四、调试过程15五、程序有待改进的地方19六、本次实习的收获和建议19附录错误!未定义书签。一、程序分析与设计(标题四号宋体加黑,正文五号宋体,行间距固定值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<stdio.h>#include<stdlib.h>#include<string.h>#include<conio.h>#include <time.h>#define load sizeof(student)

5、#define N 7void read();void save();int size=3;struct studentchar num10;char name20;int scorem,scoreq,scoreg,scorey;char ximing20;stuN,temp;void input()/输入原始数据/system("cls");printf("t*输入界面 *n");printf(" 请输入运动员号码 , 姓名 ,100 成绩 , 铅球成绩 , 跳高成绩 , 跳远成绩 , 系名 :n"); for(int i=0;i&

6、lt;size;i+)scanf("%s%s%d%d%d%d%s",&stui.num,&,&stui.scorem,&stui.scoreq,&stui.scoreg,&stui.scorey,&stui.ximing);printf(" 输出运动员号码 , 姓名 ,100 成绩 , 铅球成绩 , 跳高成绩 , 跳远成绩 , 系名 :n"); for(i=0;i<size;i+)printf("%st%st%dt%dt%dt%dt%sn",stui.nu

7、m,,stui.scorem,stui.scoreq,stui.scoreg,stui.scorey,stui.ximing);void find()/查找函数 /system("cls");printf("t*查找界面 *n");char fs20;read();printf("输入你要查找运动员的号码或姓名:");scanf("%s",&fs);for(int i=0;i<size;i+)if(strcmp(stui.num,fs)=0)printf("你要找的运动员已

8、找到:n");printf("该生的号码 , 姓名 ,100 米成绩 , 铅球成绩 , 跳高成绩 , 跳远成绩 , 系名 :n");printf("%st%st%dt%dt%dt%dt%sn",stui.num,,stui.scorem,stui.scoreq,stui.scoreg,stui.scorey,stui.ximing);break;else if(strcmp(,fs)=0)printf("你要找的运动员已找到:n");printf("该生的号码 , 姓名 ,100

9、 米成绩 , 铅球成绩 , 跳高成绩 , 跳远成绩 , 系名 :n");printf("%st%st%dt%dt%dt%dt%sn",stui.num,,stui.scorem,stui.scoreq,stui.scoreg,stui.scorey,stui.ximing);break;elseprintf("你要找的运动员未找到:n");printf("该运动员缺赛或不存在!");break;void paixu()/排序函数 /system("cls");printf("t

10、*排序界面 *n");printf("对一百米的成绩排序:n");for(int i=0;i<size;i+)for(int j=i+1;j<size;j+)if(stui.scorem<stuj.scorem)temp=stui;stui=stuj;stuj=temp;printf("排序后 :n");for(i=0;i<size;i+)printf("%st%st%dt%dt%dt%dt%sn",stui.num,,stui.scorem,stui.scoreq,stui.sco

11、reg,stui.scorey,stui.ximing);void xiugai() /修改函数 /system("cls");printf("t*修改界面 *n");char ch220,c;char num10,name20;int scorem,scoreq,scoreg,scorey,i;char ximing20;printf("原始数据 :n");/*for(int i=0;i<size;i+)printf("%st%st%dt%dt%dt%dt%sn",stui.num,,st

12、ui.scorem,stui.scoreq,stui.scoreg,stui.scorey,stui.ximing);*/read();printf("输入你要修改运动员的姓名:");scanf("%s",ch2);for(i=0;i<size;i+)if(strcmp(,ch2)=0)printf("1.修改号码 n2. 修改姓名 n3. 修改 100米成绩 n4. 修改铅球成绩 n5. 修改跳高成绩n6. 修改跳远成绩 n7. 修改系名 n"); scanf("%d",&c);

13、switch(c)case 1:printf(" 请输入你修改的运动员号码 :"); scanf("%s",&num); strcpy(stui.num,num);break;case 2:printf(" 输入你修改的运动员姓名 :n"); scanf("%s",&name); strcpy(,name);break;case 3:printf(" 输入你修改的运动员 100米成绩 :"); scanf("%d",&scorem);

14、 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:printf("输入你修改运动员跳远成绩:");scanf("%d",&

15、;scorey);stui.scorey=scorey;break;case 7:printf("输入你修改运动员系名:");scanf("%s",&ximing);strcpy(stui.ximing,ximing);break;default:printf("你的输入有误 :n");printf("修改后的运动员数据:n");for(int i=0;i<size;i+)printf("%st%st%dt%dt%dt%dt%sn",stui.num,,stui.

16、scorem,stui.scoreq,stui.scoreg,stui.scorey,stui.ximing);save();void defen()/ 得分函数system("cls");printf("t*得分界面 *n");int x,y,z,w,o,p,q,i;char ch120="ruanjian",ch220="shumei",ch320="guangdian"printf("原始数据 :n");/*for(int i=0;i<size;i+)printf

17、("%st%st%dt%dt%dt%dt%sn",stui.num,,stui.scorem,stui.scoreq,stui.scoreg,stui.scorey,stui.ximing);*/read();printf("各系的得分总分排序:n");for(i=0;i<size;i+)if(stui.scorem=1) x=3;else if(stui.scorem=2) x=2;else if(stui.scorem=3) x=1;else x=0;if(stui.scoreq=1) y=3;else if(stui.sco

18、req=2) y=2;else if(stui.scoreq=3) y=1;else y=0;if(stui.scoreg=1) z=3;else if(stui.scoreg=2) z=2;else if(stui.scoreg=3) z=1;else z=0;if(stui.scorey=1) w=3;else if(stui.scorey=2) w=2;else if(stui.scorey=3) w=1;else w=0;for(i=0;i<size;i+)if(strcmp(stui.ximing,ch1)=0)o=x+y+z+w;printf("软件系总得分 :%d

19、n",o);else if(strcmp(stui.ximing,ch2)=0)p=x+y+z+w;printf("数媒系总得分 :%dn",p);else if(strcmp(stui.ximing,ch3)=0)q=x+y+z+w;printf("光电系总得分 :%dn",q);void shancchu()/删除函数 /system("cls");printf("t*删除界面 *n");char ch120;printf("原始数据 :n");int i;/*for(int i=

20、0;i<size;i+)printf("%st%st%dt%dt%dt%dt%sn",stui.num,,stui.scorem,stui.scoreq,stui.scoreg,stui.scorey,stui.ximing);*/read();printf("输入你要删除的运动员的姓名:n");scanf("%s",&ch1);for(i=0;i<size;i+)if(strcmp(,ch1)=0)for(int j=i;j<size-1;j+)stuj=stuj+1;p

21、rintf("删除后的运动员数据:n");for(i=0;i<size-1;i+)printf("%st%st%dt%dt%dt%dt%sn",stui.num,,stui.scorem,stui.scor eq,stui.scoreg,stui.scorey,stui.ximing);size-;save();void charu()/ 插入函数system("cls");int a;printf("t*插入界面 *n");printf("请输入要插入的运动员个数:")

22、;scanf("%d",&a);for(int j=0;j<a;j+)printf("输入要插入的运动员数据:n");printf("号码 :");scanf("%s",&stusize.num);printf("姓名 :");scanf("%s",&);printf("100米成绩 :");scanf("%d",&stusize.scorem);printf("铅

23、球成绩 :");scanf("%d",&stusize.scoreq);printf("跳高成绩 :");scanf("%d",&stusize.scoreg);printf("跳远成绩 :");scanf("%d",&stusize.scorey);printf("系名 :");scanf("%s",&stusize.ximing);for(int i=0;i<size+1;i+)for(int j=i+1

24、;j<size+1;j+)if(stui.scorem<stuj.scorem)temp=stui;stui=stuj;stuj=temp;size+;printf("插入后运动员数据:n");for(int i=0;i<size;i+)printf("%st%st%dt%dt%dt%dt%sn",stui.num,,stui.scorem,stui.scoreq,stui.scoreg,stui.scorey,stui.ximing);save();void save()/ 保存数据到文件函数FILE *fp;/ 定

25、义指向文件的指针/char outfile20;/printf("输出文件例如 :c:score Enter outfile name,for example c:scoren");/scanf("%s",outfile);if(fp=fopen("e:xiao.txt","w")=NULL)/ 为输出打开一个二进制文件, 为只写方式printf("打不开文件 Cannot open the filen");return;/ 若打不开则返回菜单printf("n保存中 .Saving

26、the file.n");/fprintf(fp,"运动员号码 , 姓名 ,100 成绩 , 铅球成绩 , 跳高成绩 , 跳远成绩 , 系名 :n");for(int i=0;i<size;i+)fprintf(fp,"%st%st%dt%dt%dt%dt%sn",stui.num,,stui.scorem,stui.scoreq,stui.scoreg,stui.scorey,stui.ximing);fclose(fp);/ 关闭文件printf("保存成功 .Save the file successfu

27、lly!n");void read()FILE *fp;/定义指向文件的指针if(fp=fopen("e:xiao.txt","r")=NULL)/ 为输出打开一个二进制文件, 为只写方式printf("打不开文件 Cannot open the filen");return;/ 若打不开则返回菜单fscanf(fp,"运动员号码 , 姓名 ,100 成绩 , 铅球成绩 , 跳高成绩 , 跳远成绩 , 系名 :n");for(int i=0;i<size;i+)fscanf(fp,"%st

28、%st%dt%dt%dt%dt%sn",&stui.num,&,&stui.scorem,&stu i.scoreq,&stui.scoreg,&stui.scorey,&stui.ximing);printf("%st%st%dt%dt%dt%dt%sn",stui.num,,stui.scorem,stui.scoreq,stui.scoreg,stui.scorey,stui.ximing);fclose(fp);/ 关闭文件int login(char passwo

29、rd)/ 密码校对函数*static char key10="12345"if(strcmp(password,key)=0)return 1;elsereturn 0;/ 比较输入字符和系统设定的密码是否相同void Logon()char a;printf("n");printf("*欢迎进入校运动会管理界面*n");printf("*n");printf("*登陆请按回车键*n");printf("*n");printf("n");scanf(&qu

30、ot;%c",&a);if(a='n')FILE *fp;char password10;int count=0,s;printf("您有三次输入机会!nn");printf("请输入密码 :n");scanf("%s",password);s=login(password);if(s=1)实训 password.txt","w");fprintf(fp,"%s",password);fclose(fp);system("CLS")

31、;printf("密码正确 !n");printf("*n");printf("*欢迎进入 *n");printf("*nnn");if(s=0)count+;while(count!=3)printf("请再次输入密码:n");scanf("%s",password);s=login(password);if(s=1)实训password.txt","w");fprintf(fp,"%s",password);fclose(

32、fp);system("CLS");printf("密码正确 !n");printf("*n");printf("*欢迎进入*n");printf("*n");return ;if(s=0) count+;if(count=3) printf("你已经错误输入3次, 系统退出 !n");exit(0);elseexit(1);void menu()int ch1;char ch2;struct tm *pt; /*定义时间结构体 */time_t t;t=time(NULL)

33、;pt=localtime(&t); /*读取系统日期并把它放到结构体中*/doprintf("tt当前系统日期 :%d-%d-%dn",pt->tm_year+1900,pt->tm_mon+1,pt->tm_mday);/* 显示当前系统日期 */printf("=菜单 =n");printf("1. 输入2.查找n");printf("3. 排序4.修改n");printf("5. 得分6.删除n");printf("7. 插入8.保存n");

34、printf("9. 显示0.退出 n");printf("=n");printf("请选择功能 <1-8>: bb");/getchar();scanf("%d",&ch1);switch(ch1)case 1:input();break;case 2:find();break;case 3:paixu();break;case 4:xiugai();break;case 5:defen();break;case 6:shancchu();break;case 7:charu();break;

35、case 8:save();break;case 9:read();break;case 0:exit(0);default:printf("未进行任何操作!");printf("n");printf("想要继续操作请按yn");getchar();scanf("%2c",&ch2); while(ch2='y');/ 条件判断void main()system("color 3f");/Logon();menu();四、调试过程在程序运行的过程中,出现了很多的错误。有很复杂的问题,也不乏许多低级的错误。在写入文件的时候,首先我用的是fwrite ,而在读入文件的时候用的是fread,后来才发现这两个语句都只是对二进制的文件进行操作,实际上我们要用到的fscanf、fprintf 这两个语句。修改完的代码FILE *fp;/ 定义指向文件的指针if(fp=fopen("e:xiao.txt","r")=NULL)/为输出打开一个二进制文件 ,为只写方式printf(" 打不开文件 Cannot open

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论