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

业务方法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;}}实现房屋信息删除增删改查,那么现在应该实现房屋信息的删除
这里可以根据房屋信息的编号进行删除,也可以根据房屋的具体信息,例如:地址、姓名、电话等
以房屋编号为例
//编写delHouse() 接收输入的id号//与addHouse()类似,最终的删除逻辑在业务类中实现,这边只是调用相关方法public void delHouse(){System.out.println("=============删除房屋信息============");System.out.print("请输入待删除的房屋编号或输入-1退出: ");int delId = Utility.readInt();//获取一个输入if(delId == -1){System.out.println("=============放弃删除房屋信息============");return;}//该方法本身就有循环判断逻辑,必须输入Y/N才能退出char choice = Utility.readConfirmSelection();if(choice=='Y'){//真的删除就调用业务方法if(houseService.del(delId)){System.out.println("=============删除房屋信息成功============");}else {System.out.println("=============房屋编号不存在,删除失败============");}}else {System.out.println("=============放弃删除房屋信息============");}}业务方法del()需要在该业务方法中,按房屋编号实现对房屋对象数组元素的删除操作
//del方法,删除一个房屋信息public boolean del(int delId){//应先找到删除房屋的对应下标,房屋编号与下标不对应int index = -1;for (int i = 0; i < houseNums; i++) {if(delId == house[i].getId()){//要删除的房屋(id),是数组下标为i的元素index = i;//记录i}}if(index == -1){//说明delId在数组中不存在return false;}//如果找到应该怎么删除?//待删除元素(使用下标确定)的后一个元素前移,覆盖待删除元素//然后最后一位,置为null,重复上述操作for (int i = index; i < houseNums - 1; i++) {house[i] = house[i+1];}//置空最后一个元素//"前--"表示直接取用houseNums减一后的值,详见业务方法add()中对于"后++"的解释//house[houseNums - 1] = null;//houseNums--;//少一个元素house[--houseNums] = null;//把当前存在的房屋信息的最后一个置空return true;}实现房屋查找"增删改查"中的查询,依旧是先在界面类中给出功能findHouse(),调用业务方法实现房屋查询
//根据id查找房屋(改进,通过地址查询)public void findHouse(){System.out.println("=============查询房屋信息============");System.out.println("请输入想查询的房屋ID: ");int findId = Utility.readInt();House houses = houseService.findById(findId);//返回所有房屋信息,保存在houses数组中if(houses ! = null){System.out.println(houses);}else {System.out.println("无查询结果,请输入正确的房屋ID");}}

经验总结扩展阅读