Java实现房屋出租系统详解

目录
  • houseView
  • house_Sevice
  • House
  • App
  • 总结

houseView

package house.view;
import house.model.House;
import house.sevice.house_Sevice;
import house.tool.Utility;
import java.util.Scanner;
/**
 * 1 显示界面
 * 2 接收用户的输入
 * 3 调用houseService完成对房屋信息的各种输人
 */
public class houseView {
    private boolean loop=true;
    private char key=' ';
    //编写addhouse(),接收输入,创建addhouse对象,调用add方法
    public void addhouse(){
        System.out.println("---------添加房屋-------");
        System.out.print("姓名:");
        String name=Utility.readString(6);
        System.out.print("电话:");
        int phone=Utility.readInt(12);
        System.out.print("地址:");
        String address=Utility.readString(14);
        System.out.print("月租:");
        int rent=Utility.readInt();
        System.out.print("状态:");
        String state=Utility.readString(3);
        //注意id是系统分配的
        House newhouse=new House(0,name,phone,address,rent,state);
        if(house_sevice.add(newhouse)){
            System.out.println("添加房屋成功");
        }else {
            System.out.println("添加房屋失败");
        }
    }
    //查找房屋
    public void find(){
        System.out.println("---------查找房屋-------");
        System.out.print("请输入要查找的房屋编号:");
        int f=Utility.readInt();
        if(house_sevice.Find(f)==null){
            System.out.println("没有找到该房屋的信息");
        }else {
            System.out.println("编号  房主  \t电话  \t地址  \t月租  \t状态(出租/未出租)\n"+house_sevice.Find(f));
        }
    }
    //编写delhosue方法,接收输入的id,调用service的del方法
    public void delhouse(){
        System.out.println("---------删除房屋-------");
        System.out.print("请输入要删除的房屋编号(-1退出):");
        int delid=Utility.readInt();
        if(delid==-1){
            System.out.println("---------退出删除-------");
            return;
        }
        char c=Utility.readConfirmSelection();//调用该方法,一直循环直到用户输入y或n
        if(c=='Y'){
            if(house_sevice.del(delid)){
                System.out.println("---------删除成功-------");
            }else {
                System.out.println("---------删除失败-------");
            }
        }else {
            System.out.println("---------退出删除-------");
            return;
        }
    }
    //修改房屋信息
    public void update(){
        System.out.println("---------修改房屋信息-------");
        System.out.print("请输入要修改的房屋编号(-1退出):");
        int up=Utility.readInt();
        if(up==-1){
            System.out.println("---------退出修改-------");
            return;
        }
        house_sevice.updata(up);
        System.out.println("---------修改成功-------");
    }
    //显示房屋列表
    private house_Sevice house_sevice=new house_Sevice(10);//设置数组大小为10
    public  void listHouse(){
        System.out.println("---------房屋出租列表-------");
        System.out.println("编号  房主  \t电话  \t地址  \t月租  \t状态(出租/未出租)");
        House[] houses=house_sevice.list();//得到所有房屋的信息
        for (int i = 0; i < houses.length; i++) {
            if(houses[i]==null){
                break;
            }
            System.out.println(houses[i]);
        }
    }
    //主菜单
    public void main_menu(){
        do{
            System.out.println("---------房屋出租系统-------");
            System.out.println("\t\t1 新 增 房 源");
            System.out.println("\t\t2 查 找 房 屋");
            System.out.println("\t\t3 删 除 房 屋");
            System.out.println("\t\t4 修 改 房 屋 信 息");
            System.out.println("\t\t5 房 屋 列 表");
            System.out.println("\t\t6 退 出");
            System.out.print("请输入你的选择:");
            key= Utility.readChar();
            switch (key){
                case '1':
                    addhouse();
                    break;
                case '2':
                    find();
                    break;
                case '3':
                    delhouse();
                    break;
                case '4':
                    update();
                    break;
                case '5':
                    listHouse();
                    break;
                case '6':
                    char n=Utility.readConfirmSelection();
                    if(n=='Y'){
                        loop=false;
                    }
                    break;
                default:
                    System.out.println("输入错误!");
            }
        }while (loop);
    }
}

