> 文档中心 > 数据结构项目一

数据结构项目一

项目一

  • 一、需求分析
  • 二、逻辑设计
  • 三、物理设计
  • 四、实验准备
    • 1.编程语言
    • 2.开发工具/平台

一、需求分析

【问题描述】
参加计算机设计大赛的n个学校编号为1-n,赛事分成m个项目,项目的编号为1-m比赛获奖按照得分降序,取前三名,写一个统计程序产生各种成绩单和得分报表。
【基本要求】
1)每个比赛项目至少有10支参赛队;每个学校最多有6支队伍参赛;
2)能统计各学校的总分;
3)可以按照学校编号或名称查询,学校的总分、各项目的总分排序输出;
4)可以按学校编号查询学校某个项目的获奖情况;可以按项目编号查询取得 前三名的学校;
5)数据存入文件并能随时查询
【设计要求】
1)输入数据形式和范围:可以输入学校的名称,赛事项目的名称。
2)输出形式:有中文提示,各学校分数为整数
3)界面要求:交互设计要合理,每个功能可以设立菜单,根据提示,完成相关功能的要求。
4)存储结构:学生自己根据系统功能要求自己设计,但是赛事相关数据要存储在文件中。


二、逻辑设计

可能需要用到的java数据结构、类,以及需要定义的方法:

Map类型数据://存放学校编号和名称    school    //存放项目编号和项目名称    events    //存放每个学校(名称)在每个项目上的得分    scoreOfEverySchool    //存放每个参赛队在每个项目上的得分    scoreOfEveryTeamList类型数据:    //存放每个项目的参赛队    teamInEveryEvent:length > 10    //存放每个学校的参赛队    teamInEverySchool:length <= 6    需要定义的模板类:Game函数: //递归调用该方法让所有队伍都完成比赛 playTheGame(schoolNumber,eventNumber){ //返回各种得分映射 return scoreOfEverySchool && scoreOfEveryTeam;  }  //对菜单栏进行定义  Menu  //调用Menu方法  Main    TotalScoreOfSchools 函数:      //按照学校编号查询学校总分      statisticsByNumber(schoolNumber)      //按照学校名称查询学校总分      statisticsByScname(schoolName)      //按照学校编号查询各项目总分      statisticsByScscore(schoolNumber)      //按照学校名称查询各项目总分   statisticsByEvscore(schoolName)   //排序方法,bool变量控制升降序输出      totalScoreSorting(boolean,传入参数1,传入参数2)      totalScoreSorting(boolean,传入参数1)    CheckSchoolAwards 函数:  //输入学校编号、项目编号,返回获奖情况  searchBySchoolNumber(schoolNumber,eventNumber)  //输入项目编号,返回在该项目上取得前三名的学校  searchByEventNumber(eventNumber)    Tools 函数:  //对.txt文件进行读取saveInFile

三、物理设计

程序执行流程:    运行程序,启动Main方法    Main(){ 调用Menu方法     }    Menu(){ switch语句选择进行比赛,调用playTheGame方法    return 比赛得分数据的Map查看比赛项目return 对应Map查看参赛学校return 对应Map查看比赛得分    if(得分Map不为空) switch 各种查看形式    else 输出:"比赛还未进行,数据为空"  return Main方法查看比赛获奖    if(得分Map不为空) switch 各种查看形式    else 输出:"比赛还未进行,数据为空" return Main方法    }各种函数的具体实现:    playTheGame(schoolNumber,eventNumber){ 生成随机数对比赛进行评分 将得分值赋给对应Map的键 遍历各Map     if(Map.value = null)  //递归调用直至所有比赛完成  playTheGame(schoolNumber,eventNumber)     else  //返回各得分数据的Map映射 return scoreOfEverySchool && scoreOfEveryTeam; } MenuMain//按照学校编号查询学校总分 statisticsByNumber(schoolNumber){ 函数{if(schoolNumber==scoreOfEverySchool.key){return schoolNumber}else{继续查找}}    定义float类型变量sumOfScore = 0在集合scoreOfEverySchool中找到学校名称下的所有得分每找到一次就对sumOfScore进行累加 return sumOfScore    }    //按照学校名称查询学校总分    statisticsByScname(schoolName){    定义float类型变量sumOfScore = 0在集合scoreOfEverySchool中找到学校名称下的所有得分每找到一次就对sumOfScore进行累加 return sumOfScore}    //按照学校编号查询各项目总分    statisticsByScscore(schoolNumber){    函数A{if(schoolNumber==scoreOfEverySchool.key){return schoolNumber}else{继续查找}}定义多个float类型变量 = 0;用来记录个项目得分     输入学校编号,遍历集合scoreOfEverySchool并找到学校编号对应的     所有得分    把同一类的项目得分累加到同一个float变量 returnfloat变量即为学校在个项目的得分    }    //按照学校名称查询各项目总分    statisticsByEvscore(schoolName){  定义多个float类型变量 = 0;用来记录个项目得分     输入学校名称,遍历集合scoreOfEverySchool并找到学校名称对应的     所有得分    把同一类的项目得分累加到同一个float变量 returnfloat变量即为学校在个项目的得分    }//排序方法,bool变量控制升降序输出totalScoreSorting(boolean,传入参数1,传入参数2){  冒泡升序  冒泡降序}//输入学校编号、项目编号,返回获奖情况    searchBySchoolNumber(schoolNumber,eventNumber){if(schoolNumber==scoreOfEverySchool.key){if(scoreOfEveryTeam.key==eventNumber){totalScoreSorting(bool,schoolNumber,eventNumber){return 该学校在该项目上的升序或降序得分排序}}else{searchBySchoolNumber(schoolNumber,eventNumber) }}else{searchBySchoolNumber(schoolNumber,eventNumber)}if(该学校在该项目上的升序或降序得分排序在前三名){switch:该学校在该项目上的升序或降序得分排序在第1return'金牌'该学校在该项目上的升序或降序得分排序在第2return'银牌牌'该学校在该项目上的升序或降序得分排序在第3return'铜牌'}else{sout('该学校在该项目上没有获奖')return Menu}}    //输入项目编号,返回在该项目上取得前三名的学校    searchByEventNumber(eventNumber){if(scoreOfEveryTeam.key==eventNumber){totalScoreSorting(bool,eventNumber){return 在该项目上得分的所有学校}}else{searchByEventNumber(eventNumber) } sout(在该项目上得分的所有学校中的前三名)}//对.txt文件进行读取    saveInFile{使用文件流实现.txt文件的读取操作}

根据上述设计进行代码的开发,实际开发中该方案可能会有改动

四、实验准备

1.编程语言

java

2.开发工具/平台

IDEA

开发者涨薪指南 数据结构项目一 48位大咖的思考法则、工作方式、逻辑体系在线造句网