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

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

代码

相关推荐
董董灿是个攻城狮2 小时前
AI视觉连载8:传统 CV 之边缘检测
算法
怒放吧德德3 小时前
Netty 4.2 入门指南:从概念到第一个程序
java·后端·netty
雨中飘荡的记忆5 小时前
大流量下库存扣减的数据库瓶颈:Redis分片缓存解决方案
java·redis·后端
心之语歌7 小时前
基于注解+拦截器的API动态路由实现方案
java·后端
华仔啊8 小时前
Stream 代码越写越难看?JDFrame 让 Java 逻辑回归优雅
java·后端
ray_liang8 小时前
用六边形架构与整洁架构对比是伪命题?
java·架构
AI软著研究员9 小时前
程序员必看:软著不是“面子工程”,是代码的“法律保险”
算法
FunnySaltyFish9 小时前
什么?Compose 把 GapBuffer 换成了 LinkBuffer?
算法·kotlin·android jetpack
Ray Liang10 小时前
用六边形架构与整洁架构对比是伪命题?
java·python·c#·架构设计
颜酱10 小时前
理解二叉树最近公共祖先(LCA):从基础到变种解析
javascript·后端·算法