一、运行工具和环境
运行工具:eclipse
运行环境:JDK 11.0.1
二、课程题目
设计运动会成绩管理系统,实现以下功能:
给3个运动项目各输入5名运动员的姓名、参赛号码、比赛成绩。
计算每个题目的平均成绩,最好成绩以及最差成绩。
每个项目的成绩按照降序排序。
判断每个项目是否有破纪录的运动员。
输入参赛号码查询每个运动员的成绩。
三、源程序
import java.util.Scanner;
public class PerformanceFind {
public static int mainMenu() { //主界面,同时判断进行菜单选择
Scanner sc = new Scanner(System.in);
System.out.println("======================Start=========================");
System.out.println(" |————————————运动会成绩管理系统——————————|");
System.out.println(" | 1.录入三种运动的数据 |");
System.out.println(" | 2.运动成绩统计与分析 |");
System.out.println(" | 3.比赛成绩以降序排列 |");
System.out.println(" | 4.比赛成绩破记录查询 |");
System.out.println(" | 5.查询某人比赛成绩 |");
System.out.println(" |—————————-——6.退出系统———————————————|");
System.out.println(" 请输入数字1~6进行选择:\n");
int cmd = sc.nextInt();
while(cmd < 0 || cmd > 7)
{
System.out.println("输入无效,请重新输入:\n");
cmd = sc.nextInt();
}
return cmd;
}
public static int menu(){
Scanner sc = new Scanner(System.in);
System.out.println(" |—————————————请输入要选择的项目—————————|");
System.out.println(" | 1.项目一 |");
System.out.println(" | |");
System.out.println(" | 2.项目二 |");
System.out.println(" | |");
System.out.println(" | 3.项目三 |");
System.out.println(" |————————————————————————————————|");
System.out.println(" 请输入数字1~3进行选择:\n");
int cmd = sc.nextInt();
while(cmd < 0 || cmd > 3)
{
System.out.println("输入无效,请重新输入:\n");
cmd = sc.nextInt();
}
return cmd;
}
public static void main(String[] args)
{
sport[] sportPerformance = new sport[3];
for(int i = 0; i < 3; i++) {
if(i == 0)
sportPerformance[i] = new sport("项目一", 80);
else if(i == 1)
sportPerformance[i] = new sport("项目二", 80);
else
sportPerformance[i] = new sport("项目三", 80);
}
int cmd = mainMenu();
while (cmd != 6) {
switch(cmd)
{
case 1:{
for(cmd = 1; cmd <= 3; cmd++){
System.out.println("请给"+sportPerformance[cmd-1].getSportName()+"输入5个运动员的信息:\n");
for (int i = 0; i < 5; i++) {
System.out.println("请输入第 " + (i+1) +" 个运动员的信息:\n");
sportPerformance[cmd-1].add();
}
}
}
break;
case 2:
{
cmd = menu();
System.out.println("项目"+sportPerformance[cmd-1].getSportName()+"的统计信息如下:\n");
System.out.println("平均成绩为:"+sportPerformance[cmd-1].average()+"\n");
System.out.println("最高成绩为:"+sportPerformance[cmd-1].find("best").playerScore+"\n");
System.out.println("最低成绩为:"+sportPerformance[cmd-1].find("worst").playerScore+"\n");
}
break;
case 3:
{
cmd = menu();
System.out.println("项目"+sportPerformance[cmd-1].getSportName()+"的成绩降序排列如下:\n");
sportPerformance[cmd-1].show();
}
break;
case 4:
{
cmd = menu();
System.out.println("项目"+sportPerformance[cmd-1].getSportName()+"打破记录的情况如下:\n");
sportPerformance[cmd-1].hasRecord();
}
break;
case 5:
{
cmd = menu();
sportPerformance[cmd-1].findID();
}
break;
default:
break;
}
cmd = mainMenu();
}
}
}
class player{ // 定义运动员类
int playerID;
String playerName;
int playerScore;
}
class sport{ //定义运动项目类
private String sportName; //运动项目名称
private int record; //运动项目的最高记录,默认为 80分
private player[] sport = new player[5]; //该项目的运动员列表
private int index = 0;
public sport(String name, int core) { //初始化运动项目,包括名称及最高记录
sportName = name;
record = core;
index = 0;
for(int i = 0; i < 5; i++)
sport[i] = new player();
}
public String getSportName() { //获取项目的名称
return sportName;
}
public void setRecord(int score) { //设置项目的最高记录
record = score;
}
public void add() { //添加运动员
Scanner sc = new Scanner(System.in);
System.out.println("请输入运动员姓名");
sport[index].playerName = sc.nextLine();
System.out.println("请输入运动员编号:");
sport[index].playerID = sc.nextInt();
System.out.println("请输入运动员得分:");
sport[index].playerScore = sc.nextInt();
index ++;
if(index == 5)
{
index = 0;
System.out.println(sportName+"的运动员信息输入成功");
}
}
public player find(String str){ // 根据str查找项目中的运动员信息,str取值包括{"best"、"worst"}两种
player resultPlayer = sport[0];
for(int i = 0; i < 5; i++)
{
if(str.equals("best")&&sport[i].playerScore>resultPlayer.playerScore)
resultPlayer = sport[i];
else if(str.equals("worst")&&sport[i].playerScore<resultPlayer.playerScore)
resultPlayer = sport[i];
}
return resultPlayer;
}
public double average(){ //计算项目的平均得分
int sum = 0;
for(int i = 0; i < 5; i++){
sum = sum + sport[i].playerScore;
}
return sum /5.0;
}
public void show(){ //输出项目的所有运动员信息
for(int i = 0; i < 5; i++) // 从数组的第一个开始循环
{
for(int j = i; j < 5; j++)
//对于后面每个比sport[i]得分高的就往前移,在 i 的第一轮循环完后,第 i 个位置肯定比后续运动员得分高
if(sport[i].playerScore < sport[j].playerScore)
{
player temp = sport[i];
sport[i] = sport[j];
sport[j] = temp;
}
}
for(int i = 0; i < 5; i++){
System.out.println("运动员编号:"+sport[i].playerID+" 运动员姓名:"+sport[i].playerName+" 运动员得分:"+sport[i].playerScore+"\n");
}
}
public void findID() //查找项目中的运动员
{
Scanner sc = new Scanner(System.in);
System.out.println("请输入运动员编号:");
int id = sc.nextInt();
boolean flag = false;
for(int i = 0; i < 5; i++){
if (sport[i].playerID == id) {
System.out.println(sportName+"的得分为:"+sport[i].playerScore+"\n");
flag = true;
}
}
if(flag == false)
System.out.println("未找到该运动员\n");
}
public void hasRecord() { //判断是否有运动员打破记录
boolean flag = false;
for(int i = 0; i < 5; i++){
if (sport[i].playerScore > record)
{
System.out.println("运动员编号:"+sport[i].playerID
+" 运动员姓名:"+sport[i].playerName
+" 运动员得分:"+sport[i].playerScore
+"打破了"+sportName+"的记录\n");
flag = true;
}
}
if(flag == false)
System.out.println("该项目没有人打破记录\n");
}
}
网友评论