关于学校运动会管理系统
程序代码:
通宵一夜,还是没有调好,求助~ 三、实验内容 设计并实现一个学校运动会管理系统。 问题描述: (1) 初始化输入:N-参赛院系总数,M-男子竞 (2) 各项目名次取法如下: 取前5名:第1名得分 7,第2名得分 5,第3名得分3,第4名得分2,第5名得分 1; (3) 由程序提醒用户填写比赛结果,输入各项目获奖运动员的信息(姓名,性别,学院,项目,名次),如:小王 男子 计算机学院 跳远 第一名。 (4) 所有信息记录完毕后,用户可以查询各个院系或个人的比赛成绩,生成团体总分报表,查看参赛院系信息、获奖运动员、比赛项目信息等。 #include<stdio.h> #include<stdlib.h> #include<string.h> #include<conio.h> #define load sizeof(student) #define N 50 void read(); void save(); struct student { char name[20]; char sex[20]; char college[20]; char item[20]; char ranking[20]; }stu[N]; void printf_face1() //定义一个面向用户的输出函数 { printf("\n\t姓名\t性别\t学院\t项目\t名次\n"); } void printf_face() //定义一个面向用户的输出函数 { printf("\n\t序号\t姓名\t性别\t学院\t项目\t名次\n"); } void input(int i) //输入数据 { printf_face1(); printf("\t"); scanf("\t%s\t%s\t%s\t%s\t%s",stu[i].name,stu[i].sex,stu[i].college,stu[i].item,stu[i].ranking); } void printf_back() //返回上一界面 { int w; void browse(); void menu(); printf("\n\n\t___.已完成. ___\n\n"); printf("你需要:\n\n\t1).浏览所有\t2).返回: [ ]\b\b"); scanf("%d",&w); if(w==1) browse(); else menu(); } void save(int n) //存入数据 { FILE *fp; int i; if((fp=fopen("file","wb"))==NULL) { printf("\n无法打开文件\n"); exit(0); } for(i=0;i<n;i++) if(stu[i].name[0]!='\0') if(fwrite(&stu[i],sizeof(struct student),1,fp)!=1) //结构体依次写入文件,若写入失败则返回非0值 printf("文件写入错误r\n"); fclose(fp); } int load() //打开本地已存入的数据 { FILE *fp; int i; if((fp=fopen("file","rb"))==NULL) { printf("\n无法打开文件\n"); exit(0); } for(i=0;!feof(fp);i++) fread(&stu[i],sizeof(struct student),1,fp); fclose(fp); return(i-1); } void enter() //输入原始数据 { int i,n; printf("请输入人数(0-%d)?:",N-1); scanf("%d",&n); printf("请输入数据:\n"); for(i=0;i<n;i++) { printf("\n输入第 %d个记录.\n",i+1); input(i); } if(i!=0) save(n); printf_back(); } void find() //查找函数// { char fs[20]; int n; n=load(); printf("输入你要查找运动员的学院或姓名:"); scanf("%s",&fs); for(int i=0;i<n;i++) { if(strcmp(stu[i].college,fs)==0) { printf("你要找的运动员已找到:\n"); printf_face1(); printf_one(i); break; } else if(strcmp(stu[i].name,fs)==0) { printf("你要找的运动员已找到:\n"); printf_face1(); printf_one(i); break; } else { printf("你要找的运动员未找到:\n"); printf("该运动员缺赛或不存在!"); break; } } menu(); } void scorer() //团体总分// { int n,sum=0; n=load(); printf("输入你要查找院系:"); scanf("%s",&fs); for(int i=0;i<n;i++) { if(strcmp(stu[i].college,fs)==0) { printf_face1(); printf_one(i); if(stu[i].ranking==1) x=7; else if(stu[i].ranking==2) x=5; else if(stu[i].ranking==3) x=3; else if(stu[i].ranking==4) x=2; else if(stu[i].ranking==5) x=1; else x=0; sum=sum+x; } } printf("\n总分%d:\n",sum); menu(); } void menu() //主界面 { int n, w1; do{ system("cls"); puts("\t\t*********************菜 单************************\n\n "); puts("\t\t*******************1.新 建************************\n\n "); puts("\t\t*******************2.查 找************************\n\n "); puts("\t\t*******************3.团体总分报表************************\n\n "); puts("\t\t*******************4.退 出************************\n\n "); puts("\n\n\t\t************ ***运动会管理系统*********************** "); printf("请选择服务种类(1-4) : [ ]\b\b"); scanf("%d",&n); if(n<1||n>4) {w1=1;getchar();} else w1=0; }while(w1==1); switch(n) { case 1: enter(); break; case 2: find(); break; case 3: scorer(); break; case 6: exit(0); } } void main() //主函数 { menu(); }