Java基础 8.11

1.房屋出租系统

项目需求

  • 实现基于文本界面的房屋出租软件
  • 能够实现对房屋信息的添加修改和删除(CRUD)用数组实现,并能够打印房屋明细表

2.项目设计-程序框架图(分层模式=>当软件比较复杂,需要模式管理)

框架图

系统有哪些类(文件)

明确类与类的调用关系

3.系统实现

项目功能实现-显示主菜单和完成退出软件功能

化繁为简

实现功能三部曲:明确完成功能 思路分析 代码实现

功能说明:用户打开软件 可以看到主菜单 可以退出软件

思路分析:在HouseView.java中,编写一个方法mainMenu显示菜单

代码实现

package com.logic.houserent.view;

import com.logic.houserent.utils.Utility;

/**
 * 1.显示界面
 * 2.接收用户输入
 * 3.调用HouseService完成对房屋信息的各种操作
 */
public class HouseView {

    private boolean loop = true; //控制显示菜单
    private char key = ' '; //接收用户选择

    //显示主菜单
    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.print("请输入你的选择(1-6): ");
            key = Utility.readChar();
            switch (key) {
                case '1':
                    System.out.println("新 增");
                    break;
                case '2':
                    System.out.println("查 找");
                    break;
                case '3':
                    System.out.println("删 除");
                    break;
                case '4':
                    System.out.println("修 改");
                    break;
                case '5':
                    System.out.println("显 示");
                    break;
                case '6':
                    System.out.println("退 出");
                    loop = false;
                    break;
            }
        } while (loop);
    }

}

项目功能实现-完成显示房屋列表功能

代码实现

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

项目功能实现-完成删除房屋信息的功能

代码实现

//编写delHouse() 接收输入的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 choice = Utility.readConfirmSelection();//注意该方法本来就有循环判断的逻辑
        if (choice == 'Y') {
            if (houseService.del(delId)) {
                System.out.println("===============删除房屋信息成功===============");
            } else {
                System.out.println("===============房屋编号不存在 删除失败===============");
            }
        } else {
            System.out.println("===============放弃删除房屋信息===============");
        }
    }
//del方法 删除一个房屋信息
    public boolean del(int delId) {
        //应当先找到删除的房屋信息对应的下标
        //注意 下标和房屋编号不是一回事
        int index = -1;
        for (int i = 0; i < houseNums; i++) {
            if (delId == houses[i].getId()) {//要删除的房屋id 是数组下标为i的元素
                index = i;
            }
        }

        if (index == -1) {
            return false;
        }

        //如果找到 思路分析 后面的信息覆盖前面的信息 然后后面的信息置空
        for (int i = index; i < houseNums - 1; i++) {
            houses[i] = houses[i + 1];
        }
        houses[--houseNums] = null;//把当有存在的房屋信息的最后一个置空null
        return true;
    }

项目功能实现-完成根据id查找房屋信息的功能

代码

//编写searchHouse() 完成根据id查找房屋信息的功能
    public void findHouse() {
        System.out.println("===============查找房屋信息===============");
        System.out.print("请输入你要查找的房屋编号: ");
        int findId = Utility.readInt();
        //调用方法
        House house = houseService.findById(findId);
        if (house != null) {
            System.out.println("编号\t\t房主\t\t电话\t\t地址\t\t月租\t\t状态(未出租/已出租)");
            System.out.println(house);
        } else {
            System.out.println("===============没有查找房屋信息===============");
        }
    }
//findById方法 返回House对象或者null
    public House findById(int findId) {
        for (int i = 0; i < houseNums; i++) {
            if (findId == houses[i].getId()) {
                return houses[i];
            }
        }

        return null;
    }

项目功能实现-完成修改房屋信息的功能

代码

//根据id修改房屋信息
    public void updateHouse() {
        System.out.println("===============修改房屋信息===============");
        System.out.print("请输入你要修改的房屋编号(-1退出): ");
        int updateId = Utility.readInt();
        if (updateId == -1) {
            System.out.println("===============放弃修改房屋信息===============");
            return;
        }
        //根据输入的updateId查找
        House house = houseService.findById(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(12, "");
        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);
        }
        System.out.println("===============修改房屋信息成功===============");
    }
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值