学生管理系统(java)

学生管理系统

1. 系统设计

1.1 系统架构

本系统采用分层架构设计,主要分为以下三层:

  1. 数据层:由Student类表示,用于存储学生的基本信息(如学号、姓名、年龄、家庭住址等)。
  2. 服务层:由StudentService接口及其实现类组成,负责实现系统的核心功能(如添加、删除、修改和查询学生信息)。
  3. 表现层:由Menu类实现,负责与用户交互并调用服务层的功能。

1.2 模块划分

系统功能被划分为以下四个模块:

  1. 添加学生模块:负责将学生信息添加到系统中。

在这里插入图片描述

  1. 删除学生模块:根据学号删除指定的学生信息。

在这里插入图片描述

  1. 修改学生模块:根据学号修改指定学生的信息。
    在这里插入图片描述

  2. 查询学生模块:显示系统中所有学生的信息。

在这里插入图片描述

2. 系统实现

2.1 数据模型

系统的数据模型由Student类表示,其属性包括:

  • id:学生的唯一标识(学号)。
  • name:学生的姓名。
  • age:学生的年龄。
  • address:学生的家庭住址。

Student类通过封装技术,提供了对属性的访问和修改方法,确保数据的安全性和完整性。

2.2 接口设计

系统通过StudentService接口定义了核心功能,包括:

  • addStudent:添加学生信息。
  • deleteStudent:删除学生信息。
  • updateStudent:修改学生信息。
  • queryStudent:查询学生信息。
  • contains:判断学号是否已存在。
  • getIndex:根据学号获取学生在列表中的索引。

2.3 功能实现

每个功能模块通过独立的类实现StudentService接口,具体如下:

  1. 添加学生模块StudentAddService):
    • 通过循环确保学号的唯一性。
    • 将学生信息封装为Student对象并添加到列表中。
  2. 删除学生模块StudentDeleteService):
    • 根据学号查找学生信息并删除。
  3. 修改学生模块StudentUpdateService):
    • 根据学号查找学生信息并修改其属性。
  4. 查询学生模块StudentQueryService):
    • 遍历学生列表并显示所有学生信息。

2.4 主程序逻辑

StudentSystem类作为系统的入口,负责与用户交互并调用相应的功能模块。通过Scanner类获取用户输入,并根据用户选择调用StudentService接口的实现类,完成相应的功能。

3. 编码实现

3.1 Menu

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

public class Menu {
    public static void main(String[] args) {
        ArrayList<Student> list = new ArrayList<>();
        // 使用接口类型声明服务对象
        StudentService addService = new StudentAddService();
        StudentService deleteService = new StudentDeleteService();
        StudentService updateService = new StudentUpdateService();
        StudentService queryService = new StudentQueryService();
        Scanner sc = new Scanner(System.in);

        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("请输入您的选择:");
            String choose = sc.next();
            switch (choose) {
                case "1" -> addService.addStudent(list); // 调用添加学生功能
                case "2" -> deleteService.deleteStudent(list); // 调用删除学生功能
                case "3" -> updateService.updateStudent(list); // 调用修改学生功能
                case "4" -> queryService.queryStudent(list); // 调用查询学生功能
                case "5" -> {
                    System.out.println("退出");
                    System.exit(0);
                }
                default -> System.out.println("没有这个选项");
            }
        }
    }
}

3.2 Student

public class Student {
    private String id;
    private String name;
    private int age;
    private String address;

    // Getters and Setters
    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 int getAge() {
        return age;
    }

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

    public String getAddress() {
        return address;
    }

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

3.3 StudentService-API

import java.util.ArrayList;

public interface StudentService {
    void addStudent(ArrayList<Student> list);
    void deleteStudent(ArrayList<Student> list);
    void updateStudent(ArrayList<Student> list);
    void queryStudent(ArrayList<Student> list);
    boolean contains(ArrayList<Student> list, String id);
    int getIndex(ArrayList<Student> list, String id);
}

3.4 StudentAddService

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

public class StudentAddService implements StudentService {

    @Override
    public void addStudent(ArrayList<Student> list) {
        Student s = new Student();
        Scanner sc = new Scanner(System.in);
        String id;
        while (true) {
            System.out.println("请输入学生的id");
            id = sc.next();
            if (contains(list, id)) {
                System.out.println("id已经存在,请重新录入");
            } else {
                s.setId(id);
                break;
            }
        }

        System.out.println("请输入学生的姓名");
        s.setName(sc.next());

        System.out.println("请输入学生的年龄");
        s.setAge(sc.nextInt());

        System.out.println("请输入学生的家庭住址");
        s.setAddress(sc.next());

        list.add(s);
        System.out.println("学生信息添加成功");
    }

