1、typedef struct int item; /*项目编号*/ Schools *firstschool; /*链域指向链表中第一个结点*/ITEM;typedef struct int z; /* 项目总数 */ ITEM aMAX;ALLitems;typedef struct node2 /*该学校获奖的项目*/ /*项目成绩*/ struct node2 *next; /*链域*/ Items; /*学校编号*/ int score; /*学校总分*/ int boys; /*男团体总分*/ int girls; /*女团体总分*/ Items *firstitem; /*链域指向
2、链表中第一个获奖项目的结点*/ SCHNode; int n; /* 学校总数 */ SCHNode bMAX;ALLNode;3.2数据存储结构以链表和数组实现4 总体设计4.1 系统模块图图4.1 系统模块图 4.2数组和链表的基本操作输入阶段,数组作为链表的数据域,将数据存放在数组的各个成员中。输出阶段,将存储在数组中的数据进行调用,通过按数组中同一成员不同项目的大小不同来进行比较,来进行排序。5 详细设计5.1主函数流程图图5.1 主函数流程图5.2输入各个项目成绩的函数流程图图5.2输入各个项目成绩的函数流程图5.3比赛成绩排序输出函数流程图图5.3比赛成绩排序输出函数流程图6 测试
3、结果及分析6.1主菜单窗口图6.1主菜单窗口6.2输入各个项目成绩并存储文件请选择(08):1 进入输入各个项目成绩并存储文件图6.21进入输入各个项目成绩界面输入男子项目总数m:2 输入女子项目总数w:输入参加运动会的学校总数n: 3图6.22输入项目和学校总数输入 项目:1 请选择1(1.前三名2.前五名)第3名:学校3第2名:2第1名:1项目:2 请选择1(1.前三名2.前五名)3 请选择1(1.前三名2.前五名)4 请选择1(1.前三名2.前五名)图6.23输入项目信息0 返回到主菜单窗口图6.24返回主界面 6.3统计各学校总分2 进入统计各学校总分图6.3统计各学校总分6.4按学校
4、编号排序输出请按任意键继续 0 返回到主菜单窗口 3 按学校编号排序输出图6.4按学校编号排序输出6.5按学校总分排序输出请按任意键继续 0 返回到菜单主界面4 按学校总分排序输出图6.5按学校总分排序输出6.6按男团体总分排序输出请按任意键继续 0 返回到菜单主界面 5 按男团体总分排序输出图6.6按男团体总分排序输出6.7按女团体总分排序输出6 按女团体总分排序输出图6.7按女团体总分排序输出6.8按学校编号查询学校某个项目情况 7 按学校编号查询学校某个项目情况图6.8按学校编号查询学校某个项目情况6.9按项目编号查询取得名次的学校8 按项目编号查询取得名次的学校图6.9按项目编号查询取
5、得名次的学校7 心得体会本次课程设计,不仅检验了我的实践能力,也让自己可以很明确的了解到自己哪些知识点掌握的比较好,哪些知识点运用的还不够熟练。同时通过与组员和老师之间的交流,学到了很多自己所不了解的知识,多问,多学,实践与团队合作,才是关键。附录:程序代码#include stdlib.hstring.hio.h#define MAX 50 ALLitems *g1;ALLNode *g2;/*函数名:funct1 *函数功能:输入各项目成绩 *形参:LLitems *g1,ALLNode *g2 *返回值:无 */ void funct1(ALLitems *g1,ALLNode *g2)
6、 Schools *p1; Items *p2; int i,j,k,m,w,h,x; p1=(Schools *)malloc(sizeof(Schools); p2=(Items *)malloc(sizeof(Items); if(!p1|!p2) exit(1); printf(n *输入各个项目信息 * nn); 输入男子项目总数m: scanf(%d,&m); if(m20) printf( 输入有误,m是20以内的整数,请重新输入: scanf( 输入女子项目总数w:w); if(w 输入有误,w是20以内的整数,请重新输入: 输入参加运动会的学校总数n:g2-n); if(g2
7、-nn 输入有误,n是20以内的整数,请重新输入: g1-z=m+w; 则项目编号为男子1-%d,女子%d-%d,m,m+1,g1-z);nn *记录运动会成绩*nn (输入0标志结束)n for(k=1;kz;k+) g1-ak.item=k;ak.firstschool=NULL;=g2-n; g2-bk.school=k;bk.firstitem=0;bk.score=0;bk.boys=0;bk.girls=0; g2-b0.score=0;b0.boys=0;b0.girls=0; while(i!=0) n 项目:i); if(i!=0) printf( 1.前三名 2.前五名n
8、请选择: scanf(j); if(j!=1&j!=2) printf( 输入有误,请重新选择: scanf( if(j=1) h=3; do printf( 第%d名:学校(学校编号为数字),h);x); p1=(Schools *)malloc(sizeof(Schools); p1-school=x; p2=(Items *)malloc(sizeof(Items); p2-item=i; if(h=3) p2-record=p1-record=2; if(h=2) p2-record=3; if(h=1) p2-record=5;next=g1-ai.firstschool; g1-a
9、i.firstschool=p1;next=g2-bx.firstitem; g2-bx.firstitem=p2;bx.score=g2-bx.score+p2-record; /* 累计总分 */ if(ibx.boys=g2-bx.boys+p2- /* 累计男团体总分 */ else g2-bx.girls=g2-bx.girls+p2- /* 累计女团体总分 */ h-; while(x!=0&h!=0); if(j=2) h=5; do printf( scanf( p1=(Schools *)malloc(sizeof(Schools); p1- p2=(Items *)mall
10、oc(sizeof(Items); p2- if(h=5) p2-record=1; if(h=4) p2- if(h=3) p2- if(h=2) p2- if(h=1) p2-record=7; g1- g2- if(i h-; save *保存文件 *void save() FILE *fp1,*fp2; fp1=(FILE *)malloc(sizeof(FILE); fp2=(FILE *)malloc(sizeof(FILE); if(fp1=fopen(sports1,wb)=NULL)cannot open file.n return; if(fwrite(g1,sizeof(
11、ALLitems),1,fp1)!=1)file write error.n fclose(fp1); if(fp2=fopen(sports2 if(fwrite(g2,sizeof(ALLNode),1,fp2)! fclose(fp2);funct2 *统计各学校总分 *ALLNode *g2 *void funct2(ALLNode *g2) /* 输出各学校总分 */ int k;nn * 输出各学校总分 *n 学校编号t 总分 nk+) %dttt %dn,k,g2-bk.score);n system(pause 按任意键返回主菜单. getchar();funct3 *按学校编
12、号排序输出 *void funct3(ALLNode *g2) /* 按学校编号排序输出 */ nn * 按学校编号排序输出 *n 学校编号ttt获奖情况 nk);t%dt,k); p2=g2-bk.firstitem; while(p2!=NULL)项目%d:得%d分 ,p2-item,p2-record); p2=p2-next;按任意键返回主菜单.funct4 *按学校总分排序输出 *void funct4(ALLNode *g2) /* 按学校总分排序输出 */ int i,j,k;nn * 按学校总分排序输出 *n 学校编号tt总分 n for(i=2;i while(p2! %d
13、tt%dn,g2-bk.school,g2- p2=p2- b0.score=g2-bi.score;b0.boys=g2-bi.boys;b0.girls=g2-bi.girls;b0.school=g2-bi.school; j=i-1; while(g2-b0.score0) g2-bj+1.score=g2-bj.score;bj+1.boys=g2-bj.boys;bj+1.girls=g2-bj.girls;bj+1.school=g2-bj.school; j-;b0.score;b0.boys;b0.girls;b0.school;funct5 *按男团体总分排序输出 *void funct5(ALLNode *g2) /* 按男团体总分排序输出 */ nn * 按男团体总分排序输出 *n学校编号tt男团体总分 ni+) =NULL) %dtt %dnbk.boys); b0.boysbj.boys&bj+1.schoo
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1