package houserent.view;
//1、显示界面
//2、接收用户输入
//3、调用HouseService完成对房屋信息的各种操作
import houserent.domain.House;
import houserent.service.HouseService;
import houserent.utility.Utility;
public class HouseView
{
private boolean loop = true;//控制显示菜单
private char key = ' ';//接收用户选择
//houseService不仅是类,也是个方法
private HouseService houseService = new HouseService(10);//设置数组大小为10
//编写addHouse()接收输入,创建House对象,调用add方法
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.print("状态:");
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("==========添加房屋失败===========");
}
}
//编写delHouse() 接收输入的id,调用service的del方法
public void delHouse()
{
System.out.println("==========删除房屋信息===========");
System.out.println("=======请输入待删除房屋的编号(输入-1则退出)======");
int delId = Utility.readInt();
if(delId == -1)//表示想放弃删除房屋信息
{
System.out.println("==========放弃删除房屋信息===========");
return;//return表示结束一个方法
}
//注意该方法本身就有循环判断的逻辑
char choice = Utility.readConfirmSelection();
if(choice == 'Y')
{
if(houseService.del(delId))
{
System.out.println("==========删除房屋信息成功===========");
}
else
{
System.out.println("========房屋编号不存在,删除失败========");
}
}
else
{
System.out.println("==========放弃删除房屋信息===========");
}
}
//编写findHouse()根据id查找房屋信息
public void findHouse()
{
System.out.println("==========查找房屋信息===========");
System.out.println("请输入想要查找的编号id:");
int findId = Utility.readInt();
House house = houseService.find(findId);
if(house != null)
{
System.out.println(house);
}
else
{
System.out.println("==========查找房屋id不存在===========");
}
}
//编写updateHouses()来根据id修改房屋信息
public void updateHouse()
{
System.out.println("==========修改房屋信息===========");
System.out.println("请选择修改的房屋编号(-1表示退出):");
int updateId = Utility.readInt();
if(updateId == -1)
{
System.out.println("==========放弃修改房屋信息===========");
return;
}
//根据输入得到updateId,查找对象
House house = houseService.find(updateId);
if(house == null)
{
System.out.println("========修改房屋信息的编号不存在==========");
return;
}
//返回的是引用类型(即就是数组的元素)
//后面的 house.setXxx() 就会修改 HouseService 中 houses 数组的元素
System.out.print("姓名("+house.getName()+"):");
String name = Utility.readString(8,"");//这里如果用户直接回车表示不修改该信息,默认""
if(!"".equals(name))
{
house.setName(name);
}
System.out.print("电话("+house.getPhone()+"):");
String phone = Utility.readString(18,"");//这里如果用户直接回车表示不修改该信息,默认""
if(!"".equals(phone))
{
house.setPhone(phone);
}
System.out.print("地址("+house.getAddress()+"):");
String address = Utility.readString(30,"");//这里如果用户直接回车表示不修改该信息,默认""
if(!"".equals(address))
{
house.setAddress(address);
}
System.out.print("租金("+house.getRent()+"):");
int rent = Utility.readInt(-1);
if(rent != -1)
{
house.setRent(rent);
}
System.out.print("状态("+house.getState()+"):");
String state = Utility.readString(8,"");//这里如果用户直接回车表示不修改该信息,默认""
if(!"".equals(state))
{
house.setState(state);
}
System.out.println("==========修改房屋信息成功===========");
}
//编写listHouses()显示房屋列表
public void listHouses()
{
System.out.println("==========房屋列表==============");
System.out.println("编号\t\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("=========房屋列表显示完毕============");
}
//显示主菜单
public void mainMenu()
{
do
{
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.println("请输入你的选择(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':
char c =Utility.readConfirmSelection();
if(c =='Y')
{
loop = false;
}
break;
}
}
while(loop);
}
}
Java实战项目、课程设计-房屋出租系统的源码
需积分: 0 129 浏览量
更新于2023-01-11
1
收藏 50KB ZIP 举报
在本项目中,我们探索的是一个使用Java编程语言编写的房屋出租系统,它是一个适合计算机专业学生进行课程设计和实践的实例。这个系统基于文本界面,简洁易用,旨在帮助用户管理和操作房屋租赁信息。以下是关于这个项目的一些关键知识点:
1. **Java编程语言**:Java是一种广泛使用的面向对象的编程语言,具有跨平台性、稳定性和安全性。在这个项目中,Java被用于实现房屋出租系统的所有功能,包括数据处理和用户交互。
2. **文本界面(TUI)**:项目采用文本界面而非图形用户界面(GUI),这简化了开发过程,使得程序更易于理解和维护。用户通过命令行输入指令来与系统交互,这对于初学者来说是一个很好的实践机会。
3. **数据结构**:系统中房屋信息的管理可能使用了数组,这是一种基础的数据结构,用于存储和访问固定数量的元素。数组的使用方便了对房屋信息的添加、修改和删除操作。
4. **对象和类**:在Java中,对象是现实世界实体的抽象,而类是创建对象的蓝图。在这个系统中,可能定义了一个`House`类来封装房屋的相关属性(如地址、租金等)和行为(如出租、退租等)。
5. **控制流**:项目中可能包含了条件语句(if-else)和循环(for或while)来处理用户输入和系统逻辑,例如根据用户选择执行不同的操作。
6. **文件操作**:虽然描述中没有明确提及,但为了持久化存储房屋信息,项目可能涉及了文件操作,如读取和写入数据到文件,这通常通过Java的`File`和`Scanner`/`PrintWriter`类完成。
7. **异常处理**:在Java编程中,异常处理是必不可少的,用于处理程序运行时可能出现的错误。项目可能包含了try-catch块来优雅地处理可能出现的异常情况,如非法用户输入。
8. **用户交互**:系统提供了主菜单供用户选择操作,这通常通过读取用户输入并解析成特定命令来实现。例如,用户可能会输入数字1来表示添加房屋信息,数字2来修改等。
9. **软件设计模式**:虽然这是一个简单的项目,但可能也涉及到设计模式的应用,如单例模式来确保只有一个实例处理用户请求,或者工厂模式来创建房屋对象。
10. **版本控制与开源**:项目标签提到了GitHub,这是一个常用的版本控制系统,用于代码的版本管理、协作和分享。将项目开源意味着其他学习者可以下载、学习和改进代码,这对于技术社区的交流和知识传播非常有价值。
这个“Java实战项目、课程设计-房屋出租系统的源码”涵盖了基础的Java编程概念、面向对象设计、数据结构、用户交互和版本控制等多个重要知识点,对于初学者和提升Java编程技能来说是一个很好的实践项目。
鸭蛋Yardon
- 粉丝: 608
- 资源: 7
最新资源
- C# 西门子S7 TCP协议客户端设计工程源码带注释,开源dll文件,包括打包完的安装包
- 电网行测冲刺讲义-学生版-纯图版
- 基于磁链锁相环控制的双向逆变器Simulink仿真,无需 电压采样进行锁相控制
- 工程管理:长沙理工大学2021级工程造价咨询综合实践指导-课程设计实施方案及细则
- 黑龙江省各市、县、区及街镇网页版SVG图
- json-c-0.17.tar.gz
- 前端全套面试题资料,包含js、css、vue等相关资料
- C#上位机 APP监控西门子S7-1200 C#全套源代码 1,C#开发上位机手机APP,自己写的程序可提供部分 2,通过VS2019开发安卓手机app 3,全套源代码,现场运行设备实测有效 4
- 综合能源耦合微网优化程序matlab 程序基于冷热电联供综合能源耦合模型,采用cchp,并且含有压缩空气储能,采用粒子群优化求解
- 2025电网行测基础讲义-学生版-纯图版
- chromedriver-win64_133.0.6939.0.zip
- chromedriver-win64_133.0.6941.0.zip
- FOC电机控制,一份基于国产风机量产程序,包含龙博格电机状态观测器,SVPWM,顺逆风启动,五段式与七段式调制等源码,完全可以移植到别的MCU平台 适合电机算法研究
- chromedriver-win64_133.0.6943.2.zip
- chromedriver-win64_133.0.6942.0.zip
- chromedriver-win64_133.0.6943.0.zip