分类分包思想实现信息管理系统

    技术2026-03-02  8

    https://download.csdn.net/download/weixin_44649793/12800758

    1.分类思想

    分类思想概述

    分工协作,专人干专事

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

    2.分包思想

    2.1分包思想概述

    如果将所有的类文件都放在同一个包下,不利于管理和后期维护,所以,对于不同功能的类文件,可以放在不同的包下进 行管理

    2.2包的概述

    包 本质上就是文件夹创建包 多级包之间使用 " . " 进行分割多级包的定义规范:公司的网站地址翻转(去掉www)包的命名规则:字母都是小写

    2.3包的注意事项

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

    2.4类与类之间的访问

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

    3.信息管理系统

    3.1系统介绍

    系统分为学生管理和老师管理,可以完成对信息的增删改查。

    3.2学生管理系统

    3.2.1需求说明
    添加学生: 键盘录入学生信息(id,name,age,birthday) 使用数组存储学生信息,要求学生的id不能重复删除学生: 键盘录入要删除学生的id值,将该学生从数组中移除,如果录入的id在数组中不存在,需要重新录入修改学生: 键盘录入要修改学生的id值和修改后的学生信息 将数组中该学生的信息修改,如果录入的id在数组中不存在,需要重新录入查询学生: 将数组中存储的所有学生的信息输出到控制台 包存储的类作用edu.info.manager.domainStudent.java封装学生信息edu.info.manager.daoStudentDao.java对数组进行增删改查edu.info.manager.serviceStudentService.java业务的逻辑处理(业务员)edu.info.manager.controllerStudentController.java和用户打交道edu.info.manager.entryInfoManagerEntry.java程序入口,提供main方法
    3.2.2代码实现

    Student类

    public class Student extends Person{ private String id; private String name; private String age; private String birthday; 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类

    import java.util.Scanner; /* 添加学生: 键盘录入学生信息(id,name,age,birthday) 使用数组存储学生信息,要求学生的id不能重复 删除学生: 键盘录入要删除学生的id值,将该学生从数组中移除,如果录入的id在数组中不存在,需要重新录入 修改学生: 键盘录入要修改学生的id值和修改后的学生信息 将数组中该学生的信息修改,如果录入的id在数组中不存在,需要重新录入 查询学生: 将数组中存储的所有学生的信息输出到控制台 */ 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.退出"); int num=sc.nextInt(); switch (num){ case 1://学生管理 StudentController studentController=new StudentController(); studentController.start(); break; case 2://教师管理 TeacherController teacherController=new TeacherController(); teacherController.start(); break; case 3: System.out.println("感谢您的使用!"); System.exit(0);//结束jvm //break l; default: System.out.println("输入有误,请重新输入!"); } } } }

    StudentController类

    import edu.info.manager.domain.Student; import edu.info.manager.service.StudentService; import java.util.Scanner; public class StudentController { Scanner sc = new Scanner(System.in); StudentService studentService = new StudentService(); public void start() { Scanner sc = new Scanner(System.in); l: while (true) { System.out.println("---------欢迎来到>学生<管理系统---------"); System.out.println("请输入您的选择: 1.添加学生 2.删除学生 3.修改学生 4.查看学生 5.退 出"); int num = sc.nextInt(); switch (num) { case 1: //添加学生 addStudent(); break; case 2: //删除学生 deleteStudentById(); break; case 3: //修改学生 updataStudent(); break; case 4: //查看学生 findAllStudent(); break; case 5: System.out.println("感谢使用学生管理系统!"); break l; } } } //查看学生 private void findAllStudent() { Student[] students = studentService.findAllStudent(); if (students == null) { System.out.println("暂无学生信息,请先添加!"); } else { System.out.println("学号\t\t姓名\t年龄\t出生日期"); for (int i = 0; i < students.length; i++) { Student student = students[i]; if (student != null) { System.out.println(student.getId() + "\t" + student.getName() + "\t" + student.getAge() + "\t" + student.getBirthday()); } } } } //修改学生 private void updataStudent() { String sid = inputStudentId(); System.out.println("请输入姓名:"); String sname = sc.next(); System.out.println("请输入年龄:"); String sage = sc.next(); System.out.println("请输入日期:"); String sbirthday = sc.next(); Student newStu = new Student(sid, sname, sage, sbirthday); boolean upresult = studentService.updataStudent(newStu, sid); if (upresult) { System.out.println("修改成功!"); } } //删除学生 private void deleteStudentById() { String sid = inputStudentId(); boolean del = studentService.deleteStudentById(sid); if (del) { System.out.println("删除成功!"); } } //输入信息方法 private String inputStudentId() { String sid = inputStudentId(); return sid; } //添加学生 private void addStudent() { String sid; while (true) { System.out.println("请输入学号:"); sid = sc.next(); boolean flag = studentService.isExists(sid); if (flag) { System.out.println("学号已经存在,请重新输入!"); } else { break; } } System.out.println("请输入姓名:"); String sname = sc.next(); System.out.println("请输入年龄:"); String sage = sc.next(); System.out.println("请输入日期:"); String sbirthday = sc.next(); //将键盘输入的信息封装为学生对象 Student student = new Student(); student.setId(sid); student.setName(sname); student.setAge(sage); student.setBirthday(sbirthday); boolean result = studentService.addStudent(student); if (result) { System.out.println("添加成功!"); } } }

    StudentService类

    import edu.info.manager.dao.StudentDao; import edu.info.manager.domain.Student; public class StudentService { StudentDao studentDao=new StudentDao(); //添加 public boolean addStudent(Student student) { boolean result = studentDao.addStudent(student); return result; } //判断学号是否存在 public boolean isExists(String sid) { Student[] stus=studentDao.findAllStudent(); //默认该学号不存在 boolean exists=false; for (int i = 0; i < stus.length; i++) { Student student=stus[i]; if (student!=null&&student.getId().equals(sid)){ //System.out.println("学号已经存在!"); exists= true; } } return exists; } //删除学生 public boolean deleteStudentById(String sid) { boolean del=studentDao.deleteStudentById(sid); return del; } //修改学生 public boolean updataStudent(Student newStu,String sid) { return studentDao.updataStudent(newStu,sid); } //查看学生 public Student[] findAllStudent() { Student[] allStudent= studentDao.findAllStudent(); boolean flag=false; for (int i = 0; i < allStudent.length; i++) { Student student = allStudent[i]; if (student!=null){ flag=true; break; } } if (flag){ return allStudent; }else { return null; } } }

    StudentDao类

    import edu.info.manager.domain.Student; public class StudentDao { private static Student[] students = new Student[5]; //添加 public boolean addStudent(Student student) { int index = -1; for (int i = 0; i < students.length; i++) { Student stu = students[i]; if (stu == null) { index = i; break; } } if (index == -1) { return false; } else { students[index] = student; return true; } } //删除学生 public boolean deleteStudentById(String sid) { boolean flag=false; int index = getIndex(sid); if (index!=-1){ students[index]=null; flag=true; } return flag; } //获取索引值 public int getIndex(String id) { int index = -1; for (int i = 0; i < students.length; i++) { Student stu=students[i]; if (stu!=null&&stu.getId().equals(id)){ index=i; } } return index; } //修改学生 public boolean updataStudent(Student newStu,String sid) { boolean upresult=false; int index = getIndex(sid); if (index!=-1){ students[index]=newStu; upresult=true; } return upresult; } //查看学生 public Student[] findAllStudent() { return students; } }

    3.3老师管理系统

    3.3.1需求说明

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

    基本与学生信息管理系统相似。

    3.3.2实现步骤

    Teacher类

    public class Teacher extends Person{ private String id; private String name; private String age; private String birthday; public Teacher() { } public Teacher(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; } }

    TeacherController类

    import edu.info.manager.domain.Teacher; import edu.info.manager.service.TeacherService; import java.util.Scanner; public class TeacherController { Scanner sc = new Scanner(System.in); TeacherService teacherService = new TeacherService(); public void start() { l: while (true) { System.out.println("‐‐‐‐‐‐‐‐欢迎来到 <老师> 管理系统‐‐‐‐‐‐‐‐"); System.out.println("请输入您的选择: 1.添加老师 2.删除老师 3.修改老师 4.查看老师 5.退 出"); int num = sc.nextInt(); switch (num) { case 1: //添加 addTeacher(); break; case 2: //删除 delTeacherById(); break; case 3: //修改 updataTeacher(); break; case 4: //查看 getAllTeacher(); break; case 5: break l; default: System.out.println("输入的选择不合理,请重新输入!"); } } } //查看 private void getAllTeacher() { Teacher[] teachers = teacherService.getAllTeacher(); if (teachers == null) { System.out.println("暂无数据,请添加!"); return; } System.out.println("id\t\t姓名\t年龄\t出生日期"); for (int i = 0; i < teachers.length; i++) { Teacher teacher = teachers[i]; if (teacher != null) { System.out.println(teacher.getId() + "\t" + teacher.getName() + "\t" + teacher.getAge() + "\t" + teacher.getBirthday()); } } } //修改 private void updataTeacher() { String sid; while (true) { System.out.println("请输入学号:"); sid = sc.next(); boolean upResult = teacherService.isExists(sid); if (upResult) { break; } else { System.out.println("输入的id不存在,请重新输入:"); } } System.out.println("请输入姓名:"); String sname = sc.next(); System.out.println("请输入年龄:"); String sage = sc.next(); System.out.println("请输入日期:"); String sbirthday = sc.next(); Teacher upteacher = new Teacher(sid, sname, sage, sbirthday); boolean result = teacherService.updataTeacher(upteacher, sid); if (result) { System.out.println("修改成功!"); } } //删除 private void delTeacherById() { String id; while (true) { System.out.println("请输入要删除的学号:"); id = sc.next(); boolean delresult = teacherService.isExists(id); if (delresult) { break; } else { System.out.println("输入的学号不存在,请重新输入!"); } } boolean result = teacherService.delTeacherById(id); if (result) { System.out.println("删除成功!"); } } //添加教师 private void addTeacher() { String sid; while (true) { System.out.println("请输入老师id:"); sid = sc.next(); boolean isresult = teacherService.isExists(sid); if (isresult) { System.out.println("id已存在,请重新输入!"); } else { break; } } System.out.println("请输入姓名:"); String sname = sc.next(); System.out.println("请输入年龄:"); String sage = sc.next(); System.out.println("请输入出生日期:"); String sbirthday = sc.next(); Teacher addTeacher = new Teacher(sid, sname, sage, sbirthday); boolean addResult = teacherService.addTeacher(addTeacher); if (addResult) { System.out.println("添加成功!"); } } }

    TeacherService类

    import edu.info.manager.dao.TeacherDao; import edu.info.manager.domain.Teacher; public class TeacherService { TeacherDao teacherDao=new TeacherDao(); //判断是否存在 public boolean isExists(String sid) { Teacher[] teacher=teacherDao.getAllTeacher(); boolean flag=false;//默认学号不存在 for (int i = 0; i < teacher.length; i++) { Teacher tea=teacher[i]; if (tea!=null&&tea.getId().equals(sid)){ flag=true;//学号存在 } } return flag; } //添加 public boolean addTeacher(Teacher addTeacher) { return teacherDao.addTeacher(addTeacher); } //删除 public boolean delTeacherById(String id) { return teacherDao.delTeacherById(id); } //修改 public boolean updataTeacher(Teacher upteacher,String sid) { return teacherDao.updataTeacher(upteacher,sid); } //查看 public Teacher[] getAllTeacher() { Teacher[] allteacher= teacherDao.getAllTeacher(); boolean flag=false; for (int i = 0; i < allteacher.length; i++) { Teacher teacher = allteacher[i]; if (teacher!=null){ flag=true; break; } } if (flag){ return allteacher; }else { return null; } } }

    TeacherDao类

    import edu.info.manager.domain.Teacher; public class TeacherDao { private static Teacher[]teachers=new Teacher[5]; //添加教师 public boolean addTeacher(Teacher addTeacher) { int index=-1; for (int i = 0; i < teachers.length; i++) { Teacher tea=teachers[i]; if (tea==null){ index=i; break; } } if (index==-1){ return false;// }else { teachers[index]=addTeacher; return true; } } //删除 public boolean delTeacherById(String id) { int index = getIndex(id); if (index==-1){ return false; }else { teachers[index]=null; return true; } } //获取索引值 public static int getIndex(String id){ int index=-1; for (int i = 0; i < teachers.length; i++) { Teacher tea = teachers[i]; if (tea!=null&&tea.getId().equals(id)){ index=i; break; } } return index; } //获取所有的教师对象 public Teacher[] getAllTeacher() { return teachers; } //修改 public boolean updataTeacher(Teacher upteacher,String sid) { int index=getIndex(sid); if (index==-1){ return false; }else { teachers[index]=upteacher; return true; } } }

    在创建数组存储对象时需使用static关键字修饰,否则会重复创建数组, 每次调用方法都会使用不同的数组,难以实现增删改查。

    4.static关键字

    4.1static关键字概述

    static 关键字是静态的意思,是Java中的一个修饰符,可以修饰成员方法,成员变量

    4.2static修饰的特点

    被类的所有对象共享是我们判断是否使用静态关键字的条件随着类的加载而加载,优先于对象存在 对象需要类被加载后,才能创建可以通过类名调用 也可以通过对象名调用

    4.3static关键字注意事项

    静态方法只能访问静态的成员非静态方法可以访问静态的成员,也可以访问非静态的成员静态方法中是没有this关键字

    5.优化

    可以对代码进行优化,通过继承对类进行改进提高代码的复用性。将重复的代码块抽取定义为一个方法。等等

    Processed: 0.017, SQL: 9