[Java]学生信息管理系统

需求:

采取控制台的方式去书写学生管理系统。

针对目前我们的所学内容,完成一个综合案例:学生管理系统。该系统主要功能如下:

       添加学生:通过键盘录入学生信息,添加到集合中

       删除学生:通过键盘录入要删除学生的学号,将该学生对象从集合中删除

       修改学生:通过键盘录入要修改学生的学号,将该学生对象其他信息进行修改

       查看学生:将集合中的学生对象信息进行展示

       退出系统:结束程序

实现思路:

  1. 创建学生类
  2. 创建main函数
  3. 简易的交互界面
  4. Arraylist集合记录学生信息
  5. 分别实现增加,删除,修改,查询的功能
  6. 最终调试
学生类:

属性:id、姓名、年龄、家庭住址

添加功能:

键盘录入每一个学生信息并添加,需要满足以下要求:

  • id唯一

删除功能:

键盘录入要删除的学生id,需要满足以下要求:

  • id存在删除

  • id不存在,需要提示不存在,并回到初始菜单

修改功能:

键盘录入要修改的学生id,需要满足以下要求

  • id存在,继续录入其他信息

  • id不存在,需要提示不存在,并回到初始菜单

查询功能:

打印所有的学生信息,需要满足以下要求

  • 如果没有学生信息,提示:当前无学生信息,请添加后再查询

  • 如果有学生信息,需要按照以下格式输出。(不用过于纠结对齐的问题)

学生类:

创建一个学生类的JavaBean类:

  1. 私有成员变量(name id age address)
  2. 空参构造,有参构造
  3. get set
public class Student {
    private String id;
    private String name;
    private int age;
    private String address;


    public Student() {
    }

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

    /**
     * 获取
     * @return id
     */
    public String getId() {
        return id;
    }

    /**
     * 设置
     * @param id
     */
    public void setId(String id) {
        this.id = id;
    }

    /**
     * 获取
     * @return name
     */
    public String getName() {
        return name;
    }

    /**
     * 设置
     * @param name
     */
    public void setName(String name) {
        this.name = name;
    }

    /**
     * 获取
     * @return age
     */
    public int getAge() {
        return age;
    }

    /**
     * 设置
     * @param age
     */
    public void setAge(int age) {
        this.age = age;
    }

    /**
     * 获取
     * @return address
     */
    public String getAddress() {
        return address;
    }

    /**
     * 设置
     * @param address
     */
    public void setAddress(String address) {
        this.address = address;
    }

    public String toString() {
        return "Student{id = " + id + ", name = " + name + ", age = " + age + ", address = " + address + "}";
    }
}

Mian类 :

首先,要创建一个简单的界面来实现功能选择和交互,由于是列举出来的功能选择Switch...Case语句来选择实现的功能。学生信息管理系统不是运行一次就结束,要采取一个死循环来嵌套界面。由于要零时存储数据,我们用一个ArrayList来存取学生类对象。在界面中值得一提的是程序的退出功能,单使用break只能退出switch语句不能退出循环。采用两种方法来退出程序:1.指定退出循环,给循环起一个别名loop( loop :while )再在退出功能使用break loop就是指定退出while循环 2.退出Java虚拟机,采用system.exit(0)退出虚拟机从而退出系统。其他功能实现参考注释:

import java.util.ArrayList;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        ArrayList<Student> list = new ArrayList<>();
        loop :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("输入你的选择:");
            Scanner sc = new Scanner(System.in);
            int chose = sc.nextInt();
            switch (chose){
                case 1-> {
                    addStudent(list);
                }
                case 2-> {
                    delStudent(list);
                }
                case 3-> {
                    updateStudent(list);
                }
                case 4-> {
                    queryStudent(list);
                }
                case 5-> {
                    System.out.println("Exit");
                    break loop;//退出 loop为while的标号
//                    System.exit(0);//退出虚拟机
                }
                default -> {
                    System.out.println("Input Error!");
                }
            }
        }
    }

    public static void addStudent(ArrayList<Student> list) {
        System.out.println("1.添加学生");
        Scanner stu = new Scanner(System.in);//创建键盘输入
        Student s = new Student();//空参构造
        while (true) {
            System.out.print("Id:");
            String id = stu.next();
            if (contains(list,id)){//true id重复
                System.out.println("id重复!");
            }else {//不重复
                s.setId(id);//设置id
                break;
            }
        }//判断id是否重复
        System.out.print("姓名:");
        String name = stu.next();
        s.setName(name);//设置姓名
        System.out.print("年龄:");
        int age = stu.nextInt();
        s.setAge(age);
        System.out.print("地址:");
        String address = stu.next();
        s.setAddress(address);
        list.add(s);//添加对象到arraylist
    }//添加学生
    public static void delStudent(ArrayList<Student> list){
        System.out.println("2.删除学生");
        if (list.size()==0){//判断顺序表是否有对象
            System.out.println("没有学生!");
        }else {
            System.out.println("输入删除Id");
            Scanner scanner = new Scanner(System.in);//输入
            String id = scanner.next();
            if (!contains(list,id)){//判断是否有对应id
                System.out.println("查无此人!");
            }else {
                int index = index(list,id);//id为string类不能当作索引,根据id寻找索引返回id对应的索引
                list.remove(index);//删除对应索引对应的学生
                System.out.println("删除成功!");
            }
        }

    }//删除学生
    public static void updateStudent(ArrayList<Student> list){
        System.out.println("3.修改学生");
        Student student = new Student();
        if (list.size() == 0){//判断空
            System.out.println("列表为空");
        }else {
            System.out.println("输入修改学生的id");
            Scanner scanner = new Scanner(System.in);
            String id = scanner.next();
            if (!contains(list,id)){//判断是否有此id
                System.out.println("查无此人!");
            }else {
                int index = index(list,id);//获取索引
                student = list.get(index);//获取索引对应的对象
                System.out.print("输入修改姓名:");//修改对象属性
                String name = scanner.next();
                student.setName(name);
                System.out.print("输入修改年龄:");
                int age = scanner.nextInt();
                student.setAge(age);
                System.out.print("输入修改地址:");
                String address = scanner.next();
                student.setAddress(address);
            }
        }
    }//修改学生
    public static void queryStudent(ArrayList<Student> list){
        System.out.println("4.查询学生");
        if (list.size() == 0){
            System.out.println("没有学生!");
        }
        System.out.print("id\t姓名\t年龄\t地址\t");//\t制表符
        System.out.println();
        for (int i = 0; i < list.size(); i++) {//循环遍历
            System.out.println(//打印属性
                    list.get(i).getId()+"\t"+list.get(i).getName()+"\t"+list.get(i).getAge()+"\t"+list.get(i).getAddress()
            );
        }
    }//查询学生
    public static boolean contains(ArrayList<Student> list,String id){
        for (int i = 0; i < list.size(); i++) {
            Student stu = list.get(i);
            if (stu.getId().equals(id)){//判断id是否在此顺序表中
                return true;
            }
        }
        return false;
    }//id判断
    public static int index(ArrayList<Student> list,String id){
        for (int i = 0; i < list.size(); i++) {
            Student student = new Student();
            student = list.get(i);
            if (student.getId().equals(id)){
                return i;//获取索引
            }
        }
        return -1;//无此id,返回-1
    }//索引
}

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值