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

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

代码

相关推荐
我没想到原来他们都是一堆坏人3 分钟前
(未完待续...)如何编写一个用于构建python web项目镜像的dockerfile文件
java·前端·python
搞一搞汽车电子10 分钟前
S32K3平台eMIOS 应用说明
开发语言·驱动开发·笔记·单片机·嵌入式硬件·汽车
沙二原住民12 分钟前
提升数据库性能的秘密武器:深入解析慢查询、连接池与Druid监控
java·数据库·oracle
中华小当家呐29 分钟前
算法之常见八大排序
数据结构·算法·排序算法
Jerry&Grj36 分钟前
SpringBoot埋点功能技术实现方案深度解析:架构设计、性能优化与扩展性实践
java·微服务·性能优化·springboot·架构设计·埋点技术
没有bug.的程序员42 分钟前
Redis Stream:轻量级消息队列深度解析
java·数据库·chrome·redis·消息队列
总有刁民想爱朕ha1 小时前
车牌模拟生成器:Python3.8+Opencv代码实现与商业应用前景(C#、python 开发包SDK)
开发语言·python·数据挖掘
沐怡旸1 小时前
【算法--链表】114.二叉树展开为链表--通俗讲解
算法·面试
用户8160791833331 小时前
告别“魔法”:包你解决 Gradle 的下载慢问题
java
一只懒洋洋2 小时前
K-meas 聚类、KNN算法、决策树、随机森林
算法·决策树·聚类