【Java复健指南09】项目练习全解--房屋出租系统( 二 )

业务方法list()list()需要返回系统用于存放房屋信息的一个数组 , 数组元素为房屋对象
通过遍历此数组可以获取所有房屋的信息
/** //定义House[],保存House对象1.响应HouseView的调用2.完成对房屋信息的各种操作* (增删改查c[create]r[read]u[update]d[delete])*/public class HouseService {private House[] house;//构造器public HouseService(int size){house = new House[size];//创建HouseService对象时,需要指定House数组的大小//测试,初始化一个默认HouseService对象house[0] = new House(1, "jk", "13544856575","西青区", 1800,"未出租");}//list方法返回house(数组)public House[] list(){return house;}}这里已经需要使用房屋类了,自然的我们需要编写房屋类
定义房屋类房屋类House.java如下
/** House的对象表示一个房屋信息*/public class House {//需要以下信息//编号房主电话地址月租状态(未出租/已出租)private int id;private String name;private String phone;private String address;private int rent;private String state;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方法//比如有House h1 , 这样直接sout(h1)就可以打印房屋信息了@Overridepublic String toString() {return id +"\t" + name +"\t" + phone +"\t" + address +"\t" + rent +"\t" + state ;}}实现房屋添加实现房屋列表之后,实际上房屋类也完成了定义
那么现在可以考虑实现房屋信息的添加
每个房屋添加进来应该给一个编号,这是需要注意的,后续需要通过编号查询
//编写addHouse()接受输入,创建House对象,调用add方法//addHouse()仅负责在界面层面的添加,实际去操控House对象数组完成添加的方法属于具体的业务功能//即add()方法应该在HouseService.java中定义,在HouseView.java的addHouse()调用,遵循之前的类关系图设计public void addHouse(){System.out.println("=============添加房屋============");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.println("状态: ");String state = Utility.readString(3);//按照输入信息 , 创建一个新的House对象//id是系统分配House newHouse = new House(0, name, phone, address, rent, state);if(houseService.add(newHouse)){System.out.println("=============添加房屋成功============");}else {System.out.println("=============添加房屋失败============");}}业务方法add()需要在该业务方法中实现对房屋对象数组的新增数据操作
并且需要实现对房屋信息的自动编号
public class HouseService {private House[] house;private int houseNums = 1;//记录当前有多少个房屋信息private int idCounter = 1;//记录当前的id增长到的值//构造器public HouseService(int size){house = new House[size];//创建HouseService对象时,需要指定House数组的大小//测试,初始化一个HouseService对象house[0] = new House(1, "jk", "13544856575","西青区", 1800,"未出租");}//list方法返回house(数组)public House[] list(){return house;}//add方法,添加新对象,返回boolean//输入参数是House对象public boolean add(House newHouse){//判断是否还可以继续添加(暂时不考虑数组扩容问题)if(houseNums == house.length){//若房屋信息数量大于数组长度则不能再加System.out.println("数组已满,无法添加");return false;}//数组还没满的话把newHouse对象加入到数组,同时房屋数量计数+1//house[houseNums] = newHouse;//houseNums ++;//新增一个房屋//上述代码可以利用"后++"的特性整合//houseNums++的值是运行一次之后才会自增的//例如 , 当前houseNums为1,数组设定为10,新增房屋信息肯定是可以的//因此 , 在数组索引为1的地方加入newHouse,之后houseNums自增为2house[houseNums++] = newHouse;//后++//需要设计一个id自增长机制,然后更新newHouse的id//idCounter ++;//newHouse.setId(idCounter);newHouse.setId(++idCounter);//前++,同理return true;}}

推荐阅读