Java/java程序设计:房屋出租系统:

  • 一、前言:
    • 一、1. 框架图
  • 二、各类包下的代码实现:
    • 1. 主文件(运行文件HouseApp.java)
    • 2. 房屋类文件(House.java)
    • 3. 新增房源效果图
      • 3.1 添加房屋代码add逻辑判断(写在HouseService.java)
      • 3.2 添加房屋代码addHouse方法(写在HouseView.java)
    • 4. 查找房源效果图
      • 4.1 查找房源代码find逻辑判断(写在HouseService.java)
      • 4.2 查找房源findHouse方法(写在HouseView.java)
    • 5. 删除房源信息效果图
      • 5.1 删除房源del逻辑判断(写在HouseService.java)
      • 5.2 删除房源delHouse方法(写在HouseView.java)
    • 6. 修改房源信息效果图
      • 6.1 修改房源信息update(写在HouseView.java)
    • 7. 房屋列表效果图
      • 7. 1 房屋列表list逻辑判断(写在HouseService.java)
      • 7.2 房屋列表listHouse方法(写在HouseView.java)
    • 8. 退出效果图
      • 8.1 退出exit方法(写在HouseView.java)
    • 9. 我自己的工具库Utility
  • 三、写在最后

一、前言:

能够实现对房屋信息的添加、修改和删除(用数组实现),并能够打印房屋明细表
主要包括:主菜单,新增房源,查找房屋信息,修改房屋信息,删除房屋信息

一、1. 框架图

主菜单

二、各类包下的代码实现:

1. 主文件(运行文件HouseApp.java)

