姓名:丁文玲学号:53100824 2010级八班实验室:B212 提交日期:2012/8/22成绩指导老师 实验题目:运动会分数统计 问题解析(对问题的分析、理解和解题方法): 1:需求分析: 可以输入各个项目的前三名或前五名成绩 能统计各学校总分 可以按学校编号或名称,学校总分,男女团体总分排序输出 可按学校编号查询学校某个项目的情况,可以按项目编号查询取得前三或前五名的学校 数据存入文件并能随时查询 2:对问题分析,理解,解题方法: (1):为实现以上需求,可设计两个大的结构体schools,items,分别表示学校和项目,但又因每个学校实际是与其获奖的一些项目紧紧相连的,所以设计一个小的结构体school-node,其中包含链域,将学校的获奖项目通过链表串起来,在学校大结构体中设置一个school-node型指针来指向链表头指针。同理,items项目结构体有一个支持小结构体item-node。 (2):看要求可知,items结构体中需设置项目编号,项目名称,链表中第一个结点; Item-node结构体中需设置学校编号,项目成绩(可表明为第几名),链域;schools结构体中需设置学校编号,学校名称,学校总分,男团体总分,女团体总分,链表中第一个获奖项目的结点;school-node结构体中需设置该学校获奖的项目,项目成绩,链域。 (3):具体结构体设置如下: typedefstructitem_node{ int school; //学校编号 int record; //项目成绩 structitem_node *next; //链域 }item_node; typedefstructschool_node { int item; //该学校获奖的项目 int place; int record; //项目成绩 structschool_node *next; //链域 }school_node; typedefstruct { int item; //项目编号 char itemname[20];//项目名称 item_node *firstschool; //链表中第一个结点 int number; }items; typedefstruct { int school; //学校编号 char schoolname[20];//学校名称 int score; //学校总分 int boys; //男团体总分 int girls; //女团体总分 school_node *firstitem; //链表中第一个获奖项目的结点 }schools; (4):此结构体实现功能要求的机制: (a)输入的时候分别向schools结构体的链表中添加schoolnodes结点和向items结构体链表中添加Itemnodes结点。同时可统计学校总分,男团总分,女团总分。 (b)根据schools结构体中的school,score,boys,girls可实现按学校编号,学校总分,男团总分,女团总分排序输出。根据schools里的schoolnodes *firstitem,items结构体里的itemnodes *firstschool可实现查询。 (5):为实现良好的界面,使用system(“pause”),system(“cls”)以实现暂停和清屏功能,使界面更简洁,干净 (6):信息录入时每个项目有前三,前五的选择,在这应加选择语句。 数据结构选择: 四个结构体: typedefstructitem_node{ int school; //学校编号 int record; //项目成绩 structitem_node *next; //链域 }item_node; typedefstructschool_node { int item; //该学校获奖的项目 int place; int record; //项目成绩 structschool_node *next; //链域 }school_node; typedefstruct { int item; //项目编号 char itemname[20];//项目名称 item_node *firstschool; //链表中第一个结点 int number; }items; typedefstruct { int school; //学校编号 char schoolname[20];//学校名称 int score; //学校总分 int boys; //男团体总分 int girls; //女团体总分 school_node *firstitem; //链表中第一个获奖项目的结点 }schools; 算法设计: (1)对于input(): 首先输入男子项目总数m,输入女子项目总数w,学校总数n,(这三个数都为小于20的数,要有个判断输入是否错误).各项目名称,各学校名称,按项目依次录入信息:输入要录入的项目,选择前三还是前五,输入获奖学校,将这些信息添加到schools,items结构体中 (2)程序中用到的system(“pause”);其功能:运行的时候就可以出现“请按任意键以继续..”按任意键就能继续了(执行下以命令),由于我在程序中的下一条命令是“返回到菜单主界面”如果我不加这条命令的话,就会显示结果很快就返回到菜单主界面,很快,结果一显而过。 程序中用到的system(“cls”);其功能是清屏。就是将屏幕显示的内容清理掉的意思。 (3)具体代码: #include \\n\\n\"); cout<<\"学校编号提示:\"; for(int K=1;K<=n;K++) { cout<<\"NO.\"< 因篇幅问题不能全部显示,请点此查看更多更全内容