/*课程设计思路: 参赛选手信息输入: 姓名 性别 年龄 学校 项目(项目中的名次,及项目中获得的分数) 总分数 学校信息输入: 学校名称 学校编号 学校参加总数 学校总分数 项目信息输入: 选择名次方案:a种还是b种 各名次获得者姓名: 先输项目信息后输学校信息最后输选手信息 选手最大人数:max=50;每人允许参加的项目最大数为:max=5; 学校最大数目:max=10; 项目最多数:max=15; 建立模块之前应做: 首先问今年共有多少学生参加比赛?及每人最多参加几个项目? 问共有多少学校参加比赛? 问共有多少项目? 菜单: 输入选手信息: 输入学校信息: 输入项目信息: 寻找并输出选手信息: 寻找并输出项目信息: 寻找并输出学校信息: 学校排行输出: 参赛选手排行输出:*/ #include #include #include #include #include FILE *fp; //定义文件指针 struct xmform1{ char name[20]; char mc1[10]; char mc2[10]; char mc3[10]; char mc4[10]; char mc5[10]; }; struct xmform2{ char name[20]; char mc1[10]; char mc2[10]; char mc3[10]; }; struct schoolform{ char name[20]; char id[10]; int number; int scoer=0; }; struct studentform{ char name[20]; char xb[10]; char number[10]; int age; char name1[20]; //name1是选手所处学校名 struct { char name[20]; char mc[50]="无名次"; int scoer=0; } xm; int allscoer; }; int ggy(struct studentform student[]){ printf("请输入参加比赛的选手个数\n"); int n; scanf("%d",&n); getchar(); int i; for(i=0;imax){ max=school[i].scoer; maxnumber=i; }} t=school[schoolgs-1].scoer; school[schoolgs-1].scoer=max; school[maxnumber].scoer=t; schoolgs-=1; ph[i1]=maxnumber; } printf("学校排行由高到低输出依次是:\n"); schoolgs=t1; //printf("学校个数是%d\n",schoolgs); for(i=0;imax){ max=student[i].xm.scoer; maxnumber=i; }} t=student[studentrs-1].xm.scoer; student[studentrs-1].xm.scoer=max; student[maxnumber].xm.scoer=t; studentrs-=1; ph[i1]=maxnumber; } printf("学生排行由高到低输出依次是:\n"); studentrs=t1; for(i=0;i>\n"); printf("此系统有以下功能选项:\n"); struct studentform student[50]; struct schoolform school[10]; struct xmform1 xm1[15]; struct xmform2 xm2[15]; int studentrs; int schoolgs; int xmgs1; int xmgs2; char name[10]; int a,a1,a2; //a2为方便switch退出时用的字符 int i; int b1=1,b2=1; ///b1和b2作为“锁”必须对程序进行初始化输入才能解开 //scanf("%d",&a); do{ printf("提示:赛前请对程序进行基本信息的输入(1.即完成选手信息的输入和学校信息的输入2.对选手信息和学校信息读档 )\n"); printf("********************\n"); printf("输入选手信息并存档(请按0)\n输入学校信息并存档(请按1)\n输入项目信息(请按2)\n寻找并输出选手信息(请按3)\n寻找并输出项目信息(请按4)\n寻找并输出学校信息(请按5)\n学校排行输出(请按6)\n参赛选手排行输出(请按7)\n"); printf("读档(请按8)\n"); printf("退出(请按9)\n"); printf("********************\n"); scanf("%d",&a); do{ if(a==0||a==1||a==8||a==9) { break ;} else{ if(b1==0&&b2==0){ break; } else{ printf("请先完成程序初始化操作(按提示先操作)\n"); printf("********************\n"); printf("请重新按一次(0、1、8)\n"); scanf("%d",&a); }}}while(1); switch(a){ case 0: //struct studentform student[50]; printf("你选择了输入选手信息功能\n"); //printf("共有多少位选手参赛?\n") //int n; //scanf("%d",&n); studentrs=ggy(student); b1=0 ; break; case 1: //struct schoolform school[10]; printf("你选择了输入学校信息功能\n"); schoolgs=ggy1(school); b2=0; break; case 2: printf("你选择了输入项目信息功能\n"); printf("项目有两种一种取前五名,另一种取前三名。\n"); printf("开始第一类项目信息输入\n"); xmgs1=ggy2(xm1,student,school,schoolgs,studentrs); printf("开始第二类项目信息输入\n"); xmgs2=ggy3(xm2,student,school,schoolgs,studentrs); break; case 3: printf("你选择了寻找并输出选手信息的功能\n"); printf("有两种寻找方式 第一种根据选手姓名查找(按0) 第二种根据选手编号查找(按1) 请选择其中一种:\n"); scanf("%d",&a1); getchar(); a2=1; do{ switch(a1){ case 0: printf("你选择了按选手姓名查找\n"); xscz(student,studentrs); a2=0; break; case 1: printf("你选择了根据选手编号查找\n"); xscz1(student,studentrs); a2=0; break; default: printf("请输入(0~1)以内的数\n"); scanf("%d",&a1); getchar(); } }while(a2); break; case 4: printf("你选择了寻找并输出项目功能\n"); printf("有两种项目:第一类(分前五名)第二类(分前三名),请选择你要查找那类项目的信息(第一类按0)(第二类按1)\n"); scanf("%d",&a1); getchar(); a2=1; do{ switch(a1){ case 0: printf("你选择了按第一类查找\n"); xmcz1(xm1,xmgs1); a2=0; break; case 1: printf("你选择了按第二类查找\n"); xmcz2(xm2,xmgs2); a2=0; break; default: printf("请输入(0~1)以内的数\n"); scanf("%d",&a1); getchar(); } }while(a2); break; case 5: printf("你选择了寻找并输出学校信息的功能\n"); printf("有两种寻找方式 第一种根据学校名称查找(按0) 第二种根据学校编号查找(按1) 请选择其中一种:\n"); scanf("%d",&a1); getchar(); a2=1; do{ switch(a1){ case 0: printf("你选择了按学校名称查找\n"); xxcz1(school,schoolgs); a2=0; break; case 1: printf("你选择了根据学校编号查找\n"); xxcz2(school,schoolgs); a2=0; break; default: printf("请输入(0~1)以内的数\n"); scanf("%d",&a1); getchar(); } }while(a2); break; case 6: printf("你选择了学校排行输出功能\n"); schoolph(school,schoolgs); break; case 7: printf("你选择了参赛选手排行输出功能\n"); studentph(student,studentrs); break; case 8: printf("你选择了读档功能\n"); printf("请选择对:学校数据读档(请按0) 学生数据读档(请按1) 两个都读档(请按2)\n"); scanf("%d",&a1); getchar(); a2=1; do{ switch(a1){ case 0: printf("你选择对学校数据读档\n"); dudan1(school); b2=0; a2=0; break; case 1: printf("你选择了对学生数据读档\n"); dudan2(student); b1=0; a2=0; break; case 2: printf("你选择了两个都读档\n"); dudan1(school); dudan2(student); b1=0; b2=0; printf("都读取完毕了\n"); a2=0; break; default: printf("请输入(0~2)以内的数\n"); scanf("%d",&a1); getchar(); } }while(a2); break; case 9: printf("成功退出,感谢使用!\n"); return 0; default: printf("请按(0~9)以内的数字\n"); } }while(1); return 0; }