首页 > 编程语言 >房屋出租系统-简单java-实现

房屋出租系统-简单java-实现

时间:2023-03-01 20:14:30浏览次数:32  
标签:java String System 房屋出租 简单 println return public out

房屋出租系统-java

package com.zhou.java.Houserent.domain;

public class House {
 private int id;   
 private String name;
 private String phone;
 private String address;
 private String rent;
 private String state;

    public House(int id, String name, String phone, String address, String 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 String getRent() {
        return rent;
    }

    public void setRent(String rent) {
        this.rent = rent;
    }

    public String getState() {
        return state;
    }

    public void setState(String state) {
        this.state = state;
    }

    @Override
    public String toString() {
        return id +
                "\t\t" + name +
                "\t\t" + phone +
                "\t\t" + address +
                "\t\t\t" + rent +
                "\t\t\t" + state;
    }
}

package com.zhou.java.Houserent.Service;

import com.zhou.java.Houserent.domain.House;

public class HouseService {
    private House[] houses; //用于存放house对象
    private int houseNums = 1;
    private int idCounter = 1;

    public HouseService(int size) {
        houses = new House[size];
        houses[0] = new House(1, "张三", "123", "新乡学院", "2000", "未出租");
    }

    public House[] list() {
        return houses;
    }

    public boolean add(House newHouse) {
        if (houseNums >= houses.length) {
            System.out.println("数据已经满了,无法继续添加数据");
            return false;
        }
        houses[houseNums] = newHouse;
        houseNums++;
        newHouse.setId(++idCounter);
        return true;
    }

    public boolean delete(int idDel) {
        int index = -1;
        for (int i = 0; i < houseNums; i++) {
            if (idDel == houses[i].getId()) {
                index = i;
            }
        }
        if (index == -1) {
            return false;
        }
        for (int i = index; i < houses.length - 1; i++) {
            houses[i] = houses[i + 1];
        }
        houses[houseNums] = null;
        houseNums--;
        return true;
    }

    public House find(int findId) {

        for (int i = 0; i < houseNums; i++) {
            if (findId == houses[i].getId()) {
                return houses[i];
            }
        }
        return null;
    }
}

package com.zhou.java.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(2, false);//一个整数,长度<=2位
            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=>N
            String 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;
    }
}

package com.zhou.java.Houserent.View;

import com.zhou.java.Houserent.Service.HouseService;
import com.zhou.java.Houserent.domain.House;
import com.zhou.java.Houserent.utils.Utility;

public class HouseView {
    private boolean loop = true;// 判断循环是否结束
    private char key = ' ';// 输入
    private HouseService houseService = new HouseService(10);// 给数组定大小

