校园信息管理系统 Day01-添加功能

这篇博客介绍了如何采用案例驱动的方式,利用Java构建一个校园信息管理系统。系统包含添加、删除、修改和查询学生信息的功能,通过Student、StudentDao、StudentService和StudentController等类实现模块化。学生类封装了学生属性,主方法通过控制台交互,模拟用户操作。目前仅实现了学生管理部分,使用数组作为数据存储,并展示了添加学生功能的基本流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

校园信息管理系统 Day01-添加功能

1案例驱动

1.1学习方式

  • 根据项目来驱动学习,找出项目存在的问题,通过新的知识点进行解决问题
  • 代码配合文字说明,一步一步慢慢走

1.2项目名称

校园信息管理系统

1.3思想介绍

分类思想

1.3.1概述
  • 分工协作,专人做专事
1.3.2目的
  • 解决重复代码过多的冗余,提高代码的复用性
  • 解决业务逻辑聚集紧密导致的可读性差,提高代码的可读性
  • 解决代码可维护性差,提高代码的维护性
1.3.3方法
  • 创建多个类来存储不同的对象,来模拟现实的系统运作
  • Student类 标准学生类,封装键盘录入的学生信息(id , name , age , birthday)
  • StudentDao类 Dao : (Data Access Object 缩写) 用于访问存储数据的数组或集合
  • StudentService类 用来进行业务逻辑的处理(例如: 判断录入的id是否存在)
  • StudentController类 和用户打交道(接收用户需求,采集用户信息,打印数据到控制台)

2系统介绍

在这里插入图片描述

2.1需求介绍

  • 添加学生: 键盘录入学生信息(id,name,age,birthday)
    使用数组存储学生信息,要求学生的id不能重复
  • 删除学生: 键盘录入要删除学生的id值,将该学生从数组中移除,如果录入的id在数组中不存在,需要重新录入
  • 修改学生: 键盘录入要修改学生的id值和修改后的学生信息将数组中该学生的信息修改,如果录入的id在数组中不存在,需要重新录入
  • 查询学生: 将数组中存储的所有学生的信息输出到控制台

2.2项目实现过程

  • 各个类的现实映射

    • StudentController:客服接待,用于与用户的直接接触,接受各种数据,反馈接受结果

    • StudentService:业务员,与数据库的桥梁,进行业务逻辑的判断,

    • StudnetDeo:库管,进行数据的管理

    • Student:学生类

  • 数据库的技术选型:数组—复习数组的知识点,需要自己写方法

  • 注意书写格式:包:小驼峰;类:大驼峰[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JbPkjL8c-1648052605171)(C:\Users\22854\AppData\Roaming\Typora\typora-user-images\image-20220323223712807.png)]

  • entry为程序主入口,创建完的包和类如下
    在这里插入图片描述

2.2.1 菜单的搭建
  • 主界面的菜单
  • 学生界面的菜单
  • 老师界面的菜(先空着)
    • 菜单实现步骤:
      • 在主输出语句完成主界面的编写,
      • 获取用户的选择Scanner的键盘如入
      • 根据用户的选择进行对应的操作——switch语句
  • 代码实现
    • 学生类:
package domain;

public class Student {
    // 学号,姓名,年龄,生日  四个属性
    private String sid;
    private String name;
    private String age;
    private String birthday;

    //使用快捷键 alt+ins 进行空参,有参,get,set方法的构造
    public Student(String sid, String name, String age, String birthday) {
        this.sid = sid;
        this.name = name;
        this.age = age;
        this.birthday = birthday;
    }

    public Student() {
    }

    public String getSid() {
        return sid;
    }

    public void setSid(String sid) {
        this.sid = sid;
    }

    public String getName() {
        return name;
    }

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

    public String getAge() {
        return age;
    }

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

    public String getBirthday() {
        return birthday;
    }

    public void setBirthday(String birthday) {
        this.birthday = birthday;
    }
}
  • 主方法的实现
package entry;

import controller.StudentController;

import java.util.Scanner;

public class Entry {
    //创造主方法
    public static void main(String[] args) {

        //键盘录入创建对象
        Scanner sc = new Scanner(System.in);

        //对其进行   while (true) 死循环,只有输入3 退出系统
        while (true) {
            System.out.println("--------欢迎来到校园信息管理系统--------");
            System.out.println("请输入您的选择: 1.学生管理  2.老师管理  3.退出");
            //键盘录入
            String choice = sc.next();
            // 对choic 进行swith判断
            switch (choice) {
                case "1":
                    //模拟学生管理功能
                    System.out.println("1.学生管理 ");   
                    break;
                case "2":
                    //模拟老师管理功能
                    System.out.println("2.老师管理 ");
                    break;
                case "3":
                    //直接退出jvm虚拟机
                    System.exit(0);
                default:
                    System.out.println("输入错误");
                    break;
            }
        }

    }
}
  • 随后我们去添加学生界面的设计,我们则需要在主方法的case1 后面进行操作
  • 思想 ;公司做大做强了。我要招聘一个前台客服来进行与用户的直接交流,所以创造一个StundetController对象来处理
   					//创造一个业务员
