程序设计工程训练 报告运动会分数统计系统课程名称 姓名 院(系) 专业班级 学号 指导教师教务处制C 语言程序设计工程训练 信息科学与技术学院1 需求分析. (1)2 系统总框图和功能模块说明 (2)2.1 系统总框图 (2)2.2 功能模块说明 (2)3 系统设计. (3)3.1 主要结构体 (3)3.2 主要功能函数 (3)3.3 关键函数的流程图 (4)4 系统调试. (4)5 总结. (7)6 源程序清单. (7)1需求分析1问题描述运动会分数统计参加运动会有n个学校,学校编号为1……n。
比赛分成m个男子项目,和w个女子项目。
项目编号为男子1〜m女子m+仁m+w不同的项目取前五名或前三名积分;取前五名的积分分别为:7、5、3、2、1,前三名的积分分别为:5、3、2;哪些项目取前五名或前三名由使用者设定。
(m<=20 ,n <=202. 基本要求:1) 可以输入各个项目的前三名或前五名的成绩;2) 能统计各学校总分;3) 可以按学校编号、学校总分、男女团体总分排序输出;4) 可以按学校编号查询学校某个项目的情况;5) 可以按项目编号查询取得前三或前五名的学校。
3. 测试数据1) 首先进入成绩录入界面,先输入参赛学校数,再输入男子组数和女子组数;2) 然后进入总目录;3) 输入:1输入成绩;4) 输入:2统计各校总分;5) 输入:3统计各校项目得分;6) 输入:4按学校总分排序输出;7) 输入:5按男团体总分排序输出;8) 输入:6按女团体总分排序输出;9) 输入:7按学校编号查询学校某个项目的成绩;10) 输入:8按项目编号查询取得前三名或前五名的学校;11) 输入:0退出;2系统总框图和功能模块说明2.1 系统总框图2.2 功能模块说明1) 输入:1输入成绩;............. .............. 输入某一项目的成绩2)输入: 2统计各校总分;........ •…统计各校所有项目总分之和3)输入:3 统计各校项目得分;••…•…输出各校各项目得分4)输入:4 按学校总分排序输出;………按照总分从大到小排序5)输入:5 按男团体总分排序输出;••…仅按照男子团体总分从大到小排序6) 输入:6按女团体总分排序输出;••…仅按照女子团体总分从大到小排序按项目编号查询取得前三名或前五名的学校*按学校编号查询学校某个项目的成绩按女团体总分排序输出按男团体总分排序输出1『按学校总分排序输出1统计各校个项目得分7) 输入:7按学校编号查询学校某个项目的成绩;•…输入学校编号及项目编号可查询该校的该项目成绩8) 输入:8按项目编号查询取得前三名或前五名的学校;•…输入项目编号可查询该项目获得名次的学校9) 输入:0退出;....... 退出系统3系统设计3.1主要结构体菜单号choo学校:num项目:ab男团、de女团、ke3.2主要功能函数void exit0()void in put()void each()void biaohao()void zongfen()void nanzon g()void nvzon g()void xuexiao()void xia ngmu()void main()3.3关键函数的流程图void exitO()void input()void each() void biaohao()Z -----------------------------------------------------------------------------------------------------------------------------void zongfen() void nanzon g() void nvzon g()void xuexiao() void xia ngmu()void main()4系统调试<1>开始界面,分别输入3、7、3.***运动会分数统计* *输入1后显示请选拝'1请愉人项甘1先号:1请摻頭第一、第二 弟三的名输丸荻芝学校代号,I 输入完冋2 H M MH M M3 ****** 4MWKHWK 5****** fl****** 9S.总号号成各l i w -1的五目 1分个得岀的出询询刖2多47^7 有几几 共有有少男女12345676?绩的f的五旦项或 分辻一一得蛍某罚Kin分学职的杳一族备校目入井学男辜苗 充岳 dE-一yFC ■-濒一也--止*N1Q输入2后显示请如2 学校代号=团体总成绩 坝或 S个三 得拦屮臺前询i ^^t l w s-l r •■\计期勇玄于项冷 -1嗨绩的的五mr:刖1分 个三 得前八負^学取E 三1234 5 65^13-号号学校代号:团休总成绩 1 : 5 喊绩的f的五 IT —別1分±-・ 得普某 ..屮出逆肆得 /且幫 «遗询<a备杳一二 一刖吨,^・小••戏J.•戏 " 二二一二冷 * * 二★二舞二 砂二一映123456789输入5后显示请选择;5学校代号:男子团体总成绩1 : 5输入6后显示 请选择;6学校代号:女子团体总成绩请选7更查询的学校1弋号’ 1 吏查询曲项刖弋号;1I 1所牟屜第1项目成绩为5肾学校un^刖分 得岀岀某前的出 分an^yt学取 询 分忌总号号叢S子总 成各&雇3JJ 检目 入^#学男玄子 H个一一二输入8后显示12345678校.学绩的f的五亘 项或个三岀岀某前 咸各鳥团团校目入丰学男十Z卄卄北二 I 二123456789分 得岀岀某前wiis八学取总询 的霽查分总总号号 成各套团里目入学男蛊子^^个_输入7后显示123J-5&78输入95总结本次课程设计检验了我的实践能力,感觉自己还有许多东西要学习,并不仅限于课本上的知识,实践才是真理,在学习中实践,实践中去学习。
学习的路很长。
再有要多问,几个人共同讨论会有意想不到的效果6源程序清单#in clude<stdio.h>#in clude<stdlib.h>int a,b,c,d,i,j;struct node{int num;};struct node *f[22];void exitO(){FILE *fp;int k;alp:if((fp=fope n( "e:\\sore.txt","w"))==NULL){prin tf("creat error\ n");prin tf(" 1*****try agai n\n");printf(" 2*****tui chu\n");printf(” 3*****return men u\n"); //回到主菜单//alj: scanf("%d",&k); if(k==1) goto alp;else if(k==2) exit(O);else if(k==3) return;else {printf(”输入错误,请重新输入:");goto alj;}} prin tf(fp,"\n\n");fprintf(fp," * 运动会分数统计表*\n\n\n");printf(fp," * 项目代号*");for(i=1;i<=c+d;i++)prin tf(fp,"%5d",i);prin tf(fp,"");printf(fp,"\n * 学校代号*");for(i=1;i<=a;i++){prin tf(fp,"%10d ",i);for(b=1;b<=c+d;b++){prin tf(fp,"%5d",f[i][b] .n um);}prin tf(fp,"\n");} prin tf(fp,"\n\n");printf(fp," the %d school numbers\n\n",a); /* 注:本次运动会有%d个学校参赛*/printf(fp," 1 ~ %d组是男子组,%d~ %d组是女子组\n",c,c+1,c+d); /* 其中1 ~ %d组是男子组,%d ~ %d组是女子组*/printf("\n* 比赛成绩已保存到当前路径下的sore.txt 文件中*\n\n");/* 比赛成绩已保存到当前路径下的"sore.txt" 文件中*/fclose(fp);exit(1);}/*主菜单*/int choose(){int choo;prin tf("\n\n 1******printf(” 2******printf(” 3****** printf(” 4******输入成绩\n");统计各学校的总分\n"); 统计各学校各项目的得分\n"); 按学校总分排序输出\n");printf(” 5****** 按男团体总分排序输出\n");printf(” 6****** 按女团体总分排序输出\n");printf(” 7****** 按学校编号查询学校某个项目的成绩\n"); printf(” 8****** 按项目编号查询取得前三或前五名的学校\n"); printf(” 9****** 退出\n\n ”);prin tf(" 请选择:");sea nf("%d",&choo);return(choo-l);}/*输入信息*/void in put(){int ab,ac,ae,af,g=1,get[5]={0,0,0,0,0};prin tf("\n 请输入项目代号:");ale:sca nf("%d",&ab);if(ab>c+d||ab<1){printf("\n 此项目代号不存在,重新输入:\n");goto ale;}ae=0;for(i=0;i<=a;i++){if(f[i][ab]. nu m!=0){ae=1;break;}}if(ae==1){al2: prin tf("\n 此项目成绩已被录入过,是否要重新录入:\n"); // 是否要重新录入(您输入的项目代号可能有误,强烈建议您查证后再录入) printf(” 1++++是\n");〃(若重新录入,以前的该项目成绩将被删除) printf(” 2++++否\n ”);//不要,待查证后再录入//sca nf("%d",&af);if(af==2){printf(" 已取消录入!\n");return;}else if(af==1){for(i=1;i<=a;i++){ 此项目成绩曾经已被录入过, ////if(f[i][ab]. nu m!=0){f[i][O]. num=f[i][0]. nu m-f[i][ab]. num;if(ab<=c)f[i][c+d+1]. num=f[i][c+d+1]. nu m-f[i][ab]. num;elsef[i][c+d+2]. num=f[i][c+d+2]. nu m-f[i][ab]. num;}f[i][ab] .n um=0;}}elsegoto al2;}al: printf("\n 此项目是以前几名为胜出者:\n"); // 选择得分标准//printf(” 3 ------ 以前三名\n");printf(” 5 ------ 以前五名\n");sca nf("%d",&ac);if(ac==3){prin tf(" 请按照第一、第二、第三的名次依次输入获胜学校代号:");af=5;for(i=0;i<3;i++){alq: scan f("%d", &ae);if(ae>a||ae<1){printf(” %d 学校代号不存在,重新输入第%d名的学校代号:",ae,g);goto alq;}for(b=0;b<5;b++){if(ae==get[b]){",g); printf(" 同一个学校不能在同一项目中有两个名次,请重新输入第%d£的学校代号:goto alq;}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]. nu m+af;f[ae][c+d+2]. num=f[ae][c+d+2]. num+af;if(af>3)af=af-2;elseaf■-;g++;}}else if(ac==5){prin tf(" 请按照第一、第二、第三、第四、第五的名次依次输入获胜学校代号:");af=7;for(i=0;i<5;i++){alw: scan f("%d",&ae);if(ae>a||ae<1){printf(” %d 学校代号不存在,重新输入第%d名的学校代号:",ae,g);goto alw;}for(b=0;b<5;b++){if(ae==get[b]){",g); printf(" 同一个学校不能在同一项目中有两个名次,请重新输入第%d£的学校代号:goto alw;}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]. nu m+af;elsef[ae][c+d+2]. num=f[ae][c+d+2]. num+af;if(af>3)af=af-2;elseaf■-;g++;}}elseprintf(" 输入完成! \n");}/*学校成绩*/void each(){printf("\n 学校代号:团体总成绩\n"); for(i=1;i<=a;i++){printf(" %d : %d\n",i,f[i][0] .n um); }}/*各项目成绩*/void biaohao(){prin tf("\n 项目代号:”);for(i=1;i<=c+d;i++){if(i>9)prin tf(" %d ",i);elseprin tf("%5d ",i);}prin tf("\n 学校代号:\n");for(i=1;i<=a;i++){prin tf("%7d ",i);for(b=1;b<=c+d;b++){if(f[i][b]. nu m>9)prin tf("%6d",f[i][b]. nu m);elseprin tf("%7d",f[i][b]. nu m);}prin tf("\n");}}/*按学校总分排序输出*/void zongfen(){struct nod{int num;};int ha;struct nod *de;de=(struct nod *)malloc(sizeof(struct no d)*a+1); 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(b=i;b<=a;b++){if(de[b]. num >de[i]. num){ha=de[b].ke;de[b].ke=de[i].ke;de[i].ke=ha;ha=de[b]. num;de[b]. num=de[i]. num;de[i]. num=ha;}}}for(i=1;i<=a;i++){prin tf(" %d : %d\n",de[i].ke,de[i]. nu m);}}/*按男子团队总分排序*/void nanzon g(){struct nod{int ke;int num;};int ha;struct nod *de;de=(struct nod *)malloc(sizeof(struct no d)*a+1); 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(b=i;b<=a;b++){if(de[b]. num >de[i]. num){ha=de[b].ke;de[b].ke=de[i].ke;de[i].ke=ha;ha=de[b]. num;de[b]. num=de[i]. num;de[i]. num=ha;}}}for(i=1;i<=a;i++){prin tf(" %d : %d\n",de[i].ke,de[i]. nu m);}}/*按女子团队总分排序*/void nvzon g(){struct nod{int ke;int num;};int ha;struct nod *de;de=(struct nod *)malloc(sizeof(struct no d)*a+1); printf("\n 学校代号:女子团体总成绩\n"); for(i=1;i<=a;i++) {de[i].ke=i;de[i]. num=f[i][c+d+2]. num;}for(i=1;i<=a;i++){for(b=i;b<=a;b++){if(de[b]. num >de[i]. num){ha=de[b].ke;de[b].ke=de[i].ke;de[i].ke=ha;ha=de[b]. num;de[b]. num=de[i]. num;de[i]. num=ha;}}}for(i=1;i<=a;i++){printf(" %d : %d\n",de[i].ke,de[i].num);}}/*按学校编号查询学校某个项目的成绩*/void xuexiao(){int dr,dt;prin tf("\n 要查询的学校代号:");aly:sca nf("%d", &dr);if(dr>a||dr<1){printf(" 学校代号不存在,重新输入:");goto aly;}printf(”要查询的项目代号:");alo:sca nf("%d", &dt);if(dt>c+d||dt<1){printf(" 项目代号不存在,重新输入:");goto alo;}printf(”第%d 所学校的第%d 项目成绩为%d\n",dr,dt,f[dr][dt].num); }/*按项目编号查询取得前三或前五名的学校*/void xia ngmu(){int ge,sedy=0;prin tf("\n 要查询的项目代号:");all:sca nf("%d", &ge);if(ge>c+d||ge<1){printf(" 没有此项目代号,重新输入:\n");goto all;}for(i=1;i<=a;i++){if(f[i][ge]. nu m==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 ");for(i=7;i>0;i--){for(b=1;b<=a;b++){if(f[b][ge]. num==i)printf(” %d 号学校\n",b);}}}void(*g[])()={i nput,each,biaohao,z ongfen,nanzong,nvzon g,xuexiao,xia ngmu,exitO};/*主函数*/void mai n(){int choos;prin tf("\n\n * * * 运动会分数统计* * *\n\n\n");prin tf(" 共有多少个学校参赛:");sea nf("%d",&a);while(a<=0||a>20){if(a<=0){prin tf("\n 参赛学校个数不能是负数或零\n\n");prin tf(" 共有多少个学校参赛:");sca nf("%d",&a);}if(a>20){prin tf("\n 参赛学校个数不能大于20\n\n");prin tf(" 共有多少个学校参赛:");sca nf("%d",&a);}}prin tf(" 有几个男子组:");sca nf("%d",&c);prin tf(" 有几个女子组:");sca nf("%d", &d);for(i=0;i<=a;i++){f[i]=(struct node *)malloc(sizeof(struct no de)*(c+d+3)); for(j=0;j<=c+d+2;j++)f[i][j]. nu m=0;}choos=choose();while(1){while(choos<0||choos>8)choos=choose();(*g[choos])();prin tf("\n");choos=choose();}}程序设计工程训练成绩评定标准表欢迎您的光临,Word文档下载后可修改编辑.双击可删除页眉页脚•谢谢!你的意见是我进步的动力,希望您提出您宝贵的意见!让我们共同学习共同进步!学无止境•更上一层楼。