酒店管理系统

本文详细描述了一个简单的酒店客房管理系统的设计和实现过程,包括编程思路、功能模块(查看房间、订房、退房、修改价格和退出)以及关键代码片段。使用三维数组存储房间信息,并展示了异常处理机制以确保用户输入的有效性。
摘要由CSDN通过智能技术生成

1.案例需求

实现一个简单的酒店客房管理系统,它具备5个功能,分别为

  1. 查看所有房间功能;
  2. 订房功能;
  3. 退房功能;
  4. 修改价格功能;
  5. 退出本系统功能

2.编程思路

  • 首先我们在主函数里面要做以下事情:
  1. 定义房间类型数组-----单人间、双人间、标准间、商务房、豪华包

  2. 定义房间价格数组-----98、128、148、228、688

  3. 定义房间信息数组-----3层,每层5个房间,每个房间3个信息(价格、类型、状态)

  4. 初始化房间信息-----遍历房间信息,给房间信息赋值–价格、类型、状态(0表示空闲,1表示有人)

  5. 显示菜单-----查看所有房间功能;订房功能;退房功能;修改价格功能;退出本系统功能

  6. 根据用户选择的菜单,执行相应的功能

  • 在查看房间功能时要做以下的事情:
  1. 打印楼层
  2. 打印房间号
  3. 打印价格
  4. 打印类型
  5. 打印状态 *
  6. 换行
  7. 打印下一层的房间信息
  8. 换行
  • 在订房与退房功能时需要做以下事情:
  1. 接收用户输入的楼层
  2. 接收用户输入的房间号
  3. 判断用户选择的是订房还是退房–true表示订房,false表示退房
  4. 如果是订房,判断房间是否已经有人,如果有人,提示重新选择,如果没有人,修改房间状态为1,表示有人
  5. 如果是退房,判断房间是否已经有人,如果有人,修改房间状态为0,表示空闲,如果没有人,提示重新选择
  • 在修改价格功能时需要做以下事情:
  1. 接收用户输入的房间类型
  2. 接收用户输入的价格
  3. 根据用户输入的房间类型,修改价格

3.案例源码

package JavaDemo.day0317;

import java.util.Scanner;

/*
酒店管理系统:
    功能需求:
        1.查看所有房间
        2订房间
        3退房间
        4修改价格
        5退出系统
* */
public class HotelManagement {
    public static void main(String[] args) {
        int[][][] rooms = new int[3][5][3];//创建一个三维数组,表示楼层,房间号,类型
        int[] priceArr = {98, 128, 148, 228, 688};//房间价格
        String[] roomTypeArr = {"单人间", "双人间", "标准间", "商务房", "豪华包"}; //房间类型
        // 遍历房间信息,给房间信息赋值
        for (int i = 0; i < rooms.length; i++) {//楼层信息
            for (int j = 0; j < rooms[i].length; j++) {//房间号
                for (int k = 0; k < rooms[i][j].length; k++) {//每个房间具体的信息类型,状态,价格
                    switch (k) {
                        case 0:
                            rooms[i][j][k] = j;//价格 j % priceArr.length  rooms[0][0][0]:第1楼的1号房间的价格 rooms[0][0][1]:第一楼的1号房间的类型  rooms[0][0][2]:第一楼的1号房间的
                            break;
                        case 1:
                            rooms[i][j][k] = j;//类型 j % roomTypeArr.length
                            break;
                        case 2:
                            rooms[i][j][k] = 0;//状态
                            break;
                    }
                }
            }
        }
        System.out.println("==========欢迎使用酒店管理系统==========");
        System.out.println("1:查看所有房间功能;2:订房功能;3:退房功能;4:修改价格功能;5:退出本系统功能");
        OUT1:
        while (true) {
            System.out.println("请输入您的服务选择项:");
            Scanner scanner = new Scanner(System.in);
            //   hasNextInt()方法判断输入的是否是数字
          // scanner.hasNext() 方法判断输入的是否是字符串
            if (scanner.hasNextInt()) {
                int choose = scanner.nextInt();
                switch (choose) {
                    case 1: {
                        System.out.println("查看所有房间功能");
                        roomDetails(rooms, priceArr, roomTypeArr);
                        break;
                    }
                    case 2: {
                        System.out.println("订房功能");
                        roomReservation(rooms, true);
                        break;
                    }
                    case 3: {
                        System.out.println("退房功能");
                        roomReservation(rooms, false);
                        break;
                    }
                    case 4: {
                        System.out.println("修改价格功能");
                        modifyprice(rooms,priceArr);
                        break;
                    }
                    case 5: {
                        System.out.println("退出本系统功能");
                        System.exit(0);//退出JVM虚拟机
                    }
                    default: {
                        System.out.println("您输入的数字有误,请重新选择");
                        break;
                    }
                }
            } else {
                System.out.println("非法输入字符,请重新输入");
            }
        }
    }

