• 酒店订房退房管理系统(数组应用)


    /**
     * 为某个酒店编写程序:酒店管理系统,模拟订房、退房、打印所有房间状态等功能。
     *    1、该系统的用户是:酒店前台
     *    2、酒店使用一个二维数组来模拟。Room[][] rooms;
     *    3、酒店中的每一个房间应该是一个java对象:Room
     *    4、每一个房间Room应该有:房间编号、房间类型、房间是否空闲等属性。
     *    5、系统对外提供的方法有:
     *       * 可以预定房间:输入房间编号,订房
     *       * 可以退房:输入房间编号,退房
     *       * 可任意查看所有房间的状态:用户输入某个指令能够查看所有房间状态
     */
    package com.javase.进阶.数组;
    
    /**
     * 酒店房间类
     */
    public class Room {
        /**
         * 房间编号
         * 一楼:101、102、103...
         * 二楼:201、202、203...
         * ......
         */
        private int no;
        /**
         * 房间类型
         * 标准间、双人间、豪华间
         */
        private String type;
        /**
         * 房间状态
         * true 表示占用,不能预定
         * false 表示空闲,可以预定
         */
        private boolean status;
    //    无参构造方法
    
        public Room() {
        }
    
    //    有参构造方法
    
        public Room(int no, String type, boolean status) {
            this.no = no;
            this.type = type;
            this.status = status;
        }
    
    //    set and get 方法
    
        public int getNo() {
            return no;
        }
    
        public void setNo(int no) {
            this.no = no;
        }
    
        public String getType() {
            return type;
        }
    
        public void setType(String type) {
            this.type = type;
        }
    //IDEA提供的Boolean的构造方法是isXxx(),可以改成getXxx()
        public boolean getStatus() {
            return status;
        }
    
        public void setStatus(boolean status) {
            this.status = status;
        }
    //    重写equals()方法
    
        public boolean equals(Object o) {
            if (this == o) return true;
            if (o == null || !(o instanceof Room)) return false;
            Room room = (Room) o;
            return this.no == room.getNo();
        }
    
    //    重写toString()方法
    
        public String toString() {
            return "[" + no + " " + type + " " + (status?  "占用]" : "空闲]");
        }
    
        public static void main(String[] args) {
            Room room = new Room(101,"标准间",false);
            System.out.println(room);
        }
    }
    package com.javase.进阶.数组;
    
    import java.util.Arrays;
    
    /**
     * 酒店类,用二维数组模拟酒店大楼
     */
    public class Hotel {
        /**
         * 使用二维数组来模拟酒店中的所有房间
         */
        private Room[][] rooms;
        /**
         * 默认创建一个三层楼,每层10个房间的酒店
         * 一层:标准间,二层:双人间,三层:豪华间
         * 房间编号:一层 101、102、103...
         *          二层 201、202、203...
         *          三层 301、302、303...
         */
    //    无参构造方法
        public Hotel() {
            rooms = new Room[3][10];
    //        通过遍历二维数组来创建每个房间
            for (int i = 0; i < rooms.length ; i++) {
                for (int j = 0; j < rooms[i].length; j++) {
                    if (i == 0){
    //                    一楼是标准间
                        rooms[i][j] = new Room((i + 1) * 100 + j + 1,"标准间",false);
                    }else if (i == 1){
    //                    二楼双人间
                        rooms[i][j] = new Room((i + 1) * 100 + j + 1,"双人间",false);
                    }else {
    //                    三楼豪华间
                        rooms[i][j] = new Room((i + 1) * 100 + j + 1,"豪华间",false);
                    }
                }
            }
        }
    //    有参构造方法
    
        public Hotel(Room[][] rooms) {
            this.rooms = rooms;
        }
    //    set and get 方法
    
        public Room[][] getRooms() {
            return rooms;
        }
    
        public void setRooms(Room[][] rooms) {
            this.rooms = rooms;
        }
    //    重写equals()方法
    
        @Override
        public boolean equals(Object o) {
            if (this == o) return true;
            if (o == null || getClass() != o.getClass()) return false;
            Hotel hotel = (Hotel) o;
            return Arrays.equals(rooms, hotel.rooms);
        }
    
    //    重写toString()方法
    
        @Override
        public String toString() {
            return "Hotel{" +
                    "rooms=" + Arrays.toString(rooms) +
                    '}';
        }
        /**
         * 打印所有房间状态
         */
        public void print(){
    //        既然是所有房间,那就应该是遍历数组
            for (int i = 0; i < rooms.length; i++) {
                for (int j = 0; j < rooms[i].length; j++) {
                    Room room = rooms[i][j];
                    //下行代码会自动调用room.toString(),由此可以看出重写toString()方法的必要
                    System.out.print(room);
                }
    //            换行
                System.out.println();
            }
        }
    
        /**
         * 订房方法
         * @param roomNo 调用此方法时,需要传递一个房间号码
         */
        public void order(int roomNo){
    //        需要通过房间号码转换成二维数组中对象的下标
            Room room = rooms[(roomNo / 100) - 1][(roomNo % 100) - 1];
    //        订房的主要操作是将房间对象的属性status修改成true
    //        判断当前想订房间状态,如果是占用状态,就不能接受预定
            if (room.getStatus() == true){
                System.out.println(roomNo + "有人居住,当前不接受预订!");
            }
    //        如果是空闲状态,则能接受预定
            else {
                room.setStatus(true);
                System.out.println(roomNo + "房间预订成功!");
            }
        }
    
        /**
         * 退房方法
         * @param roomNo 调用此方法时,也需要传递一个房间号码
         */
        public void exit(int roomNo){
    //        需要通过房间号码转换成二维数组中对象的下标
            Room room = rooms[(roomNo / 100) - 1][(roomNo % 100) - 1];
    //        订房的主要操作是将房间对象的属性status修改成false
            if (room.getStatus() == false){
                System.out.println(roomNo + "房间已经退房,现在不接受退房服务!");
            }
            else {
                room.setStatus(false);
                System.out.println(roomNo + "房间退房成功!");
            }
        }
    }
    
    
    public class HotelSystem {
        public static void main(String[] args) {
    //        创建酒店
            Hotel hotel = new Hotel();
            System.out.println("欢迎使用本酒店管理系统!");
    //        将系统的运行代码放到while循环中,就避免了每次执行一个功能都需要执行一次主方法
            while (true) {
                System.out.println("请仔细阅读使用说明:【0】退出本系统,【1】查看本酒店房间状态,【2】预订房间,【3】退房");
                Scanner s = new Scanner(System.in);
                System.out.print("请输入对于功能编号:");
                int i = s.nextInt();
                if (i == 0) {
    //            退出系统
                    System.out.println("即将退出本系统,再见!欢迎下次回来!");
                    return;
    
                } else if (i == 1) {
    //            查看酒店房间状态
                    hotel.print();
                } else if (i == 2) {
    //            预订房间
                    System.out.print("请输入想订房间编号:");
                    int roomNo = s.nextInt();
                    hotel.order(roomNo);
                } else if (i == 3) {
    //            退房
                    System.out.print("请输入需退房编号:");
                    int roomNo = s.nextInt();
                    hotel.exit(roomNo);
                } else {
                    System.out.println("输入功能代码有误,请重新输入!");
                }
            }
        }
    }
  • 相关阅读:
    OceanBase再获OSCAR两项大奖,坚定开源开放
    [HTML]HTML5新增标签
    机器学习(15)---代价函数、损失函数和目标函数详解
    数据导入与预处理——实验2
    Flask小项目教程(含MySQL与前端部分)
    ICC2:Design Planning(02)Shaping Placement
    基于SSM的人才招聘网站的研究与实现
    STM32CUBEMX开发GD32F303(14)----IIC之配置OLED
    新电脑必装的7款软件,缺一不可
    SparkStreaming介绍
  • 原文地址:https://blog.csdn.net/heliuerya/article/details/128196213