Java基础 8.11

1.房屋出租系统

项目需求

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

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

框架图

系统有哪些类(文件)

明确类与类的调用关系

3.系统实现

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

化繁为简

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

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

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

代码实现

java 复制代码
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);
    }

}

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

代码实现

java 复制代码
//编写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("===============房屋列表显示完毕===============");
    }

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

代码实现

java 复制代码
//编写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("===============放弃删除房屋信息===============");
        }
    }
java 复制代码
//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查找房屋信息的功能

代码

java 复制代码
//编写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("===============没有查找房屋信息===============");
        }
    }
java 复制代码
//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;
    }

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

代码

相关推荐
金銀銅鐵6 分钟前
[Java] 用纯 Swing 做一个《論語·學而》阅读器
java·ai编程·交互设计
艾伦_耶格宇1 小时前
【kubernetes - 1.28版本】-11 K8S核心组件
java·容器·kubernetes
Dxy12393102161 小时前
JS AES加密详解
开发语言·javascript·ecmascript
秋天的怀念_David1 小时前
算法一千零一夜 · 作品相关:版权与致谢声明
程序人生·算法·学习方法
2301_780789661 小时前
深度伪造即服务:新型网络诈骗的“完美面具”与识别之道
java·网络·ddos
信息安全失业大专人员1 小时前
每日了解一个智能体-WorkBuddy
开发语言·ai·c#·智能体
LHICOD1 小时前
Linux-2
java·linux·后端·jar·vmware·svm·vm
香蕉大香蕉(06敬畏市场)1 小时前
MySQL 单点详解(03)
java·数据库·mysql·面试·八股·大厂实习
4ever.ov01 小时前
精学C++第一站 从命名空间到引用:C++入门核心语法全梳理(13000字长文)
开发语言·c++·clion
小杨互联网1 小时前
Go 现代 CLI 工具离线镜像合集
开发语言·后端·golang·开源·go·命令行