房屋出租系统(OOP)

  • 1.房屋出租系统的需求
  • 2.房屋出租系统的界面
  • 3.房屋出租系统的代码实现
    • 1.HouseView.java(界面)
    • 2.HouseService.java(业务层)
    • 3.House.java(数据层)
    • 4.Utility.java(工具类)
    • 5.HouseRentApp.java
    • 6.运行结果

1.房屋出租系统的需求

房屋出租系统要实现:1.新增房屋 2.查找房屋 3.删除房屋 4.修改房屋 5.显示房屋信息 6.退出,这几个功能。

2.房屋出租系统的界面

主菜单界面

1.新增房屋

2.查找房屋

3.删除房屋

4.修改房屋

5.显示房屋信息

6.退出

3.房屋出租系统的代码实现

1.HouseView.java(界面)

完成:
1.显示界面
2.接受用户的输入
3.调用HouseService完成房屋系统的各种操作

package com.houserent.view;import com.houserent.domain.House;
import com.houserent.service.HouseService;
import com.houserent.utils.Utility;import java.util.Scanner;public class HouseView {private boolean loop = true;private int key;Scanner scanner = new Scanner(System.in);HouseService houseService = new HouseService(3);//    1、添加房屋信息的方法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(13);System.out.print("月租:");int rent = Utility.readInt();System.out.print("状态(未出租/已出租):");String state = Utility.readString(3);House house = new House(0, name, phone, address, rent, state);if (houseService.add(house)) {System.out.println("------添加房屋信息成功------");} else {System.out.println("------添加房屋信息失败------");}}//    2,查找房屋的方法public void findHouse() {System.out.println("------------查找房屋------------");System.out.print("请输入你要查找的id:");int id = Utility.readInt();House findId = houseService.findById(id);System.out.println(findId);}//    3、删除房屋的方法public void delHouse() {System.out.println("------------删除房屋------------");System.out.print("请选择待删除的房屋编号(-1退出):");int id = Utility.readInt();if (id == -1) {System.out.println("------------放弃删除房屋------------");return;}char choice = Utility.readConfirmSelection();if (choice == 'Y') {if (houseService.del(id)) {System.out.println("------------删除成功------------");} else {System.out.println("--------查找不到该编号的房屋,无法删除--------");}} else {System.out.println("------------放弃删除房屋------------");}}//    4.修改房屋信息方法public void updateHouse() {System.out.println("------------修改房屋------------");System.out.print("请选择待修改房屋编号(-1退出):");int id = Utility.readInt();if (id == -1) {System.out.println("已退出修改功能");return;}House house = houseService.findById(id);//        如果有要修改的房屋信息,就修改。if (house != null) {System.out.println("姓名(" + house.getName() + "):");String name = Utility.readString(8, "");if (name != "") {house.setName(name);}System.out.println("电话(" + house.getPhone() + "):");String Phone = Utility.readString(12, "");if (Phone != "") {house.setPhone(Phone);}System.out.println("地址(" + house.getAddress() + "):");String Address = Utility.readString(13, "");if (Address != "") {house.setAddress(Address);}System.out.println("租金(" + house.getRent() + "):");int Rent = Utility.readInt(-1);if (Rent != -1) {house.setRent(Rent);}System.out.println("状态(" + house.getState() + "):");String State = Utility.readString(3, "");if (State != "") {house.setState(State);}System.out.println("------------修改成功------------");return;}System.out.println("编号有误,无法进行修改操作!");}//    5、显示所有的房屋信息的方法public void listHouse() {House[] houses = houseService.list();if (houses[0] == null) {System.out.println("当前房屋列表为空");return;}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("------------房屋信息显示完毕------------");}//    6、退出房屋出租系统public void exit(){char out = Utility.readConfirmSelection();if(out == 'Y'){loop = false;return;}System.out.println("------------已取消退出------------");}//    房屋出租系统的主菜单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.println("请选择你要的功能(1-6):");key = scanner.nextInt();switch (key) {case 1:addHouse();break;case 2:findHouse();break;case 3:delHouse();break;case 4:updateHouse();break;case 5:listHouse();break;case 6:exit();break;default:System.out.println("输入有误,请重新输入。");break;}} while (loop);}
}

