房屋出租系统Java解决(有两个小毛病,已在代码最后提出,希望有大佬可以帮我解决一下)

这是一个Java实现的房屋出租系统,具备添加、查找、删除、修改房源及显示房屋列表等功能。用户通过输入选择相应操作,系统根据用户输入执行对应功能。在删除和修改房源时,系统会检查房源是否存在,确保操作的准确性。但当前系统存在两个问题:1) 删除房源后,id不会自动减一;2) 修改房源信息后,房源id会移动到数组末尾。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

房屋出租系统包括以下功能:

1、添加房屋功能

2、查找房屋功能

3、删除房屋功能

4、修改房屋功能

5、显示房屋列表功能

6、退出功能

具体界面如下:

代码如下:

import java.util.Scanner;
public class House  {
    public static void main(String[] args) {


        Scanner scanner = new Scanner(System.in);
        String str[] = new String[100];     //创建一个房屋的数组对象
        boolean bool = true;                //设置一个布尔类型用于表示程序的退出
        String key = "";                    //用于选择所执行的项目
        String name = "";                   //姓名
        String num = "";                    //电话号
        String address = "";                //地址
        double money;                       //月租
        String state = "";                  //状态
        int id = 0;                         //记录房屋的id号
        String re = "";                     //用于字符串的连接
        String choose = "";                 //在退出功能中选择是否退出程序
        int id1;                            //表示要查找的id号
        int length = 0;                     //表示实际数组的长度


        do {
            //菜单
            System.out.println("==========房屋出租系统==========");
            System.out.println("        1.新 增 房 源");
            System.out.println("        2.查 找 房 屋");
            System.out.println("        3.删 除 房 屋");
            System.out.println("        4.修 改 房 屋 信 息");
            System.out.println("        5.房 屋 列 表");
            System.out.println("        6.退      出");
            System.out.print("请选择:");
            key = scanner.next();

            //开始选择项目
            switch (key) {
            
            //添加房屋功能
            case "1":              
                System.out.println("============新增房屋============");
                System.out.print("\t姓名: ");
                name = scanner.next();
                System.out.print("\n\t电话: ");
                num = scanner.next();
                System.out.print("\n\t地址: ");
                address = scanner.next();
                System.out.print("\n\t月租: ");
                money = scanner.nextDouble();
                System.out.print("\n\t状态(已出租/未出租): ");
                state = scanner.next();
                re = "id:" + id + "\t姓名:" + name + "\t电话:" + num + "\t地址:" + address + "\t月租:" + money + "\t状态:" + state;  //字符串的连接
                str[id] = re;     //对字符串数组进行赋值
                id++;             //每添加一组信息id加一
                System.out.println("============添加完成============");
                break;

            //查找房屋功能
            case "2":
                System.out.println("============查找房屋============");
                System.out.print("请输入要查找的id:");
                id1 = scanner.nextInt();
                //得出数组目前的实际长度
                for(int i = 0; str[i] != null; i++) {       
                    length = i;
                }
                //如果要查找的id在这个实际长度中,则输出该id的信息;否则输出查找失败
                if(id1 <= length) {
                    System.out.println(str[id1]);
                    System.out.println("============查找成功============");
                } else {
                    System.out.println("查找失败,无此房屋");
                }
                break;

            //删除房屋功能
            case "3":
                System.out.println("============删除房屋============");
                System.out.print("请输入要查找的id:");
                id1 = scanner.nextInt();
                //得出数组目前的实际长度
                for(int i = 0; str[i] != null; i++) {
                    length = i;
                }
                //如果要删除的数组id在这个实际长度中,则删除该id的信息,否则输出删除失败
                if(id1 <= length) {
                    for(int i = id1; i <= length; i++) {
                        str[i] = str[i+1];
                        str[length] = null;
                    }
                    System.out.println("=============删除成功============");
                } else {
                    System.out.println("删除失败,无此房屋");
                }
                break;

            //修改房屋信息功能
            case "4":
                System.out.println("============修改房屋信息============");
                System.out.print("请输入要修改的房屋id:");
                id1 = scanner.nextInt();
                //得出数组的实际长度
                for(int i = 0; str[i] != null; i++) {
                    length = i;
                }
                //如果我们需要的id在实际长度中,则对该id的内容进行重新赋值;否则输出修改失败
                if(id1 <= length) {
                    System.out.print("\t姓名: ");
                    name = scanner.next();
                    System.out.print("\n\t电话: ");
                    num = scanner.next();
                    System.out.print("\n\t地址: ");
                    address = scanner.next();
                    System.out.print("\n\t月租: ");
                    money = scanner.nextDouble();
                    System.out.print("\n\t状态(已出租/未出租): ");
                    state = scanner.next();
                    re = "id:" + id + "\t姓名:" + name + "\t电话:" + num + "\t地址:" + address + "\t月租:" + money + "\t状态:" + state;
                    str[id1] = re;
                } else {
                    System.out.println("修改失败,无此房屋");
                }
                break;


            //输出房屋列表功能
            case "5":
                System.out.println("===========房屋列表===========");
                //在创建数组时定义长度为100,但在实际过程中,可能不到100,所以循环判定条件为str[i] != null,表示只输出我们定义的信息
                for(int i = 0; str[i] != null; i++) {
                    System.out.println(str[i]);
                }
                break;

            //退出功能
            case "6":
                //循环判定,退出时再次询问是否要退出
                while(true) {
                    System.out.print("是否要退出(y/n):");
                    choose = scanner.next();
                    if(choose.equals("y")) {
                        bool = false;
                        System.out.println("已退出");
                        break;
                    } else if (choose.equals("n")) {
                        break;
                    } else {
                        System.out.println("出错,请重新选择");
                    }
                }
                break;
            default:
                System.out.println("出错,请重新选择!");
            }

        } while(bool);
    }
}

//两个问题:
//1 删除后id不会自动减一
//2 修改后的房屋id会自动跑到最后

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值