    //    数据通过list展示
    public void listHouse() {
        System.out.println("=================房屋列表=================");
        System.out.println("编号\t\t房主\t\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 addHouse() {
        System.out.println("=================添加房屋=================");
        System.out.print("姓名: ");
        String name = Utility.readString(10);
        System.out.print("电话: ");
        String phone = Utility.readString(10);
        System.out.print("地址: ");
        String address = Utility.readString(10);
        System.out.print("月租: ");
        String rent = Utility.readString(10);
        System.out.print("状态(未出租/已出租): ");
        String state = Utility.readString(3);
        House newHouse = new House(0, name, phone, address, rent, state);
        if (houseService.add(newHouse)) {
            System.out.println("=================添加完成=================");
        } else {
            System.out.println("=================添加失败=================");
        }
    }
//      查询房屋
    public void findHouse(){
        System.out.println("=================查询房屋=================");
        System.out.println("请输入你查询地区: ");
        int findId =Utility.readInt(10);
        House house = houseService.find(findId);
        if (house != null){
            System.out.println(house);
        }else {
            System.out.println("你输入的房屋编号没有房屋信息");
        }


    }
    //    删除房屋
    public void deleteHouse() {
        System.out.println("=================删除房屋=================");
        System.out.println("请输入删除房屋序号(-1退出): ");
        int delId = Utility.readInt();
        if (delId == -1) {
            System.out.println("=================放弃删除房屋=================");
            return;
        }
        char choice = Utility.readConfirmSelection();
        if (choice == 'Y') {
            if (houseService.delete(delId)){
                System.out.println("=================删除房屋成功=================");
            }else {
                System.out.println("=================房屋编号不存在,删除失败=================");
            }
        } else {
            System.out.println("=================放弃删除房屋=================");
        }

    }
//    修改
    public void updateHouse(){
        System.out.println("=================修改房屋信息=================");
        System.out.println("请输入修改房屋序号(-1退出): ");
        int updateId = Utility.readInt();
        if (updateId ==-1){
            System.out.println("你放弃修改房屋信息");
            return;
        }
        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(8, "");
        if (!"".equals(phone)){
            house.setPhone(phone);
        }
        System.out.print("地址("+house.getAddress()+"): ");
        String address = Utility.readString(8, "");
        if (!"".equals(address)){
            house.setAddress(address);
        }
        System.out.print("租金("+house.getRent()+"): ");
        String rent = Utility.readString(8, "");
        if (!"".equals(rent)){
            house.setRent(rent);
        }
        System.out.print("状态("+house.getState()+"): ");
        String state = Utility.readString(8, "");
        if (!"".equals(state)){
            house.setState(state);
        }
        System.out.println("房屋信息修改成功");
    }
//    退出
    public void exit(){
        char exit = Utility.readConfirmSelection();
        if (exit=='Y'){
            loop =false;
        }
    }
//主菜单
    public void HouseMenu() {
        do {
            System.out.println("\n===============房屋出租系统菜单===============");
            System.out.println("\t\t\t\t1.新增房源");
            System.out.println("\t\t\t\t2.查找房源");
            System.out.println("\t\t\t\t3.删除房源");
            System.out.println("\t\t\t\t4.修改房屋信息");
            System.out.println("\t\t\t\t5.房屋列表");
            System.out.println("\t\t\t\t6.退   出");
            System.out.println("请输入你的选择(1-6):");
            key = Utility.readChar();
            switch (key) {
                case '1':
                    addHouse();
                    break;
                case '2':
                    findHouse();
                    break;
                case '3':
                    deleteHouse();
                    break;
                case '4':
                    updateHouse();
                    break;
                case '5':
                    listHouse();
                    break;
                case '6':
                    exit();
                    break;
                default:
                    System.out.println("输入错误,请重新输入");
            }

        } while (loop);
    }

}

package com.zhou.java.Houserent;

import com.zhou.java.Houserent.View.HouseView;

public class HouseTest {
    public static void main(String[] args) {
        new HouseView().HouseMenu();
        System.out.println("成功退出系统 ");
    }
}

标签:java,String,System,房屋出租,简单,println,return,public,out
From: https://www.cnblogs.com/wase/p/17169512.html

相关文章

  • JavaSE——==与.equal()方法
    ==号的作用比较基本数据类型:比较的是具体的值比较引用数据类型:比较的是对象地址值packagecom.zhao.stringdemo;publicclassStringDemo2{publicstati......
  • JavaSE——String
    String类概述String类代表字符串,Java程序中的所有字符串文字(例如“abc”)都被实现为此类的实例。也就是说,Java程序中所有的双引号字符串,都是String类的对象。String......
  • JavaScript 原型
    <!DOCTYPEhtml><html> <head> <metacharset="UTF-8"> <title></title> <scripttype="text/javascript"> /* *原型prototype * * 我们所创建......
  • 安装java以及运行环境配置
    安装java以及运行环境配置1、浏览器搜索下载java8,因为java8是目前市场上开发利用最普遍的版本。2、下载完毕后,进行解压安装,自己选择路径安装。新建一个文件夹,用来存放jav......
  • Java基础学习(一)
    目录简单Java代码注释在Java中有以下注释数据类型整型浮点型char类型boolean类型变量命名规范常量类型之间的转换强制类型转换运算符结合赋值自增和自减boolean运算符其他......
  • java 如何使用多线程调用类的静态方法?
     1.情景展示静态方法内部实现:将指定内容生成图片格式的二维码;如何通过多线程实现?2.分析之所以采用多线程,是为了节省时间 3.解决方案准备工作logo文件......
  • java LinkedList 源码
    概述底层数据结构是双向链表(jdk1.6是双向循环,1.7开始不循环了),所以新增/删除效率高,查询/修改效率相对较低全能冠军:既是一个顺序容器,也是队列,还可以作为栈使用未实现Ran......
  • JAVAWEB-NOTE05-Maven
    目录概述提供了一套标准的项目化结构提供了一套标准化的构建流程提供了一套依赖管理机制简介安装配置安装基本使用常用命令生命周期IDEA配置Maven配置环境Maven坐标IDEA新......
  • 简单理解重载运算符&位运算
    重载运算符作用重载运算符的作用大致可以理解为自定义一个运算法则,比如当我们在使用结构体的时候,我们有时候会用到优先队列,但是优先队列并不能对于结构体使用,所以这个时......
  • 简单的冒泡排序
    #define_CRT_SECURE_NO_WARNINGS1#include<stdio.h>#include<string.h>voidbouble_sort(intarr[],intsz){//确定冒泡排序的趟数inti=0;f......