<Java>8 项目(房屋出租系统)
本文最后更新于:2022年5月24日 早上
8 项目:房屋出租系统
crud: c[create] r[read] u[update] d[delete]
一阶段毕业作业
-
RentSystem.java(入口)
package com.house_rent; public class RentSystem { public static void main(String[] args) { RentSysMenu rentSys = new RentSysMenu(); rentSys.menu(); System.out.println("再见~"); } }
-
RentSysMenu.java
package com.house_rent; import java.util.Scanner; public class RentSysMenu { Method method = new Method(); private Scanner inp = new Scanner(System.in); //menu:这是出租系统的系统菜单界面。用户输入 1 - 6,并据此调用方法。该方法自身会无限循环。 public void menu() { for (; ; ) { //这是系统菜单的显示页面 System.out.print("\n---------------房屋出租系统---------------" + "\n\t\t\t 1 新 增 房 屋" + "\n\t\t\t 2 查 找 房 屋" + "\n\t\t\t 3 删 除 房 屋" + "\n\t\t\t 4 修 改 房 屋 信 息" + "\n\t\t\t 5 房 屋 列 表" + "\n\t\t\t 6 退 出" + "\n请选择(1-6):"); char inpChar = inp.next().charAt(0); System.out.println("----------------------------------------\n"); switch (inpChar) { case '1': //输入 1 时,调用 创建房屋 方法 method.newHouse(); break; case '2': //输入 2 时,调用 搜索房屋 方法 method.searchAHouseFromMenu(); break; case '3': //输入 3 时,调用 删除房屋 方法 method.deleteSpecificHouse(); break; case '4': //输入 4 时,调用 修改信息 方法 method.changeHouseInfo(); break; case '5': //输入 5 时,调用 展示全部 方法 method.showAllHouseFromMenu(); break; case '6': //输入 6 时,进行二次确认。通过则退出系统。 System.out.println("确认退出吗?:(Y/N):"); //yesOrNo 方法,是可以判断用户输入的到底是 Y 还是 N 的方法。 if (method.yesOrNo(inp.next().charAt(0))) { System.out.println("程序已退出。"); return; } break; default: //当用户输入了 1 - 6 以外的东西,提示一个错误信息 System.out.println("错误,请输入纯数字(1-6)"); } } } }
-
Method.java
package com.house_rent; import java.util.Scanner; class Method { //创建一个 数据数组。该数组将存放所有未来的房屋数据,每个房屋占用 1 个长度。目前,其长度为0 Data[] houses = new Data[0]; private Scanner inp = new Scanner(System.in); //newHouse:1 创建房屋 方法。由 menu 接入。 public void newHouse() { System.out.print("=================添加房屋=================" + "\n请输入姓名:"); String inName = inp.next(); //如果名字太短,补长一些,方便排版 if (inName.length() <= 2) { inName = inName + " "; } System.out.print("请输入电话:"); String inCall = inp.next(); System.out.print("请输入地址:"); String inLocation = inp.next(); //如果地址太短,补长一些,方便排版 if (inLocation.length() <= 2) { inLocation = inLocation + " "; } System.out.print("请输入月租金:"); double inPrice = inp.nextDouble(); System.out.print("是否租出?(Y/N):"); //yesOrNo 方法,是可以判断用户输入的到底是 Y 还是 N 的方法。 boolean inIsRented = yesOrNo(inp.next().charAt(0)); //调用 写入创建房屋 方法,将以上参数写入 数据数组 creatData(inName, inCall, inLocation, inPrice, inIsRented); System.out.println("=================添加完成================="); //调用 真-搜索房屋 方法。为用户展示刚刚创建的房屋信息。 searchAHouse(houses[houses.length - 1].getId()); System.out.println("\n请牢记房屋 ID\n如果想要修改信息,请于主菜单选择[4 修改房屋信息]"); } //searchAHouseFromMenu:2 搜索房屋 方法。由 menu 接入。 public void searchAHouseFromMenu() { System.out.println("=================查找房屋================="); //调用 真-搜索房屋 方法 searchAHouse(); System.out.println("=================查找完毕================="); } //deleteSpecificHouse:3 删除房屋 方法。由 menu 接入。 public void deleteSpecificHouse() { System.out.println("=================删除房屋================="); //首先,搜索并展示用户想要的房屋。 //调用 真-搜索房屋 方法。如果找到,会返回该房屋的 数组编号;否则,返回 -100 int num = searchAHouse(); //如果找到房屋(返回值不为 -100),则进行二次确认。 if (num != -100) { System.out.println("确定要删除该房屋信息吗?(Y/N):"); //yesOrNo 方法,是可以判断用户输入的到底是 Y 还是 N 的方法。 if (yesOrNo(inp.next().charAt(0))) { System.out.println("一经删除无法恢复!请再次确认,是否删除!(Y/N):"); if (yesOrNo(inp.next().charAt(0))) { //调用 注销房屋 方法。 deleteHouse(num); System.out.println("===============房屋已删除==============="); } } } } //changeHouseInfo:4 修改信息 方法。由 menu 接入 public void changeHouseInfo() { System.out.println("=================修改房屋================="); //首先,搜索并展示用户想要的房屋 //调用 真-搜索房屋 方法。如果找到,会返回该房屋的 数组编号;否则,返回 -100 int num = searchAHouse(); //找到房屋的场合,逐项提示并进行修改 if (num != -100) { System.out.println("姓名(" + houses[num].getName() + "):"); String inName = inp.next(); if (inName.length() <= 2) { inName = inName + " "; } houses[num].setName(inName); System.out.println("电话号码(" + houses[num].getCall() + "):"); houses[num].setCall(inp.next()); System.out.println("地址(" + houses[num].getLocation() + "):"); String inLocation = inp.next(); if (inLocation.length() <= 2) { inLocation = inLocation + " "; } houses[num].setLocation(inLocation); System.out.println("月租金(" + houses[num].getPrice() + "):"); houses[num].setPrice(inp.nextDouble()); System.out.println("是否租出(" + (houses[num].isRented() ? "已出租!" : "未出租。") + ")(Y/N):"); houses[num].setRented(yesOrNo(inp.next().charAt(0))); //到这里就改完了 //调用 真-搜索房屋 方法,展示房屋 System.out.println("=================修改完成================="); searchAHouse(houses[num].getId()); } } //showAllHouseFromMenu:5 展示全部 方法。由 menu 接入 public void showAllHouseFromMenu() { System.out.println("===============所有房屋信息==============="); //调用 展示全部房屋 方法 showAllHouses(); System.out.println("============以上是所有房屋信息============="); } //yesOrNo:这个方法用于判断用户输入的字符究竟表示 Yes 还是 No。 //判断不了的情况,提示错误语句,并默认为 No public boolean yesOrNo(char cha) { switch (cha) { case 'y': case 'Y': case '是': case '对': case '已': return true; case 'n': case 'N': case '否': case '没': case '不': case '未': return false; default: System.out.println("输入无效。"); return false; } } //searchAHouse:真-搜索房屋 方法(无参)。 //如果调用的是这无参方法,会先提示用户输入一个 ID,然后调用有参方法 private int searchAHouse() { System.out.println("请输入4位数房屋ID:"); String id = inp.next(); return searchAHouse(id); } //searchAHouse:真-搜索房屋 方法(有参)。输入房屋 ID,搜索该房屋。 //找到房屋的场合,展示房屋 并返回其 数组坐标。如果没找到对应房屋,提示错误信息,并返回 -100。 private int searchAHouse(String id) { for (int i = 0; i < houses.length; i++) { if (houses[i].getId().equals(id) && houses[i].isActive()) { System.out.println("房屋ID\t姓名\t\t电话\t\t\t地址\t\t月租金\t出租状态"); houses[i].showThisData(); return i; } } System.out.println("没有找到房屋!"); return -100; } //creatData:写入创建房屋 方法。需要的信息齐集的场合,将其写入 数据数组,并生成一个 ID private void creatData(String name, String call, String location, double price, boolean isRented) { Data[] tempData = new Data[houses.length + 1]; for (int i = 0; i < houses.length; i++) { tempData[i] = houses[i]; } tempData[tempData.length - 1] = new Data(tempData.length, name, call, location, price); tempData[tempData.length - 1].setRented(isRented); houses = tempData; } //showAllHouses:展示全部房屋 方法。由 展示全部(showAllHouseFromMenu)方法接入 private void showAllHouses() { System.out.println("房屋ID\t姓名\t\t电话\t\t\t地址\t\t月租金\t出租状态"); for (int i = 0; i < houses.length; i++) { if (houses[i].isActive()) { houses[i].showThisData(); } } } //deleteHouse:注销房屋 方法。将该房屋注销。数据其实保留在 数据数组,但注销使其无法被查到。 private void deleteHouse(int num) { houses[num].setActive(false); } }
-
Data.java
package com.house_rent; class Data { //房屋信息。包含:ID,名字,电话,地址,房租,是否租出。 private String id; private String name; private String call; private String location; private double price; private boolean isRented = false; private boolean active = true; public Data(int id, String name, String call, String location, double price) { //将输入的数字 ID 转化成固定 4 位的 字符串 ID if (id < 10) { this.id = "000" + id; } else if (id < 100) { this.id = "00" + id; } else if (id < 1000) { this.id = "0" + id; } else { this.id = "" + id; } this.name = name; this.call = call; this.location = location; this.price = price; } public boolean isActive() { return active; } public void setActive(boolean active) { this.active = active; } public void setId(String id) { this.id = id; } public String getId() { return id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getCall() { return call; } public void setCall(String call) { this.call = call; } public String getLocation() { return location; } public void setLocation(String location) { this.location = location; } public double getPrice() { return price; } public void setPrice(double price) { this.price = price; } public boolean isRented() { return isRented; } public void setRented(boolean rented) { isRented = rented; } //展示信息 public void showThisData() { System.out.println(id + "\t" + name + "\t" + call + "\t" + location + "\t" + price + "\t" + (isRented ? "已出租!" : "未出租。")); } }
<Java>8 项目(房屋出租系统)
https://i-melody.github.io/2021/12/13/Java/入门阶段/8 项目:房屋出租系统/