美文网首页
2019-07-23 运动会成绩管理系统

2019-07-23 运动会成绩管理系统

作者: Sterren | 来源:发表于2019-07-23 17:23 被阅读0次

    一、运行工具和环境

    运行工具: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");
        }
    }
    

    相关文章

      网友评论

          本文标题:2019-07-23 运动会成绩管理系统

          本文链接:https://www.haomeiwen.com/subject/mspalctx.html