10_Java学生管理系统(未使用文件和清屏)

Java的学生管理系统

希望通过前面所学的类的封装知识和String类与ArrayList集合来实现一个简单的学生管理系统

功能要求:添加、删除、修改、查看所有、退出

注意:为了保证学号是唯一键值,一定要在学号添加和修改时进行判断。同时对输入异常的数据进行处理。

注:代码并不完善,还有问题需要测试,尽量自己编写内容。

package studentmanager;
/*
定义一个学生类
 */
public class Student {
    //成员变量
    private String sid; //学号
    private String name; //姓名
    private String age; //年龄
    private String address; //居住地址

    //构造方法
    public Student(){};

    public Student(String sid, String name, String age, String address){
        this.sid = sid;
        this.name = name;
        this.age = age;
        this.address = address;
    }

    //set/get/show方法
    public void setSid(String sid){
        this.sid = sid;
    }

    public String getSid(){
        return this.sid;
    }

    public void setName(String name){
        this.name = name;
    }

    public String getName(){
        return this.name;
    }

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

    public String  getAge(){
        return this.age;
    }

    public void setAddress(String address){
        this.address = address;
    }

    public String getAddress(){
        return this.address;
    }

    public void show(){
        System.out.println(
                "学生学号:" + sid + "\t" + "姓名:" + name + "\t" + "年龄:" + age + "\t" + "居住地址:" + address
        );
    }

}
package studentmanager;
/*
定义一个学生管理类
 */
//导包
import java.util.Scanner;
import java.util.ArrayList;

public class StudentManager {
    public static void main(String[] args){
        //1、显示菜单
        menu();

        //2、创建对象用于存储学生数据
        ArrayList<Student> array = new ArrayList<Student>();

        //3、开始
        boolean flag = true;    //定义一个boolean变量用于控制循环
        while(flag){
            Scanner sc  = new Scanner(System.in);
            int key = sc.nextInt();
            if(key < 1 || key > 5){
                System.out.println("对不起,你输入的数字系统无法识别!请重新输入:");
            }
            else{
                switch(key){
                    case 1:
                        addStudent(array);
                        break;
                    case 2:
                        if(array.size() == 0){
                            System.out.println("当前没有数据,请重选菜单栏");
                        }
                        else{
                            findAllStudent(array);
                        }
                        break;
                    case 3:
                        if(array.size() == 0){
                            System.out.println("当前没有数据,请重选菜单栏");
                        }
                        else{
                            deleteStudent(array);
                        }
                        break;
                    case 4:
                        if(array.size() == 0){
                            System.out.println("当前没有数据,请重选菜单栏");
                        }
                        else{
                            updateStudent(array);
                        }
                        break;
                    default:
                        System.out.println("退出");
                        flag = false;   //控制循环结束
                        break;
                }
            }

        }
    }

    //定义一个方法查看学号是否重复
    public static boolean sidDuplicateChecking(ArrayList<Student> array, String sid){
        for(int i = 0; i < array.size(); i++){
            if(array.get(i).getSid().equals(sid)){   //处理相同学号问题
                System.out.println("此学号已经存在!请用户再次确定,返回菜单栏");
                return true;
            }
        }
        return false;
    }

    //定义一个方法用于修改时的单项信息处理
    public static boolean singleInformation(ArrayList<Student> array, int i){
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入你需要修改的*具体*信息(学号、姓名、年龄、地址):");
        //接收需要修改的具体值 遍历元素时进行比对修改
        String line = sc.nextLine();

        if(line.equals(array.get(i).getSid())){
            System.out.println("请输入修改后的数据:");
            String sid = sc.nextLine();
            array.get(i).setSid(sid);
            if(sidDuplicateChecking(array, sid)){
                return true;
            }
        }
        else if(line.equals(array.get(i).getName())){
            System.out.println("请输入修改后的数据:");
            array.get(i).setName(sc.nextLine());
        }
        else if(line.equals(array.get(i).getAge())){
            System.out.println("请输入修改后的数据:");
            array.get(i).setAge(sc.nextLine());
        }
        else if(line.equals(array.get(i).getAddress())){
            System.out.println("请输入修改后的数据:");
            array.get(i).setAddress(sc.nextLine());
        }
        else{
            System.out.println("输入的数据不符合要求!");
        }
        return false;
    }

