JAVA实现房屋出租系统(超详细)

2023-12-27 05:59

本文主要是介绍JAVA实现房屋出租系统(超详细),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

运行展示:

1.新增房源

当列表空间满时,会无法添加(这里我设空间为3组,方便展示)

2.查找房源 

3.删除房屋 

4.修改房屋信息 

5.退出 

构思[分层模式]:

        

 包的创建:

工具类代码(Utility):

public class Utility {public static char readChar() {//static静态对象可以直接调用,不用newScanner scanner = new Scanner(System.in);String key = scanner.next();return key.charAt(0);//只会返回字符串第一个字符,比如123只返回1}public static String readString() {Scanner scanner = new Scanner(System.in);String key = scanner.next();return key;}public static int readInt() {Scanner scanner = new Scanner(System.in);int key = scanner.nextInt();return key;}
}

模型类代码(House) :

设置House中存在哪些属性

/**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//编号   房主   电话   地址   月租   状态(未出租/已出租)@Overridepublic String toString() {return  id +"\t\t\t" + name +"\t\t\t" + phone +"\t\t\t" + address +"\t\t\t" + rent +"\t\t\t" + state;}
}

 程序入口(main)

public class HouseRentApp {public static void main(String[] args) {//创建一个HouseView对象,并显示主菜单,是整个程序的入口new HouseView().mainMenu();//匿名对象}
}

主类实现代码:

1.HouseView.java 类[界面]

显示主菜单:
mainMenu方法,可以显示主菜单


新增房屋信息:
addHouse方法,界面,接收用户的输入信息,添加房屋信息


查找房屋信息:
seekHouse方法,界面,查找房屋信息


删除房屋信息:
deleteHouse方法,界面,删除房屋信息


修改房屋信息:
alterHouse方法,界面,修改房屋信息


房屋列表:
listHouse方法,界面,清单


退出系统:
outMenu方法,退出系统

类中添加属性 

private boolean loop = true;
private char key = ' ';
private HouseService houseService = new HouseService(3);//设置列表空间
private int id = 0;

public void mainMenu() {do {System.out.println("\n=============房屋出租系统==============");System.out.println("\t\t\t" + "1.新 增 房 源");System.out.println("\t\t\t" + "2.查 找 房 屋");System.out.println("\t\t\t" + "3.删 除 房 屋");System.out.println("\t\t\t" + "4.修 改 房 屋 信 息");System.out.println("\t\t\t" + "5.房 屋 列 表");System.out.println("\t\t\t" + "6.退      出");System.out.println("请输出(1~6):");key = Utility.readChar();switch (key) {case '1':addHouse();break;case '2':seekHouse();break;case '3':deleteHouse();break;case '4':alterHosue();break;case '5':listHouse();break;case '6':outMenu();break;default:System.out.println("输入有误,返回菜单页面");break;}} while (loop);}

addHouse方法,界面,接收用户的输入信息,添加房屋信息

    /*** 添加信息方法*/public void addHouse() {boolean loop = houseService.addLoop();if (!loop) {System.out.println("无法添加,表格已满");}else {//编号自增,不能自取id++;System.out.println("房主:");String name = Utility.readString();System.out.println("电话(6位):");String phone = Utility.readString();System.out.println("地址:");String address = Utility.readString();System.out.println("月租:");int rent = Utility.readInt();System.out.println("状态(未出租/已出租):");String state = Utility.readString();House house = new House(id, name, phone, address, rent, state);houseService.add(house);System.out.println("添加成功");}}

seekHouse方法,界面,查找房屋信息

    /*** 查找房屋信息方法*/public void seekHouse() {System.out.println("请输入你要查找的房屋编号(输入-1返回菜单)");int seekId = Utility.readInt();if (seekId == -1) {System.out.println("成功返回菜单");} else {houseService.seekLoop(seekId);}}

deleteHouse方法,界面,删除房屋信息

    /*** 删除房屋信息方法*/public void deleteHouse() {System.out.println("请输入你要删除的房屋编号(输入-1返回菜单)");int deleteId = Utility.readInt();if (deleteId == -1) {System.out.println("成功返回菜单");} else {houseService.deleteLoop(deleteId);}}

alterHouse方法,界面,修改房屋信息

    /*** 修改房屋信息方法*/public void alterHosue() {System.out.println("请输入你要修改的房屋编号(输入-1返回菜单)");int alterId = Utility.readInt();if (alterId == -1) {System.out.println("成功返回菜单");} else {houseService.alterLoop(alterId);}}

listHouse方法,界面,清单

    /*** 列表清单方法*/public void listHouse() {House[] houses = houseService.list();if (houses[0] == null) {System.out.println("列表中无信息");}else {System.out.println("----------------------------------房屋列表清单----------------------------------");System.out.println("编号" + "\t\t\t" +"房主" + "\t\t\t" +"电话" + "\t\t\t" +"地址" + "\t\t\t" +"月租" + "\t\t\t" +"状态(未出租/已出租)");for (int i = 0; i < houses.length; i++) {if (houses[i] == null) {//如果为空,就不输出break;}System.out.println(houses[i]);}System.out.println("----------------------------------房屋列表完毕----------------------------------");}}

outMenu方法,退出系统

    /***  退出菜单方法*/public void outMenu() {System.out.println("确定要退出系统吗?");do {System.out.println("请输入:是(y/Y)/否(n/N)");char out = Utility.readChar();switch (out) {case 'y':case 'Y':System.out.println("成功退出系统");loop = false;break;case 'n':case 'N':System.out.println("成功返回菜单");break;default:System.out.println("输入有误,重新输入");break;}}while(loop);}

 2. HouseService.java 类[业务层]

新增房屋信息:
add(House[] newHouse)方法,把新的house对象添加进House数组中
addLoop()方法,判断能否继续添加房屋信息


查找房屋信息:
seek(int index)方法,输出编号对应的房屋信息
seekLoop(int seekId)方法,判断查询编号存不存在


删除房屋信息:
delete(int index)方法,删除编号对应的房屋信息
deleteLoop(int deleteId)方法,判断能否删除对应编号的房屋信息


修改房屋信息:
alter(int index)方法,修改编号对应的房屋信息
alterLoop(int alterId)方法,判断修改编号存不存在


房屋列表:
list方法,返回所有房屋信息

 a.新增房屋信息

    /*** 添加房屋信息* @param newHouse*/public void add(House newHouse) {houses[HouseSum] = newHouse;HouseSum++;}/*** 返回是否能添加房屋* @return*/public boolean addLoop() {if (HouseSum == houses.length) {return false;} else {return true;}}

b.查找房屋信息

    /*** 输出查询节点对应编号* @param index*/public void seek(int index) {if (index == -1) {System.out.println("查询编号不存在");} else {System.out.println("----------------------------------查询房屋信息----------------------------------");System.out.println("编号" + "\t\t\t" +"房主" + "\t\t\t" +"电话" + "\t\t\t" +"地址" + "\t\t\t" +"月租" + "\t\t\t" +"状态(未出租/已出租)");System.out.println(houses[index]);System.out.println("----------------------------------信息输出完毕----------------------------------");}}/*** 判断查询编号存不存在* @param seekId*/public void seekLoop(int seekId) {int index = -1;for (int i = 0; i < HouseSum; i++) {if (seekId == houses[i].getId()) {index = i;}}seek(index);}

c.删除房屋信息

    /*** 删除房屋信息* @param index*/public void delete(int index) {for (int i = index; i < HouseSum - 1; i++) {houses[i] = houses[i + 1];}houses[HouseSum - 1] = null;HouseSum--;}/*** 判断删除编号存不存在* @param deleteId*/public void deleteLoop(int deleteId) {int index = -1;//节点for (int i = 0; i < HouseSum; i++) {if (houses[i].getId() == deleteId) {index = i;}}if (index == -1) {System.out.println("未查找到对应编号的房屋信息,无法删除");} else {System.out.println("已查找到对应编号的房屋信息,确定删除?");System.out.println("请输入是(y/Y)否(n/N):");boolean doLoop = true;do {char loop = Utility.readChar();switch (loop) {case 'y':case 'Y':delete(index);System.out.println("成功删除对应编号的房屋信息");doLoop = false;break;case 'n':case 'N':System.out.println("成功返回菜单");doLoop = false;break;default:System.out.println("输出错误,重新输入");}}while (doLoop);}}

 d.修改房屋信息

    /*** 修改编号对应房屋信息* @param index*/public void alter(int index) {if (index == -1) {System.out.println("修改编号不存在");} else{System.out.println("输入你要修改的信息:");System.out.println("房主(" + houses[index].getName() + "):");String name = Utility.readString();System.out.println("电话(" + houses[index].getPhone() + "):");String phone = Utility.readString();System.out.println("地址(" + houses[index].getAddress() + "):");String address = Utility.readString();System.out.println("月租(" + houses[index].getRent() + "):");int rent = Utility.readInt();System.out.println("状态(" + houses[index].getState() + "):");String state = Utility.readString();houses[index] = new House(houses[index].getId(), name, phone, address, rent, state);}}/*** 判断修改编号存不存在* @param alterId*/public void alterLoop(int alterId) {int index = -1;for (int i = 0; i < HouseSum; i++) {if (alterId == houses[i].getId()) {index = i;}}alter(index);}

 e.房屋列表

    /*** 清单* @return*/public House[] list() {return houses;}

目录

运行展示:

1.新增房源

2.查找房源 

3.删除房屋 

4.修改房屋信息 

5.退出 

构思[分层模式]:

 包的创建:

工具类代码(Utility):

模型类代码(House) :

 程序入口(main)

主类实现代码:

1.HouseView.java 类[界面]

类中添加属性 

addHouse方法,界面,接收用户的输入信息,添加房屋信息

seekHouse方法,界面,查找房屋信息

deleteHouse方法,界面,删除房屋信息

alterHouse方法,界面,修改房屋信息

listHouse方法,界面,清单

outMenu方法,退出系统

 2. HouseService.java 类[业务层]

 a.新增房屋信息

b.查找房屋信息

c.删除房屋信息

 d.修改房屋信息

 e.房屋列表


这篇关于JAVA实现房屋出租系统(超详细)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/542080

相关文章

JVM 的类初始化机制

前言 当你在 Java 程序中new对象时,有没有考虑过 JVM 是如何把静态的字节码(byte code)转化为运行时对象的呢,这个问题看似简单,但清楚的同学相信也不会太多,这篇文章首先介绍 JVM 类初始化的机制,然后给出几个易出错的实例来分析,帮助大家更好理解这个知识点。 JVM 将字节码转化为运行时对象分为三个阶段,分别是:loading 、Linking、initialization

Spring Security 基于表达式的权限控制

前言 spring security 3.0已经可以使用spring el表达式来控制授权,允许在表达式中使用复杂的布尔逻辑来控制访问的权限。 常见的表达式 Spring Security可用表达式对象的基类是SecurityExpressionRoot。 表达式描述hasRole([role])用户拥有制定的角色时返回true (Spring security默认会带有ROLE_前缀),去

浅析Spring Security认证过程

类图 为了方便理解Spring Security认证流程,特意画了如下的类图,包含相关的核心认证类 概述 核心验证器 AuthenticationManager 该对象提供了认证方法的入口,接收一个Authentiaton对象作为参数; public interface AuthenticationManager {Authentication authenticate(Authenti

Spring Security--Architecture Overview

1 核心组件 这一节主要介绍一些在Spring Security中常见且核心的Java类,它们之间的依赖,构建起了整个框架。想要理解整个架构,最起码得对这些类眼熟。 1.1 SecurityContextHolder SecurityContextHolder用于存储安全上下文(security context)的信息。当前操作的用户是谁,该用户是否已经被认证,他拥有哪些角色权限…这些都被保

Spring Security基于数据库验证流程详解

Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

Java架构师知识体认识

源码分析 常用设计模式 Proxy代理模式Factory工厂模式Singleton单例模式Delegate委派模式Strategy策略模式Prototype原型模式Template模板模式 Spring5 beans 接口实例化代理Bean操作 Context Ioc容器设计原理及高级特性Aop设计原理Factorybean与Beanfactory Transaction 声明式事物

不懂推荐算法也能设计推荐系统

本文以商业化应用推荐为例,告诉我们不懂推荐算法的产品,也能从产品侧出发, 设计出一款不错的推荐系统。 相信很多新手产品,看到算法二字,多是懵圈的。 什么排序算法、最短路径等都是相对传统的算法(注:传统是指科班出身的产品都会接触过)。但对于推荐算法,多数产品对着网上搜到的资源,都会无从下手。特别当某些推荐算法 和 “AI”扯上关系后,更是加大了理解的难度。 但,不了解推荐算法,就无法做推荐系

基于人工智能的图像分类系统

目录 引言项目背景环境准备 硬件要求软件安装与配置系统设计 系统架构关键技术代码示例 数据预处理模型训练模型预测应用场景结论 1. 引言 图像分类是计算机视觉中的一个重要任务,目标是自动识别图像中的对象类别。通过卷积神经网络(CNN)等深度学习技术,我们可以构建高效的图像分类系统,广泛应用于自动驾驶、医疗影像诊断、监控分析等领域。本文将介绍如何构建一个基于人工智能的图像分类系统,包括环境

水位雨量在线监测系统概述及应用介绍

在当今社会,随着科技的飞速发展,各种智能监测系统已成为保障公共安全、促进资源管理和环境保护的重要工具。其中,水位雨量在线监测系统作为自然灾害预警、水资源管理及水利工程运行的关键技术,其重要性不言而喻。 一、水位雨量在线监测系统的基本原理 水位雨量在线监测系统主要由数据采集单元、数据传输网络、数据处理中心及用户终端四大部分构成,形成了一个完整的闭环系统。 数据采集单元:这是系统的“眼睛”,