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

目录

一、问题描述及基本要求

二、问题分析和任务定义

三、逻辑设计

四、物理设计


一、问题描述及基本要求

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

【基本要求】

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

【设计要求】

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

【测试数据】   要求使用全部合法数据,整体非法数据,局部非法数据。进行程序测试,以保证程序的稳定。

【实现提示】   假设3<赛事项目数量<=10,学校名称长度不超过20个字符。每个赛事结束时,将其编号、名称输入,并依次输入参赛学校编号、学校名称和成绩。

二、问题分析和任务定义

题目中没有给我们相应数据来处理,所以要自己生成。可以自己手动输入,也可以通过随机生成。在生成时要注意以下两点:             

  1. 总的比赛个数(a)和总的队伍数(b)要满足一定的条件:b/a>=10(每个比赛要至少10个队伍,每个学校最多6支队伍,所以学校数与比赛项目数有制约);                                 
  2. 用随机数时要注意使用,不然会生成一样的数据。

需要统计的数据: 

  1. 每个学校的总分 ;                                                                                                           
  2. 每种比赛的分数排名;                                                                                                   
  3. 每个学校的获奖情况 ;                                                                                                   
  4. 每种比赛的获奖情况。

需要完成的功能:     

  1. 照学校编号或名称查询,学校的总分输出;                                                                    
  2. 各项目的总分排序输出;                                                                                                
  3. 按学校编号查询学校某个项目的获奖情况;                                                                  
  4. 可以按项目编号查询取得前三名的学校(注意并列的情况);

三、逻辑设计

1)变量的类型说明:

  • 用一个结构体Team表示参赛队伍情况:参加的项目(string) 所在学校(string)获得成绩(int);               
  • 用一个结构体School来记录学校的信息其中有:学校的名称和编号(类型用string)参赛队伍的数(用int)。

2)变量说明:

  • a[n]表示参加的学校数组(School类型);                                                                             
  • b[m]表示比赛项目(string);                                                                                       
  • c[k]表示参加的队伍(Team类型)。                                                                     
  • d[m]记录参加各项目的人数;                                                                       
  • e[m][d[m]]记录各项目的排名(Team);                                             
  • f[n]记录学校的总分。                                                                                                             

(注:k=各学校参赛队伍总和,每个项目>=10,每个学校<=6) 

3)函数说明:   

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

    (算法 调用关系过于简单不进行描述)

四、物理设计

伪代码:

  1. 结构体Team:string 项目,学校;int 成绩                      
  2. 结构体School:string 名字 编码;int 队伍数                                                                           
  3. School a[n];                                                                                                                   
  4. string b[m];                                                                                                                     
  5. int d[m];                                                                                                                   
  6. Team c[k],e[m][100];                                                                                               
  7. Prim(){初始化 a[n],b[m],c[k];计算出 d[m];}                                                       
  8. sort(){对c[k]中的数据按项目排序成e[m][d[m]]}                                             
  9. Sum(){按学校对c[k]中的数据进行求和再输出}                                     
  10. Print1(){对e[m][d[m]]进行输出}                                                         
  11. Acquire(){用来学校在e[m][d[m]]中进行获奖情况查询}                         
  12. Print2(){用e[m][d[m]]对三种等奖进行输出}                                     
  13. main(){调用Prim();调用sort();界面设计;进行交互根据需要调用Sum(),Print1(),Print2(),Acquire();}
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值