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、菜单搭建
package com.itheima.edu.info.manager.entry;
import com.itheima.edu.info.manager.controller.StudentController;
import java.util.Scanner;
public class InfoManagerEntry {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (true){
System.out.println("------欢迎来到黑马信息管理系统------");
System.out.println("请输入您的选择:1.学生管理 2.老师管理 3.退出");
String choice = sc.next();
switch (choice){
case "1":
//System.out.println("学生管理");
StudentController studentController = new StudentController();
studentController.start();
break;
case "2":
System.out.println("老师管理");
break;
case "3":
System.out.println("感谢您的使用");
//退出JVM虚拟机
System.exit(0);
default:
System.out.println("您的输入有误请重新输入");
break;
}
}
}
}
在进行学生管理还是老师管理的选择后,应该新建一个StudentController对象来处理后续工作,而不是在同一个文件里处理所有工作。
退出的时候可以使用System.exit(0)
退出整个JVM虚拟机。
8、添加功能思路
- StudentController对象的addStudent方法收到用户输入的信息
- StudentController对象将学生信息封装为学生对象传递给StudentService
- StudentService将接受到的学生对象,传递给StudentDao
- StudentDao创建Student学生数组长度为5
- 将接受到的学生对象添加到数组中
- StudentDao返回是否添加成功的boolean类型值给StudentService
- StudentService接受StudentDao的boolean返回值,将结果返还给StudentController
StudentController接受StudentService的boolean类型返回值,根据结果在控制台打印添加成功/添加失败
9、判断学号是否重复
接受学生id后,判断该id在数组中是否存在
- 指派StudentService中isExists方法判断id是否存在,该方法返回boolean类型。
- isExists方法需要从StudentDao中获取存储学生对象的数组
- 使用StudentDao调用内部findAllStudent方法,该方法返回学生数组
- 遍历数组获取每一个学生对象,判断学号是否存在,返回true或者false给StudentController
- 接受学生id和判断的代码,使用无限循环包裹,知道输入了不存在的id,结束循环
10、static关键字
static关键字是静态的意思,是Java中的一个修饰符,可以修饰成员方法、成员变量
被static修饰的成员变量,一般叫做静态变量
被static修饰的成员方法,一般叫做静态方法
static修饰的特点
- 被类的所有对象共享
是我们判断是否使用静态关键字的条件 - 随着类的加载而加载,优先于对象存在
对象需要类被加载后,才能创建 - 可以通过类名调用
也可以通过对象名调用
推荐使用类名调用11、static内存图
static注意事项总结:静态方法中,只能访问静态成员,静态中没有this关键字12、查询学生功能
StudentController
- 编写findAllStudent方法
- 方法内部创建StudentService业务对象
- 调用业务员对象中的findAllStudent方法,得到学生数组
- 判断数组地址是否为null,是的话,提示查无信息
- 不为null,遍历数组,打印学生信息
StudentService
- 从StudentDao中获取存储学生对象的数组调用内部findAllStudent方法
- 判断学生数组中是否有数据
有:返回数组地址
无:返回null
StudentDao
findAllStudent方法将学生数组返回即可
13、删除学生功能
StudentController
- 编写deleteStudentById方法
- 接收用户要删除的学生id
- 调用StudetService业务员对象中的isExists方法,判断学号是否存在,不存在则继续录入
- 调用StudentService业务员对象中的deleteStudentById方法,根据id删除学生,并提示删除成功
StudentService
- deleteStudentById方法
- 调用StudentDao中的deleteStudentById方法删除学生
StudentDao
- deleteStudentById方法
- 查找学生id,在数组中所在的索引位置
-
14、修改学生功能
StudentController
编写updateStudent方法
- 接收用户要修改的学生id
- 调用StudentService业务员对象中的isExists方法,判断学号是否存在,不存在则继续录入
- 录入新的学生信息,封装为学生对象
- 调用StudentService业务员对象中的updateStudent方法,修改学生,并提示修改成功
StudentService
- updateStudent方法
该方法需要接收两个参数
1.学生id
2.新的学生对象
调用StudentDao中的updateStudent方法,将参数传入
StudentDao
- updateStudent方法
- 查找学生id,在数组中所在的索引位置
- 将该索引位置的学生对象,使用心得学生对象进行替换