1广东工业大学C语言程序设计报告课程名称C语言程序设计学生姓名伍鹏辉学生学号3115001128学生专业电气工程及其自动化学生班级15级(4)班所在院系自动化学院指导教师孟安波日期2015年12月12日21.课程论文题目:校际运动会管理系统要求:完成校际运动会成绩管理功能,包括输入项目及参赛成绩,输入参赛学校,统计各校成绩并排序。各项目名次取法有如下几种:取前5名:第1名得分7,第2名得分5,第3名得分3,第4名得分2,第5名得分1;取前3名:第1名得分5,第2名得分3,第3名得分2;用户自定义分数选择,并有查错功能(名次靠前的得分要高于名次靠后的得分)2.设计思路(1)信息初始化输入:N─参赛学校总数,M─男子竞赛项目数,W─女子竞赛项目数;各项目名次取法有如下几种:取前5名:第一名得分7,第二名得分5,第三名得分3,第四名得分2,第五名得分1;取前3名:第一名得分5,第二名得分3,第三名得分2;用户自定义:各名次权值由用户指定。(2)提醒用户填写比赛结果,输入各项目获奖运动员信息。(3)所有信息记录完毕后,用户可以查询各个学校的比赛成绩,生成团体总分报表,察看参赛学校信息和比赛项目信息等。3.算法设计流程图1.主函数设计提供输入、功能处理和输出部分的函数调用,其中各功能模块用菜单方式选择,另外菜单部分也可以写成函数。2.各功能模块设计显示一系列功能选项输入n,判断n是否是1-4N根据n的值调用各功能模块函数图1主函数流程图Y3(1)信息输入模块一是参赛学校信息,二是参赛运动员信息,三是比赛项目信息,分别输入并保存(2)结果录入模块(3)查询信息模块查询信息模块提供按不同方式查询各种信息机返回功能,其中各功能模块用菜单方式选择。菜单部分也可写成函数。(4)查询学校名模块查询信息模块查询学校查询运动员查询项目返回主菜单图3查询信息模块流程图信息输入读入、显示参赛学校读入、显示运动员读入比赛项目图2.1信息输入模块流程图录入运动员比赛得分图2.2比赛结果录入模块流程图分析计算各学校总分44.程序代码#includestdio.h#includeconio.h#includestdlib.h#includestring.h#defineSIZE9#defineN3#defineWM3voidbsxm();voidcsxx();voidInformation();voidmain();voidmenu();voidprintf_back();voidsaveathlete();voidsaveprogram();voidsaveschool();voidsavescore();voidSearch();voidttzf();inti;FILE*fp1,*fp2,*fp3,*fp4;定义结构体指针UNI*next输入学校名字判断输入名字与结构体中学校名是否相同指针变量值向下一组数据调用输出函数YN图4查询学校名流程图5structathlete//定义运动员信息{charuniv[5];charname[8];charprog[15];charmingci[5];intscore;}at[SIZE];structxuexiao//定义学校信息{charuniv[5];charprog[15];intnum_athlete;}xx[N];structprogram//定义项目信息{charprog[5];intquming;charath1[5];charath2[5];charuniv1[5];charuniv2[5];}pro[WM];structzongfen//定义学校得分信息{charuniv[5];charprog1[5];charprog2[5];charprog3[5];intscore1;intscore2;intscore3;inttotal_score;}zf[N];voidInformation(){intn,w;do{puts(\n\n\n);puts(\t\t***^__^Welcometoload信息录入system!^__^***\n);puts(\t\t*************************MENU*************************\n);puts(\t\t********1.saveathlete**********\n);puts(\t\t********2.saveschool**********\n);puts(\t\t********3.saveprogram()**********\n);puts(\t\t********4.back**********\n);6puts(\t\t***************************************\n);printf(Choicyournumber(1-4):[]\b\b);scanf(%d,&n);if(n1||n4){w=1;getchar();}elsew=0;}while(w==1);switch(n){case1:saveathlete();break;//保存运动员信息子函数case2:saveschool();break;//保存学校信息子函数case3:saveprogram();break;//保存项目比赛信息子函数case4:exit(0);}}voidsaveathlete()//保存运动员信息子函数{printf(\n请输入各项目获奖运动员的信息:);for(i=0;iSIZE;i++){printf(\n请输入第%d个运动员的信息:\n,i+1);printf(姓名:);scanf(%s,at[i].name);printf(学校:);scanf(%s,at[i].univ);printf(参赛项目:);scanf(%s,at[i].prog);printf(名次:);scanf(%s,at[i].mingci);printf(得分:);scanf(%d,&at[i].score);}fp1=fopen(ath,w);for(i=0;iSIZE;i++){if(fwrite(&at[i],sizeof(structathlete),1,fp1)!=1)printf(Filewriteerror!\n);7}fclose(fp1);fp1=fopen(ath,r);printf(\n现在各运动员的信息如下:\n\n);printf(姓名学校项目名次得分\n);for(i=0;iSIZE;i++){fread(&at[i],sizeof(structathlete),1,fp1);printf(%-10s%-10s%-18s%-10s%d\n,at[i].name,at[i].univ,at[i].prog,at[i].mingci,at[i].score);}fclose(fp1);printf_back();}voidsaveschool()//保存学校信息子函数{printf(\n请输入各参赛学校的信息:);for(i=0;iN;i++){printf(\n请输入第%d个学校的信息:\n,i+1);printf(学校:);scanf(%s,xx[i].univ);printf(参赛的项目:);scanf(%s,xx[i].prog);printf(参赛者数:);scanf(%d,&xx[i].num_athlete);}fp3=fopen(xxiao,w);for(i=0;iN;i++){if(fwrite(&xx[i],sizeof(structxuexiao),1,fp3)!=1)printf(Filewriteerror!\n);}fclose(fp3);printf_back();}voidsaveprogram()//保存项目比赛信息子函数{printf(\n请输入关于比赛项目的信息:);for(i=0;iWM;i++)8{printf(\n请输入第%d项比赛的信息:\n,i+1);printf(项目:);scanf(%s,pro[i].prog);printf(取分情况:);scanf(%d,&pro[i].quming);printf(参赛者1:);scanf(%s,pro[i].ath1);printf(所属学校:);scanf(%s,pro[i].univ1);printf(参赛者2:);scanf(%s,pro[i].ath2);printf(所属学校:);scanf(%s,pro[i].univ2);}fp4=fopen(pr,w);for(i=0;iN;i++){if(fwrite(&pro[i],sizeof(structprogram),1,fp4)!=1)printf(Filewriteerror!\n);}fclose(fp4);printf_back();}voidsavescore()//保存学校得分情况子函数{printf(N-参赛学校总数,M-男子竞赛项目数,W-女子竞赛项目数。\n);printf(W.100-女子一百米比赛,M.100-男子一百米,M.200-男子两百米。\n);printf(\n各项名次得分权值如下:\n);printf(取前三名:第一名5分第二名3分第三名2分\n);printf(\n请输入各学校的得分情况:);for(i=0;iN;i++){printf(\n请输入第%d个学校的得分情况:\n,i+1);printf(学校:);9scanf(%s,zf[i].univ);printf(参赛项目1:);scanf(%s,zf[i].prog1);printf(得分:);scanf(%d,&zf[i].score1);printf(参赛项目2:);scanf(%s,zf[i].prog2);printf(得分:);scanf(%d,&zf[i].score2);printf(参赛项目3:);scanf(%s,zf[i].prog3);printf(得分:);scanf(%d,&zf[i].score3);zf[i].total_score=zf[i].score1+zf[i].score2+zf[i].score3;}fp2=fopen(zfen,w);for(i=0;iN;i++){if(fwrite(&zf[i],sizeof(structzongfen),1,fp2)!=1)printf(Filewriteerror!\n);}fclose(fp2);printf_back();}voidSearch(){intn,w2;do{puts(\t\t***^__^Welcometoloadsearchsystem!^__^***\n);puts(\t\t*************************MENU*************************\n);puts(\t\t********1.searchttzf**************\n);//查看团体总分puts(\t\t********2.searchcsxx**************\n);//查看参赛学校信息!puts(\t\t********3.searchbsxm**************\n);//查看比赛项目信息!puts(\t\t********4.Exit**************\n);//退出puts(\t\t***************************************\n);printf(Choiceyournumber(1-4):[]\b\b);10scanf(%d,&n);if(n1||n4){w2=1;getchar();}elsew2=0;}while(w2==1);switch(n){case1:ttzf();break;case2:csxx();break;case3:bsxm();break;case4:exit(0);b