2.HouseService.java(业务层)

完成:
1.定义House[],保存House对象
2.响应HouseView的调用
3.完成对房屋信息的各种操作

package com.houserent.service;import com.houserent.domain.House;public class HouseService {private House[] houses;//    定义一个变量 由它来决定房屋信息应该放在数组的哪个位置private int houseNum = 0;//    定义一个变量 由它设置房屋的id值private int id = 1;//    创建对象的时候,同时把houses的大小给赋值了public HouseService(int size) {houses = new House[size];}//    添加房屋信息方法public boolean add(House newHouse) {if (houseNum == houses.length) {System.out.println("数组已满,无法添加。");return false;}
//        让两个变量使用后,再++newHouse.setId(id++);houses[houseNum++] = newHouse;return true;}//    查找房屋的方法public House findById(int findId) {for (int i = 0; i < houses.length; i++) {if (houses[i].getId() == findId) {return houses[i];}}return null;}//    删除房屋信息public boolean del(int id) {//         定义一个接收要删除房屋信息的数组下标int index = -1;
//        查询一下数组里是否有要删除的房屋编号,有就把下标保存在indexfor (int i = 0; i < houses.length; i++) {if (houses[i].getId() == id) {index = i;break;}}
//        如果index还是-1,证明没有找到,返回falseif (index == -1) {return false;}
//         把要删除对应编号的数组元素后面数组元素全部往前移一个位置for (int i = index; i < houses.length - 1; i++) {houses[i] = houses[i + 1];}
//          houseNum先自减,再把数组最后一个元素置空houses[--houseNum] = null;return true;}//    返回houses数组public House[] list() {return houses;}
}

3.House.java(数据层)

完成:
一个House对象表示一个房屋信息

package com.houserent.domain;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;}@Overridepublic String toString() {return id +"\t\t" + name +"\t\t" + phone +"\t\t" + address +"\t\t" + rent +"\t\t" + state;}
}

4.Utility.java(工具类)

(这个工具类代码是韩顺平老师写的)完成:
获取用户的各种输入

