酒店订房退房管理系统(数组应用)
创始人
2024-03-20 20:03:11
/*** 为某个酒店编写程序:酒店管理系统,模拟订房、退房、打印所有房间状态等功能。*    1、该系统的用户是:酒店前台*    2、酒店使用一个二维数组来模拟。Room[][] rooms;*    3、酒店中的每一个房间应该是一个java对象:Room*    4、每一个房间Room应该有:房间编号、房间类型、房间是否空闲等属性。*    5、系统对外提供的方法有:*       * 可以预定房间:输入房间编号,订房*       * 可以退房:输入房间编号,退房*       * 可任意查看所有房间的状态:用户输入某个指令能够查看所有房间状态*/
package com.javase.进阶.数组;/*** 酒店房间类*/
public class Room {/*** 房间编号* 一楼:101、102、103...* 二楼:201、202、203...* ......*/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;}//    set and get 方法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的构造方法是isXxx(),可以改成getXxx()public boolean getStatus() {return status;}public void setStatus(boolean status) {this.status = status;}
//    重写equals()方法public boolean equals(Object o) {if (this == o) return true;if (o == null || !(o instanceof Room)) return false;Room room = (Room) o;return this.no == room.getNo();}//    重写toString()方法public String toString() {return "[" + no + " " + type + " " + (status?  "占用]" : "空闲]");}public static void main(String[] args) {Room room = new Room(101,"标准间",false);System.out.println(room);}
}
package com.javase.进阶.数组;import java.util.Arrays;/*** 酒店类,用二维数组模拟酒店大楼*/
public class Hotel {/*** 使用二维数组来模拟酒店中的所有房间*/private Room[][] rooms;/*** 默认创建一个三层楼,每层10个房间的酒店* 一层:标准间,二层:双人间,三层:豪华间* 房间编号:一层 101、102、103...*          二层 201、202、203...*          三层 301、302、303...*/
//    无参构造方法public Hotel() {rooms = new Room[3][10];
//        通过遍历二维数组来创建每个房间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,"标准间",false);}else if (i == 1){
//                    二楼双人间rooms[i][j] = new Room((i + 1) * 100 + j + 1,"双人间",false);}else {
//                    三楼豪华间rooms[i][j] = new Room((i + 1) * 100 + j + 1,"豪华间",false);}}}}
//    有参构造方法public Hotel(Room[][] rooms) {this.rooms = rooms;}
//    set and get 方法public Room[][] getRooms() {return rooms;}public void setRooms(Room[][] rooms) {this.rooms = rooms;}
//    重写equals()方法@Overridepublic boolean equals(Object o) {if (this == o) return true;if (o == null || getClass() != o.getClass()) return false;Hotel hotel = (Hotel) o;return Arrays.equals(rooms, hotel.rooms);}//    重写toString()方法@Overridepublic String toString() {return "Hotel{" +"rooms=" + Arrays.toString(rooms) +'}';}/*** 打印所有房间状态*/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];//下行代码会自动调用room.toString(),由此可以看出重写toString()方法的必要System.out.print(room);}
//            换行System.out.println();}}/*** 订房方法* @param roomNo 调用此方法时,需要传递一个房间号码*/public void order(int roomNo){
//        需要通过房间号码转换成二维数组中对象的下标Room room = rooms[(roomNo / 100) - 1][(roomNo % 100) - 1];
//        订房的主要操作是将房间对象的属性status修改成true
//        判断当前想订房间状态,如果是占用状态,就不能接受预定if (room.getStatus() == true){System.out.println(roomNo + "有人居住,当前不接受预订!");}
//        如果是空闲状态,则能接受预定else {room.setStatus(true);System.out.println(roomNo + "房间预订成功!");}}/*** 退房方法* @param roomNo 调用此方法时,也需要传递一个房间号码*/public void exit(int roomNo){
//        需要通过房间号码转换成二维数组中对象的下标Room room = rooms[(roomNo / 100) - 1][(roomNo % 100) - 1];
//        订房的主要操作是将房间对象的属性status修改成falseif (room.getStatus() == false){System.out.println(roomNo + "房间已经退房,现在不接受退房服务!");}else {room.setStatus(false);System.out.println(roomNo + "房间退房成功!");}}
}
public class HotelSystem {public static void main(String[] args) {
//        创建酒店Hotel hotel = new Hotel();System.out.println("欢迎使用本酒店管理系统!");
//        将系统的运行代码放到while循环中,就避免了每次执行一个功能都需要执行一次主方法while (true) {System.out.println("请仔细阅读使用说明:【0】退出本系统,【1】查看本酒店房间状态,【2】预订房间,【3】退房");Scanner s = new Scanner(System.in);System.out.print("请输入对于功能编号:");int i = s.nextInt();if (i == 0) {
//            退出系统System.out.println("即将退出本系统,再见!欢迎下次回来!");return;} else if (i == 1) {
//            查看酒店房间状态hotel.print();} else if (i == 2) {
//            预订房间System.out.print("请输入想订房间编号:");int roomNo = s.nextInt();hotel.order(roomNo);} else if (i == 3) {
//            退房System.out.print("请输入需退房编号:");int roomNo = s.nextInt();hotel.exit(roomNo);} else {System.out.println("输入功能代码有误,请重新输入!");}}}
}

相关内容

热门资讯

原创 带... “真的当我们上有老、下有小的时候才会真的明白你有一个医生朋友有多么重要!”这句话,是笔者家里老人反复...
国台办:希望台湾同胞坚决反对赖... 本文转自【央视新闻客户端】;2月11日,国务院台办举行例行新闻发布会。有记者就民进党当局抹黑国共两党...
特斯拉领导层最新变动 任命欧洲... 特斯拉任命其欧洲业务的一位负责人来负责全球电动汽车销售,这是该公司陷入困境的汽车业务的最新领导层变动...
人事风波未了 斯塔默恐将失去第... 据知情人士透露,英国首相基尔·斯塔默政府势将在数日内面临第三位高级官员离职,内阁秘书Chris Wo...
易方达MSCI美国50ETF(... 数据显示,2月10日,易方达MSCI美国50ETF(QDII)(513850)获净申购163.43万...