房屋出租系统(java)
可以先创建一个House类表示一个房屋的信息
package com.hanguanyan.project.houserent.domain; /* house的对象表示一个房屋信息 */ public class House { //编号 房主 电话 地址 月租 状态(已出租/为出租) private int id; private String name; private String phone; private String address; private int rent; private String state; //构造器和setter,getter public House(int id, String name, String phone, String address, int rent, String state) { this.id = id; this.name = name; this.phone = phone; this.address = address; this.rent = rent; this.state = state; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPhone() { return phone; } public void setPhone(String phone) { this.phone = phone; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } public int getRent() { return rent; } public void setRent(int rent) { this.rent = rent; } public String getState() { return state; } public void setState(String state) { this.state = state; } //为了方便的输出对象信息,我们实现toString方法 //编号 房主 电话 地址 月租 状态(已出租/为出租) @Override public String toString() { return id + "\t\t" + name + "\t\t" + phone + "\t\t" + address + "\t\t" + rent + "\t\t" + state ; } }
创建一个HouseView类显示界面、接收输入和调用另一个HouseService类对房屋的信息操作
import com.hanguanyan.project.houserent.domain.House; import com.hanguanyan.project.houserent.service.HouseService; import com.hanguanyan.project.houserent.utils.Utility; /* 1.显示界面 2.接受用户输入 3.调用HouseService完成对房屋信息的各种操作 */ public class HouesView { private boolean loop = true;//控制显示菜单 private char key = ' ';//接受用户选择的是哪个菜单 private HouseService houseService = new HouseService(10);//设置数组的大小为10 public void updateHouse(){ System.out.println("--------------------\t\t\t修改房屋信息\t\t\t--------------------"); System.out.print("请输入要修改房屋的id:"); int updateId = Utility.readInt(); if(updateId == -1){ System.out.println("--------------------\t\t\t你放弃了修改房屋信息\t\t\t--------------------"); return; } House house = houseService.findHouse(updateId); if(house == null){ System.out.println("您要修改的房屋信息不存在..."); return; } System.out.print("姓名(" + house.getName() + "):"); String name = Utility.readString(8,""); if(!"".equals(name)){ house.setName(name); } System.out.print("电话( " + house.getPhone() + " )"); String phone = Utility.readString(12,""); if(!"".equals(phone)){ house.setPhone(phone); } System.out.print("地址( " + house.getAddress() + " )"); String address = Utility.readString(18,""); if(!"".equals(address)){ house.setAddress(address); } System.out.print("租金( " + house.getRent() + " )"); int rent = Utility.readInt(-1); if(rent != -1){ house.setRent(rent); } System.out.print("状态( " + house.getState() + " )"); String state = Utility.readString(3,""); if(!"".equals(state)){ house.setAddress(state); } System.out.println("修改房屋信息成功"); } //完成根据id查找房屋信息的功能 public void houseView(){ System.out.println("--------------------\t\t\t查找房屋\t\t\t--------------------"); System.out.print("请输入要查找的房屋的id:"); int id = Utility.readInt(); House house = houseService.findHouse(id); if (house != null){ System.out.println(house); }else { System.out.println("没有该房屋信息"); } } //完成退出确认 public void exit(){ //使用Utility操作方法,完成确认 System.out.print("请选择你的选择(Y/N)请小心选择:"); char c = Utility.readConfirmSelection(); if(c == 'Y'){ loop = false; } } //编写delHouse() 接收输入的id,调用Service 的del方法 public void delHouse(){ System.out.println("--------------------\t\t\t删除房屋信息\t\t\t--------------------"); System.out.print("请输入待删除房屋的编号(-1退出):"); int delId = Utility.readInt(); if (delId == -1){ System.out.println("--------------------\t\t放弃删除房屋信息\t\t--------------------"); return; } //注意!该方法本身就有循环判断的逻辑,必须输入Y或N char choice = Utility.readConfirmSelection();//Utility工具,让用户输入Y/N,不是Y/N就死循环 if(choice == 'Y'){ if(houseService.del(delId)){ System.out.println("--------------------\t\t删除房屋信息成功\t\t--------------------"); }else { System.out.println("--------------------\t\t编号不存在,删除失败\t\t--------------------"); } }else { System.out.println("--------------------\t\t放弃删除房屋信息\t\t--------------------"); } } //编写addHouse() 接受输入,创建House对象,调用add方法 public void addHouse(){ System.out.println("--------------------\t\t\t添加房屋\t\t\t--------------------"); System.out.print("姓名:"); String name = Utility.readString(8); System.out.print("电话:"); String phone = Utility.readString(12); System.out.print("地址:"); String address = Utility.readString(16); System.out.print("月租:"); int rent = Utility.readInt(); System.out.print("状态:"); String state = Utility.readString(3); //创建一个新的House对象,注意id是系统分配的,用户不能输入 House newHouse = new House(0,name,phone,address,rent,state); if(houseService.add(newHouse)){ System.out.println("--------------------\t\t\t添加房屋成功\t\t\t--------------------"); }else { System.out.println("--------------------\t\t\t添加房屋失败\t\t\t--------------------"); } } //编写listHouses()显示房屋列表 public void listHouses(){ System.out.println("--------------------\t\t\t房屋列表\t\t\t--------------------"); System.out.println("编号\t房主\t电话\t\t\t地址\t\t月租\t\t状态(已出租/为出租)"); House[] houses = houseService.list(); for (int i = 0; i < houses.length; i++) { if(houses[i] == null){//如果为null,就不用在显示了 break; } System.out.println(houses[i]); } } //显示菜单 public void mainMenu(){ do { System.out.println("--------------------\t\t\t房屋出租系统菜单\t\t\t--------------------"); System.out.println("\t\t\t1 新 增 房 源"); System.out.println("\t\t\t2 查 找 房 源"); System.out.println("\t\t\t3 删 除 房 屋"); System.out.println("\t\t\t4 修 改 房 屋 信 息"); System.out.println("\t\t\t5 房 屋 列 表"); System.out.println("\t\t\t6 退 出"); System.out.print("请输入您的选择(1~6):"); key = Utility.readChar(); switch (key){ case '1': addHouse(); break; case '2': houseView(); break; case '3': delHouse(); break; case '4': updateHouse(); break; case '5': listHouses(); break; case '6': exit(); break; } }while (loop); } }
创建一个Service类,响应HouseView的调用,完成房屋的各种操作(业务层)
import com.hanguanyan.project.houserent.domain.House; import com.hanguanyan.project.houserent.utils.Utility; /* HouseService.java 类【业务层】 定义House[],保存House对象 1 响应HouseView的调用 2 完成对房屋信息的各种操作(增删改查) */ public class HouseService { private House[] houses;//保存House对象 private int houseNum = 1;//记录当前有多少个房屋信息 private int idCounter = 1;//记录当前的id自增长到哪个值 public HouseService(int size){ //new Houses houses = new House[size];//创建HouseService对象,指定数组大小 //为了配合测试列表信息,初始化一个House对象 houses[0] = new House(1,"韩","1733841992","海甸岛",2000,"未出租"); } //findHouse方法,查找一个房屋的信息 public House findHouse(int id) { //遍历数组 for (int i = 0; i < houseNum; i++) { if(id == houses[i].getId()){ return houses[i]; } } return null; } //del方法.删除一个房屋信息 public boolean del(int delId){ //应当先找到删除的房屋信息对应的下标 //一定要清楚下标和房屋的编号不是一回事 int index = -1; for (int i = 0; i < houseNum; i++) { if(delId == houses[i].getId()){//删除的房屋对应的id,在数组下标为i的元素 index = i;//使用index记录i } } if(index == -1){//说明delId在数组中不存在 return false; } // House[] houses2 = new House[houseNum]; // for (int i = 0; i < houses2.length; i++) { // if(i == index+1){ // break; // } // houses2[i] = houses[i]; // } // houses = houses2; // return true; for (int i = index; i < houseNum-1; i++) { houses[i] = houses[i+1]; } houses[--houseNum] = null;//把当存在的房屋信息最后一个 设置null return true; } //add方法,添加新对象,返回boolean public boolean add(House newHouse){ //判断是否还可以继续添加(暂时不考虑数组扩容的问题) if(houseNum == houses.length){//不能添加 System.out.print("数组已满,不能再添加了....是否继续添加(是n / 否k)"); String counter = Utility.readString(1); //这里自己编写数组的扩容 //判断是否输入为n 或 k //为n的话则添加列表,然后输出添加多少列 if(counter.equals("n")){ System.out.print("添加多少列:"); int nums = Utility.readInt(); //下面为数组基本扩容 House[] houses1 = new House[houses.length+nums]; for (int i = 0; i < houses.length; i++) { houses1[i] = houses[i]; } houses = houses1; return true; }else if(counter.equals("k")){//为k则不添加 System.out.println("您拒绝了添加"); return false; } } houses[houseNum++] = newHouse; //设计一个id自增长的机制,然后更行newHouse的id newHouse.setId(++idCounter); return true; } //List方法 返回houses public House[] list(){ return houses; } }