    //定义一个方法用于修改时的单项信息处理
    public static boolean moreInformation(ArrayList<Student> array, int i){
        Scanner sc = new Scanner(System.in);
        System.out.println("请依次输入修改后的学生的信息:");

        System.out.println("学号:");
        String sid = sc.nextLine();
        //判断学号是否重复
        if(sidDuplicateChecking(array, sid)){
            return true;
        }

        System.out.println("姓名:");
        String name = sc.nextLine();

        System.out.println("年龄:");
        String age = sc.nextLine();

        System.out.println("住址:");
        String address = sc.nextLine();

        //此处使用了修改方法 set
        array.set(i, new Student(sid, name, age, address));
        return false;
    }

    //定义一个方法用于显示菜单
    public static void menu(){
        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("-------请输入你的选择:------");
    }

    //定义一个方法,用于添加学生信息
    public static void addStudent(ArrayList<Student> array){
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入你要添加学生的信息:");
        System.out.println("学号:");
        String sid = sc.nextLine();

        //判断输入的学号是否重复
        if(sidDuplicateChecking(array, sid)){
            return;
        }

        System.out.println("姓名:");
        String name = sc.nextLine();

        System.out.println("年龄:");
        String age = sc.nextLine();

        System.out.println("住址:");
        String address = sc.nextLine();


        array.add(new Student(sid, name, age, address));
        System.out.println("添加成功,返回菜单栏");

    }

    //定义一个方法,用于查看学生信息
    public static void findAllStudent(ArrayList<Student> array){
        for(int i = 0; i < array.size(); i++){
            System.out.println(
                    "学号:" + array.get(i).getSid() + "\t" +
                    "姓名:" + array.get(i).getName() + "\t" +
                    "年龄:" + array.get(i).getAge() + "\t" +
                    "住址:" + array.get(i).getAddress()
            );
        }
        System.out.println("显示结束请继续选择菜单栏:");
    }

    //定义一个方法,用于删除学生信息
    public static void deleteStudent(ArrayList<Student> array){
        //创建Scanner对像接收数据
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入你需要删除学生的学号:");
        String sid = sc.nextLine();

        //创建Student对象用于接收删除对象
        Student element = new Student();

        //查找对应学号第一次出现的索引
        for(int i = 0; i < array.size(); i++){
            //通过判断 Student对象中的学号是否相等获取 要删除元素的下标索引并进行删除
            if(array.get(i).getSid().equals(sid)){
                element = array.remove(i);
                //显示删除对象进行确定
                System.out.println("删除学生信息为:");
                System.out.println(
                        "学号:" + element.getSid() + "\t" +
                                "姓名:" + element.getName() + "\t" +
                                "年龄:" + element.getAge() + "\t" +
                                "住址:" + element.getAddress()
                );

                System.out.println("删除成功,请继续选择菜单栏:");
                return;
            }
        }

        System.out.println("输入的学号信息不存在,返回菜单栏");
    }

    //定义一个方法,用于修改学生信息
    public static void updateStudent(ArrayList<Student> array){
        //创建Scanner对像接收数据
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入你需要修改学生的学号:");
        String sid = sc.nextLine();

        //创建一个Student变量用于接收修改前的变量
        Student element = new Student();

        for(int i = 0; i < array.size(); i++){
            if(array.get(i).getSid().equals(sid)){
                System.out.println("请选择修改信息的方式:(1:单项 或者 2:所有):");
                String str = sc.nextLine();

                //处理单项信息
                if(str.equals("1")){
                    //调用单项处理方法 返回值为真则表示 修改后的学号已经有存在的或者学号无变动
                    if(singleInformation(array, i)){
                        return;
                    }
                }
                //处理多项信息
                else if(str.equals("2")){
                    //调用多项处理方法 返回值为真则表示 修改后的学号已经有存在的或者学号无变动
                    if(moreInformation(array, i)){
                        return;
                    }
                }
                //处理异常输入
                else{
                    System.out.println("输入数据不符合要求!");
                    return;
                }
            }
            else{
                System.out.println("对不起,你输入的学号不存在!返回菜单栏");
                return;
            }
            System.out.println("修改成功,请继续选择菜单栏:");
        }

    }
}
posted @ 2022-10-01 23:14  如此而已~~~  阅读(24)  评论(0编辑  收藏  举报