* 为某个酒店编写程序:酒店管理系统,模拟订房,退房,打印所有房间状态等功能

酒店使用一个二维数组来模拟“Room[][] rooms
酒店中的每一个房间应该有:房间编号、房间类型、房间是否空闲
酒店中的每一个房间应该是一个java对象:Room
系统应该对外提供的功能:
可以预定房间:用户输入房间编号,订房
可以退房:用户输入房间编号,退房
可以查看所有房间的状态:用户输入某个指令应该可以查看所有房间状态

  • equals和toString()方法要重写!!!规定,养成习惯
  • equals传入的是大类的对象(Object obj),然后判定他是不是属于我们定义的那个类
  • 打印可以用toString来代替,可以在重写toString方法里写输入每个对象的方式
  • 二维数组是在酒店里,不是在房间里,面向对象编程,要搞清楚对象是谁,对象的属性,宾馆有很多房间,二维数组,但对单独的房间来说,没有这个属性,所以应该在另一个类里定义而不是在房间类里
  • 先在构造方法中给数组写死,注意赋值方法,
  • 数组名[i][j] = new 类名(xxx,xxx,xxxx);
  • Scanner input= new Scanner(System.in);
•  int i=input.nextInt();//键盘输入
-为了不让程序一次执行完吗,可以在外层套一个while(true)的语句!!!!!!!!!!!
 int number= input.nextInt();,程序中多次输入的语句


房间类

package com.javase.Hotel;
import java.util.Arrays;
import java.util.Objects;

public class Room {
    private int id;
    private String type;
    private boolean status;

    public Room() {

    }

    public Room(int id, String type, boolean status) {
        this.id = id;
        this.type = type;
        this.status = status;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }

    public boolean isStatus() {
        return status;
    }

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

    @Override
    public String toString() {
//        return ("["+id+","+type+","+status+"]");
        return ("["+id+","+type+","+status+"]");
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Room room = (Room) o;
        return id == room.id ;
    }

    @Override
    public int hashCode() {
        return Objects.hash(id, type, status);
    }
}

宾馆类

package com.javase.Hotel;

public class hotel {

    Room rooms[][] = new Room[3][10];

    public hotel() {
        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 , "标准房",true );
                 }else if (i==1){
                     rooms[i][j] = new Room( (i+1)*100+j+1 , "大床房",true );
                 }else 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++) {
                System.out.print(rooms[i][j]+" ");
            }
            System.out.println();
        }
    }

    public void Order(int number){
        if (number<101 || (number>110&&number<201) || (number>210&& number<301) || number>310){
            System.out.println("输入房间号错误");
            return;
        }
        if (this.rooms[number / 100 -1][number%100-1].isStatus()){
            this.rooms[number / 100 -1][number%100-1].setStatus(false);
            System.out.println("预定成功");
        }else {
            System.out.println("预定失败已经有人定了");
        }
    }

    public void Out(int number){
        if (!this.rooms[number / 100 -1][number%100-1].isStatus()){
            this.rooms[number / 100 -1][number%100-1].setStatus(true);
            System.out.println("退房成功");
        }else {
            System.out.println("退房失败还没有人定房间");
        }
    }
}

主测试类

package com.javase.Hotel;

import java.util.Scanner;

/*
* 为某个酒店编写程序:酒店管理系统,模拟订房,退房,打印所有房间状态等功能
* 酒店使用一个二维数组来模拟“Room[][] rooms
* 酒店中的每一个房间应该有:房间编号、房间类型、房间是否空闲
* 酒店中的每一个房间应该是一个java对象:Room
* 系统应该对外提供的功能:
*   可以预定房间:用户输入房间编号,订房
*   可以退房:用户输入房间编号,退房
*   可以查看所有房间的状态:用户输入某个指令应该可以查看所有房间状态
* */
public class Test {
   public static void main(String[] args) {

       hotel h = new hotel();
       while (true){
           System.out.println("欢迎来到酒店管理系统,请选择服务[1、查看所有房间状态][2、预定房间][3、退房]");
           Scanner input= new Scanner(System.in);
           int i=input.nextInt();
           if (i==1){
               h.print();
           }else if (i==2){
               System.out.println("请输入想要预定房间的号码");
               int temp=input.nextInt();
               h.Order(temp);
//                System.out.println("输入错误,请输入正确数字");
           }else if(i==3){
               System.out.println("请输入想要退的房间的号码");
               int temp=input.nextInt();
               h.Out(temp);
               return;
           }else {
               System.out.println("输入错误,请输入正确数字");
           }
       }
//        h.print();
   }

}