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;
    }

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

代码

相关推荐
浪兎兎9 小时前
【Java Web】Servlet + JSP 笔记
java·前端·servlet
Zentceh9 小时前
AI-ISP在夜视机芯中的应用:从传统ISP到PixelClean全彩夜视的进化
人工智能·科技·算法·计算机视觉·车载系统·视频·智能硬件
「QT(C++)开发工程师」10 小时前
C++ std::move 详解
开发语言·c++
matlab代码10 小时前
基于matlab的玉米种子计数设计(GUI界面)【源码58期】
开发语言·matlab
c#上位机10 小时前
C#上位机项目实战——C#的dll项目编译时拷贝到指定目录下
开发语言·c#
xier_ran10 小时前
【infra之路】AWQ 详解:激活感知权重保护,让 W4A16 量化精度超越 GPTQ
线性代数·算法·机器学习·量化·infra
吴声子夜歌10 小时前
Java面试——ElasticSearch原理及应用
java·面试·es
Littlehero_12110 小时前
QT自定义控件之内嵌报表(4)(源码开源)
开发语言·qt
lhldsg10 小时前
家政派单系统开发实战:从需求分析到智能调度全流程指南
java·junit·小程序·uni-app·需求分析
吴声子夜歌10 小时前
Java面试——Spring原理及应用(一)
java·spring·面试