Java信息管理系统(天空之城——未来城市主题02)

上一各版本里只设计了星城的基础类,在本次代码实现对星城系统的信息管理。作用于在城市定居某个星体之后录入星空信息系统之中。现在是将数据存储在列表中,将面向对象结合面向过程实现的部分代码(利用期末作业完成幻想之作,小娱乐小制作)

第1部分 为输出一个菜单

/**
     * @menu() 菜单
     */
    public static void menu(){
        System.out.println("============================");
        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("输入7:清空星城信息");
        System.out.println("输入0:退出系统");
        System.out.println("============================");
        System.out.println("请输入:");
    }

第2部分 通过遍历向空列表添加星城信息

/**
     * @Traverse 遍历
     * @param array
     * @param id
     * @return
     */
    public static boolean Traverse(ArrayList<City> array, String id){
        //遍历进行比较,有相同返回true,否则返回false
        boolean flag = false;
        for (int i = 0; i < array.size(); i++) {
            City s = array.get(i);
            if(id.equals(s.getCityId())) {
                flag = true;
                break;
            }
        }
        return flag;
    }

    /**
     * @addStarCity 添加星城
     * @param array
     */
    public static void addStarCity(ArrayList<City> array){
        //存储(添加)星城信息
        Scanner sc = new Scanner(System.in);
        //后面要通过编号进行信息查找,所以要求编号不能重复
        String id ;
        while (true) {
            System.out.println("请输入编号:");
            id = sc.nextLine();
            //定义一个判断方法
            boolean flag = Traverse(array, id);
            if (flag) {
                System.out.println("编号已被使用,请重新输入!");
            } else {
                break;      //学号有效,跳出循环
            }
        }
        System.out.println("请输入创建年份:");
        String appearYear = sc.nextLine();
        System.out.println("请输入星城命名:");
        String cityName = sc.nextLine();
        System.out.println("请输入星城人口:");
        Double population = sc.nextDouble();
        //赋值给到星城
        City s1 = new City();
        s1.setCityId(Integer.parseInt(id));
        s1.setCityName(cityName);
        s1.setCityPopulation(population);
        s1.setCityAppearYear(Integer.parseInt(appearYear));
        //将星城给到集合中
        array.add(s1);
        System.out.print("添加成功!");
    }

第3部分 查找星城信息

/**
     * @findStarCity 根据编号查找星城
     * @param array
     */
    public static void findStarCity(ArrayList<City> array){
        Scanner sc = new Scanner(System.in);
        System.out.println("输入查找星城的编号:");
        String id = sc.nextLine();
        //判断编号是否存在并查找输出
        int flag = -1;   //定义一个判断标志,因为数组下标不会为-1.所以将flag初始化为-1
        City s = new City();
        for (int i = 0; i < array.size(); i++) {
            s = array.get(i);
            if(id.equals(s.getCityId())){
                flag = i;
                break;
            }
        }
        if (flag == -1){
            System.out.println("星城编号不存在!");
        }else{
            System.out.println("找到当前星城!");
            System.out.println("星城编号\t\t星城名称\t\t出现年份\t\t星城人口");
            System.out.println(s.getCityId()+"\t\t\t"+s.getCityName()+"\t\t"+s.getCityAppearYear()+"\t\t"+s.getCityPopulation());
        }
    }

第4部分 根据星城某项数据进行排序

/**
     * @sortStudent 根据星城人口进行排序(从高到低)
     * @param array
     */
    public static void sortStarCity(ArrayList<City> array){
        array.sort(new Comparator<City>() {
            @Override
            public int compare(City o1, City o2) {
                return (int)(o2.getCityPopulation() - o1.getCityPopulation());
            }
        });
        System.out.println("排序成功!");
    }

第5部分 向列表某个位置中插入一项新的星城信息

/**
     * @insertStudent 插入星城信息
     * @param array
     */
    public static void insertStarCity(ArrayList<City> array){
        Scanner sc = new Scanner(System.in);
        System.out.println("输入要插入的位置:");
        int a = sc.nextInt();
        //后面要通过星城编号进行信息查找,所以要求编号不能重复
        String id ;
        while (true) {
            System.out.println("请输入星城编号:");
            id = sc.nextLine();
            //定义一个判断方法
            boolean flg = Traverse( array, id);
            if (flg) {
                System.out.println("星城编号已存在,请重新输入!");
            } else {
                break;      // 当编号存在时有效,跳出循环
            }
        }
        System.out.println("请输入创建年份:");
        String appearYear = sc.nextLine();
        System.out.println("请输入星城命名:");
        String cityName = sc.nextLine();
        System.out.println("请输入星城人口:");
        Double population = sc.nextDouble();
        // 赋值给到星城
        City s1 = new City();
        s1.setCityId(Integer.parseInt(id));
        s1.setCityName(cityName);
        s1.setCityPopulation(population);
        s1.setCityAppearYear(Integer.parseInt(appearYear));
        // 将星城信息给到集合中
        array.add(a,s1);
        System.out.print("成功插入星城的信息!");
    }

第6部分 当某项数据出现违规时,将其驱逐出星空

/**
     * @deleteStarCity 删除指定违规星城信息
     * @param array
     */
    public static void  deleteStarCity(ArrayList<City> array){
        Scanner sc = new Scanner(System.in);
        System.out.println("输入要删除的违规星城编号:");
        String id = sc.nextLine();
        for (int i = 0; i < array.size(); i++) {
            if(Objects.equals(array.get(i).getCityId(), id)){
                array.remove(i);
                break;
            }
        }
        System.out.println("成功删除星城编号为"+id+"的信息!");
    }

所有部分都属于星城管理系统的主要实现的方法体所组成...(To be continued...)

@https://blog.csdn.net/YIC020920?

posted @ 2022-12-03 15:42  一冲子  阅读(29)  评论(0编辑  收藏  举报