S01-11 JavaSE-项目:房屋出租系统
[TOC]
房屋出租系统-需求
项目需求说明
实现基于文本界面的《房屋出租软件》,功能:
- 房屋信息的添加、修改、删除(数组实现)
- 打印房屋明细表
- 查找房屋
房屋出租系统-界面
主菜单
-----房屋出租系统--
1 新增房源
2 查找房屋
3 删除房屋
4 修改房屋信息
5 房屋列表
6 退 出
请选择(1-6):新增房源
-添加房屋-
姓名:king
电话:112
地址:朝阳区
月租:2000
状态(未出租/已出租):未出租
---添加完成---查找房源
------查找房屋----
请输入你要查找id:1
1 jack 118 海淀区 3000 未出租删除房源
----删除房屋-------
请选择待删除房屋编号(-1退出):1
确认是否删除(Y/N):y
-----删除完成-----修改房源
------修改房屋------
请选择待修改房屋编号(-1退出):1
姓名(jack): mary
电话(118):116
地址(海淀区):昌平区
租金(3000):5000
状态(未出租):已出租
--修改完成--房屋列表
-----房屋列表----
编号 房主 电话 地址 月租 状态(未出租/已出租)
2 none 116 昌平区 5000 已出租
3 mary 111 海淀区 9000 未出租
----房屋列表完成-----------退出系统
请选择(1-6):6
确认是否退出(Y/N):y
你退出了程序~~房屋出租系统-设计(分层模式)
程序框架图
HouseRentApp.java(程序入口)
↓
HouseView.java(界面层):显示菜单、接收用户输入、调用业务层
↓
HouseService.java(业务层):处理增删改查逻辑
↓
House.java(数据层):封装房屋信息
↓
Utility.java(工具类):获取用户输入各模块职责
- HouseRentApp.java:程序入口,创建
HouseView对象并调用主菜单方法 - HouseView.java:
- 显示主菜单(
mainMenu()) - 接收用户输入
- 调用
HouseService完成功能(addHouse()、delHouse()、findHouse()、updateHouse()、listHouses())
- 显示主菜单(
- HouseService.java:
- 定义
House数组存储房屋对象 - 实现增删改查方法:
add(House house):添加房屋list():返回所有房屋信息del(int id):删除房屋findById(int id):根据ID查找房屋update(House house):修改房屋信息
- 定义
- House.java:
- 属性:编号、房主、电话、地址、月租、状态
- 构造器、getter/setter、
toString()
- Utility.java:提供输入工具方法(获取字符串、整数、浮点数等)
房屋出租系统-实现
准备工具类 Utility
提供获取用户输入的方法,提高开发效率(公司常用工具类模式)。
实现 House 类
封装房屋信息:
java
public class House {
private int id; // 编号(自增长)
private String name; // 房主
private String phone; // 电话
private String address; // 地址
private double rent; // 月租
private String status; // 状态(未出租/已出租)
// 构造器、getter/setter、toString()
}实现主菜单和退出功能(HouseView.java)
java
public class HouseView {
private HouseService houseService = new HouseService(10); // 初始化数组容量10
private boolean loop = true; // 控制菜单循环
private char key = ' '; // 接收用户输入
// 主菜单
public void mainMenu() {
while (loop) {
System.out.println("-----房屋出租系统--");
System.out.println("1 新增房源");
System.out.println("2 查找房屋");
System.out.println("3 删除房屋");
System.out.println("4 修改房屋信息");
System.out.println("5 房屋列表");
System.out.println("6 退 出");
System.out.print("请选择(1-6):");
key = Utility.readChar(); // 工具类方法
switch (key) {
case '1':
addHouse();
break;
case '2':
findHouse();
break;
case '3':
delHouse();
break;
case '4':
updateHouse();
break;
case '5':
listHouses();
break;
case '6':
exit();
break;
default:
System.out.println("选择错误,请重新输入!");
}
}
}
// 退出功能
private void exit() {
char c = Utility.readConfirmSelection(); // 确认退出(y/n)
if (c == 'Y') {
loop = false;
System.out.println("你退出了程序~~");
}
}
// 其他方法(addHouse、findHouse等)后续实现
}实现房屋列表功能
java
// HouseView.java
private void listHouses() {
System.out.println("-----房屋列表----");
System.out.println("编号 房主 电话 地址 月租 状态(未出租/已出租)");
House[] houses = houseService.list(); // 调用业务层获取所有房屋
for (House house : houses) {
if (house != null) {
System.out.println(house); // 依赖 House 的 toString()
}
}
System.out.println("----房屋列表完成-----------");
}
// HouseService.java
public House[] list() {
return houses; // 返回房屋数组
}实现添加房屋功能
java
// HouseView.java
private 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("月租:");
double rent = Utility.readDouble();
System.out.print("状态(未出租/已出租):");
String status = Utility.readString(4);
// 创建 House 对象(id 自增长,由业务层处理)
House house = new House(0, name, phone, address, rent, status);
if (houseService.add(house)) {
System.out.println("---添加完成---");
} else {
System.out.println("---添加失败---");
}
}
// HouseService.java
private int houseNum = 0; // 已添加的房屋数量
private House[] houses;
public HouseService(int size) {
houses = new House[size]; // 初始化数组
}
public boolean add(House house) {
if (houseNum >= houses.length) {
System.out.println("数组已满,无法添加!");
return false;
}
// 自增id
house.setId(houseNum + 1);
houses[houseNum++] = house;
return true;
}实现删除房屋功能
java
// HouseView.java
private void delHouse() {
System.out.println("----删除房屋-------");
System.out.print("请选择待删除房屋编号(-1退出):");
int id = Utility.readInt();
if (id == -1) {
System.out.println("取消删除");
return;
}
char c = Utility.readConfirmSelection();
if (c == 'Y') {
if (houseService.del(id)) {
System.out.println("-----删除完成-----");
} else {
System.out.println("删除失败,编号不存在!");
}
} else {
System.out.println("取消删除");
}
}
// HouseService.java
public boolean del(int id) {
// 查找要删除的房屋索引
int index = -1;
for (int i = 0; i < houseNum; i++) {
if (houses[i].getId() == id) {
index = i;
break;
}
}
if (index == -1) {
return false;
}
// 数组移位(删除逻辑)
for (int i = index; i < houseNum - 1; i++) {
houses[i] = houses[i + 1];
}
houses[--houseNum] = null; // 最后一个元素置空
return true;
}课堂作业:完善退出确认功能
已整合到 9.4.3 的 exit() 方法中。
课后作业:实现查找房屋功能
根据ID查找房屋并显示信息。
课后作业:实现修改房屋功能
根据ID修改房屋的姓名、电话、地址、月租、状态。