为酒店编写程序,酒店管理系统,模拟订房,退房,打印所有房间状态
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("输入功能有误,请重新输入");
}
}
}
}