1.房屋出租系统
项目需求
- 实现基于文本界面的房屋出租软件
- 能够实现对房屋信息的添加修改和删除(CRUD)用数组实现,并能够打印房屋明细表
2.项目设计-程序框架图(分层模式=>当软件比较复杂,需要模式管理)
框架图
系统有哪些类(文件)
明确类与类的调用关系


3.系统实现
项目功能实现-显示主菜单和完成退出软件功能
化繁为简
实现功能三部曲:明确完成功能 思路分析 代码实现
功能说明:用户打开软件 可以看到主菜单 可以退出软件
思路分析:在HouseView.java中,编写一个方法mainMenu显示菜单
代码实现
java
package com.logic.houserent.view;
import com.logic.houserent.utils.Utility;
/**
* 1.显示界面
* 2.接收用户输入
* 3.调用HouseService完成对房屋信息的各种操作
*/
public class HouseView {
private boolean loop = true; //控制显示菜单
private char key = ' '; //接收用户选择
//显示主菜单
public void mainMenu() {
do {
System.out.println("===============房屋出租系统===============");
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':
System.out.println("新 增");
break;
case '2':
System.out.println("查 找");
break;
case '3':
System.out.println("删 除");
break;
case '4':
System.out.println("修 改");
break;
case '5':
System.out.println("显 示");
break;
case '6':
System.out.println("退 出");
loop = false;
break;
}
} while (loop);
}
}
项目功能实现-完成显示房屋列表功能
代码实现
java
//编写listHouse()显示房屋列表
public void listHouse() {
System.out.println("===============房屋列表===============");
System.out.println("编号\t\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) {
break;
}
System.out.println(houses[i]);
}
System.out.println("===============房屋列表显示完毕===============");
}
项目功能实现-完成删除房屋信息的功能
代码实现
java
//编写delHouse() 接收输入的id 调用Service的del方法
public void delHouse() {
System.out.println("===============删除房屋信息===============");
System.out.print("请输入待删除房屋的编号(-1退出): ");
int delId = Utility.readInt();
if (delId == -1) {
System.out.println("===============放弃删除房屋信息===============");
return;
}
char choice = Utility.readConfirmSelection();//注意该方法本来就有循环判断的逻辑
if (choice == 'Y') {
if (houseService.del(delId)) {
System.out.println("===============删除房屋信息成功===============");
} else {
System.out.println("===============房屋编号不存在 删除失败===============");
}
} else {
System.out.println("===============放弃删除房屋信息===============");
}
}
java
//del方法 删除一个房屋信息
public boolean del(int delId) {
//应当先找到删除的房屋信息对应的下标
//注意 下标和房屋编号不是一回事
int index = -1;
for (int i = 0; i < houseNums; i++) {
if (delId == houses[i].getId()) {//要删除的房屋id 是数组下标为i的元素
index = i;
}
}
if (index == -1) {
return false;
}
//如果找到 思路分析 后面的信息覆盖前面的信息 然后后面的信息置空
for (int i = index; i < houseNums - 1; i++) {
houses[i] = houses[i + 1];
}
houses[--houseNums] = null;//把当有存在的房屋信息的最后一个置空null
return true;
}
项目功能实现-完成根据id查找房屋信息的功能
代码
java
//编写searchHouse() 完成根据id查找房屋信息的功能
public void findHouse() {
System.out.println("===============查找房屋信息===============");
System.out.print("请输入你要查找的房屋编号: ");
int findId = Utility.readInt();
//调用方法
House house = houseService.findById(findId);
if (house != null) {
System.out.println("编号\t\t房主\t\t电话\t\t地址\t\t月租\t\t状态(未出租/已出租)");
System.out.println(house);
} else {
System.out.println("===============没有查找房屋信息===============");
}
}
java
//findById方法 返回House对象或者null
public House findById(int findId) {
for (int i = 0; i < houseNums; i++) {
if (findId == houses[i].getId()) {
return houses[i];
}
}
return null;
}
项目功能实现-完成修改房屋信息的功能
代码