A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 架构之路 于 2017-12-27 07:35 编辑

  到目前为止已经学习了九天的课程,今天课上学习了一个集合版的学生管理系统小项目,课下自己也敲了出来,蛮好玩的,并且自己也做了部分优化,纯属个人见解,不喜勿喷,欢迎交流,谢谢O(∩_∩)O哈哈~,下面分享源码:
  先上大家最喜欢的Student类:
package com.itheima_myStudentManager;

public class Student {
        private String id;
        private String name;
        private String age;
        private String address;
        public Student() {
        }
        public Student(String id, String name, String age, String address) {
                this.id = id;
                this.name = name;
                this.age = age;
                this.address = address;
        }
        public String getId() {
                return id;
        }
        public void setId(String id) {
                this.id = id;
        }
        public String getName() {
                return name;
        }
        public void setName(String name) {
                this.name = name;
        }
        public String getAge() {
                return age;
        }
        public void setAge(String age) {
                this.age = age;
        }
        public String getAddress() {
                return address;
        }
        public void setAddress(String address) {
                this.address = address;
        }
}
             再上我们牛B哄哄的主函数及各种"函数"小弟代码:
package com.itheima_myStudentManager;
import java.util.ArrayList;
import java.util.Scanner;

public class MyStudentManager {
       /**
        * 牛B哄哄的主函数
        */

        public static void main(String[] args) {
                ArrayList<Student> stuArray = new ArrayList<Student>();
                while (true) {
                        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("提示:请输入对应的数字进行相关操作,谢谢!");
                        System.out.println("—————————————————");
                        Scanner sc = new Scanner(System.in);
                        // String choiceStr = sc.nextLine();
                        // switch (choiceStr) {
                        // case "1":
                        // // 查询所有学生信息
                        // findAllStudent(stuArray);
                        // break;
                        // case "2":
                        // // 添加学生
                        // addStudent(stuArray);
                        // break;
                        // case "3":
                        // // 删除学生
                        // deleteStudent(stuArray);
                        // break;
                        // case "4":
                        // // 修改学生信息
                        // modifyStudent(stuArray);
                        // break;
                        // case "5":
                        // // 退出系统
                        // default:
                        // System.out.println("谢谢使用,再见!");
                        // return;
                        /**
                         * 1.经过测试,用Scanner的nextInt( )方法比nextLine( )方法更好,nextLine( )方法有点小bug
                         */
                        int choiceNumber = sc.nextInt();
                        switch (choiceNumber) {
                        case 1:
                                // 查询所有学生信息
                                findAllStudent(stuArray);
                                break;
                        case 2:
                                // 添加学生
                                addStudent(stuArray);
                                break;
                        case 3:
                                // 删除学生
                                deleteStudent(stuArray);
                                break;
                        case 4:
                                // 修改学生信息
                                modifyStudent(stuArray);
                                break;
                        case 5:
                                // 退出系统
                                System.out.println("谢谢使用,再见!");
                                return;
                        default:
                                System.out.println("输入有误,请输入正确的数字!");
                        }
                }
        }

        /**
         * 1.修改学生信息,优化的地方是修改前对集合进行判空,为空则给出提示;
         * 2.每一次输入信息后都会对输入的内容进行判断是否为空.
         */
        public static void modifyStudent(ArrayList<Student> stuArray) {
                if (stuArray.isEmpty()) {
                        System.out.println("暂没有学生信息,请先添加学生信息或者退出系统!");
                        return;
                }
                Scanner sc = new Scanner(System.in);
                System.out.println("您正在修改学生信息!");
                System.out.println("请输入学号");
                while (true) {
                        String id = sc.nextLine();
                        int index = checkId(stuArray, id);
                        if (index != -1) {// id存在
                                System.out.println("请重新输入姓名");
                                while (true) {
                                        String name = sc.nextLine();
                                        if (name.trim().equals("")) {
                                                System.out.println("姓名不能为空,请重新输入!");
                                        } else {
                                                System.out.println("请重新输入年龄");
                                                while (true) {
                                                        String age = sc.nextLine();
                                                        if (age.trim().equals("")) {
                                                                System.out.println("年龄不能为空,请重新输入!");
                                                        } else {
                                                                System.out.println("请重新输入地址");
                                                                while (true) {
                                                                        String address = sc.nextLine();
                                                                        if (address.trim().equals("")) {
                                                                                System.out.println("地址不能为空,请重新输入!");
                                                                        } else {
                                                                                Student stu = stuArray.get(index);// 拿到要修改的学生对象
                                                                                stu.setName(name);
                                                                                stu.setAge(age);
                                                                                stu.setAddress(address);
                                                                                System.out.println("修改学生信息成功!");
                                                                                return;
                                                                        }
                                                                }
                                                        }
                                                }
                                        }
                                }
                        } else {
                                System.out.println("您输入的学号不存在,请重新输入学号!");
                        }
                }
        }

