Java习题: 酒店管理系统

 

题目详见 B站 AV93347594 P88

大体上是写出一个可以模拟订房、退房和打印房间状态的程序

 

直接上代码

/*
    酒店类
    实例变量为一堆房间, 使用二维数组
*/
public class Hotel {

    Room[][] rooms;

    public Hotel() {
        this(5,10);
    }

    public Hotel(int level, int count) {
        rooms = new Room[level][count];
        for (int i = 0; i < rooms.length; i++) {
            for (int j = 0; j < rooms[i].length; j++) {
                rooms[i][j] = new Room();
                rooms[i][j].setRoomNo((i+1)*100+j+1);
                if (i == 0) rooms[i][j].setRoomType("单人间");
                else if ( i > 0 && i < rooms.length -1 ) rooms[i][j].setRoomType("标准间");
                else rooms[i][j].setRoomType("豪华间");
            }
        }
    }

    public void print() {
        for (Room[] floor:rooms
             ) {
            for (Room r:floor
                 ) {
                System.out.print(r.getRoomNo()+" "+r.getRoomType()+" "+(r.isEmpty()?"可预订":"已被预订")+"\t");
            }
            System.out.println();
        }
    }

    public void book(int i) {
        for (Room[] floor:rooms
             ) {
            for (Room r:floor
                 ) {
                if (i == r.getRoomNo() && r.isEmpty()) {
                    r.setEmpty(false);
                    System.out.println("房间 "+i+" 预定成功!");
                    return;
                }
            }
        }
        System.out.println("您的输入似乎有误");
    }

    public void checkout(int i) {
        for (Room[] floor:rooms
        ) {
            for (Room r:floor
            ) {
                if (i == r.getRoomNo() && !r.isEmpty()) {
                    r.setEmpty(true);
                    System.out.println("房间 "+i+" 退房成功!");
                    return;
                }
            }
        }
        System.out.println("您的输入似乎有误");
    }
}

/*
    房间类
    对象作为酒店类实例变量
*/
class Room {
    private int roomNo;
    private String roomType;
    private boolean isEmpty = true;

    public Room() {
    }

    public Room(int roomNo, String roomType) {
        this.roomNo = roomNo;
        this.roomType = roomType;
    }

    public int getRoomNo() {
        return roomNo;
    }

    public void setRoomNo(int roomNo) {
        this.roomNo = roomNo;
    }

    public String getRoomType() {
        return roomType;
    }

    public void setRoomType(String roomType) {
        this.roomType = roomType;
    }

    public boolean isEmpty() {
        return isEmpty;
    }

    public void setEmpty(boolean empty) {
        isEmpty = empty;
    }
}

记录一下自己踩的坑:

酒店类的构造方法中, 除了要 new 一个 Room[][] 的二维数组外

还需要给数组中的每个元素, 即 new 出 Room 对象

少了这一步的话, 在 setRoomNo 处会报空指针异常

 

简单写个测试程序看下效果

public class Test {
    public static void main(String[] args) {
        Hotel h = new Hotel();
        h.print();

        h.book(102);
        h.print();

        h.checkout(102);
        h.print();

        h.checkout(505);
    }
}

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值