14、java数组练习2

为酒店编写程序,酒店管理系统,模拟订房,退房,打印所有房间状态
1、该系统的用户:酒店前台
2、酒店所有的房间使用一个二维数组来模拟。“Room[][] rooms;”
3、酒店中每一个房间应该是一个java对象:Room
4、每一个房间Room应该有:房间编号、房间类型属性(一楼:单人间;二楼:标准间;三楼:豪华间)、房间是否空闲
5、系统应该对外提供的功能:
可以预定房间:用户输入房间号码,订房。
可以退房:用户输入房间编号,退房
可以查看房间状态:用户输入某个指令应该可以查看所有房间状态

package com.bjpwernode.javase.array.homework;

public class Room {
    
    
     /*
    为酒店编写程序,酒店管理系统,模拟订房,退房,打印所有房间状态
    1、该系统的用户:酒店前台
    2、酒店所有的房间使用一个二维数组来模拟。“Room[][] rooms;”
    3、酒店中每一个房间应该是一个java对象:Room
    4、每一个房间Room应该有:房间编号、房间类型属性(一楼:单人间;二楼:标准间;三楼:豪华间)、房间是否空闲
    5、系统应该对外提供的功能:
        可以预定房间:用户输入房间号码,订房。
        可以退房:用户输入房间编号,退房
        可以查看房间状态:用户输入某个指令应该可以查看所有房间状态
     */
    /*房间编号
    1楼:101、102-106
    2楼:201、202-206
     */

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

    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类型的变量,生成的get方法的方法名是:isXx()
    //可以修改为getXx()
    public boolean isStatus() {
    
    
        return status;
    }

    public void setStatus(boolean status) {
    
    
        this.status = status;
    }

    //equals方法:比较两个
    public boolean equals(Object obj){
    
    
        if (obj == null || !(obj instanceof Room))
        return false;
        if (this == obj)    return true;
        Room room = (Room)obj;
       //当前房建编号等于传过来对象的房间编号,认为同一个房间
        return this.getNo() == room.no;


    }

    //toString方法
    public String toString(){
    
    

        return "[房号:"+this.no+ "类型"+this.type + (status ? "空闲]" : "占用]");
    }
}

package com.bjpwernode.javase.array.homework;

public class Hotel {
    
    

    /*
    二位数组模拟大厦所有的房间
     */
    private Room[][] rooms;

    //通过构造方法来盖楼
    public Hotel(){
    
    
        //一共有几层,每层房间的类型、房间的编号
        //可以先假设3层,1层单人间,2层标准间,4层总统套房,每层有10个房间
        //房间编号的规律
        /*房间编号
        1楼:101、102-106
        2楼:201、202-206
     */
        //动态初始化
        rooms =new Room[3][10];

        //创建30个Room对象放进去
        //二维数组遍历
        for (int i= 0;i<rooms.length;i++){
    
    
            //i是下标,i+1是楼层
            for (int j = 0; j < rooms[i].length; j++) {
    
    
                //如果一层则单人间如果二层标准间如果三层总统套房
                if (i == 0){
    
    
                    //rooms[i][j] = new Room("房间编号",type"房间类型",空闲);
                    rooms[i][j] = new Room((i+1)*100+j+1,"单人间",true);
                }
                if (i == 1){
    
    
                    rooms[i][j]=new Room((i+1)*100+j+1,"标准间",true);
                }
                if (i == 2){
    
    
                    rooms[i][j]=new Room((i+1)*100+j+1,"总统套房",true);
                }

            }
        }

    }
    //对象上提供一个打印房间列表的方法
    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];
                System.out.print(room.toString());
            }
        }
        System.out.println();
    }

    //订房间方法,调用此方法需要传递一个编号过来
    public void order(int roomNo){
    
    
        //订房最主要的是将房间对象的status改成false
        //假设房间编号207,下标是room[1][6]
        //通过放假编号验算出下标获取房间对象
        Room room = rooms[roomNo/100-1][roomNo%100-1];
        room.setStatus(false);
    }

    //退房方法
    public void exit(int roomNo){
    
    
        Room room = rooms[roomNo/100-1][roomNo%100-1];
        room.setStatus(true);
    }
}

package com.bjpwernode.javase.array.homework;

import java.util.Scanner;

public class HelloMgtSystem {
    
    
    public static void main(String[] args) {
    
    
        //创建酒店对象
        Hotel hotel = new Hotel();
        //打印房间状态
        //hotel.print();

        /*
        首先输出欢迎页面
         */
        System.out.println("欢迎使用酒店管理系统,请阅读说明");
        System.out.println("请输入对应功能编号:[1]表示查看房间列表[2]表示订房[3]表示退房)[0]表示退出系统");
        Scanner s = new Scanner(System.in);

        //循环使用1
        while(true){
    
    
            System.out.println("请输入功能编号:");
            int i = s.nextInt();
            if (i == 1){
    
    
                //查看房间
                hotel.print();
            }else if (i == 2){
    
    
                //订房
                System.out.println("请输入房间编号:");
                int roomNo = s.nextInt();//房间编号
                hotel.order(roomNo);
                System.out.println(roomNo + "已经订房");
            }else if (i ==3){
    
    
                //退房
                System.out.println("请输入退房编号:");
                int roomNo = s.nextInt();//房间编号
                hotel.exit(roomNo);
                System.out.println(roomNo + "已退房");
            }else if (i == 0){
    
    
                //退出系统
                System.out.println("再见,欢迎下次使用");
                return;
            }else{
    
    
                //出错了
                System.out.println("输入功能有误,请重新输入");
            }
        }
        }

}

猜你喜欢

转载自blog.csdn.net/Alopecian/article/details/114681977