    //    创建一个显示酒店房间详情信息的方法
    public static void roomDetails(int[][][] rooms, int[] priceArr, String[] roomTypeArr) {
        System.out.println("楼层\t房间号\t价格\t\t类型\t\t状态");
        for (int i = 0; i < rooms.length; i++) {
            System.out.print((i + 1) + "\t");
            for (int j = 0; j < rooms[i].length; j++) {
                System.out.print((i + 1) * 100 + (j + 1) + "\t\t");
                for (int k = 0; k < rooms[i][j].length; k++) {
                    switch (k) {
                        case 0:
                            System.out.print(priceArr[rooms[i][j][k]] + "\t\t");
                            break;
                        case 1:
                            System.out.print(roomTypeArr[rooms[i][j][k]] + "\t");
                            break;
                        case 2:
                            if (rooms[i][j][k] == 0)
                                System.out.println("空闲");
                            else
                                System.out.println("有人");
                            break;
                    }
                }
                System.out.print("\t");
            }
            System.out.println("");
        }
    }

    //   创建订房、退房的方法
    public static void roomReservation(int[][][] rooms, boolean isReservation) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入楼层:");
        int floor = scanner.nextInt() - 1;
        if (floor >= 0 && floor <= 2) {
            System.out.println("请输入房间号:");
            int number = scanner.nextInt() - 1;

            if (number >= 0 && number <= 4) {
                if (isReservation) {
                    if (rooms[floor][number][2] == 0) {
                        rooms[floor][number][2] = 1;
                        System.out.println("订房成功,欢迎入住!");
                    } else
                        System.out.println("订房失败,房间已有人!");
                } else {
                    if (rooms[floor][number][2] == 1) {
                        rooms[floor][number][2] = 0;
                        System.out.println("退房成功,欢迎下次光临!");
                    } else
                        System.out.println("退房失败,此房间无人!");
                }
            } else
                System.out.println("您输入的房间号不正确,请重新输入");
        } else
            System.out.println("您输入的楼层不正确,请重新输入");
    }


//修改价格功能
    public static void modifyprice(int[][][] rooms, int[] priceArr) {
        int type = 0;//房间类型
        Scanner scanner = new Scanner(System.in);
        boolean flag = true;
        while (flag) {
            System.out.println("请输入需求修改的房间类型:");
            String roomType = scanner.next();// 接收用户输入的房间类型
            switch (roomType) {
                case "单人间":
                    type = 0;
                    break;
                case "双人间":
                    type = 1;
                    break;
                case "标准间":
                    type = 2;
                    break;
                case "商务房":
                    type = 3;
                    break;
                case "豪华包":
                    type = 4;
                    break;
                default:
                    System.out.println("您输入的房间类型有误,请重新输入");
                    continue;//跳出本次循环,继续下一次循环
            }
            System.out.println("请输入修改后的价格:");
            int price = scanner.nextInt();// 接收用户输入的价格
            priceArr[type] = price;// 修改价格
            System.out.println("修改成功!");
            flag = false;//修改成功,将标记改为false,退出循环
        }
    }
}
   

4.小结

本系统是我曾经在学校课堂上跟着老师做过的一个系统,现在写成博客复习了之前所学知识,更好的疏导了实现思路以便于更好的理解,在这个系统中根据房间信息的特点,使用三维数组来存储房间信息。楼层和房间号可以作为数组的下标,而房间的价格、类型和状态作为数组的数据元素。使用while (true)循环和switch语句来根据用户的输入选择执行不同的功能。在接收用户输入时,程序进行了异常检查,确保输入的是有效的数字,并在输入错误时给出提示。这种异常处理机制可以防止程序因为无效输入而崩溃。
总之,编写这篇博客加深了我对酒店客房管理系统的理解,并且掌握如何将项目需求转化为具体的编程实践。同时,这也是一个很好的练习,帮助我提高编程能力和逻辑思维。

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值