1、任务:参加运动会有n个学校,学校编号为1n。比赛分成m个男子项目,和w个女子项目。项目编号为男子1m,女子m+1m+w。不同的项目取前五名或前三名积分;取前五名的积分分别为:7、5、3、2、1,前三名的积分分别为:5、3、2;哪些取前五名或前三名由学生自己设定。(m=20,n=20,)功能要求:1) 可以输入各个项目的前三名或前五名的成绩;2) 能统计各学校总分,3) 可以按学校编号或名称、学校总分、男女团体总分排序输出;4) 可以按学校编号查询学校某个项目的情况;可以按项目编号查询取得前三或前五名的学校。5) 数据存入文件并能随时查询6) 规定:输入数据形式和范围:可以输入学校的名称,运动项
2、目的名称输出形式:有中文提示,各学校分数为整形;界面要求:有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求;存储结构:学生自己根据系统功能要求自己设计,但是要求运动会的相关数据要存储在数据文件中。(数据文件的数据读写方法等相关内容在c语言程序设计的书上,请自学解决)请在最后的上交资料中指明你用到的存储结构;测试数据:要求使用1、全部合法数据;2、整体非法数据;3、局部非法数据。进行程序测试,以保证程序的稳定。测试数据及测试结果请在上交的资料中写明;时间:2011年6月22日2011年6月28日星期二a) 需求分析程序功能:系统主要用于运动会分数统计方案;输入方式:键盘输入整
3、形数据输出方式:屏幕显示用户界面:中文菜单提示操作存储方式:存储结构为链表b) 设计概要本程序中学校的存储结构为链表:Prev school1 next头结点Prev school(最后) nextschool类为:class school:public athlete /*学校*/ public: int count; /*学校获奖数*/ int serial; /*学校编号*/ int menscore; /*男选手总分*/ int womenscore; /*女选手总分*/ int totalscore; /*总分*/ athlete athMaxSize; /*获奖运动员信息数组,包括
4、分数,名次,项目*/ school *prev;/前指针 school *next; /后指针;部分主要的函数:添加操作add(school* &head)查询操作checkFunc(school *head,int &n)文件保存save(school *head)总分快速排序tquicksort(vector& v, int first, int last)总分基数排序 tbaseSort(vector v, int d) 关键算法: 添加项目号for ( i = 1 ; i serial =要添加的编号) (first-athfirst-count).item =要添加的项目号;coun
5、t).range =i(名次) First指向的学校的项目加一;更新总分break;first = first-next;c)详细设计开始输入项目编号temp是数字NY0temp18输出“项目不存在”学校遍历结束temp存在Next schooltemp是奇数 取5名取3名输入获奖的学校编号se1se15项目号、名次、运动员名字添进学校所在结点继续添加结束查询操作:while(first!=head) if (输入的项目编号=学校第i位运动员的项目)把第i位运动员的项目,学校编号、名次、得分信息压入向量;输出向量中的内容 /按学校编号顺序输出所有参赛学校运动会成绩void serialSort
6、(vector v)for(int i=0;iv.size();i+)cout*vi;1. 按学校编号统计2. 按学校名次统计3. 按男团总分统计4. 按女团总分统计5. 返回查询菜单6. 返回主菜单1. 所有学校总分统计表2. 学校成绩查询3. 项目情况查询4. 返回主菜单详细代码:#include stdlib.hstring.hio.h/#include /*屏幕操作函数*/ #define MAX 50 /#define NULL 0 typedef struct node1 int school; /*学校编号*/ int record; /*项目成绩*/ struct node1
7、*next; /*链域*/ Schools; typedef struct int item; /*项目编号*/ Schools *firstschool; /*链域指向链表中第一个结点*/ ITEM;typedef struct int z; /* 项目总数 */ ITEM aMAX; ALLitems;typedef struct node2 int item; /*该学校获奖的项目*/ int record; struct node2 *next; Items; int score; /*学校总分*/ int boys; /*男团体总分*/ int girls; /*女团体总分*/ It
8、ems *firstitem; /*链域指向链表中第一个获奖项目的结点*/ SCHNode; int n; /* 学校总数 */ SCHNode bMAX; ALLNode;ALLitems *g1;ALLNode *g2;void funct1(ALLitems *g1,ALLNode *g2) 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); nn); printf(n *输入各个项目信息 * nn 输入男子项目总数m: scanf(%d,&m); if(m20) printf( 输入有误,m是20以内的整数,请重新输入: scanf( 输入女子项目总数w:w); if(w 输入有误,w是20以内的整数,请重新输入: 输入参加运动会的学校总数n:g2-n); if(g2-nn 输入有误,n是20以内的整数,请重新输入: g1-z=m+w; 则项目编号为男子1-%d,女子%d-%d,m,m+1,g1-z);nn *记录运
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1