HouseService.javapackage com./.../.houserent.service;import com./.../.houserent.domain.House;/** //定义House[],保存House对象1.响应HouseView的调用2.完成对房屋信息的各种操作* (增删改查c[create]r[read]u[update]d[delete])*/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;}//findById()方法,根据id查找房屋 , 返回House对象或者nullpublic House findById(int findId){//遍历房屋数组for (int i = 0; i < houseNums; i++) {if(findId == house[i].getId()){return house[i];}}return null;}//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];}//置空最后一个元素//house[houseNums - 1] = null;//houseNums--;//少一个元素house[--houseNums] = null;//把当前存在的房屋信息的最后一个置空return true;}//add方法,添加新对象 , 返回booleanpublic boolean add(House newHouse){//判断是否还可以继续添加(暂时不考虑数组扩容问题)if(houseNums == house.length){//不能再加System.out.println("数组已满,无法添加");return false;}//把newHouse对象加入到数组//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;}}
House.javapackage com./.../.houserent.domain;/** 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 ;}}
HouseRentApp.javapackage com./.../.houserent;import com./.../.houserent.view.HouseView;public class HouseRentApp {public static void main(String[] args) {//创建HouseView对象,显示界面,是程序的主入口new HouseView().mainMenu();System.out.println("========已退出========");}}
推荐阅读
- 【Bluetooth蓝牙开发】一、开篇词 | 打造全网最详细的Bluetooth开发教程
- 【Bluetooth|蓝牙开发】二、蓝牙开发入门
- 【深入浅出 Yarn 架构与实现】1-1 设计理念与基本架构
- Java集合精选常见面试题
- 原神香醉坡兰那罗在哪
- 黑莓q5用安装微信的方法a 用黑莓自带的印象笔记手敲的 看不懂的宝宝们在私聊我吧
- 明日之后正确玩法(明日之后各种玩法攻略)
- 四 【单元测试】Junit 4--Junit4参数化
- C# 9.0 添加和增强的功能【基础篇】
- Java单例模式,看这一篇就够了