数组实现宿舍的增删
一。前期准备编写的逻辑
1.准备素材
两大类(Person 和 room)
Person(pid,name,sex) 入住人员
Room(rid,type,Person[] people) 入住宿舍
2.流程显示
1.准备宿舍 – 人住到宿舍里面去(首先有人,初始化人,在定义宿舍,初始化宿舍)
2.实现增删查
增 – 解决新增的人信息何处来; – 怎么将此数据存储到宿舍中。
删 --解决删除的人信息何处来; – 怎么将此数据从宿舍中删除。
查 --解决查找的人信息何处来; – 怎么将此数据从宿舍中查找出来。
具体逻辑完成下面编写代码
二.编写程序
1.新建一下结构
(包含 model层 , dao层 ,dao层下面的impl ,封装的util ,service层和ui界面层)
2.首先编写model层
编写人员
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;
}
}
编写宿舍
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;
}
}
3.编写增删的方法(dao层)
person中
// 1. 先解决初始化人的问题
void doInitPerson();
// 2. 新增一个人员到宿舍中
boolean doAddPersonToRoom(Person person);
//3.删除人员
void doDelPersonFromRoom(int id);
//4.修改人员
boolean doUpdate(Person person);
//5.根据id查找人员
void findPerson(int id);
// 6. 全查住宿信息
void doPrintAll();
room中
// 1. 准备好宿舍 , 为了给别人住的
Room[] getRooms();
4.编写impl下的代码
room下
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;
}
person下
// 获取宿舍部分
RoomDaoImpl rdi = new RoomDaoImpl();
Room[] rooms = rdi.getRooms();
/**
* 1. 初始化人
*/
@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;
}
/**
* 删除人员
* @param person
*/
@Override
public void doDelPersonFromRoom(int id) {
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]!=null){
if (rooms[i].getPeople()[j].getPid()== id){
rooms[i].getPeople()[j]=null;
System.out.println("删除成功");
break;
}else {
System.out.println("人员不存在");
break;
}
}
}
break;
}
}
}
@Override
public boolean doUpdate(Person person) {
return false;
}
@Override
public void findPerson(int id) {
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]!=null){
if (rooms[i].getPeople()[j].getPid()==id){
System.out.println(rooms[i].getPeople()[j]);
break;
}else {
System.out.println("人员不存在");
}
}
}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();
}
}
}
5.编写service层
// 1. 先解决初始化人的问题
void doInitPerson();
// 2. 新增一个人员到宿舍中
boolean doAddPersonToRoom(Person person);
//3.删除人员
void doDelPersonFromRoom(int id);
//5.根据id查找人员
void findPerson(int id);
// 6. 全查住宿信息
void doPrintAll();
6.编写service下impl
public 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 doDelPersonFromRoom(int id) {
pdidao.doDelPersonFromRoom(id);
}
@Override
public void findPerson(int id) {
pdidao.findPerson(id);
}
@Override
public void doPrintAll() {
pdidao.doPrintAll();
}
}
7.编写util层(为增和查找)
Scanner in = new Scanner(System.in);
// 1. 获取到新的人员对象
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 id = in.nextInt();
return id;
}
8.ui界面层显示
Scanner in = new Scanner(System.in);
PersonServiceImpl psi = new PersonServiceImpl();
PersonUtil personUtil = new PersonUtil();
public void getMenu(){
System.out.println("\t欢迎使用宿舍管理系统");
// 初始化
psi.doInitPerson();
System.out.println("1.宿舍管理\t2.注销用户\t3.退出软件");
System.out.println("请选择菜单(1-2):");
int choice = in.nextInt();
switch (choice){
case 1:
// 实现宿舍管理
getSusheMenu();
break;
case 2:
// 返回登录页面
break;
case 3:
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 m=personUtil.getPersonId("删除");
psi.doDelPersonFromRoom(m);
break;
case 3:
break;
case 4:
int n=personUtil.getPersonId("查询");
psi.findPerson(n);
break;
case 5:
psi.doPrintAll();
break;
case 6:
getMenu();
break;
case 7:
System.exit(0);
}
}
public static void main(String[] args) {
//显示界面
new AppUi().getMenu();
}
三,显示结果(前面的女生管理没有删除,就当不存在了)