-
准备素材
Person类(pid,name,sex);sex是指定位到男生宿舍还是女生宿舍。
Room类(rid,Person[] people,type)type是指定此宿舍为男生宿舍还是女生宿舍。 -
业务流程
(1)先准备宿舍; – 要有人; – 入住到宿舍中; – 展示宿舍中当前所有的信息 – 展示宿舍中的人员信息。
(2)准备增删改查:新增 – 解决新增的人信息何处来; – 怎么将此数据存储到宿舍中。
创建项目
项目目录
创建Person
package com.erha.model;
public class Person {
private int pid; // 编号
private String name; // 姓名
private String sex; // 性别
public int getPid() {
return pid;
}
public void setPid(int pid) {
this.pid = pid;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public Person() {
}
public Person(String name, String sex) {
this.name = name;
this.sex = sex;
}
public Person(int pid, String name, String sex) {
this.pid = pid;
this.name = name;
this.sex = sex;
}
public String toString(){
return "人员编号:"+pid+",人员姓名:"+name+",人员性别:"+sex;
}
}
准备宿舍Room类
package com.erha.model;
public class Room {
private int rid; // 房间编号
private Person[] people;// 住宿的人
private String type; // 房间类型
public int getRid() {
return rid;
}
public void setRid(int rid) {
this.rid = rid;
}
public Person[] getPeople() {
return people;
}
public void setPeople(Person[] people) {
this.people = people;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public Room() {
}
public Room(Person[] people, String type) {
this.people = people;
this.type = type;
}
public Room(int rid, Person[] people, String type) {
this.rid = rid;
this.people = people;
this.type = type;
}
public String toString(){
return "房间编号:"+rid+",当前人数:"+people.length+",房间类型:"+type;
}
}
Dao层
PersonDao、RoomDao
public interface PersonDao {
//1.先解决初始化问题
void doInitPerson();
//1.新增一个人员到宿舍中
boolean doAddPersonToRoom(Person person);
//2.删除宿舍人员
void doDelPersonToRoom(int pid);
//3.修改宿舍人员
boolean doUpdPersonToRoom(Person person);
//4.单查宿舍人员
void doFindById(int pid);
//5.全查宿舍人员
void doPrintAll();
}
package com.erha.dao;
import com.erha.model.Room;
public interface RoomDao {
//准备好宿舍
Room[] getRooms();
}
PersonDaoImpl、增删改查操作
public class PersonDaoImpl implements PersonDao {
// 房间从哪里获取的
RoomDaoImpl rdi = new RoomDaoImpl();
Room[] rooms=rdi.getRooms();
@Override
public void doInitPerson() {
Person p1 = new Person(1001,"刘德","男");
Person p2 = new Person(1002,"刘彭","男");
Person p3 = new Person(1003,"刘若","女");
// 将人放到对应的宿舍中进行存储
rooms[0].getPeople()[0] = p1;
rooms[0].getPeople()[1] = p2;
rooms[6].getPeople()[0] = p3;
}
/***
* 2.新增宿舍
* @param person : 来源自于PersonUtil
* @return true 代表成功,false代表失败
*/
@Override
public boolean doAddPersonToRoom(Person person) {
//先找到空宿舍
if(person.getSex().equals("男")){ //代表男生宿舍
for (int i =0;i<6;i++){
for(int j=0;j<rooms[i].getPeople().length;j++){ //每个宿舍的人
if(rooms[i].getPeople()[j]==null){
rooms[i].getPeople()[j] = person;
return true;
}
}
}
}else if(person.getSex().equals("女")){ //代表女生宿舍
for (int i =6;i<rooms.length;i++) {
for (int j = 0; j < rooms[i].getPeople().length; j++) { //每个宿舍的人
if (rooms[i].getPeople()[j] == null) {
rooms[i].getPeople()[j] = person;
return true;
}
}
}
}
return false;
}
//3.删除人员
public void doDelPersonToRoom(int pid){
for (int i=0;i<rooms.length;i++){
if (rooms[i].getPeople()!=null) {
for (int j = 0; j < rooms[i].getPeople().length; j++) {
if (rooms[i].getPeople()[j].getPid() == pid) {
rooms[i].getPeople()[j] = null;
System.out.println("删除成功");
break;
}else{
System.out.println("人员不存在");
break;
}
}
}
break;
}
}
//4.修改宿舍人员
public boolean doUpdPersonToRoom(Person person){
for (int i=0;i<rooms.length;i++){
if (rooms[i].getPeople()!=null) {
for (int j = 0; j < rooms[i].getPeople().length; j++) {
if (rooms[i].getPeople()[j].getPid() == person.getPid()) {
rooms[i].getPeople()[j] = person;
return true;
}else{
return false;
}
}
}
}
return false;
}
//5.单查宿舍信息
@Override
public void doFindById(int pid) {
for (int i=0;i<rooms.length;i++){
if (rooms[i].getPeople()!=null) {
for (int j = 0; j < rooms[i].getPeople().length; j++) {
if (rooms[i].getPeople()[j].getPid() == pid&&rooms[i].getPeople()[j]!=null) {
System.out.println(rooms[i].getPeople()[j]);
break;
}else{
System.out.println("人员不存在");
break;
}
}
}break;
}
}
/**
* 6.打印住宿所有信息
*/
@Override
public void doPrintAll() {
//首先找到宿舍
for(int i=0;i<rooms.length;i++){
int num = 0; //刚开始每个宿舍都没有人
//打印宿舍人员信息
if(rooms[i].getPeople()!=null){
for(int j=0;j<rooms[i].getPeople().length;j++){
if(rooms[i].getPeople()[j]!=null){
num++;
}
}
//打印宿舍信息
System.out.println("当前宿舍为:"+rooms[i].getRid()+",此宿舍当前人数为:"+num+",宿舍类型为:"+rooms[i].getType()+"生宿舍");
for(int j=0;j<rooms[i].getPeople().length;j++){
if(rooms[i].getPeople()[j]!=null){
System.out.println(rooms[i].getPeople()[j]);
}
}
}
System.out.println();
}
}
}
RoomDaoImpl
public class RoomDaoImpl implements RoomDao {
Room[] rooms = new Room[10];
/**
* 1. 获取宿舍提供有效住宿房间
* @return 多个房间返回
*/
@Override
public Room[] getRooms() {
// (1)定义前6个房间为男生宿舍
for(int i =0;i<=5;i++){
rooms[i] = new Room((i+100),new Person[6],"男");
}
// (2)定义后4个房间为女生宿舍
for(int i=6;i<rooms.length;i++){
rooms[i] = new Room((i+100),new Person[6],"女");
}
return rooms;
}
service层
PersonService、
public interface PersonService {
//1.先解决初始化问题
void doInitPerson();
//1.新增一个人员到宿舍中
boolean doAddPersonToRoom(Person person);
//2.删除宿舍人员
boolean doDelPersonToRoom(Person person);
//删除人员
void doDelPersonToRoom(int pid);
//3.修改宿舍人员
boolean doUpdPersonToRoom(Person person);
//4.单查宿舍人员
void doFindById(int pid);
//5.全查宿舍人员
void doPrintAll();
}
PersonServiceImpl
public abstract class PersonServiceImpl implements PersonService {
PersonDaoImpl pdidao = new PersonDaoImpl();
@Override
public void doInitPerson() {
pdidao.doInitPerson();
}
//新增人员
@Override
public boolean doAddPersonToRoom(Person person) {
boolean b = pdidao.doAddPersonToRoom(person);
if(b){
System.out.println("新增成功!");
return true;
}else {
System.out.println("新增失败!");
return false;
}
}
//删除人员
@Override
public void doDelPersonToRoom(int pid) {
pdidao.doDelPersonToRoom(pid);
}
@Override
public boolean doUpdPersonToRoom(Person person) {
boolean b= pdidao.doUpdPersonToRoom(person);
if(b){
System.out.println("修改成功!");
return true;
}else {
System.out.println("修改失败!");
return false;
}
}
//4.单查
@Override
public void doFindById(int pid) {
pdidao.doFindById(pid);
}
//5.全查信息
@Override
public void doPrintAll() {
pdidao.doPrintAll();
}
}
APPUI
代码运行
public class AppUi {
Scanner in = new Scanner(System.in);
PersonServiceImpl psi = new PersonServiceImpl() {
@Override
public boolean doDelPersonToRoom(Person person) {
return false;
}
};
public void getMenu(){
System.out.println("\t欢迎使用xxxx后台管理系统");
//初始化
psi.doInitPerson();
System.out.println("1.女生管理\t2.后台管理\t3.注销用户\t4.退出软件");
System.out.println("请选择菜单(1-4):");
int choice = in.nextInt();
switch (choice){
case 1:
//实现女生管理
break;
case 2:
//实现宿舍管理
getSusheMenu();
break;
case 3:
//返回登录页面
break;
case 4:
System.exit(0);
break;
}
}
public void getSusheMenu(){
System.out.println("1.增加人员\t2.删除人员\t3.修改人员\t4.单查信息\t5.全查信息\t6.返回上层");
System.out.println("请选择菜单(1-6):");
int choice = in.nextInt();
switch (choice){
//新增人员
case 1:
Person person =new PersonUtil().getPerson("新增");
psi.doAddPersonToRoom(person);
psi.doPrintAll();
break;
//删除人员
case 2:
int pid = new PersonUtil().getPersonId("删除");
psi.doDelPersonToRoom(pid);
psi.doPrintAll();
break;
//修改信息
case 3:
Person person2 =new PersonUtil().getPerson("修改");
psi.doUpdPersonToRoom(person2);
psi.doPrintAll();
break;
//查询信息
case 4:
int pid1 = new PersonUtil().getPersonId("查询");
psi.doFindById(pid1);
break;
//全部查询
case 5:
psi.doPrintAll();
break;
//返回上一层
case 6:
getMenu();
break;
}
}
public static void main(String[] args){
new AppUi().getMenu();
}
}
PersonUtil
public class PersonUtil {
Scanner in =new Scanner(System.in);
//获取到新的人员信息
public Person getPerson(String str){
System.out.println("请你输入需要"+str+"的人员编号:");
int pid = in.nextInt();
System.out.println("请你输入需要"+str+"的人员名称:");
String name = in.next();
System.out.println("请你输入需要"+str+"的人员性别:");
String sex = in.next();
Person person = new Person(pid,name,sex);
return person;
}
public int getPersonId(String str){
System.out.println("请您输入需要"+str+"的人员编号:");
int pid=in.nextInt();
return pid;
}
}
运行效果(部分)
欢迎使用xxxx后台管理系统
1.女生管理 2.后台管理 3.注销用户 4.退出软件
请选择菜单(1-4):
2
1.增加人员 2.删除人员 3.修改人员 4.单查信息 5.全查信息 6.返回上层
请选择菜单(1-6):
1
请你输入需要新增的人员编号: