学生管理系统(时尚版)

发布时间 2023-10-20 23:10:54作者: TenSet
package com;

import java.math.BigInteger;
import java.util.*;

public class Main {
    public static List<StudentEntity> list = new LinkedList<>();
    public static Scanner sc = new Scanner(System.in);

    public static void main(String[] args) {
        int status;
        boolean flag = true;
        while (flag) {
            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("------- 8.退出系统 -------");
            System.out.println("请输入要操作的序号:");
            status = sc.nextInt();
            switch (status) {
                case 1: {
                    add();
                    break;
                }
                case 2: {
                    alter();
                    break;
                }
                case 3: {
                    delete();
                    break;
                }
                case 4: {
                    printList();
                    break;
                }
                case 5: {
                    printAgeList();
                    break;
                }
                case 6: {
                    findByName();
                    break;
                }
                case 7: {
                    findById();
                    break;
                }
                case 8: {
                    System.out.println("系统已经退出!");
                    flag = false;
                    break;
                }
                default: {
                    System.out.println("输入无效!请重新输入");
                    break;
                }
            }
        }
    }

    public static void add() {
        StudentEntity enty = new StudentEntity();
        System.out.println("----------添加学生信息------------");
        String id;
        while(true) {
            System.out.println("请输入学生学号(-1退出):");
            while (true) {
                id = sc.next();
                if(id.equals("-1")){
                    return;
                }
                try {
                    Integer.parseInt(id);
                } catch (Exception e) {
                    System.out.println("学号输入有误!请重新输入");
                    continue;
                }
                boolean flag = true;
                for (int i = 0; i < list.size(); i++) {
                    if (list.get(i).getId().equals(id)) {
                        System.out.println("学号重复!请重新输入");
                        flag = false;
                        break;
                    }
                }
                if (flag) {
                    enty.setId(id);
                    break;
                }
            }
            System.out.println("请输入学生姓名:");
            enty.setName(sc.next());
            System.out.println("请输入学生年龄:");
            while (true) {
                String age = sc.next();
                try {
                    int i = Integer.parseInt(age);
                    if (i < 0 || i > 130) {
                        System.out.println("年龄输入有误!请重新输入");
                        continue;
                    }
                    enty.setAge(age);
                    break;
                } catch (Exception e) {
                    System.out.println("年龄输入有误!请重新输入");
                }
            }
            System.out.println("请输入学生电话:");
            while (true) {
                String phone = sc.next();
                if (phone.length() != 11) {
                    System.out.println("电话号码输入有误!请重新输入");
                    continue;
                }
                try {
                    BigInteger bigInteger = new BigInteger(phone);
                } catch (Exception e) {
                    System.out.println("电话号码输入有误!请重新输入");
                    continue;
                }
                enty.setPhone(phone);
                break;
            }
            list.add(enty);
            System.out.println("添加成功!");
        }
    }

    public static void delete() {
        System.out.println("----------删除学生信息------------");
        String id;
        int index;
        boolean flag;
        while (true) {
            System.out.println("请输入需要删除的学生学号(-1退出):");
            flag = false;
            id = sc.next();
            if (id.equals("-1"))
                return;
            index = -1;
            for (int i = 0; i < list.size(); i++) {
                if (list.get(i).getId().equals(id)) {
                    index = i;
                    flag = true;
                    break;
                }
            }

            while (flag) {
                System.out.println("请再次确认是否修改? Y/N");
                String ans = sc.next();
                if (ans.equals("Y")) {
                    list.remove(index);
                    System.out.println("删除成功!");
                    break;
                } else if (ans.equals("N")) {
                    break;
                } else
                    System.out.println("输入的数据非法,请重新输入");
                flag = true;
            }
            if (!flag) {
                System.out.println("删除失败!没有找到该学生。当前学生人数:" + list.size());
                System.out.println("请重新输入");
            }
        }
    }

