项目1:计算机设计大赛赛事统计

【问题描述】         参加计算机设计大赛的n个学校编号为1~n,赛事分成m个项目,项目的编号为

        1~m.比赛获奖按照得分降序,取前三名,写一个统计程序产生各种成绩单和得分报表

【基本要求】

        1)每个比赛项目至少有10支参赛队;每个学校最多有6支队伍参赛;

        2)能统计各学校的总分;

        3)可以按照学校编号或名称查询,学校的总分、各项目的总分排序输出;

        4)可以按学校编号查询学校某个项目的获奖情况;可以按项目编号查询取得前三名的学校;

        5)数据存入文件并能随时查询

【设计要求】

        1)输入数据形式和范围:可以输入学校的名称,赛事项目的名称。

        2)输出形式:有中文提示,各学校分数为整数

        3)界面要求:交互设计要合理,每个功能可以设立菜单,根据提示,完成相关功能的要求。

        4)存储结构:学生自己根据系统功能要求自己设计,但是赛事相关数据要存储在文件中。

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

        证程序的稳定。

【实现提示】        假设3<赛事项目数量<=10,学校名称长度不超过20个字符。每个赛事结束时,

        将其编号、名称输入,并依次输入参赛学校编号、学校名称和成绩。

1、问题分析和任务定义

通过问题,可以建立项目类和学校类。

2、数据结构的选择和概要设计

Team类表示参赛队伍情况:参加的项目编号(int) 所在学校(string)获得成绩(int);

用arraylist把项目类装到集合中,进行数据处理。               

3、逻辑设计

        Team(String xiangmu, String xuexiao, int chengji) 

                排序时,对Team以及School通过Comparable接口,对成绩以及编号排序

                通过java中set和get方法,分别实现求前三名,学校各项目的总分

                文本内容通过IOException将txt文本导入即可

                输入形式为 项目编号 学校名 分数

4、测试结果及其分析、

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.*;
import java.util.ArrayList;
public class shiyan2 {
    static Scanner sc = new Scanner(System.in);

    public static class Team implements Comparable<Team> {
        private int xiangmu;
        private String xuexiao;
        private int chengji;

        public void setXiangmu(int xiangmu) {
            this.xiangmu = xiangmu;
        }

        public int getXiangmu() {
            return xiangmu;
        }

        public void setXuexiao(String xuexiao) {
            this.xuexiao = xuexiao;
        }

        public String getXuexiao() {
            return xuexiao;
        }

        public void setChengji(int chengji) {
            this.chengji = chengji;
        }

        public void getChengji() { this.chengji = chengji; }

        public int compareTo(Team tea) {

            if (this.chengji < tea.chengji) return 1;
            if (this.chengji > tea.chengji) return -1;
            return 0;
        }
    }


    public static void qiansan(ArrayList<Team> teams,int xiangmuname) {
        //前三名
        ArrayList<Team> list = new ArrayList<Team>();
        if (teams.isEmpty()) {
            System.out.println("当前无数据,请添加后重试");
        } else {
            for (int i = 0; i < teams.size() ; i++) {
                if (teams.get(i).getXiangmu()==xiangmuname) {
                    list.add(teams.get(i));
                }
            }
        }
        Collections.sort(list);
        for (int r = 0; r < 3; r++) {
            System.out.println("项目编号"+xiangmuname+" "+"第" + (r+1) + "名为" + list.get(r).xuexiao + "学校" + "," + "成绩为" + list.get(r).chengji);
        }
    }

    public static void huojiang(ArrayList<Team> teams,String schoolname,int xiangmuname){
        //获奖情况
        ArrayList<Team> list = new ArrayList<Team>();
        if (teams.isEmpty()) {
            System.out.println("当前无数据,请添加后重试");
        } else {
            for (int i = 0; i < teams.size() ; i++) {
                if (teams.get(i).getXiangmu()==(xiangmuname)) {
                    list.add(teams.get(i));
                }
            }
            Collections.sort(list);
            for (int r = 0; r < 3 ; r++) {
                if (list.get(r).xuexiao.equals(schoolname)){
                    System.out.println("项目编号"+xiangmuname+" "+schoolname+"学校获得第"+(r+1)+"名");
                }
            }
            if (!(list.get(0).xuexiao.equals(schoolname))&&!(list.get(1).xuexiao.equals(schoolname))&&!(list.get(2).xuexiao.equals(schoolname))){
                System.out.println("项目编号"+xiangmuname+" "+"该学校未获奖");
            }
        }
    }
    public static void zongfen(ArrayList<Team> teams,String schoolname,int xiangmuname) {
        int sum = 0;
        //  指定项目的总分
        if (teams.isEmpty()) {
            System.out.println("当前无数据,请添加后重试");
        } else {
            for (int i = 0; i < teams.size() ; i++) {
                if (teams.get(i).getXuexiao().equals(schoolname)&&teams.get(i).xiangmu==(xiangmuname) ) {
                    sum += teams.get(i).chengji;
                }
            }
            System.out.println("项目编号"+xiangmuname+" "+schoolname + "学校的总分数为" + sum);
        }
    }
    public static void main(String[] args) throws IOException {
        BufferedReader br=new BufferedReader(new FileReader("C:\\Users\\luck\\IdeaProjects\\untitled4\\src\\实验1测试数据.txt"));
        String line;
        ArrayList<Team> teams1 = new ArrayList<Team>();
        while ((line=br.readLine())!=null){
            String[] strArray =line.split(" ");
            Team team = new Team();
            team.setXiangmu(Integer.parseInt(strArray[0]));
            team.setXuexiao(strArray[1]);
            team.setChengji(Integer.parseInt(strArray[2]));
            teams1.add(team);
        }
        br.close();
        for (Team team:teams1){
            team.getXiangmu();
            team.getXuexiao();
            team.getChengji();
        }
        System.out.println("\t\t\t+     1 查询前三               +");
        System.out.println("\t\t\t+     2 查询获奖情况               +");
        System.out.println("\t\t\t+     3 查询总分               +");
        System.out.println("请输入0-3:");
        int k=sc.nextInt();
        switch(k) {
            case 1:
                System.out.println("请输入想要得到前三名的项目号");
                qiansan(teams1, sc.nextInt());
                break;
            case 2:
                System.out.println("请输入学校以及项目号");
                huojiang(teams1, sc.next(),sc.nextInt());
                break;
            case 3:
                System.out.println("请输入学校以及项目号");
                zongfen(teams1, sc.next(), sc.nextInt());
                break;
            default:
                System.out.println("输入有误");
                break;
        }
    }

测试数据 从左到右依次为项目编号,学校名称,成绩

 

 

 

5、用户使用说明

6、参考文献

7、附录

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值