package com.houserent.utils;/**工具类的作用:处理各种情况的用户输入,并且能够按照程序员的需求,得到用户的控制台输入。*/import java.util.*;
/***/
public class Utility {//静态属性。。。private static Scanner scanner = new Scanner(System.in);/*** 功能:读取键盘输入的一个菜单选项,值:1——5的范围** @return 1——5*/public static char readMenuSelection() {char c;for (; ; ) {String str = readKeyBoard(1, false);//包含一个字符的字符串c = str.charAt(0);//将字符串转换成字符char类型if (c != '1' && c != '2' &&c != '3' && c != '4' && c != '5') {System.out.print("选择错误,请重新输入:");} else break;}return c;}/*** 功能:读取键盘输入的一个字符** @return 一个字符*/public static char readChar() {String str = readKeyBoard(1, false);//就是一个字符return str.charAt(0);}/*** 功能:读取键盘输入的一个字符,如果直接按回车,则返回指定的默认值;否则返回输入的那个字符** @param defaultValue 指定的默认值* @return 默认值或输入的字符*/public static char readChar(char defaultValue) {String str = readKeyBoard(1, true);//要么是空字符串,要么是一个字符return (str.length() == 0) ? defaultValue : str.charAt(0);}/*** 功能:读取键盘输入的整型,长度小于2位** @return 整数*/public static int readInt() {int n;for (; ; ) {String str = readKeyBoard(10, false);//一个整数,长度<=10位try {n = Integer.parseInt(str);//将字符串转换成整数break;} catch (NumberFormatException e) {System.out.print("数字输入错误,请重新输入:");}}return n;}/*** 功能:读取键盘输入的 整数或默认值,如果直接回车,则返回默认值,否则返回输入的整数** @param defaultValue 指定的默认值* @return 整数或默认值*/public static int readInt(int defaultValue) {int n;for (; ; ) {String str = readKeyBoard(10, true);if (str.equals("")) {return defaultValue;}//异常处理...try {n = Integer.parseInt(str);break;} catch (NumberFormatException e) {System.out.print("数字输入错误,请重新输入:");}}return n;}/*** 功能:读取键盘输入的指定长度的字符串** @param limit 限制的长度* @return 指定长度的字符串*/public static String readString(int limit) {return readKeyBoard(limit, false);}/*** 功能:读取键盘输入的指定长度的字符串或默认值,如果直接回车,返回默认值,否则返回字符串** @param limit        限制的长度* @param defaultValue 指定的默认值* @return 指定长度的字符串*/public static String readString(int limit, String defaultValue) {String str = readKeyBoard(limit, true);return str.equals("") ? defaultValue : str;}/*** 功能:读取键盘输入的确认选项,Y或N* 将小的功能,封装到一个方法中.** @return Y或N*/public static char readConfirmSelection() {System.out.println("请输入你的选择(Y/N): 请小心选择");char c;for (; ; ) {//无限循环//在这里,将接受到字符,转成了大写字母//y => Y n=>NString str = readKeyBoard(1, false).toUpperCase();c = str.charAt(0);if (c == 'Y' || c == 'N') {break;} else {System.out.print("选择错误,请重新输入:");}}return c;}/*** 功能: 读取一个字符串** @param limit       读取的长度* @param blankReturn 如果为true ,表示 可以读空字符串。*                    如果为false表示 不能读空字符串。*                    <p>*                    如果输入为空,或者输入大于limit的长度,就会提示重新输入。* @return*/private static String readKeyBoard(int limit, boolean blankReturn) {//定义了字符串String line = "";//scanner.hasNextLine() 判断有没有下一行while (scanner.hasNextLine()) {line = scanner.nextLine();//读取这一行//如果line.length=0, 即用户没有输入任何内容,直接回车if (line.length() == 0) {if (blankReturn) return line;//如果blankReturn=true,可以返回空串else continue; //如果blankReturn=false,不接受空串,必须输入内容}//如果用户输入的内容大于了 limit,就提示重写输入//如果用户如的内容 >0 <= limit ,我就接受if (line.length() < 1 || line.length() > limit) {System.out.print("输入长度(不能大于" + limit + ")错误,请重新输入:");continue;}break;}return line;}
}

5.HouseRentApp.java

完成:
程序的入口(创建HouseView对象,调用该对象,显示主菜单)

package com.houserent;import com.houserent.view.HouseView;public class HouseRentApp {public static void main(String[] args) {new HouseView().mainMenu();System.out.println("----你退出了房屋出租系统----");}
}

6.运行结果