    public static void alter() {
        StudentEntity tempStu = new StudentEntity();
        System.out.println("----------修改学生信息------------");
        int index = -1;
        boolean flag;
        while (true) {
            System.out.println("请输入要修改的学生学号(-1退出):");
            String id = sc.next();
            flag = false;
            loop:
            while (true) {
                if (id.equals("-1"))
                    return;
                for (int i = 0; i < list.size(); i++) {
                    if (list.get(i).getId().equals(id)) {
                        tempStu.setId(id);
                        index = i;
                        flag = true;
                        break loop;
                    }
                }
                System.out.println("修改失败!没有该学生。当前系统内学生人数:" + list.size());
                id = sc.next();
            }
            System.out.println("请输入学生姓名:");
            tempStu.setName(sc.next());
            System.out.println("请输入学生年龄:");
            while (true) {
                String age = sc.next();
                try {
                    int j = Integer.parseInt(age);
                    if (j < 0 || j > 130) {
                        System.out.println("年龄输入有误!请重新输入");
                        continue;
                    }
                    tempStu.setAge(age);
                    break;
                } catch (Exception e) {
                    System.out.println("年龄输入有误!请重新输入");
                }
            }
            System.out.println("请输入学生电话:");
            while (true) {
                String phone = sc.next();
                if (phone.length() != 11) {
                    System.out.println("电话号码输入有误!请重新输入");
                    break;
                }
                try {
                    BigInteger bigInteger = new BigInteger(phone);
                } catch (Exception e) {
                    System.out.println("电话号码输入有误!请重新输入");
                    break;
                }
                tempStu.setPhone(phone);
                break;
            }
            while (flag) {
                System.out.println("请再次确认是否修改? Y/N");
                String ans = sc.next();
                if (ans.equals("Y")) {
                    list.get(index).setName(tempStu.getName());
                    list.get(index).setAge(tempStu.getAge());
                    list.get(index).setPhone(tempStu.getPhone());
                    System.out.println("修改成功!");
                } else if (ans.equals("N")) {
                    break;
                } else {
                    System.out.println("输入的数据非法,请重新输入");
                }
            }
        }
    }

    public static void printList() {
        System.out.println("学生列表:");
        Iterator<StudentEntity> it = list.iterator();
        while (it.hasNext()) {
            System.out.println(it.next());
        }
    }

    public static void printAgeList() {
        System.out.println("------------学生年龄概况-----------");
        Map<String, Integer> map = new HashMap<>();
        for (int i = 0; i < list.size(); i++) {
            if (map.containsKey(list.get(i).getAge())) {
                map.put(list.get(i).getAge(), map.get(list.get(i).getAge()) + 1);
            } else {
                map.put(list.get(i).getAge(), 1);
            }
        }
        for (Map.Entry<String, Integer> entry : map.entrySet()) {
            System.out.println("年龄:" + entry.getKey() + " 人数:" + entry.getValue());
        }
    }

    public static void findByName() {
        String name;
        while (true) {
            System.out.println("请输入需要查找的学生姓名(-1退出):");
            name = sc.next();
            if (name.equals("-1"))
                return;
            for (int i = 0; i < list.size(); i++) {
                if (list.get(i).getName().equals(name)) {
                    System.out.println(list.get(i));
                    return;
                }
            }
            System.out.println("查找失败!没有该学生");
        }
    }

    public static void findById() {
        String id;
        while (true) {
            System.out.println("请输入需要查找的学生学号(-1退出):");
            id = sc.next();
            if (id.equals("-1"))
                return;
            for (int i = 0; i < list.size(); i++) {
                if (list.get(i).getId().equals(id)) {
                    System.out.println(list.get(i));
                    return;
                }
            }
            System.out.println("查找失败!没有该学生");
        }
    }
}

class StudentEntity {
    private String id;
    private String name;
    private String age;
    private String phone;

    public StudentEntity(String id, String name, String age, String phone) {
        this.id = id;
        this.name = name;
        this.age = age;
        this.phone = phone;
    }

    public StudentEntity(){

    }

    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 getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

    @Override
    public String toString() {
        return "学号 = " + id + ", 姓名 = " + name + ", 年龄 = " + age + ", 电话号码 = " + phone;
    }


}