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

酒店订房退房管理系统(数组应用)相关推荐

  1. 简单的酒店住房退房管理系统

    运用java面向对象和二维数组的知识写了一个简单的酒店住房退房管理系统 适合初学java的同学 首先给大家看一下我的项目的目录结构,很简单就3个类 接下来给大家看一下我这3个类的代码 1,首先考虑一个 ...

  2. 为某个酒店编写程序:酒店管理系统,模拟订房、退房、打印所有房间状态等功能。 1、该系统的用户是:酒店前台。 2、酒店使用一个二维数组来模拟。“Room[][] roo

    代码 房间类 package com.bjpowernode.javase.day23homework; //每一个房间Room应该有:房间编号.房间类型.房间是否空闲 public class Ro ...

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

    问题描述: 为某个酒店编写程序:酒店管理系统,模拟订房.退房.打印所有房间状态等功能. 1.该系统的用户是:酒店前台. 2.酒店使用一个二维数组来模拟."Room[][] rooms;&qu ...

  4. java:模拟酒店订房,退房,打印所有房间状态等功能

    要求: 1.使用二维数组来模拟酒店 2.酒店中每一个房间都是一个对象 3.每一个房间都应该有:房间编号,房间类型,房间状态 4.系统对外提供的功能: 可以查看房间状态: 可以订房退房. (以下有程序截 ...

  5. 无理由退房退机票,做携程超级会员就是这么任性

    行程有变,想退掉预订的酒店?旅行计划调整,想退掉已经订好的机票? 这些都是旅行达人和商务人士出门经常碰到的问题,也是旅行中的常见槽点和痛点. 近日,携程高调宣布再度升级其"超级会员权益&qu ...

  6. Axure 进阶 | 制作携程网酒店“入住日期”与“退房日期”控件

    ​ 本次教程学习制作时间控件选择,根据选择的日期,在输入框中显示所选择的日期.制作内容包括携程网的酒店"入住日期"时间控件与"退房日期"时间控件. 部件使用:动 ...

  7. 通过学生信息管理系统(数组版)学习C语言

    我的知识星球<C语言解惑课堂>的[第159篇]到[167篇]是学生信息管理系统(数组版)的一个C语言源码实现,[第340.341.342.343.344篇]详解了源码中的C程序知识点,需要 ...

  8. 在南京怎么购买退房的资格

    原文:https://m.house365.com/nj/quicktopic/26279/?newsid=028252070 退房信息: http://www.njhouse.com.cn/2016 ...

  9. 基于PHP的预约看房管理系统

    有需要请私信或看评论链接哦 可远程调试 基于PHP的预约看房管理系统 一 介绍 此预约看房管理系统基于原生PHP开发,数据库mysql,前端Jquery,Layui,ajax.系统角色分为用户和管理员 ...

最新文章

  1. GD32通用定时器、高级定时器PWM输出例程
  2. A Network-based End-to-End Trainable Task-oriented Dialogue System
  3. 第8章 SQL语言(一)
  4. LeetCode 1974. 使用特殊打字机键入单词的最少时间
  5. linux标准I/O——流的打开和关闭
  6. intern cookie 纠结之二
  7. python3 gui tk代码_python3 修改计算机名称GUI程序
  8. 《你不常用的c#之五》:Thread与ThreadPool的内存之战
  9. 从Ubuntu 14 04 LTS版升级到Ubuntu 16 04 LTS
  10. Java 1.1.4 检测字符串是否相等
  11. 算法 —— 实用程序片段
  12. SPSS统计检验中的边缘显著及其转化处理【SPSS 063期】
  13. 超好用的Redis管理及监控工具,使用后可大大提高你的工作效率!
  14. 考研如何设置桌面倒计时,便签设置桌面倒计时方法
  15. 如何修改背景色?证件照背景颜色怎样换成白色?
  16. 知识付费资源变现小程序源码+可开流量主/带教程
  17. ASP+VML制作统计图的源程序
  18. iOS常用功能 - 根据链接生成二维码图片
  19. solidworks动画制作教程——装配体爆炸动画
  20. 红队渗透测试技术:如何通过鱼叉式网络钓鱼获得攻击机会?

热门文章

  1. 手机火狐浏览器怎么开启flash_如何开启Firefox浏览器flash支持?开启Firefox浏览器flash支持的方法...
  2. 小米无线路由器关闭WPS
  3. English:怎样辨别英语中 表语 宾语 定语 状语 等结构
  4. 公钥加密私钥解密私钥加密公钥解密
  5. 快手如何引流淘宝?快手上推广电商产品如何做?
  6. Ubuntu零基础教学-Ubuntu20.04安装Rosbridge并进行小乌龟测试 | 超级干货,建议收藏
  7. 张驰咨询:为什么企业需要走精益生产的道路?
  8. python设计模式名片_Python 设计模式 简单工厂(设计模式之禅)
  9. 由XP引发的血案——XP装机
  10. 数学建模算法总结——04层次分析法