运用集合实现——学生信息管理系统

运用集合实现——学生信息管理系统


开发工具:IDEA
使用集合存储学生信息。

部分运行图

在这里插入图片描述
源代码下载地址:
https://download.csdn.net/download/w_tf2017/11286364

——————————————————————————————

完整代码如下,
仅供学习参考:

Student.java

import java.io.Serializable;
import java.util.Objects;

/**
 * @author wangtengfei
 * @date 2019/7/5 8:52
 */
public class Student implements Serializable {
    private String id;      //学号
    private String name;    //姓名
    private String gender;  //性别
    private int age; //年龄

    public Student() {
    }

    public Student(String id, String name, int age, String gender) {
        this.id = id;
        this.name = name;
        this.gender = gender;
        this.age = age;
    }

    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 getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "Student{" +
                "id='" + id + '\'' +
                ", name='" + name + '\'' +
                ", gender='" + gender + '\'' +
                ", age=" + age +
                '}';
    }
}

StudentManagement.java

import org.omg.CORBA.OBJ_ADAPTER;

import java.io.*;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Scanner;

/**
 * @author wangtengfei
 * @date 2019/7/5 9:09
 */
public class StudentManagement {
    static ArrayList<Student> message = new ArrayList<Student>();

    public static void main(String[] args) {
        initDate();//进入系统时,读取之前所存储的数据到缓冲区
        Scanner sc = new Scanner(System.in);//键盘输入
        dis();
        while (true) {
            String in = sc.next();
            switch (in) {
                case "1":
                    addStudent();
                    break;
                case "2":
                    findStudent();
                    break;
                case "3":
                    changeStudent();
                    break;
                case "4":
                    delStudent();
                    break;
                case "5":
                    showStudent();
                    break;
                case "6":
                    System.out.println("退出程序成功");
                    break;
                default:
                    System.out.println("输入错误,请选择1-6!");
                    dis();
            }
        }
    }

    private static void addStudent() {
        String flag = "y";
        do {
            //isInt对年龄是否为整数做异常处理
            //isYN对是否继续输入做异常处理
            boolean isInt = true, isYN = true;
            Scanner sc = new Scanner(System.in);
            //随意设定初始值,不影响程序,只为了创建对象,类型对应即可
            Student stu = new Student(null, null, 10, null);
            System.out.println("请输入学生学号:");
            String in = sc.next();
            stu.setId(in);

            for (Student hasStu : message) {
                if (hasStu.getId().equals(in)) {//集合内已经输入的学号
                    System.out.println("已存在该学生,不能重复添加");
                    dis();
                    return;
                }
            }
            System.out.println("请输入学生的姓名:");
            stu.setName(sc.next());


            System.out.println("请输入学生的年龄:");
            //对于年龄为整数的异常处理
            while (isInt) {
                Scanner intsc = new Scanner(System.in);
                try {
                    isInt = false;
                    int intAge = intsc.nextInt();//键盘输入的年龄存入intAge
                    if (intAge > 150 || intAge <= 0) {
                        System.out.println("年龄必须大于0小于150");
                        isInt = true;
                        continue;
                    }
                    stu.setAge(intAge);
                } catch (Exception e) {
                    isInt = true;
                    System.out.println("年龄必须为整数,且大于0小于150");
                }
            }

            System.out.println("请输入学生性别,男输入boy,其余任意键为女性");
            if (sc.next().equals("boy")) {
                stu.setGender("男");
            } else {
                stu.setGender("女");
            }
            message.add(stu);//将stu对象存入集合
            //System.out.println(message.size());//调试时使用
            System.out.println("是否继续输入? y/n");
            flag = sc.next();
            //对于是否继续输入的选择做异常处理
            if (flag.equals("y") || flag.equals("n")) {
                isYN = true;
            } else {
                System.out.println("请输入y或n");
                flag = sc.next();
            }
            if (flag.equals("n")) {
                dis();
                break;
            }
        } while (flag.equals("y"));

    }

    private static void findStudent() {
        if (message.size() == 0) {
            System.out.println("学生信息库为空,请先添加学生");
            dis();
            return;
        }
        System.out.println("请输入你要查找的学生学号");
        Scanner sc = new Scanner(System.in);
        String in = sc.next();

        Iterator<Student> it = message.iterator();//构建迭代器
        while (it.hasNext()) {
            Student stu3 = it.next();
            if (stu3.getId().equals(in)) {
                System.out.println("该学生信息如下:");
                System.out.println("学号\t姓名\t年龄\t性别");
                System.out.println(stu3.getId() + "\t" + stu3.getName() + "\t" + stu3.getAge() + "\t" + stu3.getGender());
                dis();
                return;
            }
        }
        System.out.println("删除失败,没有该学生信息");
        dis();
    }