house_Sevice

package house.sevice;
import house.model.House;
import house.tool.Utility;
/**
 * house_Sevice.java<=> 类 [业务层]
 * //定义house[],保存house对象
 * 1 响应houseView的调用
 * 2 完成对房屋信息的各种操作(增删改查)
 */
public class house_Sevice {
    private House[] houses;//保存house对象
    private int nums=3;//记录数组内的房屋个数
    private int count=3;//id
    //初始化房屋列表
    public house_Sevice(int size){//传入数组大小
        houses=new House[size];
        houses[0]=new House(1,"Morty",1020,"纽约",111,"未出租");
        houses[1]=new House(2,"莱月昴",1021,"东京",222,"未出租");
        houses[2]=new House(3,"李星云",1022,"洛阳",333,"未出租");
    }
    public House[] list(){
        return houses;//因为重写了tostring
    }
    //添加房屋信息
    public boolean add(House newhouse){
        if(nums==houses.length){
            return false;
        }else {
            houses[nums++]=newhouse;
            newhouse.setId(++count);//id自增长机制,更新newhouse的id
            return true;
        }
    }
    //删除房屋
    public boolean del(int Id){
        //找到要删除房屋信息元素对应的下标
        int index=-1;
        for (int i = 0; i < nums; i++) {
            if(Id==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[--nums]=null;//将数组长度减一并将最后一个元素置空
        return true;
    }
    //查找房屋
    public House Find(int id){
        //找到要查找房屋信息元素对应的下标
        for (int i = 0; i < nums; i++) {
            if(id==houses[i].getId()){
                return houses[i];
            }
        }
        return null;
    }
    //修改房屋信息
    public void updata(int up){
        House house=Find(up);
        if(house==null){
            System.out.println("该房屋不存在");
        }else {
            System.out.print("姓名:("+house.getName()+"):");
            String name= Utility.readString(8,"");//用户如果直接回车代表不修改,默认值为""
            if(!name.equals("")){
                house.setName(name);//将用户输入的name覆盖原来的name
            }
            System.out.print("手机号:("+house.getPhone()+"):");
            int phone=Utility.readInt(0);//用户如果直接回车代表不修改,默认值为0
            if(!(phone==0)){
                house.setPhone(phone);//将用户输入的name覆盖原来的name
            }
            System.out.print("地址:("+house.getAddress()+"):");
            String address=Utility.readString(8,"");
            if(!address.equals("")){
                house.setAddress(address);
            }
            System.out.print("月租:("+house.getRent()+"):");
            int rent=Utility.readInt(0);
            if(!(rent==0)){
                house.setRent(rent);
            }
            System.out.print("状态:("+house.getState()+"):");
            String state=Utility.readString(8,"");
            if(!state.equals("")){
                house.setState(state);//
            }
        }
    }
}

House

package house.model;
/**
 * house类的对象表示一个房屋的信息
 */
public class House {
    //编号  房主  电话  地址  月租  状态(出租/未出租)
    private int id;
    private String name;
    private int phone;
    private String address;
    private int rent;
    private String state;
    public House(int id, String name, int 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 int getPhone() {
        return phone;
    }
    public void setPhone(int 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;
    }
    @Override
    public String toString() {
        return  id
                +"\t" +name
                +"\t" +phone
                +"\t" +address
                +"\t\t"+rent
                +"\t\t"+state;
    }
}

App

package house.view;
import house.model.House;
public class App {
    public static void main(String[] args) {
        //创建View对象,并显示主菜单,是整个程序的入口
        new houseView().main_menu();//创建一个虚拟对象调用显示主菜单的方法
        System.out.println("程序已退出");
    }
}
 

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注我们的更多内容!

(0)

相关推荐

  • Java双色球系统开发详解

    目录 总结 功能说明 1.1. 菜单页功能 package lotteryDemo1; import java.util.Scanner; public class Menu { public static void main(String[] args) { Scanner sc=new Scanner(System.in); o:while(true){ System.out.println("欢迎使用双色球系统,官方网站www.zhongbuliao.com"); System.

  • Java实战项目 健身管理系统

    主要技术:springmvc. springboot .mybatis.mysql .jQuery.layui.css.jsp shiro权限控制 主要功能截图如下: 用户登录.首页主要功能有:会员信息管理.会员到期续费管理.充值管理.教练课程管理.私教管理.器材管理.小商品售卖管理.信息统计.修改密码等主要功能: 会员管理.续卡.会员卡类型管理: 教练列表展示和添加修改删除教练信息: 会员私教课程管理: 添加私教信息: 健身课程列表展示查询和添加修改: 健身器材列表展示查询和添加修改: 物品遗

  • 利用Java写一个学生管理系统

    目录 前言: 其实作为一名Java的程序猿,无论你是初学也好,大神也罢,学生管理系统一直都是一个非常好的例子,初学者主要是用数组.List等等来写出一个简易的学生管理系统,二.牛逼一点的大神则用数据库+swing来做一个有界面的学生管理系统.其实都并不会太难. 我先写一个简单的用List来实现学生管理系统: 首先,管理系统是针对学生对象的,所以我们先把学生对象写出来: package bean; public class Student { String name; String student

  • Java实战项目 医院预约挂号系统

    目录 一.项目简述 二.项目运行 登录拦截器代码: 医院预约挂号系统后台管理页面代码: 一.项目简述 功能: 用户分为患者,医生,管理员,患者可进行注册选择医生 挂号,选择日期,选择号源,医生可进行接诊,管理员可 对用户,医生信息的维护等等功能. 二.项目运行 环境配置: Jdk1.8 + Tomcat8.5 + mysql + Eclispe (IntelliJ IDEA,Eclispe,MyEclispe,Sts 都支持) 项目技术: Jdbc+ Servlert + Jsp + css +

  • Java实战项目 图书管理系统

    目录 一.项目简述 二.项目运行 修改图书类型信息代码: 登录图书管理系统主页面代码: 一.项目简述 功能包括: 登录注册,办理借阅.借阅记录,预约借阅,借出未还, 借阅逾期,学生管理,图书管理,书库分类查询搜索. 二.项目运行 环境配置: Jdk1.8 + Tomcat8.5 + mysql + Eclispe (IntelliJ IDEA,Eclispe,MyEclispe,Sts 都支持) 项目技术: JSP +Spring + SpringMVC + MyBatis + html+ cs

  • java实现简易外卖订餐系统

    用java实现简易外卖订餐系统,供大家参考,具体内容如下 一.使用技术 javaSE 二.实现功能 外卖订餐系统 具体要求如下: 使用选择结构,循环结构,数组的知识实现一个外卖订餐系统 三.运行效果图 1.订餐功能 2.查看餐袋 3.签收订单 4.删除订单 5.点赞 6.退出 代码实现 public class Order { public static void main(String[] args) { int zero = 1; int x = 0;//订单数组下标 String[] na

  • Java实现房屋出租系统详解

    目录 houseView house_Sevice House App 总结 houseView package house.view; import house.model.House; import house.sevice.house_Sevice; import house.tool.Utility; import java.util.Scanner; /** * 1 显示界面 * 2 接收用户的输入 * 3 调用houseService完成对房屋信息的各种输人 */ public cl

  • Java 实战项目之家居购物商城系统详解流程

    一.项目简述 功能: Java Web精品项目源码,家居商城分类展示,商品展示, 商品下单,购物车,个人中心,后台管理,用户管理,商品管理,分类管理等等. 二.项目运行 环境配置: Jdk1.8 + Tomcat8.5 + mysql + Eclispe (IntelliJ IDEA,Eclispe,MyEclispe,Sts 都支持) 项目技术: Jdbc+ Servlert + html+ css + JavaScript + JQuery + Ajax + Fileupload 打开订单列

  • 在docker中部署tomcat并且部署java应用程序的步骤详解

    先给大家简单说下Docker的概念 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制,相互之间不会有任何接口. 1.先说如何在docker中部署tomcat 第一步:root用户登录在系统根目录下创建文件夹tomcat7,命令如:mkdir tomcat7,并且切换到该目录下:cd tomcat7: 第二步:创建Dockerfile,命令如:touch Docker

  • Java回调函数实例代码详解

    首先说说什么叫回调函数? 在WINDOWS中,程序员想让系统DLL调用自己编写的一个方法,于是利用DLL当中回调函数(CALLBACK)的接口来编写程序,使它调用,这个就 称为回调.在调用接口时,需要严格的按照定义的参数和方法调用,并且需要处理函数的异步,否则会导致程序的崩溃. 这样的解释似乎还是比较难懂,这里举个简 单的例子: 程序员A写了一段程序(程序a),其中预留有回调函数接口,并封装好了该程序.程序员B要让a调用自己的程序b中的一个方法,于是,他通过a中的接口回调自己b中的方法.目的达到

  • Java中的反射机制详解

    Java中的反射机制详解 反射,当时经常听他们说,自己也看过一些资料,也可能在设计模式中使用过,但是感觉对它没有一个较深入的了解,这次重新学习了一下,感觉还行吧! 一,先看一下反射的概念: 主要是指程序可以访问,检测和修改它本身状态或行为的一种能力,并能根据自身行为的状态和结果,调整或修改应用所描述行为的状态和相关的语义. 反射是Java中一种强大的工具,能够使我们很方便的创建灵活的代码,这些代码可以再运行时装配,无需在组件之间进行源代码链接.但是反射使用不当会成本很高! 看概念很晕的,继续往下

  • Linux server配置安装Java与Tomcat服务器教程详解

    系统:Ubuntu 16.04 dev_desktop 1.Java安装并配置环境变量 (1)从Java官方网站下载最新版JDK: http://www.oracle.com/technetwork/java/javase/downloads/index.html 下载jdk压缩包 jdk-8u144-linux-x64.tar.gz (2)  将压缩包解压并复制到/usr/lib 目录下 tar -zxvf jdk-8u144-linux-x64.tar.gz sudo cp -r ./jdk

  • 浅谈JAVA中输入输出流实例详解

    java语言的输入输出功能是十分强大而灵活的,美中不足的是看上去输入输出的代码并不是很简洁,因为你往往需要包装许多不同的对象.在Java类库中,IO部分的内容是很庞大的,因为它涉及的领域很广泛:标准输入输出,文件的操作,网络上的数据流,字符串流,对象流,zip文件流....本文的目的是为大家介绍JAVA中输入输出流实例详解. 流的层次结构 定义:        java将读取数据对象成为输入流,能向其写入的对象叫输出流.结构图如下: 1.输入输出: 输入/输出(Input/Output)是指对某

  • Java类的继承实例详解(动力节点Java学院整理)

    一.你了解类吗? 在Java中,类文件是以.java为后缀的代码文件,在每个类文件中最多只允许出现一个public类,当有public类的时候,类文件的名称必须和public类的名称相同,若不存在public,则类文件的名称可以为任意的名称(当然以数字开头的名称是不允许的). 在类内部,对于成员变量,如果在定义的时候没有进行显示的赋值初始化,则Java会保证类的每个成员变量都得到恰当的初始化: 1)对于  char.short.byte.int.long.float.double等基本数据类型的

  • java 设计模式之适配器模式的详解

    java 设计模式之适配器模式的详解 前言: 适配器模式(Adapter Pattern)又叫做变压器模式,也叫做包装模式.包装模式还包括装饰模式. 在计算机编程中,适配器模式(有时候也称包装样式或者包装)将一个类的接口适配成用户所期待的. 一个适配允许通常因为接口不兼容而不能在一起工作的类工作在一起,做法是将类自己的接口包裹在一个已存在的类中. UML类图:  具体代码: public class Client { public static void main(String[] args)

  • java日期相关类实例详解

    一.Date类 类 Date 表示特定的瞬间,精确到毫秒.用距离1970年1月1日00:00:00的毫秒数(long)类型来表示一个特定的时间点,该值可正可负. Date类中很多方法已经过时,使用Calendar来替代. 常用方法有 long getTime() void setTime(long time) public class T01Date { public static void main(String[] args) { //getTime():返回的时间是距离1970年的毫秒数.

随机推荐