1、分类思想

分工协作,专人干专事

2、信息管理系统分类

  • Student类 标准学生类,分装键盘录入的学生信息(ID,name, age,birthday)
  • StudentDao类 Dao:(Data Access Object缩写)用于访问存储数据的数组或集合
  • StudentService类 用来进行业务逻辑的处理(例如:判断录入的id是否存在)
  • StudentContoller类 和用户打交道(接收用户的需求,采集用户信息,打印数据到控制台)

    3、分包思想

    如果将所有的类文件都放在同一个包下,不利于管理和后期维护,所以,对于不同功能的类文件,可以放在不同的包下进行管理。
    包:本质上就是文件夹
    创建包:(单级包、多级包)
    多级包之间使用“.”进行分割
    多级包的定义规范:公司的网站地址反转(去掉www)
    包的定义:使用package关键字定义包
    格式:package 包名;如果是多级包,中间用“.”进行分割
    一般情况下:我们不会手动的去给某一个类定义包,使用idea开发工具创建即可

    4、包的注意事项

    package语句必须是程序的第一条可执行的代码
    package语句在一个java文件中只能有一个
    如果没有package,默认表示无包名

    5、类与类之间的访问

    同一个包下的访问
    不需要导包,直接使用即可
    不同包下的访问
    1.import导包后访问
    2.通过全类名(包名 + 类名)访问
    注意:import、package、class三个关键字的摆放位置存在顺序关系
    package必须是程序的第一条可执行的代码
    import需要写在package下面
    class需要写在import下面

    6、环境搭建

    创建模块:itheima-edu-info-manager
    创建包、创建类
存储的类 作用
com.itheima.edu.info.manager.domain Student.java 封装学生信息
com.itheima.edu.info.manager.dao StudentDao.java 访问存储数据的数组,进行增删改查
com.itheima.edu.info.manager.service StudentService.java 业务的逻辑处理(业务员)
com.itheima.edu.info.manager.controller StudentController.java 和用户打交道(客服接待)
com.itheima.edu.info.manager.entry InfoManagerEntry.java 程序的入口类,提供一个main方法

7、菜单搭建

  1. package com.itheima.edu.info.manager.entry;
  2. import com.itheima.edu.info.manager.controller.StudentController;
  3. import java.util.Scanner;
  4. public class InfoManagerEntry {
  5. public static void main(String[] args) {
  6. Scanner sc = new Scanner(System.in);
  7. while (true){
  8. System.out.println("------欢迎来到黑马信息管理系统------");
  9. System.out.println("请输入您的选择:1.学生管理 2.老师管理 3.退出");
  10. String choice = sc.next();
  11. switch (choice){
  12. case "1":
  13. //System.out.println("学生管理");
  14. StudentController studentController = new StudentController();
  15. studentController.start();
  16. break;
  17. case "2":
  18. System.out.println("老师管理");
  19. break;
  20. case "3":
  21. System.out.println("感谢您的使用");
  22. //退出JVM虚拟机
  23. System.exit(0);
  24. default:
  25. System.out.println("您的输入有误请重新输入");
  26. break;
  27. }
  28. }
  29. }
  30. }

在进行学生管理还是老师管理的选择后,应该新建一个StudentController对象来处理后续工作,而不是在同一个文件里处理所有工作。
退出的时候可以使用System.exit(0)退出整个JVM虚拟机。

8、添加功能思路

  1. StudentController对象的addStudent方法收到用户输入的信息
  2. StudentController对象将学生信息封装为学生对象传递给StudentService
  3. StudentService将接受到的学生对象,传递给StudentDao
  4. StudentDao创建Student学生数组长度为5
  5. 将接受到的学生对象添加到数组中
  6. StudentDao返回是否添加成功的boolean类型值给StudentService
  7. StudentService接受StudentDao的boolean返回值,将结果返还给StudentController
  8. StudentController接受StudentService的boolean类型返回值,根据结果在控制台打印添加成功/添加失败

    9、判断学号是否重复

  9. 接受学生id后,判断该id在数组中是否存在

  10. 指派StudentService中isExists方法判断id是否存在,该方法返回boolean类型。
  11. isExists方法需要从StudentDao中获取存储学生对象的数组
  12. 使用StudentDao调用内部findAllStudent方法,该方法返回学生数组
  13. 遍历数组获取每一个学生对象,判断学号是否存在,返回true或者false给StudentController
  14. 接受学生id和判断的代码,使用无限循环包裹,知道输入了不存在的id,结束循环

    10、static关键字

    static关键字是静态的意思,是Java中的一个修饰符,可以修饰成员方法、成员变量
    被static修饰的成员变量,一般叫做静态变量
    被static修饰的成员方法,一般叫做静态方法
    static修饰的特点
  • 被类的所有对象共享
    是我们判断是否使用静态关键字的条件
  • 随着类的加载而加载,优先于对象存在
    对象需要类被加载后,才能创建
  • 可以通过类名调用
    也可以通过对象名调用
    推荐使用类名调用

    11、static内存图

    static关键字内存图解.png
    static注意事项总结:静态方法中,只能访问静态成员,静态中没有this关键字

    12、查询学生功能

    StudentController
  1. 编写findAllStudent方法
  2. 方法内部创建StudentService业务对象
  3. 调用业务员对象中的findAllStudent方法,得到学生数组
  4. 判断数组地址是否为null,是的话,提示查无信息
  5. 不为null,遍历数组,打印学生信息

StudentService

  1. 从StudentDao中获取存储学生对象的数组调用内部findAllStudent方法
  2. 判断学生数组中是否有数据
    有:返回数组地址
    无:返回null

StudentDao
findAllStudent方法将学生数组返回即可

13、删除学生功能

StudentController

  1. 编写deleteStudentById方法
  2. 接收用户要删除的学生id
  3. 调用StudetService业务员对象中的isExists方法,判断学号是否存在,不存在则继续录入
  4. 调用StudentService业务员对象中的deleteStudentById方法,根据id删除学生,并提示删除成功

StudentService

  1. deleteStudentById方法
  2. 调用StudentDao中的deleteStudentById方法删除学生

StudentDao

  1. deleteStudentById方法
  2. 查找学生id,在数组中所在的索引位置
  3. 将该索引位置的学生对象,使用null进行替换

    14、修改学生功能

    StudentController

  4. 编写updateStudent方法

  5. 接收用户要修改的学生id
  6. 调用StudentService业务员对象中的isExists方法,判断学号是否存在,不存在则继续录入
  7. 录入新的学生信息,封装为学生对象
  8. 调用StudentService业务员对象中的updateStudent方法,修改学生,并提示修改成功

StudentService

  1. updateStudent方法

该方法需要接收两个参数
1.学生id
2.新的学生对象
调用StudentDao中的updateStudent方法,将参数传入
StudentDao

  1. updateStudent方法
  2. 查找学生id,在数组中所在的索引位置
  3. 将该索引位置的学生对象,使用心得学生对象进行替换