Java酒店管理系统(完整版)

目录

1.需求说明

1.1 需求

1.2. 实现分析

1.3 功能点

1.4 项目运行效果

1.5. 代码实现思路

1、 首先要动态生成一个酒店房间信息的数组,用几维数组好呢?

2、 控制台的欢迎界面和控制台输入的次数控制写个方法封装起来,通过用户输入的数字去判断对应的不同功能

3、 数字对应的功能方法执行单独用个方法写起来,在此方法里面调用具体的功能实现

4、 编写各个功能代码的实现

2.实现思路与源码

2.1 创建class类

2.2 创建main方法

2.3 创建房屋详情信息方法  

2.4 创建订房与退房的方法

2.5 修改房间价格

 3.完整代码展示 


1.需求说明


1.1 需求

实现一个简单的酒店客房管理系统,它具备 5 个功能,分别为【 1 :查看所有房间功能; 2 :订房功能; 3:退房功能; 4 :修改价格功能; 5 :退出本系统功能】

1.2. 实现分析

我们要实现的主体数据就是酒店的房间, 以及房间有哪些信息:所在楼层、房间编号、房间价格、房间状态、房间的类型等等,数组非常适合存储这些信息
  • 房间的类型: 单人间、双人间,标准间,商务房,豪华包
  • 房间的价格: 98 128 148 288 68
  • 房间的状态:空闲 有人
  • 房间的楼层: 1,2,3,4,5,6.........
  • 房间的编号:101,102,103,104,201,202,203….
String[] roomTypeArr = {"单人间", "双人间", "标准间", "商务房", "豪华包"}; //房间类型
int[] priceArr = {98, 128, 148, 228, 688}; //房间价格
int[][][] rooms = new int[3][5][3]; //房间信息,3层,每层5个房间,每个房间3个信息(价格、类型、状态)

rooms= { //楼层---1,2,3,4……
          {  //房间----101,102,103……
             {类型,单价,入住状态}  //101
            {类型,单价,入住状态}  //102
            {类型,单价,入住状态}  //103
            {类型,单价,入住状态}  //104
          },
          {  
            {类型,单价,入住状态}
            {类型,单价,入住状态}
            {类型,单价,入住状态}
            {类型,单价,入住状态}
         },
         {  
            {类型,单价,入住状态}
            {类型,单价,入住状态}
            {类型,单价,入住状态}
            {类型,单价,入住状态}
         }
	}

1.3 功能点

1 :查看所有房间
实际上就是对数组的遍历,打印在控制台显示
2 :订房
要根据用户输入的房间号给该房间改变一下房间的状态即可
3 :退房
根据用户的输入房间号,对该房间号状态改变为空闲即可
4 :修改价格
要根据房间的类型,修改该类型的价格(拿到用户输入的新的价格,把这个新的价格替换掉老的价格)
5 :退出
结束,用户不能在控制继续输入了

1.4 项目运行效果

1.5. 代码实现思路

1、 首先要动态生成一个酒店房间信息的数组,用几维数组好呢?
通过观察发现,我们的楼层和房间都是有序的 , 可以作为数组下标 , 那我们房间的价格 . 类型 , 状态是变
化的 , 可以作为数据, 那我们先把这些数据使用一个数组来存储 , 那我们可以使用到三维数组 , 结构图如下 :
2、 控制台的欢迎界面和控制台输入的次数控制写个方法封装起来,通过用户输入的数字去判断对应的不同功能
3、 数字对应的功能方法执行单独用个方法写起来,在此方法里面调用具体的功能实现
4、 编写各个功能代码的实现
4-1 :查看
将数组遍历打印出来
4-2 :订房
根据用户输入的房间号修改房间的状态值
4-3 :退房
根据用户输入的房间号修改房间的状态值
4-4 :修改价格
根据用户输入的类型,将用户输入的新价格替换旧的价格
4-5 :退出
System.exit(0);

