• 436.33 KB
  • 2022-09-27 发布

c语言程序设计运动会成绩统计系统

  • 20页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档由用户上传,淘文库整理发布,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,请立即联系网站客服。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细阅读内容确认后进行付费下载。
  4. 网站客服QQ:403074932
程序设计工程训练报告运动会分数统计系统课程名称C语言程序设计工程训练姓名院(系)信息科学与技术学院专业班级学号指导教师教务处制\n目录1需求分析........................................................................................................................................................12系统总框图和功能模块说明.......................................................................................................................22.1系统总框图.........................................................................................................................................22.2功能模块说明.....................................................................................................................................23系统设计........................................................................................................................................................33.1主要结构体...........................................................................................................................................33.2主要功能函数........................................................................................................................................33.3关键函数的流程图..............................................................................................................................44系统调试........................................................................................................................................................45总结................................................................................................................................................................76源程序清单..................................................................................................................................................71\n1需求分析1问题描述运动会分数统计参加运动会有n个学校,学校编号为1……n。比赛分成m个男子项目,和w个女子项目。项目编号为男子1~m,女子m+1~m+w。不同的项目取前五名或前三名积分;取前五名的积分分别为:7、5、3、2、1,前三名的积分分别为:5、3、2;哪些项目取前五名或前三名由使用者设定。(m<=20,n<=20)2.基本要求: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退出;1\n2系统总框图和功能模块说明2.1系统总框图启动程序录入学校数,男、女子组数显示主目录输统统按按按按按入计计学男女学项成各各校团团校目绩校校总体体编编分分总总号号数个查项排分分查序询目排排询取得输序序学得分出输输校前出出某三个名项或前目五的名成的绩学校用户选择某命令,产生相应的操作显示结果,用户选择返回主目录或退出退出程序2.2功能模块说明1)输入:1输入成绩;···························输入某一项目的成绩2)输入:2统计各校总分;···········统计各校所有项目总分之和3)输入:3统计各校项目得分;·······输出各校各项目得分4)输入:4按学校总分排序输出;·······按照总分从大到小排序5)输入:5按男团体总分排序输出;····仅按照男子团体总分从大到小排序2\n6)输入:6按女团体总分排序输出;····仅按照女子团体总分从大到小排序7)输入:7按学校编号查询学校某个项目的成绩;···输入学校编号及项目编号可查询该校的该项目成绩8)输入:8按项目编号查询取得前三名或前五名的学校;···输入项目编号可查询该项目获得名次的学校9)输入:0退出;······退出系统3系统设计3.1主要结构体菜单号choo学校:num项目:ab男团、de女团、ke3.2主要功能函数voidexit0()voidinput()voideach()voidbiaohao()voidzongfen()voidnanzong()voidnvzong()voidxuexiao()voidxiangmu()voidmain()3\n3.3关键函数的流程图voidexit0()voidinput()voideach()voidbiaohao()voidzongfen()voidnanzong()voidnvzong()voidxuexiao()voidxiangmu()voidmain()4系统调试<1>开始界面,分别输入3、7、3.输入1后显示4\n输入2后显示输入3后显示输入4后显示输入5后显示5\n输入6后显示输入7后显示输入8后显示6\n输入9》》》》退出5总结本次课程设计检验了我的实践能力,感觉自己还有许多东西要学习,并不仅限于课本上的知识,实践才是真理,在学习中实践,实践中去学习。学习的路很长。再有要多问,几个人共同讨论会有意想不到的效果6源程序清单#include#includeinta,b,c,d,i,j;structnode{intnum;};structnode*f[22];voidexit0(){FILE*fp;intk;alp:if((fp=fopen("e:\\sore.txt","w"))==NULL){printf("createrror\n");printf("1*****tryagain\n");printf("2*****tuichu\n");printf("3*****returnmenu\n");//回到主菜单//7\nalj:scanf("%d",&k);if(k==1)gotoalp;elseif(k==2)exit(0);elseif(k==3)return;else{printf("输入错误,请重新输入:");gotoalj;}}printf(fp,"\n\n");fprintf(fp,"*运动会分数统计表*\n\n\n");printf(fp,"*项目代号*");for(i=1;i<=c+d;i++)printf(fp,"%5d",i);printf(fp,"");printf(fp,"\n*学校代号*");for(i=1;i<=a;i++){printf(fp,"%10d",i);for(b=1;b<=c+d;b++){printf(fp,"%5d",f[i][b].num);}printf(fp,"\n");}printf(fp,"\n\n");printf(fp,"the%dschoolnumbers\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);}/*主菜单*/intchoose(){intchoo;printf("\n\n1******输入成绩\n");printf("2******统计各学校的总分\n");printf("3******统计各学校各项目的得分\n");printf("4******按学校总分排序输出\n");8\nprintf("5******按男团体总分排序输出\n");printf("6******按女团体总分排序输出\n");printf("7******按学校编号查询学校某个项目的成绩\n");printf("8******按项目编号查询取得前三或前五名的学校\n");printf("9******退出\n\n");printf("请选择:");scanf("%d",&choo);return(choo-1);}/*输入信息*/voidinput(){intab,ac,ae,af,g=1,get[5]={0,0,0,0,0};printf("\n请输入项目代号:");ale:scanf("%d",&ab);if(ab>c+d||ab<1){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");//不要,待查证后再录入//scanf("%d",&af);if(af==2){printf("已取消录入!\n");return;}elseif(af==1){for(i=1;i<=a;i++){9\nif(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");//选择得分标准//printf("3-------以前三名\n");printf("5-------以前五名\n");scanf("%d",&ac);if(ac==3){printf("请按照第一、第二、第三的名次依次输入获胜学校代号:");af=5;for(i=0;i<3;i++){alq:scanf("%d",&ae);if(ae>a||ae<1){printf("%d学校代号不存在,重新输入第%d名的学校代号:",ae,g);gotoalq;}for(b=0;b<5;b++){if(ae==get[b]){printf("同一个学校不能在同一项目中有两个名次,请重新输入第%d名的学校代号:",g);gotoalq;}elseget[b]=ae;}f[ae][0].num=f[ae][0].num+af;f[ae][ab].num=af;if(ab<=c)10\nf[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(af>3)af=af-2;elseaf--;g++;}}elseif(ac==5){printf("请按照第一、第二、第三、第四、第五的名次依次输入获胜学校代号:");af=7;for(i=0;i<5;i++){alw:scanf("%d",&ae);if(ae>a||ae<1){printf("%d学校代号不存在,重新输入第%d名的学校代号:",ae,g);gotoalw;}for(b=0;b<5;b++){if(ae==get[b]){printf("同一个学校不能在同一项目中有两个名次,请重新输入第%d名的学校代号:",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(af>3)af=af-2;elseaf--;g++;}}11\nelsegotoal;printf("输入完成!\n");}/*学校成绩*/voideach(){printf("\n学校代号:团体总成绩\n");for(i=1;i<=a;i++){printf("%d:%d\n",i,f[i][0].num);}}/*各项目成绩*/voidbiaohao(){printf("\n项目代号:");for(i=1;i<=c+d;i++){if(i>9)printf("%d",i);elseprintf("%5d",i);}printf("\n学校代号:\n");for(i=1;i<=a;i++){printf("%7d",i);for(b=1;b<=c+d;b++){if(f[i][b].num>9)printf("%6d",f[i][b].num);elseprintf("%7d",f[i][b].num);}printf("\n");}}/*按学校总分排序输出*/voidzongfen(){structnod12\n{intke;intnum;};intha;structnod*de;de=(structnod*)malloc(sizeof(structnod)*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++){printf("%d:%d\n",de[i].ke,de[i].num);}}/*按男子团队总分排序*/voidnanzong(){structnod{intke;intnum;};intha;structnod*de;de=(structnod*)malloc(sizeof(structnod)*a+1);13\nprintf("\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++){printf("%d:%d\n",de[i].ke,de[i].num);}}/*按女子团队总分排序*/voidnvzong(){structnod{intke;intnum;};intha;structnod*de;de=(structnod*)malloc(sizeof(structnod)*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++)14\n{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);}}/*按学校编号查询学校某个项目的成绩*/voidxuexiao(){intdr,dt;printf("\n要查询的学校代号:");aly:scanf("%d",&dr);if(dr>a||dr<1){printf("学校代号不存在,重新输入:");gotoaly;}printf("要查询的项目代号:");alo:scanf("%d",&dt);if(dt>c+d||dt<1){printf("项目代号不存在,重新输入:");gotoalo;}printf("第%d所学校的第%d项目成绩为%d\n",dr,dt,f[dr][dt].num);}/*按项目编号查询取得前三或前五名的学校*/voidxiangmu(){intge,sedy=0;15\nprintf("\n要查询的项目代号:");all:scanf("%d",&ge);if(ge>c+d||ge<1){printf("没有此项目代号,重新输入:\n");gotoall;}for(i=1;i<=a;i++){if(f[i][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");for(i=7;i>0;i--){for(b=1;b<=a;b++){if(f[b][ge].num==i)printf("%d号学校\n",b);}}}void(*g[])()={input,each,biaohao,zongfen,nanzong,nvzong,xuexiao,xiangmu,exit0};/*主函数*/voidmain(){intchoos;printf("\n\n***运动会分数统计***\n\n\n");printf("共有多少个学校参赛:");16\nscanf("%d",&a);while(a<=0||a>20){if(a<=0){printf("\n参赛学校个数不能是负数或零\n\n");printf("共有多少个学校参赛:");scanf("%d",&a);}if(a>20){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(choos<0||choos>8)choos=choose();(*g[choos])();printf("\n");choos=choose();}}17\n程序设计工程训练成绩评定标准表明细项目评分等级(含系数)评分分值实际得分考勤A(1)B(0.8)C(0.5)D(0.0)10工程项目规范A(1)B(0.8)C(0.5)D(0.2)10工程训练报告A(1)B(0.8)C(0.5)D(0.2)30设计作品质量A(1)B(0.8)C(0.5)D(0.2)45材料收集情况A(1)B(0.8)C(0.5)D(0.2)5优良中合格不合格综合评分90-10080-8970-7960-690-59该生成绩为:,指导老师(签名):评定日期:年月日18

相关文档