数据结构课程设计 项目一 计算机设计大赛赛事统计-预习

本文详细描述了一个针对计算机设计大赛的成绩管理系统的分析、设计与实现过程。系统涵盖了多个学校和项目,每个项目有多个参赛队伍,比赛按得分排名取前三名。系统需具备学校总分统计、项目排名输出、学校获奖查询、项目获奖学校查询等功能,并将数据存储于文件中。设计中涉及结构体定义、数据排序、函数实现等逻辑,以及物理存储的伪代码描述。
摘要由CSDN通过智能技术生成

文章目录

一、问题描述
二、基本要求与设计要求
1、基本要求
2、设计要求
三、问题分析和任务定义
四、逻辑设计
五、物理设计
六、程序编码

一、问题描述

参加计算机设计大赛的n个学校编号为1~n,赛事分成m个项目,项目的编号为1 ~m。比赛获奖按照得分降序,取前三名,写一个统计程序产生各种成绩单和得分报表。

二、基本要求与设计要求

1、基本要求

1)每个比赛项目至少有10支参赛队;每个学校最多有6支队伍参赛;每个学校的每个参赛队伍只能参加一个赛事项目;
2)能统计各学校的总分;
3)可以按照学校编号或名称查询,学校的总分、各项目的总分排序输出;
4)可以按学校编号查询学校某个项目的获奖情况;可以按项目编号查询取得前三名的学校;
5)数据存入文件并能随时查询

2、设计要求

1)输入数据形式和范围:可以输入学校的名称,赛事项目的名称。
2)输出形式:有中文提示,各学校分数为整数
3)界面要求:交互设计要合理,每个功能可以设立菜单,根据提示,完成相关功能的要求。
4)存储结构:学生自己根据系统功能要求自己设计,但是赛事相关数据要存储在文件中。

【测试数据】
要求使用全部合法数据,整体非法数据,局部非法数据。进行程序测试,以保证程序的稳定。
【实现提示】
假设3<赛事项目数量<=10,学校名称长度不超过20个字符。每个赛事结束时,将其编号、名称输入,并依次输入参赛学校编号、学校名称和成绩。

三、问题分析和任务定义

1、分析:n个学校,m个赛事项目(3<m<=10),每个比赛有a支参赛队(a>=10),每个学校有b个队伍参赛(b<=6),n个学校有nb个参赛队伍,m个项目有am个参赛队伍,且每个学校的每个参赛队伍只能参加一个赛事项目;
获奖状态有四种:一等奖(first),二等奖(second),三等奖(third),没获奖(none)。

2、需要统计的数据: (1)每个学校的总分 ; (2)每种比赛项目的分数排名; (3)每个学校的获奖情况 ; (4)每种比赛项目的获奖情况。

3、需要完成的测试功能: (1)按照学校编号或名称查询学校的总分、各项目的总分排序输出;
(2)按学校编号查询学校某个项目的获奖情况; (3)可以按项目编号查询取得前三名的学校(注意并列的情况);

四、逻辑设计

1)变量的类型说明:
用School结构体
学校名称string型
学校编号string型
参赛的队伍数量int型
用结构体Team
队伍所在学校string型
获得的成绩int型
项目为string型

2)变量说明:
school[n]表示参加的学校数组(School类型);
project[m]表示比赛项目(string);
team[a]表示参加的队伍(Team类型)。
perpro_people[m]记录参加各项目的人数;
ranking[m]记录各项目的排名(Team);
all[n]记录学校的总分。
(a=各学校参赛队伍总和,每个项目>=10,每个学校<=6)

3)函数说明:
Prim()函数用来对处理的数据进行初始化;
用sort()函数进行排序;
Sum()函数进行学校求总分并输出;
Print1()对各项目排序输出;
Acquire()函数用来学校查询;
Print2()用于项目三种等奖的输出;
main()主函数用于界面设计和各种函数调用。

五、物理设计

伪代码:
结构体Team:string 项目,学校;int 成绩
结构体School:string 名字 编码;int 队伍数
School school[n];
string project[m];
int perpro_people[m];
Team team[a];
Prim(){初始化 school[n],project[m],team[a];计算出 perpro_people[m];}
sort(){对team[a]中的数据按项目排序成perpro_people[m]}
Sum(){按学校对c[k]中的数据进行求和再输出}
Print1(){对ranking[m]进行输出}
Acquire(){用来学校在ranking[m]中进行获奖情况查询}
Print2(){用ranking[m]对三种等奖进行输出}
main(){调用Prim();调用sort();界面设计;进行交互根据需要调用Sum(),Print1(),Print2(),Acquire();}

六、程序编码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值