1.案例驱动模式
1.1案例驱动模式概述 (理解)
通过我们已掌握的知识点,先实现一个案例,然后找出这个案例中,存在的一些问题,在通过新知识点解决问题
1.2案例驱动模式的好处 (理解)
- 解决重复代码过多的冗余,提高代码的复用性
- 解决业务逻辑聚集紧密导致的可读性差,提高代码的可读性
- 解决代码可维护性差,提高代码的维护性
2.分类思想
2.1分类思想概述 (理解)
分工协作,专人干专事
2.2信息管理系统 (理解)
-
Student类 标准学生类,封装键盘录入的学生信息(id , name , age , birthday)
-
StudentDao类 Dao : (Data Access Object 缩写) 用于访问存储数据的数组或集合
-
StudentService类 用来进行业务逻辑的处理(例如: 判断录入的id是否存在)
-
StudentController类 和用户打交道(接收用户需求,采集用户信息,打印数据到控制台)
3.分包思想
3.1分包思想概述 (理解)
如果将所有的类文件都放在同一个包下,不利于管理和后期维护,所以,对于不同功能的类文件,可以放在不同的包下进行管理
3.2包的概述 (记忆)
-
包
本质上就是文件夹
-
创建包
多级包之间使用 " . " 进行分割
多级包的定义规范:公司的网站地址翻转(去掉www)
比如:网址为www.abc.com
后期我们所定义的包的结构就是:com.abc.其他的包名 -
包的命名规则
字母都是小写
3.3包的注意事项 (理解)
- package语句必须是程序的第一条可执行的代码
- package语句在一个java文件中只能有一个
- 如果没有package,默认表示无包名
3.4类与类之间的访问 (理解)
-
同一个包下的访问
不需要导包,直接使用即可
-
不同包下的访问
1.import 导包后访问
2.通过全类名(包名 + 类名)访问
-
注意:import 、package 、class 三个关键字的摆放位置存在顺序关系
package 必须是程序的第一条可执行的代码
import 需要写在 package 下面
class 需要在 import 下面
4.信息管理系统
4.1系统介绍 (理解)
4.2学生管理系统 (应用)
4.2.1需求说明
-
添加学生: 键盘录入学生信息(id,name,age,birthday)
使用数组存储学生信息,要求学生的id不能重复
-
删除学生: 键盘录入要删除学生的id值,将该学生从数组中移除,如果录入的id在数组中不存在,需要重新录入
-
修改学生: 键盘录入要修改学生的id值和修改后的学生信息
将数组中该学生的信息修改,如果录入的id在数组中不存在,需要重新录入
-
查询学生: 将数组中存储的所有学生的信息输出到控制台
4.2.2实现步骤
-
环境搭建实现步骤
包 存储的类 作用 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方法 -
菜单搭建实现步骤
- 需求
- 管理系统菜单搭建
- 学生管理系统菜单搭建
- 实现步骤
- 展示欢迎页面,用输出语句完成主界面的编写
- 获取用户的选择,用Scanner实现键盘录入数据
- 根据用户的选择执行对应的操作,用switch语句完成操作的选择
- 需求
-
添加功能实现步骤
- 添加功能优化:判断id是否存在
- 查询功能实现步骤
- 删除功能实现步骤
- 修改功能实现步骤
-
系统优化
- 把updateStudent和deleteStudentById中录入学生id代码抽取到一个方法(inputStudentId)中
该方法的主要作用就是录入学生的id,方法的返回值为String类型
- 把updateStudent和deleteStudentById中录入学生id代码抽取到一个方法(inputStudentId)中
-
把addStudent和updateStudent中录入学生信息的代码抽取到一个方法(inputStudentInfo)中
该方法的主要作用就是录入学生的信息,并封装为学生对象,方法的返回值为Student类型
4.2.3代码实现
学生类
public class Student {
private String id;
private String name;
private String age;
private String birthday;
String address;
public Student() {
}
public Student(String id, String name, String age, String birthday) {
this.id = id;
this.name = name;
this.age = age;
this.birthday = birthday;
}
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 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;
}
}
程序入口InfoManagerEntry类
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("老师管理");
TeacherController teacherController = new TeacherController();
teacherController.start();
break;
case "3":
System.out.println("感谢您的使用");
// 退出当前正在运行的JVM虚拟机
System.exit(0);
break;
default:
System.out.println("您的输入有误, 请重新输入");
break;
}
}
}
}
StudentController类
public class StudentController {
// 业务员对象
private StudentService studentService = new StudentService();
private Scanner sc = new Scanner(System.in);
// 开启学生管理系统, 并展示学生管理系统菜单
public void start() {
//Scanner sc = new Scanner(System.in);
studentLoop:
while (true) {
System.out.println("--------欢迎来到 <学生> 管理系统--------");
System.out.println("请输入您的选择: 1.添加学生 2.删除学生 3.修改学生 4.查看学生 5.退出");
String choice = sc.next();
switch (choice) {
case "1":
// System.out.println("添加");
addStudent();
break;
case "2":
// System.out.println("删除");
deleteStudentById();
break;
case "3":
// System.out.println("修改");
updateStudent();
break;
case "4":
// System.out.println("查询");
findAllStudent(<