------------房屋出租系统------------1 新 增 房 屋2 查 找 房 屋3 删 除 房 屋4 修 改 房 屋 信 息5 显 示 房 屋 信 息6 退      出
请选择你要的功能(1-6):
1
------添加房屋信息------
姓名:张家辉
电话:1472583691
地址:广州市
月租:3000
状态(未出租/已出租):未出租
------添加房屋信息成功------
------------房屋出租系统------------1 新 增 房 屋2 查 找 房 屋3 删 除 房 屋4 修 改 房 屋 信 息5 显 示 房 屋 信 息6 退      出
请选择你要的功能(1-6):
1
------添加房屋信息------
姓名:古天乐
电话:1472583692
地址:深圳市
月租:5000
状态(未出租/已出租):已出租
------添加房屋信息成功------
------------房屋出租系统------------1 新 增 房 屋2 查 找 房 屋3 删 除 房 屋4 修 改 房 屋 信 息5 显 示 房 屋 信 息6 退      出
请选择你要的功能(1-6):
5
------------所有的房屋信息------------
编号      房主          电话              地址          月租          状态(未出租/已出租)
1       张家辉     1472583691      广州市     3000        未出租
2       古天乐     1472583692      深圳市     5000        已出租
------------房屋信息显示完毕------------
------------房屋出租系统------------1 新 增 房 屋2 查 找 房 屋3 删 除 房 屋4 修 改 房 屋 信 息5 显 示 房 屋 信 息6 退      出
请选择你要的功能(1-6):
2
------------查找房屋------------
请输入你要查找的id:2
2       古天乐     1472583692      深圳市     5000        已出租
------------房屋出租系统------------1 新 增 房 屋2 查 找 房 屋3 删 除 房 屋4 修 改 房 屋 信 息5 显 示 房 屋 信 息6 退      出
请选择你要的功能(1-6):
3
------------删除房屋------------
请选择待删除的房屋编号(-1退出):2
请输入你的选择(Y/N): 请小心选择
y
------------删除成功------------
------------房屋出租系统------------1 新 增 房 屋2 查 找 房 屋3 删 除 房 屋4 修 改 房 屋 信 息5 显 示 房 屋 信 息6 退      出
请选择你要的功能(1-6):
5
------------所有的房屋信息------------
编号      房主          电话              地址          月租          状态(未出租/已出租)
1       张家辉     1472583691      广州市     3000        未出租
------------房屋信息显示完毕------------
------------房屋出租系统------------1 新 增 房 屋2 查 找 房 屋3 删 除 房 屋4 修 改 房 屋 信 息5 显 示 房 屋 信 息6 退      出
请选择你要的功能(1-6):
4
------------修改房屋------------
请选择待修改房屋编号(-1退出):1
姓名(张家辉):
刘德华
电话(1472583691):
3692581471
地址(广州市):
增城区
租金(3000):
2000
状态(未出租):
已出租
------------修改成功------------
------------房屋出租系统------------1 新 增 房 屋2 查 找 房 屋3 删 除 房 屋4 修 改 房 屋 信 息5 显 示 房 屋 信 息6 退      出
请选择你要的功能(1-6):
5
------------所有的房屋信息------------
编号      房主          电话              地址          月租          状态(未出租/已出租)
1       刘德华     3692581471      增城区     2000        已出租
------------房屋信息显示完毕------------
------------房屋出租系统------------1 新 增 房 屋2 查 找 房 屋3 删 除 房 屋4 修 改 房 屋 信 息5 显 示 房 屋 信 息6 退      出
请选择你要的功能(1-6):
6
请输入你的选择(Y/N): 请小心选择
y
----你退出了房屋出租系统----进程已结束,退出代码0

