数据结构课程设计报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据结构课程设计报告
题目:运动会分数统计 东北大学秦皇岛分校
目录
一、题目
二、时间
三、程序要求
四、数据结构设计
1.概述
2.关键算法
3.查询操作
五、详细代码
六、测试结果
1.主菜单窗口
3. 统计各学校总分
4. 按学校编号排序输出
5. 按学校总分排序输出
6. 按男团体总分排序输出
7. 按女团体总分排序输出
8. 按学校编号查询学校某个项目情况
9. 按项目编号查询取得名次的学校
七、测试非法数据
八、课程设计总结
一、课程题目:运动会分数统计
一、时间:19-20周
二、任务:参加运动会有n个学校,学校编号为1……n。比赛分成m个男子项目,和
w个女子项目。项目编号为男子1……m,女子m+1……m+w。不同的项目取前五名或前三名积分;取前五名的积分分别为:7、5、3、2、1,前三名的积分分别为:5、3、2;
哪些取前五名或前三名由学生自己设定。(m<=20,n<=20)
要求:1) 可以输入各个项目的前三名或前五名的成绩;
2) 能统计各学校总分,
3) 可以按学校编号或名称、学校总分、男女团体总分排序输出;
4) 可以按学校编号查询学校某个项目的情况;可以按项目编号查询取得前三或前五名的学校。
5) 数据存入文件并能随时查询
6) 规定:输入数据形式和范围:可以输入学校的名称,运动项目的名称
输出形式:有中文提示,各学校分数为整形
界面要求:有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。
存储结构:学生自己根据系统功能要求自己设计,但是要求运动会的相关数据要存储在数据文件中。(数据文件的数据读写方法等相关内容在c语言程序设计的书上,请自学解决)请在最后的上交资料中指明你用到的存储结构;
测试数据:要求使用1、全部合法数据;2、整体非法数据;3、局部非法数据。进行程序测试,以保证程序的稳定。测试数据及测试结果请在上交的资料中写明;
三、数据结构设计:
1、概述:
程序中学校存储的链表为:
school类为:
class school:public athlete /*学校*/
{
……
public:
int count; /*学校获奖数*/
int serial; /*学校编号*/
int menscore; /*男选手总分*/
int womenscore; /*女选手总分*/
int totalscore; /*总分*/
athlete ath[MaxSize]; /*获奖运动员信息数组,包括分数,名次,项目*/
school *prev;//前指针
school *next; //后指针
};
其中部分主要的函数:
添加操作add(school* &head)
查询操作checkFunc(school *head,int &n)
文件保存save(school *head)
总分快速排序tquicksort(vector
总分基数排序 tbaseSort(vector
2.关键算法
{……
添加项目号
for ( i = 1 ; i <= n ; i++ )
{ 输入第i名运动员的学校编号temp
……
while(first!=head) //遍历链表,直到找到编号为serial的学校所在结点,或first指向表头head
{ if (first->serial ==要添加的编号)
{
(first->ath[first->count]).item =要添加的项目号;
(first->ath[first->count]).range =i(名次)
First指向的学校的项目加一;
更新总分
break; }
first = first->next;
……}
3.查询操作:
六、详细代码:
#include
#include
#include
//#include
#define MAX 50
//#define NULL 0
typedef struct node1{
int school; /*学校编号*/
int record; /*项目成绩*/
struct node1 *next; /*链域*/
}Schools;
typedef struct {
int item; /*项目编号*/
Schools *firstschool; /*链域指向链表中第一个结点*/
}ITEM;
typedef struct {
int z; /* 项目总数 */
ITEM a[MAX];
}ALLitems;
typedef struct node2 {
int item; /*该学校获奖的项目*/
int record; /*项目成绩*/
struct node2 *next; /*链域*/
}Items;
typedef struct {
int school; /*学校编号*/
int score; /*学校总分*/
int boys; /*男团体总分*/
int girls; /*女团体总分*/
Items *firstitem; /*链域指向链表中第一个获奖项目的结点*/ }SCHNode;
typedef struct {
int n; /* 学校总数 */
SCHNode b[MAX];
}ALLNode;
ALLitems *g1;
ALLNode *g2;
void funct1(ALLitems *g1,ALLNode *g2) { Schools *p1;
Items *p2;
int i,j,k,m,w,h,x;