2.实现思路与源码

2.1 创建class

import java.util.Scanner;
/**
* 酒店管理系统:
* 需求:
* 实现一个简单的酒店客房管理系统,它具备5个功能,分别为
* 【1:查看所有房间功能;2:订房功能;3:退房功能;4:修改价格功能;5:退出本系统功能】
*/
public class HotelManagement {
//创建实现功能的方法
}

2.2 创建main方法

    public static void main(String[] args) {
        /**
         * 实现思路:
         * 1.定义房间类型数组--单人间、双人间、标准间、商务房、豪华包
         * 2.定义房间价格数组--98、128、148、228、688
         * 3.定义房间信息数组--3层,每层5个房间,每个房间3个信息(价格、类型、状态)
         * 4.初始化房间信息--遍历房间信息,给房间信息赋值--价格、类型、状态--0表示空闲,1表示
         有人
         * 5.显示菜单--查看所有房间功能;订房功能;退房功能;修改价格功能;退出本系统功能
         * 6.根据用户选择的菜单,执行相应的功能
         */
        String[] roomTypeArr = {"单人间", "双人间", "标准间", "商务房", "豪华包"}; //房间类型
        int[] priceArr = {98, 128, 148, 228, 688}; //房间价格
        int[][][] rooms = new int[3][5][3]; //房间信息,3层,每层5个房间,每个房间3个信息(价格、类型、状态)
        // 遍历房间信息,给房间信息赋值
        for (int i = 0; i < rooms.length; i++) { //遍历楼层
            for (int j = 0; j < rooms[i].length; j++) { //遍历房间
                for (int h = 0; h < rooms[i][j].length; h++) { //遍历房间信息
                    //根据房间信息的下标,给房间信息赋值
                    switch (h) {
                        case 0: //价格
                            //房间价格,0表示98,1表示128,2表示148,3表示228,4表示688
                            rooms[i][j][h] = j % priceArr.length;
                            break;
                        case 1: //类型
                            //房间类型,0表示单人间,1表示双人间,2表示标准间,3表示商务房,4表示豪华包
                            rooms[i][j][h] = j % roomTypeArr.length;
                            break;
                        case 2: //状态
                            //房间状态,0表示空闲,1表示有人
                            rooms[i][j][h] = 0;
                            break;
                    }
                }
            }
        }
        System.out.println("==========欢迎使用酒店管理系统========");
        System.out.println("1:查看所有房间功能;2:订房功能;3:退房功能;4:修改价格功 能;5:退出本系统功能");
        while (true) {// 无限循环,直到用户选择“5”才退出系统
            System.out.println("请输入您的服务选择项:");
            Scanner scanner = new Scanner(System.in);
            if (scanner.hasNextInt()) {//判断输入的是否是数字
                int choice = scanner.nextInt();// 接收用户输入的数字
                switch (choice) {
                    case 1:
                        System.out.println("查看所有房间功能");
                        showRoomInfo(rooms, roomTypeArr, priceArr);// 查看所有房间功能
                        break;
                    case 2:
                        roomReservation(rooms, true);// 订房功能,true表示订房
                        break;
                    case 3:
                        roomReservation(rooms, false);// 退房功能,false表示退房
                        break;
                    case 4:
                        System.out.println("修改价格功能");
                        modifyprice(rooms, priceArr);// 修改价格功能
                        break;
                    case 5:
                        System.out.println("退出本系统功能");
                        System.exit(0);// 退出JVM虚拟机
                        break;
                    default:
                        System.out.println("您的输入有误,请重新输入");
                        break;
                }
            } else {
                System.out.println("您的输入是非法字符,请重新输入");
            }
        }
    }

