* 为某个酒店编写程序:酒店管理系统,模拟订房,退房,打印所有房间状态等功能
酒店使用一个二维数组来模拟“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();
}
}