StudentController studentController=new StudentController();
                    //业务员中的start方法,进入学生管理的主界面
                    //因为是不存在的方法,用alt+entry进行快速建造
                    studentController.start();
                    
  • 代码与主界面差不多 ,只是跳出循环的时候不能直接跳出虚拟机,需要命名循环跳出循环,此处是studentLoop
package controller;

import java.util.Scanner;

public class StudentController {

    public void start() {
        //键盘录入创建对象
        Scanner sc = new Scanner(System.in);
        studentLoop:
        while (true) {
            System.out.println("--------欢迎来到 <学生> 管理系统--------");
            System.out.println("请输入您的选择: 1.添加学生  2.删除学生  3.修改学生  4.查看学生  5.退出");
            String choic = sc.next();
            switch (choic) {
                case "1":
                    System.out.println("添加");
                    break;
                case "2":
                    System.out.println("删除");

                    break;
                case "3":
                    System.out.println("修改");

                    break;
                case "4":
                    System.out.println("查询");
                    break;
                case "5":
                    System.out.println("感谢使用,再见");
                    break studentLoop;
                default:
                    System.out.println("您的输入有误, 请重新输入");
                    break;
            }
        }
    }
}
  • 页面已经设计完成
2.2.2各个功能实现步骤
2.2.2.1添加功能
  • 步骤
    在这里插入图片描述

    • 1.用户输入信息
    • 2.StudentController客服接受数据,并进行封装,之后信息传递给StudentService业务员,并进行业务逻辑判断(id是否存在,此处先不进行),若可以添加,则返回添加成功,若不能添加,则返回添加失败
    • 3.StudentService业务员收到数据但无权对数据进行直接的添加,需要传给StudentDao尽心后续操作
    • 4.StudentDao需要先创建数组,此处长度为5,随后将把从StudentDao中接收到的数据进行添加,是否添加成功返回Boolean给StudentService
    • 5.StudentService接受到的boolean返回给StudentController,StudentController根据返回的boolean返回结果
  • 代码实现:

  • 1.在case1之后创建添加学生的方法:addStudent();

  • 2.进行键盘录入,信息的提示输入,数据的封装

    private void addStudent() {
        //键盘录入创建对象
        Scanner sc = new Scanner(System.in);
        //提示输入信息
        System.out.println("请输入姓名学号");
        String sid = sc.next();
        System.out.println("请输入姓名");
        String name = sc.next();
        System.out.println("请输入年龄");
        String age = sc.next();
        System.out.println("请输入生日");
        String birthday = sc.next();
        //封装数据
        //创造一个学生
        Student student=new Student();
        student.setSid(sid);
        student.setName(name);
        student.setAge(age);
        student.setBirthday(birthday);
    }
  • 3.把数据给业务员,要知晓能否储存,(雇佣一个业务员)返回类型为boolean,如果返回为true则可以储存,返回为false,则储存失败
    //创建一个业务员
        StudentService studentService = new StudentService();
        //把数据给业务员,我只要结果
        Boolean result = studentService.addstudent(student);
        //根据结果result的值进行判断
        if (result) {
            System.out.println("输入成功");
        }else {
            System.out.println("输入失败");
        }
  • 4.补充业务员addstudent方法(alt+entry),因暂时没有逻辑判断,只起到一个桥梁的作用
    public Boolean addstudent(Student student) {
        //创建一个库管对象
        StudentDao studentDao = new StudentDao();
        //调用库管的添加方法,并接受
        boolean result = studentDao.addstudent(student);

        //把接收到的值返回给业务员
        return result;
    }
  • 5.在添加之前,我们应该先创建存储对象——数组,因为数组存放的都是学生 ,所以数组类型为学生,数组进来了我们如何判断能不能存储呢?
    • 现在我们要实现两个功能1:判断是否能存储2:如果能存储还要把数据存进去
    • 思路:只要数组里还有空数据,则能存,所以需要遍历数组
      • 要存数据,则需要知道哪一个位置是空的,所以需要一个索引值

      • 还要返回是否存进去了,所以我们要根据这个索引值,来返回Boolean值

      • 所以我们定义一个index为-1,假设都满了存不了

      • 以下是代码实现

public class StudentDao {
     Student[] stus = new Student[5];
    public boolean addstudent(Student student) {
        //定义索引值为-1,假设不存在
        int index = -1;
        //遍历数组
        for (int i = 0; i < stus.length; i++) {
            //如果找到了一个空位
            if (stus[i] == null) {
                //把i赋值给index;确定索引位
                index = i;
                //一找到就要跳出循环
                break;
            }
        }
        //不用写else 没有就 index的值就是-1
        if ( index==-1) {
            return false;
        } else {
            //进行存储
            stus[index]=student;
            return true;
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Gold 大龙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值