2.3 创建房屋详情信息方法  

    public static void showRoomInfo(int[][][] rooms, String[] roomTypeArr, int[] priceArr) {
        /**
         * 遍历房间信息,打印房间信息
         * 1.打印楼层
         * 2.打印房间号
         * 3.打印价格
         * 4.打印类型
         * 5.打印状态
         * 6.换行
         * 7.打印下一层的房间信息
         * 8.换行
         */
        System.out.println("酒店房间详情表:");
        System.out.println("楼层\t房间号\t价格\t类型\t\t状态");
        for (int i = 0; i < rooms.length; i++) { //遍历楼层
            System.out.print(i + 1); //楼层
            for (int j = 0; j < rooms[i].length; j++) { //遍历房间
                int roomNo = (i + 1) * 100 + (j + 1);//房间号 = 楼层+两位的房间号
                System.out.print("\t" + roomNo);//房间号
                for (int h = 0; h < rooms[i][j].length; h++) { //遍历房间信息
                    switch (h) { //根据房间信息的下标,打印房间信息
                        case 0: //价格
                            //根据房间信息的下标,打印房间价格
                            System.out.print("\t\t" + priceArr[rooms[i][j][h]]);
                            break;
                        case 1: //类型
                            //根据房间信息的下标,打印房间类型
                            System.out.print("\t" + roomTypeArr[rooms[i][j][h]]);
                            break;
                        case 2: //状态
                            if (rooms[i][j][h] == 0) { //0表示空闲,1表示有人
                                System.out.print("\t空闲");
                            } else if (rooms[i][j][h] == 1) {
                                System.out.print("\t有人");
                            }
                            break;
                    }
                }
                System.out.println();//换行
            }
        }
    }

2.4 创建订房与退房的方法

    public static void roomReservation(int[][][] rooms, boolean isReservation) {
        /**
         * 订房与退房功能
         * 1.接收用户输入的楼层
         * 2.接收用户输入的房间号
         * 3.判断用户选择的是订房还是退房--true表示订房,false表示退房
         * 4.如果是订房,判断房间是否已经有人,如果有人,提示重新选择,如果没有人,修改房间状态为1,
         表示有人
         * 5.如果是退房,判断房间是否已经有人,如果有人,修改房间状态为0,表示空闲,如果没有人,提示
         重新选择
         */
        Scanner scanner = new Scanner(System.in);
        out1:
        while (true) {
            System.out.println("请选择楼层(1-3):");
            int floor = scanner.nextInt() - 1;// 接收用户输入的楼层
            if (floor >= 0 && floor < 3) {
                System.out.println("请选择房间(1-5):");
                while (true) {
                    int roomNo = scanner.nextInt() - 1;// 接收用户输入的房间号
                    if (roomNo >= 0 && roomNo < 5) {
                        if (isReservation) { //true表示订房,false表示退房
                            if (rooms[floor][roomNo][2] == 0) { //0表示空闲,1表示有人
                                rooms[floor][roomNo][2] = 1;//修改房间状态为1,表示有人
                                System.out.println("房间订好了,入住愉快!");
                                return; //退出方法
                            } else {
                                System.out.println("您选择的房间已经有人了,请重新选择");
                                return; //退出方法
                            }
                        } else {
                            if (rooms[floor][roomNo][2] == 1) { //0表示空闲,1表示有人
                                rooms[floor][roomNo][2] = 0;// 修改房间状态为0,表示空闲
                                System.out.println("退房成功,欢迎下次光临!");
                                return; //退出方法
                            } else {
                                System.out.println("您选择的房间未入住,请重新选择");
                                return; //退出方法
                            }
                        }
                    } else {
                        System.out.println("您输入的房间号有误,请重新输入(1-5)");
                    }
                }
            } else {
                System.out.println("您输入的楼层有误,请重新输入");
            }
        }
    }

2.5 修改房间价格

    public static void modifyprice(int[][][] rooms, int[] priceArr) {
        /**
         * 修改房间价格
         * 1.接收用户输入的房间类型
         * 2.接收用户输入的价格
         * 3.根据用户输入的房间类型,修改价格
         */
        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,退出循环
        }
    }

 3.完整代码展示