    private static void changeStudent() {
        if (message.size() == 0) {
            System.out.println("学生信息为空,您无法进行该项操作");
            dis();
            return;
        }
        System.out.println("请输入您要修改的学生学号");
        Scanner sc = new Scanner(System.in);
        String in = sc.next();
        Iterator<Student> it = message.iterator();//构造一个迭代器
        while (it.hasNext()) {
            Student stu1 = it.next();
            if (stu1.getId().equals(in)) {
                aa:
                while (true) {
                    boolean isInt = true;
                    System.out.println("1、学号    2、姓名    3、年龄    4、性别    5、【保存】");
                    String type = sc.next();//修改内容项
                    switch (type) {
                        case "1":
                            boolean flag = true;
                            System.out.println("学号修改为:");
                            //修改学号时,原则是不能出现相同的学号
                            while (flag) {
                                String isHad = sc.next();//isHad:输入的学号,与集合中进行对比
                                for (Student hasStu : message) {
                                    if (hasStu.getId().equals(isHad)) {
                                        System.out.println("已存在该学生,不能修改");//要修改的学号已经有学生占用
                                        flag = true;
                                        break;
                                    } else {
                                        flag = false;
                                    }
                                }
                                if (flag == false) {
                                    stu1.setId(isHad);//学号修改为我输入的值
                                    System.out.println("学号修改成功");
                                }
                            }
                            break;
                        case "2":
                            System.out.println("姓名修改为:");
                            stu1.setName(sc.next());
                            System.out.println("姓名修改成功!!");
                            break;
                        case "3":
                            System.out.println("年龄修改为:");
                            //对于年龄为整数的异常处理
                            while (isInt) {
                                Scanner intsc = new Scanner(System.in);
                                try {
                                    isInt = false;
                                    int intAge = intsc.nextInt();//键盘输入的年龄存入intAge
                                    if (intAge > 150 || intAge <= 0) {
                                        System.out.println("年龄必须大于0小于150");
                                        isInt = true;
                                        continue;
                                    }
                                    stu1.setAge(intAge);
                                    System.out.println("年龄修改成功!!");
                                } catch (Exception e) {
                                    isInt = true;
                                    System.out.println("年龄必须为整数,且大于0小于150");
                                }
                            }
                            break;
                        case "4":
                            System.out.println("性别修改为:(男性修改为boy,其余任意键为女性)");
                            if (sc.next().equals("buy")) {
                                stu1.setGender("男");
                            } else {
                                stu1.setGender("女");
                            }
                            System.out.println("性别修改成功!!");
                            break;
                        case "5":
                            System.out.println("学生信息更新已保存");
                            dis();
                            break aa;
                        default:
                            System.out.println("输入错误,请重新输入!");
                    }
                }
                return;
            }
        }
        System.out.println("对不起,没有找到改学生信息。");
        dis();
    }

    private static void delStudent() {
        if (message.size() == 0) {
            System.out.println("学生信息库为空,您无法进行该项操作");
            dis();
            return;
        }
        System.out.println("请输入您要删除的学生学号");
        Scanner sc = new Scanner(System.in);
        String in = sc.next();
        Iterator<Student> it = message.iterator();//构建迭代器
        while (it.hasNext()) {
            Student stu2 = it.next();
            if (stu2.getId().equals(in)) {
                message.remove(stu2);
                System.out.println("删除该学生信息成功!!");
                dis();
                return;
            }
        }
        System.out.println("对不起,没有找到该学生信息。");
        dis();

    }

    private static void showStudent() {
        if (message.size() == 0) {
            System.out.println("学生信息为空,请先添加学生信息");
        } else {
            System.out.println("学号\t姓名\t年龄\t性别");
            for (Student msg : message) {
                System.out.println(msg.getId() + "\t\t" + msg.getName() + "\t" + msg.getAge() + "\t\t" + msg.getGender());
            }
        }
        dis();
    }


    private static void initDate() {
            System.out.println("---------首次加载,请添加学生信息!!!-------");
    }

    static void dis() {
        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("*****       请输入你要进行的操作(1-6)    *****");
    }
}
  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值