    @Override
    public boolean contains(ArrayList<Student> list, String id) {
        return getIndex(list, id) >= 0;
    }

    @Override
    public int getIndex(ArrayList<Student> list, String id) {
        for (int i = 0; i < list.size(); i++) {
            if (list.get(i).getId().equals(id)) {
                return i;
            }
        }
        return -1;
    }

    // 以下方法未使用,但需要实现接口
    @Override
    public void deleteStudent(ArrayList<Student> list) {}

    @Override
    public void updateStudent(ArrayList<Student> list) {}

    @Override
    public void queryStudent(ArrayList<Student> list) {}
}

3.5 StudentDeleteService

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

public class StudentDeleteService implements StudentService {

    @Override
    public void deleteStudent(ArrayList<Student> list) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入要删除的id");
        String id = sc.next();
        int index = getIndex(list, id);
        if (index >= 0) {
            list.remove(index);
            System.out.println("id为:" + id + "的学生删除成功");
        } else {
            System.out.println("id不存在,删除失败");
        }
    }

    @Override
    public int getIndex(ArrayList<Student> list, String id) {
        for (int i = 0; i < list.size(); i++) {
            if (list.get(i).getId().equals(id)) {
                return i;
            }
        }
        return -1;
    }

    // 以下方法未使用,但需要实现接口
    @Override
    public void addStudent(ArrayList<Student> list) {}

    @Override
    public void updateStudent(ArrayList<Student> list) {}

    @Override
    public void queryStudent(ArrayList<Student> list) {}

    @Override
    public boolean contains(ArrayList<Student> list, String id) {
        return false;
    }
}

3.6 StudentQueryService

import java.util.ArrayList;

public class StudentQueryService implements StudentService {

    @Override
    public void queryStudent(ArrayList<Student> list) {
        if (list.isEmpty()) {
            System.out.println("当前无学生信息,请添加后再查询");
            return;
        }

        System.out.println("id\t\t姓名\t年龄\t家庭住址");
        for (Student stu : list) {
            System.out.println(stu.getId() + "\t" + stu.getName() + "\t" + stu.getAge() + "\t" + stu.getAddress());
        }
    }

    // 以下方法未使用,但需要实现接口
    @Override
    public void addStudent(ArrayList<Student> list) {}

    @Override
    public void deleteStudent(ArrayList<Student> list) {}

    @Override
    public void updateStudent(ArrayList<Student> list) {}

    @Override
    public boolean contains(ArrayList<Student> list, String id) {
        return false;
    }

    @Override
    public int getIndex(ArrayList<Student> list, String id) {
        return 0;
    }
}

3.7 StudentUpdateService

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

public class StudentUpdateService implements StudentService {

    @Override
    public void updateStudent(ArrayList<Student> list) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入要修改学生的id");
        String id = sc.next();
        int index = getIndex(list, id);
        if (index == -1) {
            System.out.println("要修改的id" + id + "不存在,请重新输入");
            return;
        }

        Student stu = list.get(index);
        System.out.println("请输入要修改的学生姓名");
        stu.setName(sc.next());

        System.out.println("请输入要修改的学生年龄");
        stu.setAge(sc.nextInt());

        System.out.println("请输入要修改的学生家庭住址");
        stu.setAddress(sc.next());

        System.out.println("学生信息修改成功");
    }

    @Override
    public int getIndex(ArrayList<Student> list, String id) {
        for (int i = 0; i < list.size(); i++) {
            if (list.get(i).getId().equals(id)) {
                return i;
            }
        }
        return -1;
    }
    // 以下方法未使用,但需要实现接口
    @Override
    public void addStudent(ArrayList<Student> list) {}

    @Override
    public void deleteStudent(ArrayList<Student> list) {}

    @Override
    public void queryStudent(ArrayList<Student> list) {}

    @Override
    public boolean contains(ArrayList<Student> list, String id) {
        return false;
    }
}

4. 结果展示

4.1 UI界面

界面

4.2 添加学生功能

在这里插入图片描述

4.3 删除学生功能

在这里插入图片描述

4.4 修改学生功能

在这里插入图片描述

4.5 查看学生功能

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值