package day240317;

import java.util.Scanner;

/**
 * 酒店管理系统:
 * 需求:
 * 实现一个简单的酒店客房管理系统,它具备5个功能,分别为
 * 【1:查看所有房间功能;2:订房功能;3:退房功能;4:修改价格功能;5:退出本系统功能】
 */
public class HotelManagement {
    //创建实现功能的方法
    public static void main(String[] args) {
        /**
         * 实现思路:
         * 1.定义房间类型数组--单人间、双人间、标准间、商务房、豪华包
         * 2.定义房间价格数组--98、128、148、228、688
         * 3.定义房间信息数组--3层,每层5个房间,每个房间3个信息(价格、类型、状态)
         * 4.初始化房间信息--遍历房间信息,给房间信息赋值--价格、类型、状态--0表示空闲,1表示
         有人
         * 5.显示菜单--查看所有房间功能;订房功能;退房功能;修改价格功能;退出本系统功能
         * 6.根据用户选择的菜单,执行相应的功能
         */
        String[] roomTypeArr = {"单人间", "双人间", "标准间", "商务房", "豪华包"}; //房间类型
        int[] priceArr = {98, 128, 148, 228, 688}; //房间价格
        int[][][] rooms = new int[3][5][3]; //房间信息,3层,每层5个房间,每个房间3个信息(价格、类型、状态)
        // 遍历房间信息,给房间信息赋值
        for (int i = 0; i < rooms.length; i++) { //遍历楼层
            for (int j = 0; j < rooms[i].length; j++) { //遍历房间
                for (int h = 0; h < rooms[i][j].length; h++) { //遍历房间信息
                    //根据房间信息的下标,给房间信息赋值
                    switch (h) {
                        case 0: //价格
                            //房间价格,0表示98,1表示128,2表示148,3表示228,4表示688
                            rooms[i][j][h] = j % priceArr.length;
                            break;
                        case 1: //类型
                            //房间类型,0表示单人间,1表示双人间,2表示标准间,3表示商务房,4表示豪华包
                            rooms[i][j][h] = j % roomTypeArr.length;
                            break;
                        case 2: //状态
                            //房间状态,0表示空闲,1表示有人
                            rooms[i][j][h] = 0;
                            break;
                    }
                }
            }
        }
        System.out.println("==========欢迎使用酒店管理系统========");
        System.out.println("1:查看所有房间功能;2:订房功能;3:退房功能;4:修改价格功 能;5:退出本系统功能");
        while (true) {// 无限循环,直到用户选择“5”才退出系统
            System.out.println("请输入您的服务选择项:");
            Scanner scanner = new Scanner(System.in);
            if (scanner.hasNextInt()) {//判断输入的是否是数字
                int choice = scanner.nextInt();// 接收用户输入的数字
                switch (choice) {
                    case 1:
                        System.out.println("查看所有房间功能");
                        showRoomInfo(rooms, roomTypeArr, priceArr);// 查看所有房间功能
                        break;
                    case 2:
                        roomReservation(rooms, true);// 订房功能,true表示订房
                        break;
                    case 3:
                        roomReservation(rooms, false);// 退房功能,false表示退房
                        break;
                    case 4:
                        System.out.println("修改价格功能");
                        modifyprice(rooms, priceArr);// 修改价格功能
                        break;
                    case 5:
                        System.out.println("退出本系统功能");
                        System.exit(0);// 退出JVM虚拟机
                        break;
                    default:
                        System.out.println("您的输入有误,请重新输入");
                        break;
                }
            } else {
                System.out.println("您的输入是非法字符,请重新输入");
            }
        }
    }