import houserent.view.HouseView;public class HouseRentApp {public static void main(String[] args) {//创建HouseView对象,并且显示主菜单,做为整个程序的入口new HouseView().mainView();}
}

2. 房屋类文件(House.java)

重写一下toString方法,输出房屋信息更好看,设置get set 方法封装一下

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

3. 新增房源效果图

3.1 添加房屋代码add逻辑判断(写在HouseService.java)

    public boolean add(House newhouse) {//这里暂时不考虑数组扩容问题if(houseNums == house.length){System.out.println("房屋数组已满不能添加新房屋!!");return false;}house[houseNums++] = newhouse;//id自增长,更新newhouse idnewhouse.setId(++idCounter);return true;}

3.2 添加房屋代码addHouse方法(写在HouseView.java)


//编写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对象House newhouse = new House(0, name, phone, address, rent, state);if(houseService.add(newhouse)){System.out.println("=============添加房屋成功=============");}else {System.out.println("=============添加房屋失败=============");}}

4. 查找房源效果图

4.1 查找房源代码find逻辑判断(写在HouseService.java)

public  House find(int findId) {//遍历对象数组for (int i = 0; i < houseNums; i++) {if(findId == house[i].getId()) {return house[i];}}return null;}

4.2 查找房源findHouse方法(写在HouseView.java)

    //根据id查找房屋信息public void findHouse() {System.out.println("==============查找房屋信息=============");System.out.print("请输入要查找的id:");int findId = Utility.readInt();//调用find方法House house = houseService.find(findId);if(house != null){System.out.println(house);}else{System.out.println("==============查找的房屋信息id不存在=============");}}

5. 删除房源信息效果图

5.1 删除房源del逻辑判断(写在HouseService.java)

    //del方法删除房屋信息public boolean del(int delid) {//应当找到删除房屋的对应下标int index = -1;for (int i = 0; i < houseNums; i++) {if(delid == house[i].getId()){//要删除的房屋一定是对应的下标为i的房屋index = i;}}if(index == -1){return false;}//如果找对了找到了for (int i = index; i < houseNums - 1; i++) {house[i] = house[i + 1];}house[--houseNums] = null;return true;}

5.2 删除房源delHouse方法(写在HouseView.java)

    //编写delHouse方法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("=============放弃删除房屋成功!=============");}}

6. 修改房源信息效果图

6.1 修改房源信息update(写在HouseView.java)

//update方法更新房屋出租信息public void update() {System.out.println("==============修改房屋信息=============");System.out.print("请输入待修改房屋的编号:(-1退出)");int updateId = Utility.readInt();if(updateId == -1){System.out.println("==============已放弃修改房屋信息!=============");}//根据updateId ,查找对象House house = houseService.find(updateId);if(house == null){System.out.println("=============房间号码不存在,修改房屋失败=============");return;}//编号 房主 电话 地址 月租 状态(未出租/已出租)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(12, "");if(!"".equals(Phone)) {house.setPhone(Phone);}System.out.print("地址(" + house.getAddress() + "):");String address = Utility.readString(18);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(3, "");if(!"".equals(state)){house.setState(state);}}

7. 房屋列表效果图

7. 1 房屋列表list逻辑判断(写在HouseService.java)

    //list()方法,返回所有房屋信息public House[] list() {return house;}

7.2 房屋列表listHouse方法(写在HouseView.java)

    //房屋列表显示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; houses[i] != null; i++) {System.out.println(houses[i]);}System.out.println("=============房屋列表显示完毕=============");}

8. 退出效果图

8.1 退出exit方法(写在HouseView.java)

    //退出房屋出租系统方法exit();public void exit() {char c = Utility.readConfirmSelection();if(c == 'Y'){loop = false;System.out.println("==============已退出房屋出租系统菜单=============");}else {return;}}

9. 我自己的工具库Utility

里面重写了系统自带的输入方法,详情见源码


package 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表示 不能读空字符串。** 如果输入为空,或者输入大于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;}
}

三、写在最后

最后总结一下,当我们面对这个比较复杂的房屋出租系统的问题时,我们可以采用分层模式来化繁为简,即我们就需要考虑两个问题,我们需要哪些类,类和类直接的调用关系是什么(笔者感觉这个项目中的类与类之间的关系比较复杂),具体框架可以看文章最开始的图片,这里我们再介绍一下utility工具类,这个也就是我们俗称的轮子,公司一般会提前封装好,我们直接调用就行了

蟹蟹 阅读 ^ - ^

Java/java程序设计:房屋出租系统:要求实现:新增房源,查找房屋信息,修改房屋信息,删除房屋信息,显示所有房屋列表,退出房屋管理系统;相关推荐

  1. 基于javaweb的公寓房屋出租系统(java+ssm+jsp+easyui+echarts+mysql)

    基于javaweb的公寓房屋出租系统(java+ssm+jsp+easyui+echarts+mysql) 运行环境 Java≥8.MySQL≥5.7.Tomcat≥8 开发工具 eclipse/id ...

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

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

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

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

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

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

  5. Java 第一阶段建立编程思想 【房屋出租系统】

    Java 第一阶段建立编程思想 [房屋出租系统] 1. 项目需求说明 2. 项目界面 1. 主菜单 2. 新增房源 3. 查找房源 4. 删除房源 5. 修改房源 6. 房屋列表 7. 退出系统 3. ...

  6. Java笔记之房屋出租系统(十一)

    目录 一.项目需求说明 二.界面说明 1.主界面 2.新增房源界面 3.查找房源界面 4.删除房源界面 5.修改房源界面 6.房源列表界面 7.退出界面 三.程序框架图设计 四.工具类的说明 五.房屋 ...

  7. java的ArrayList实现房屋出租系统

    1.需求 实现基于文本界面的<房屋出租软件>. 能够实现对房屋信息的添加.修改和删除(用链表实现),并能够打印房屋明细表 2.框架(MVC) 3.实现 domain层 package co ...

  8. Java笔记——11.房屋出租系统

    11.房屋出租系统 项目需求说明 实现基于文本界面的"房屋出租系统" 能够实现对房屋信息的添加.修改和删除(用数组实现),并且能够打印房屋明细表 主菜单页面: 新增房源页面: 查找 ...

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

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

最新文章

  1. Centos rescue 模式
  2. Ubuntu下安装OpenGL/Glut库
  3. C++构造函数初始化列表
  4. 手把手教创建你的第一个以太智能合约:ETHEREUM PET SHOP(译)
  5. cron 12点执行_Linux中得循环调度任务执行
  6. yy自动语音接待机器人_人脸签到、发言记录,会议机器人来啦
  7. 2021年中国医药营销数字化研究报告
  8. 关于shiro授权 This subject is anonymous - it does not have any identifying principals and authorization
  9. 数据挖掘:特征提取——PCA与LDA
  10. cycleGAN有matlab代码吗,CycleGAN的代码组成
  11. CentOS hping3安装和应用
  12. 【计算机网络】实验报告三:Cisco Packet Tracer 实验
  13. word写论文时给公式编号
  14. Android apk签名-apksigner签名工具
  15. Criss-Cross Attention for Semantic Segmentation论文及代码分析
  16. centos7系统开启ftp服务器,centos7开启ftp服务器
  17. php定义一个矩形类rectangle,Python3面向对象—点和矩形类
  18. 去掉WebView中的白色背景
  19. python 估值模型_基于Python的客户价值细分模型(RFM)
  20. 《迅雷链精品课》第十五课:共识算法的性能问题

热门文章

  1. Cocos2d-x 3.X, IOS版添加广点通插屏广告
  2. 仿微信个人二维码切换样式
  3. 网页中实现图片的毛玻璃效果
  4. 短信验证码被盗刷了怎么办?
  5. 数据库顶级会议介绍:VLDB、SIGMOD、ICDE
  6. 如何在eclipse中导入Java项目文件包(方法截图详细步骤)
  7. 如何使用Python打开一个TXT文件
  8. 人工智能实验---MNIST图像识别
  9. 使用canvas绘制太极
  10. 肽核酸(PNA)偶联穿膜肽(CCPs)(KFF)3K形成CCPs-PNA|肽核酸的使用方法