        /**
         *1. 删除学生信息,优化的地方是删除前对集合进行判空,为空则给出提示;
         *2.增加了删除前的确认动作,避免不小心删除!
         */
        public static void deleteStudent(ArrayList<Student> stuArray) {
                if (stuArray.isEmpty()) {
                        System.out.println("暂没有学生信息,请先添加学生信息或者退出系统!");
                        return;
                }
                Scanner sc = new Scanner(System.in);
                System.out.println("您正在删除学生信息!");
                System.out.println("请输入学号");
                while (true) {
                        String id = sc.nextLine();
                        int index = checkId(stuArray, id);
                        if (index != -1) {// id存在
                                System.out.println("您确定删除该学生信息?是or否");
                                String confirm = sc.nextLine();
                                if ("是".equals(confirm)) {
                                        stuArray.remove(index);
                                        System.out.println("删除学生信息成功!");
                                }
                                break;
                        } else {
                                System.out.println("您输入的学号不存在,请重新输入学号!");
                        }
                }

        }

        /**
         *1.添加学生信息,优化的地方是每一次输入后都会对输入内容进行判断是否为空;
         *2.每一次输入信息后都会对输入的内容进行判断是否为空.
         */
        public static void addStudent(ArrayList<Student> stuArray) {
                Scanner sc = new Scanner(System.in);
                System.out.println("您正在添加学生信息!");
                System.out.println("请输入学号");
                while (true) {
                        String id = sc.nextLine();
                        if (id.trim().equals("")) {
                                System.out.println("学号不能为空,请重新输入!");
                        } else {
                                if (checkId(stuArray, id) == -1) {// id不存在
                                        System.out.println("请输入姓名");
                                        while (true) {
                                                String name = sc.nextLine();
                                                if (name.trim().equals("")) {
                                                        System.out.println("姓名不能为空,请重新输入!");
                                                } else {
                                                        System.out.println("请输入年龄");
                                                        while (true) {
                                                                String age = sc.nextLine();
                                                                if (age.trim().equals("")) {
                                                                        System.out.println("年龄不能为空,请重新输入!");
                                                                } else {
                                                                        System.out.println("请输入地址");
                                                                        while (true) {
                                                                                String address = sc.nextLine();
                                                                                if (address.trim().equals("")) {
                                                                                        System.out.println("地址不能为空,请重新输入!");
                                                                                } else {
                                                                                        stuArray.add(new Student(id, name, age, address));
                                                                                        System.out.println("添加学生信息成功!");
                                                                                        return;
                                                                                }
                                                                        }
                                                                }
                                                        }
                                                }
                                        }
                                } else {
                                        System.out.println("您输入的学号已存在,请重新输入学号!");
                                }
                        }
                }

        }

        /**
         * 查询所有学生信息,优化的地方是查看前对集合进行判空,为空则给出提示.
         */
        public static void findAllStudent(ArrayList<Student> stuArray) {
                if (stuArray.isEmpty()) {
                        System.out.println("暂没有学生信息,请先添加学生信息或者退出系统!");
                        return;
                }
                System.out.println("学号\t\t姓名\t年龄\t居住地");
                for (int i = 0; i < stuArray.size(); i++) {
                        Student stu = stuArray.get(i);
                        System.out.println(stu.getId() + "\t" + stu.getName() + "\t" + stu.getAge() + "\t" + stu.getAddress());
                }
        }

        /**
         * 检测输入的id是否存在,优化的地方是独立封装成方法
         */
        public static int checkId(ArrayList<Student> stuArray, String id) {
                for (int i = 0; i < stuArray.size(); i++) {
                        Student stu = stuArray.get(i);
                        if (stu.getId().equals(id)) {
                                return i;// id存在,返回i
                        }
                }
                return -1;// id不存在,返回-1
        }
}



3 个回复

正序浏览
很有意思的页面,加几句话,整个页面俏皮很多~  很用心呢!真的很赞!希望就业班的时候也能一直保持这种热情,和优化的念头,会有意想不到的收获。看好你哦!
回复 使用道具 举报
前进吧钢炮 发表于 2017-12-27 08:03
大哥这种页面,不加注释看的都(〕}

是不是看得很费劲?初次发帖,不怎么会弄,见谅见谅{:8_470:}
回复 使用道具 举报
大哥这种页面,不加注释看的都(〕}
来自宇宙超级黑马专属安卓客户端来自宇宙超级黑马专属安卓客户端
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马