    public static void showRoomInfo(int[][][] rooms, String[] roomTypeArr, int[] priceArr) {
        /**
         * 遍历房间信息,打印房间信息
         * 1.打印楼层
         * 2.打印房间号
         * 3.打印价格
         * 4.打印类型
         * 5.打印状态
         * 6.换行
         * 7.打印下一层的房间信息
         * 8.换行
         */
        System.out.println("酒店房间详情表:");
        System.out.println("楼层\t房间号\t价格\t类型\t\t状态");
        for (int i = 0; i < rooms.length; i++) { //遍历楼层
            System.out.print(i + 1); //楼层
            for (int j = 0; j < rooms[i].length; j++) { //遍历房间
                int roomNo = (i + 1) * 100 + (j + 1);//房间号 = 楼层+两位的房间号
                System.out.print("\t" + roomNo);//房间号
                for (int h = 0; h < rooms[i][j].length; h++) { //遍历房间信息
                    switch (h) { //根据房间信息的下标,打印房间信息
                        case 0: //价格
                            //根据房间信息的下标,打印房间价格
                            System.out.print("\t\t" + priceArr[rooms[i][j][h]]);
                            break;
                        case 1: //类型
                            //根据房间信息的下标,打印房间类型
                            System.out.print("\t" + roomTypeArr[rooms[i][j][h]]);
                            break;
                        case 2: //状态
                            if (rooms[i][j][h] == 0) { //0表示空闲,1表示有人
                                System.out.print("\t空闲");
                            } else if (rooms[i][j][h] == 1) {
                                System.out.print("\t有人");
                            }
                            break;
                    }
                }
                System.out.println();//换行
            }
        }
    }


    public static void roomReservation(int[][][] rooms, boolean isReservation) {
        /**
         * 订房与退房功能
         * 1.接收用户输入的楼层
         * 2.接收用户输入的房间号
         * 3.判断用户选择的是订房还是退房--true表示订房,false表示退房
         * 4.如果是订房,判断房间是否已经有人,如果有人,提示重新选择,如果没有人,修改房间状态为1,
         表示有人
         * 5.如果是退房,判断房间是否已经有人,如果有人,修改房间状态为0,表示空闲,如果没有人,提示
         重新选择
         */
        Scanner scanner = new Scanner(System.in);
        out1:
        while (true) {
            System.out.println("请选择楼层(1-3):");
            int floor = scanner.nextInt() - 1;// 接收用户输入的楼层
            if (floor >= 0 && floor < 3) {
                System.out.println("请选择房间(1-5):");
                while (true) {
                    int roomNo = scanner.nextInt() - 1;// 接收用户输入的房间号
                    if (roomNo >= 0 && roomNo < 5) {
                        if (isReservation) { //true表示订房,false表示退房
                            if (rooms[floor][roomNo][2] == 0) { //0表示空闲,1表示有人
                                rooms[floor][roomNo][2] = 1;//修改房间状态为1,表示有人
                                System.out.println("房间订好了,入住愉快!");
                                return; //退出方法
                            } else {
                                System.out.println("您选择的房间已经有人了,请重新选择");
                                return; //退出方法
                            }
                        } else {
                            if (rooms[floor][roomNo][2] == 1) { //0表示空闲,1表示有人
                                rooms[floor][roomNo][2] = 0;// 修改房间状态为0,表示空闲
                                System.out.println("退房成功,欢迎下次光临!");
                                return; //退出方法
                            } else {
                                System.out.println("您选择的房间未入住,请重新选择");
                                return; //退出方法
                            }
                        }
                    } else {
                        System.out.println("您输入的房间号有误,请重新输入(1-5)");
                    }
                }
            } else {
                System.out.println("您输入的楼层有误,请重新输入");
            }
        }
    }

    public static void modifyprice(int[][][] rooms, int[] priceArr) {
        /**
         * 修改房间价格
         * 1.接收用户输入的房间类型
         * 2.接收用户输入的价格
         * 3.根据用户输入的房间类型,修改价格
         */
        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,退出循环
        }
    }
}


  • 26
    点赞
  • 66
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值