实例练习:学生管理系统


前言

一 学生管理系统(简易版)— 使用ArrayList还是有一点繁琐,使用字典会好很多。

下面是需求文档:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
思路:我的思路就是数据管理和业务那一套逻辑。下面是解答
先给出项目结构
在这里插入图片描述
DataManager

package cn.hjblogs.dataManager;

import cn.hjblogs.business.Student;

import java.util.ArrayList;

public class DataManager {
    ArrayList<Student> data_store; // 数据存储器



    // 构造方法
    public DataManager() {
        data_store = new ArrayList<Student>();
    }




    public ArrayList<Student> getData_store() {
        return this.data_store;
    }

    // 添加学生
    public void addStudent(Student student){
        data_store.add(student);
    }

    // 删除学生 by id
    public void deleteStudent(String id){
        for (int i = 0; i < data_store.size(); i++) {
            if (data_store.get(i).getId().equals(id)){
                data_store.remove(i);
                break;
            }
        }
    }

    // 修改学生 by id
    public void updateStudent(String id, Student student){
        for (int i = 0; i < data_store.size(); i++) {
            if (data_store.get(i).getId().equals(id)){
                data_store.set(i, student);
                break;
            }
        }
    }

    // 查询所有学生
    public void queryStudent(){
        System.out.println("id        name     age     address");
        for (int i = 0; i < data_store.size(); i++) {
            System.out.print(data_store.get(i).getId() + " " + data_store.get(i).getName() + " " + data_store.get(i).getAge() + " " + data_store.get(i).getAddress());
            System.out.println();
        }
    }

}

Business

package cn.hjblogs.business;

import cn.hjblogs.dataManager.DataManager;

import java.util.Scanner;

public class Business {
    DataManager dataManager;



    public Business() {
        // 实例化数据管理
        dataManager = new DataManager();

        loop: while (true){
            int choice = menu_choice();
            switch (choice){
                case 1:
                    addStudent_b();
                    break;
                case 2:
                    deleteStudent_b();
                    break;
                case 3:
                    updateStudent_b();
                    break;
                case 4:
                    queryStudent_b();
                    break;
                case 5:
                    System.out.println("退出成功!");
                    break loop;    // 退出循环,如果不加标签,只能退出switch,这是一个标签循环(给循环起名字,然后break 标签名,循环取什么名字都可以)
                default:
                    System.out.println("输入错误,请重新输入!");
                    break;
            }
        }

    }

    public int menu_choice(){
        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);
        return sc.nextInt();
    }

    // 添加学生
    public void addStudent_b(){
        // 这里id存在与否,用ArrayList真不好处理,应该用HashMap
        while (true){
            System.out.println("请输入学生id:");
            Scanner sc = new Scanner(System.in);
            String id = sc.next();
            if (isIdExist(id)){
                System.out.println("id已存在,返回主菜单!");
                break;     // 这里不用continue,因为id已存在,返回主菜单
            }
            System.out.println("请输入学生姓名:");
            String name = sc.next();
            System.out.println("请输入学生年龄:");
            int age = sc.nextInt();
            System.out.println("请输入学生地址:");
            String address = sc.next();
            Student student = new Student(id, name, age, address);
            dataManager.addStudent(student);
            System.out.println("添加成功!");
            System.out.println("是否继续添加?(y/n)");
            String choice = sc.next();
            if (choice.equals("n")){
                break;
            }
        }
    }

    // 删除学生 by id
    public void deleteStudent_b(){
        while (true){
            System.out.println("请输入学生id:");
            Scanner sc = new Scanner(System.in);
            String id = sc.next();
            if (!isIdExist(id)){
                System.out.println("id不存在,返回主菜单!");
                break;  // 这里不用continue,因为id不存在,返回主菜单
            }
            dataManager.deleteStudent(id);
            System.out.println("删除成功!");
            System.out.println("是否继续删除?(y/n)");
            String choice = sc.next();
            if (choice.equals("n")){
                break;
            }
        }
    }

    // 修改学生 by id
    public void updateStudent_b(){
        while (true){
            System.out.println("请输入学生id:");
            Scanner sc = new Scanner(System.in);
            String id = sc.next();
            if (!isIdExist(id)){
                System.out.println("id不存在,返回主菜单!");
                break;  // 这里不用continue,因为id不存在,返回主菜单
            }
            System.out.println("请输入学生姓名:");
            String name = sc.next();
            System.out.println("请输入学生年龄:");
            int age = sc.nextInt();
            System.out.println("请输入学生地址:");
            String address = sc.next();
            Student student = new Student(id, name, age, address);
            dataManager.updateStudent(id, student);
            System.out.println("修改成功!");
            System.out.println("是否继续修改?(y/n)");
            String choice = sc.next();
            if (choice.equals("n")){
                break;
            }
        }
    }

    // 查询所有学生
    public void queryStudent_b(){
        dataManager.queryStudent();
    }


    public boolean isIdExist(String id){
        for (int i = 0; i < dataManager.getData_store().size(); i++) {
            if (dataManager.getData_store().get(i).getId().equals(id)){
                return true;
            }
        }
        return false;
    }


}




Student

package cn.hjblogs.business;

public class Student {
    // 成员变量
    String id;
    String name;
    int age;
    String address;

    // 构造方法
    public Student(String id, String name, int age, String address) {
        this.id = id;
        this.name = name;
        this.age = age;
        this.address = address;
    }

    public String getId() {
        return this.id;
    }
    public String getName() {
        return this.name;
    }
    public int getAge() {
        return this.age;
    }
    public String getAddress() {
        return this.address;
    }


}

Test

package cn.hjblogs.business;

public class Test {
    public static void main(String[] args) {
        Business business = new Business();
    }
}

上面代码所有测试均通过。

二 学生管理系统(升级版):在上面简易版的上面继续添加登录注册等功能

需求如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
思路:新增一个用户类并增加上述功能即可。(有时间可以写写看,其实换汤不换药)
可以将学生业务写到一个StudentBusiness里面,用户业务写到UserBusess里面,再用一个总Business管理所有业务。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值