您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > 校际运动会管理系统说明书
中南大学C语言程序设计之:校级运动会管理系统指导教师:樊光军专业班级:机械0917学生姓名:孙华博机电工程学院2010年7月8日一程序描述本课题主要实现一个简单的运动会成绩管理系统。假设参加运动会有s个学校,学校编号为1……s。有m个男子项目和n个女子项目。男子项目编号为1……m,女子项目编号为m+1……m+n。不同的项目取前五名或前三名积分;取前五名的积分分别为:7、5、3、2、1,前三名的积分分别为:5、3、2;哪些取前五名或前三名由自己设定。功能要求:(1)可以输入各个项目的前三名或前五名的成绩;(2)能统计各学校总分;(3)可以按学校编号、学校总分、男女团体总分排序输出;(4)可以按学校编号查询学校某个项目的情况;(5)可以按项目编号查询取得前三或前五名的学校。开发工具:VC++。二设计过程本设计主要有以下几大功能模块:主程序,成绩输入,成绩统计,按照各种方式排序输出,通过不同的条件进行查询,保存退出程序结构图主程序成绩输入成绩统计查询按项目编号查询取得前三或前五名的学校按各种方式输出按学校编号排序输出按男团体总分排序输出按学校总分排序输出按女团体总分排序输出按学校编号查询学校某个项目的成绩退出主程序设计如图.主要通过main()函数及choose()函数实现.主程序图voidmain(){intchoos;printf(\n\n***运动会分数统计***\n\n\n);printf(共有多少个学校参赛:);scanf(%d,&a);while(a=0||a20){if(a=0){printf(\n参赛学校个数不能是负数或零\n\n);printf(共有多少个学校参赛:);scanf(%d,&a);}if(a20){printf(\n参赛学校个数不能大于20\n\n);printf(共有多少个学校参赛:);scanf(%d,&a);}}printf(有几个男子组:);scanf(%d,&c);printf(有几个女子组:);scanf(%d,&d);for(i=0;i=a;i++){f[i]=(structnode*)malloc(sizeof(structnode)*(c+d+3));for(j=0;j=c+d+2;j++)f[i][j].num=0;}choos=choose();while(1){while(choos0||choos8)choos=choose();(*g[choos])();printf(\n);choos=choose();}}intchoose(){intchoo;printf(\n\n1*输入成绩\n);………………printf(9*退出\n\n);printf(请选择:);scanf(%d,&choo);return(choo-1);}成绩输入如图所示.当选择1时进行成绩的输入.实现的功能函数为input(),相关实现如下:成绩输入voidinput(){intab,ac,ae,af,g=1,get[5]={0,0,0,0,0};printf(\n请输入项目代号:);ale:scanf(%d,&ab);if(abc+d||ab1){printf(\n此项目代号不存在,重新输入\n);gotoale;}ae=0;for(i=0;i=a;i++){if(f[i][ab].num!=0){ae=1;break;}}if(ae==1){al2:printf(\n此项目成绩曾经已被录入过,是否要重新录入(您输入的项目代号可能有误,强烈建议您查证后再录入):\n);printf(1++++重新录入(若重新录入,以前的该项目成绩将被删除)\n);printf(2++++不要,待查证后再录入\n\n);scanf(%d,&af);if(af==2){printf(您已取消录入!!!!!\n);return;}elseif(af==1){for(i=1;i=a;i++){if(f[i][ab].num!=0){f[i][0].num=f[i][0].num-f[i][ab].num;if(ab=c)f[i][c+d+1].num=f[i][c+d+1].num-f[i][ab].num;elsef[i][c+d+2].num=f[i][c+d+2].num-f[i][ab].num;}f[i][ab].num=0;}}elsegotoal2;}al:printf(\n此项目是以前几名为胜出者:\n\n);printf(3-------以前三名\n);printf(5-------以前五名\n\n);scanf(%d,&ac);if(ac==3){printf(\n请依次输入获胜学校代号:);af=5;for(i=0;i3;i++){alq:scanf(%d,&ae);if(aea||ae1){printf(%d学校代号不存在,重新输入第%d名的学校代号\n,ae,g);gotoalq;}for(b=0;b5;b++){if(ae==get[b]){printf(同一个学校不能在同一项目中有两个名次,请重新输入第%d名的学校代号!!!\n,g);gotoalq;}elseget[b]=ae;}f[ae][0].num=f[ae][0].num+af;f[ae][ab].num=af;if(ab=c)f[ae][c+d+1].num=f[ae][c+d+1].num+af;elsef[ae][c+d+2].num=f[ae][c+d+2].num+af;if(af3)af=af-2;elseaf--;g++;}}elseif(ac==5){printf(请依次输入获胜学校代号:);af=7;for(i=0;i5;i++){alw:scanf(%d,&ae);if(aea||ae1){printf(%d学校代号不存在,重新输入第%d名的学校代号\n,ae,g);gotoalw;}for(b=0;b5;b++){if(ae==get[b]){printf(同一个学校不能在同一项目中有两个名次,请重新输入第%d名的学校代号!!!\n,g);gotoalw;}elseget[b]=ae;}f[ae][0].num=f[ae][0].num+af;f[ae][ab].num=af;if(ab=c)f[ae][c+d+1].num=f[ae][c+d+1].num+af;elsef[ae][c+d+2].num=f[ae][c+d+2].num+af;if(af3)af=af-2;elseaf--;g++;}}elsegotoal;printf(\n\n输入完成!!!!\n);}成绩统计成绩统计如图所示.当选择2时进行成绩的输入.实现的功能函数为each(),相关实现如下:voideach(){printf(\n对应的格式为:\n学校代号:团体总成绩\n\n);for(i=1;i=a;i++){printf(%2d:%3d,i,f[i][0].num);if(i%3==0)printf(\n);}按照各种方式输出主要有按学校编号输出,按学校总分输出,按男团输出,按女团输出.相关实现分别如下:按学校编号输出按学校总分出输按男团输出按女团输出.voidbiaohao(){printf(\n项目代号);for(i=1;i=c+d;i++){if(i9)printf(%4d,i);elseprintf(%5d,i);}printf(\n);printf(学校代号\n);for(i=1;i=a;i++){……………………/*按学校编号使用for循环和判断语句输出*/}voidzongfen(){structnod{intke;intnum;};intha;structnod*de;de=(structnod*)malloc(sizeof(structnod)*a+1);printf(\n按学校编号排序输出\n\n);printf(学校代号总分\n\n);for(i=1;i=a;i++){de[i].ke=i;de[i].num=f[i][0].num;}for(i=1;i=a;i++){……………………/*按学校总分使用for循环和判断语句输出*/}for(i=1;i=a;i++){printf(%13d%8d\n,de[i].ke,de[i].num);}}voidnanzong(){……………………printf(\n按男子团体总分排序输出\n\n);printf(学校代号男子团体总分\n\n);for(i=1;i=a;i++){de[i].ke=i;de[i].num=f[i][c+d+1].num;}for(i=1;i=a;i++){//*同上,按男团使用for循环嵌套及判断语句输出*//}for(i=1;i=a;i++){printf(%13d%12d\n,de[i].ke,de[i].num);}}voidnvzong(){……………………printf(按女子团体总分排序输出\n\n);printf(学校代号女子团体总分\n\n);for(i=1;i=a;i++){……}for(i=1;i=a;i++){/*同上,按女团使用for循环及判断语句输出*/}for(i=1;i=a;i++){printf(%15d%13d\n,de[i].ke,de[i].num);}}查询功能按学校编号查询学校某个项目的成绩以xuexiao()及按项目编号查询取得前三或前五名的学校按学校编号查询项目编号查询voidxuexiao(){intdr,dt;printf(\n请输入您要查询的学校代号:);aly:scanf(%d,&dr);if(dra||dr1){printf(学校代号不存在,重新输入\n);gotoaly;}printf(请输入您要查询的项目代号:);alo:scanf(%d,&dt);if(dtc+d||dt1){printf(项目代号不存在,重新输入\n);gotoalo;}printf(\n\n%3d学校的%3d项目成绩为%3d\n,dr,dt,f[dr][dt].num);}voidxiangmu(){intge,sedy=0;printf(\n请输入您要查询的项目代号:);all:scanf(%d,&ge);printf(\n);if(gec+d||ge1){printf(没有此项目代号,重新输入\n);gotoall;}for(i=1;i=a;i++){if(f[b][ge].num==2)sedy=1;}if(sedy==0){printf(此项目没有录入成绩\n);return;}for(i=1;i=a;i++){if(f[i][ge].num==7){printf(此项目取前5名获奖者\n);break;}}if(i==a+1)printf(此项目取前3名获奖者\n);printf(\n获胜名单由成绩高到低依次为:\n\n);for(i=7;i0;i--){for(b=1;b=a;b++){if(f[b][ge].num==i)printf(%5d,b);}}}保存退出保存退出voidexit0(){FILE*fp;intk;alp:if((fp=fopen(sore.txt,w))==NULL){printf(创建文件失败\n);printf(1*****重试\n);printf(2*****强制退出(数据将不会保存到文件)\n);printf(3*****回到主菜单\n);alj:scanf(%d,&k);if(k==1)gotoalp;elseif(k==2)exit(0);elseif(k==3)return;else{printf(输入错误,请重新输入:);gotoalj;}}fprintf(fp,\n\n);fprintf(fp,运动会分数统计表\n\n\n);fprintf(fp,项目代号);for(i=1;i=c+d;i++)fprintf(fp,%5d,i);fprintf(
本文标题:校际运动会管理系统说明书
链接地址:https://www.777doc.com/doc-5263301 .html