(JAVA)韩顺平老师讲的房屋出租系统相关推荐

  1. B站韩顺平java学习笔记(八)-- 房屋出租系统(项目)章节

    目录 一 项目需求说明 1 项目界面 二  房屋租赁程序框架图 ​三  系统实现 1  完成House类 2  显示主菜单和完成退出软件的功能 3  完成显示房屋列表的功能 4  添加房屋信息的功能 ...

  2. 韩顺平老师讲诉如何学习PHP

    有很多网友发来邮件询问各种问题,有深有浅, 有难有易.因为很多时间需要上课,没有一一回答,这里给大家道个歉,这里我举例出了几封网友的来信: 发件人:Chen Ma 发送时间: 2012-09-18 1 ...

  3. 韩顺平老师坦克大战项目总结

    韩顺平老师讲的坦克大战项目,用代码进行了复现,有几个自己的总结 1 有个别功能没有实现,EnemyTank中敌人坦克向四周移动功能没有实现,只是实现了随机转向,但一直停在原地不动,没有找到bug所在. ...

  4. 【韩顺平JAVA】房屋出租系统

    程序整体分析 示例代码 package houserent;import java.util.Scanner;public class HouseRentSYS {public static void ...

  5. 【Java房屋出租系统】韩顺平java学习房屋出租系统

    房屋出租系统效果图示 房屋出租系统主类 package hspedu.houseRent;import java.util.Map;public class HouseRentSys {public ...

  6. Java基础易忘重点内容笔记【附B站韩顺平老师课程链接】

    B站课程链接:https://www.bilibili.com/video/BV1fh411y7R8?spm_id_from=333.999.0.0 1. 文档注释 用于对Java方法的注释,可据此生 ...

  7. Java坦克大战 跟学韩顺平老师视频开发

    这里写目录标题 TankBigWarGame 介绍 界面展示 项目架构 安装教程 游戏说明 项目涉及技术功能 游戏结束判断 项目不足与优化空间 相关代码展示 主方法Main 绘图界面 MyPanelF ...

  8. Java集合深入剖析【韩顺平老师版】

    Java集合知识体系[思维导图] 1.集合体系 1.1.为什么使用集合? 1.数组的不足 长度固定,不能更改 存储的必须是同一类型的元素(基本类型或引用类型) 增加.删除元素比较麻烦 2.集合的优势 ...

  9. java学习笔记(9) 第9章 Java项目-房屋出租系统

    Java项目-房屋出租系统 代码打包--百度网盘链接: 9.1 房屋出租系统-需求 9.1.1 项目需求说明 9.2 房屋出租系统-界面 9.3 房屋出租系统-设计(!!) 9.4 房屋出租系统-实现 ...

  10. 韩顺平老师《一周学会Linux》视频笔记

    前言: 这个教学视频使用的软件环境是: Red Hat Linux(Kernel 2.4.20-8)红帽Linux系统[release 9 shrike],在虚拟机中运行 1.成为一个Linux专家的 ...

最新文章

  1. convertViewsetTag方法的一点理解
  2. C# MD5加密工具方法
  3. scanf_s()函数 (是Microsoft公司VS开发工具提供的一个功能相同的安全标准输入函数)
  4. 基于matlab的dsp调试方法,基于Matlab7.0的DSP调试
  5. 【bzoj4080】[Wf2014]Sensor Network 随机化
  6. 使用pip install出现超时警告的解决方法
  7. 耦合式是什么意思_高内聚 ,低耦合 到底是什么意思?
  8. access vba表字段_vba中如何在access的一张表中得到所有的列名?
  9. [CSS]详解display:inline | block |inline-block的区别
  10. c#endread怎么打印出来_打印机打印出来是白板是怎么回事
  11. nosql----redis持久化详解
  12. 金刚爸爸是这么教育金刚儿子的
  13. appium : 查看Android手机自带浏览器内核版本(webview版本)
  14. jvm精通之柳暗花明
  15. 赵雅智_名片夹(4)_Android中listview可折叠伸缩仿手风琴效果(静态)
  16. 零基础成为3D游戏建模师需要多久?
  17. python-yacs库的用法
  18. java liferay_Liferay 6.1开发学习(二):创建一个Portlet工程 | IT人生录
  19. 阿里巴巴2019实习生招聘
  20. 通过Logstash实现mysql数据定时增量同步到ES

热门文章

  1. Canny算子中的非极大值抑制(Non-Maximum Suppression)分析
  2. 灵格斯!优秀的翻译软件!!!
  3. hua图软件 mac_CAD迷你画图for Mac-CAD迷你画图Mac版下载 V3.3.6-PC6苹果网
  4. ECDSA_SVP_Attack
  5. 一名普通电工,靠手艺两年赚了340万,从此走向人生巅峰!
  6. 雪花算法生成主键id
  7. 紫外分光光度计与紫外可见分光光度计的区别是什么?
  8. 如何划分和细化有限元网格,才能提高计算的精度和速度?
  9. 通达信最新 行情服务器,【图】我是如何打造普通行情比l2还快速的通达信行情服务器_股票公式,股票软件,股票论坛,炒股公式,股票_股票软件技术交流论坛_理想论坛 - 股票论坛...
  10. 利用JS获取用户当前ip地址