Java代码实现简单酒店管理系统
作者:T何必当初 发布时间:2023-11-21 03:38:57
标签:java,酒店,管理系统
本文实例为大家分享了Java实现简单酒店管理系统的具体代码,供大家参考,具体内容如下
为某个酒店编写程序:酒店管理系统,模拟订房、退房和打印所有房间状态等功能
1.该系统的用户是:酒店前台
2.酒店使用一个二维数组来模拟”Room[][] rooms"
3.酒店中的每一个房间应该是一个对象:Room
4.每一个房间应该有:房间编号、房间类型、房间是否空闲
5.一同应该对外提供的功能:
订房:用户输入房间编号来订房
退房:用户输房间编号来退房
查看所有房间状态:用户输入指定的指令来查看
房间类
//酒店的房间类
public class Room {
//房间编号
private int no;
//房间类型:标准间 单人间 总统套房
private String type;
//房间是否空闲
private boolean status;
public Room() {
}
public Room(int no, String type, boolean status) {
this.no = no;
this.type = type;
this.status = status;
}
@Override
public String toString() {
return "["+no+","+type+","+(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;
}
public boolean isStatus() {
return status;
}
public void setStatus(boolean status) {
this.status = status;
}
}
酒店类
//酒店类
public class Hotel {
//创建二维数组存放房间
private Room[][] rooms;
//通过构造方法给酒店盖房间,即二维数组的空间大小
public Hotel() {
//一共有几层,每层的房间类型是什么,每个房间的编号是什么
//这里先写死,一共3层,1层单人间,2层标准间,3层总统套房
//本系统支持的房间编号:
//1楼:101 102 103 104 105...110
//2楼:201 202 203 204 205...210
//3楼:301 302 303 304 305...310
//3层楼,每层10个房间,注:此时还是空的,即空数组,还没赋值
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, "单人间", true);//true为空闲房间
} else if (i == 1) {
rooms[i][j] = new Room((i + 1) * 100 + j + 1, "标准间", true);
} else {
rooms[i][j] = new Room((i + 1) * 100 + j + 1, "总统套房", true);
}
}
}
}
//输出房间信息,即打印输出二维数组
public void print(){
for (int i = 0; i < rooms.length; i++) {
System.out.print("第" + (i + 1) + "层: ");
for (int j = 0; j < rooms[i].length; j++) {
//输出每层的所有房间
//System.out.print(rooms[i][j]+" ");
Room r = rooms[i][j];
System.out.print(r.toString()+" ");
}
System.out.println();//换行输出每层的房间
}
}
//订房,将订房的房间对象中的status修改为flase,即占用
public void order(int n){
//例:205 205/100-1==1 205%100-1==4 即数组rooms[1][4]
Room r = rooms[n/100-1][n%100-1];
//修改为占用
r.setStatus(false);
}
//退房,跟订房同理,只需将status修改为true即可
public void exit(int n){
Room r = rooms[n/100-1][n%100-1];
r.setStatus(true);
}
}
酒店管理系统的实现类
import java.util.Scanner;
//测试类
public class HotelMgtSystem {
/**
* 为某个酒店编写程序:酒店管理系统,模拟订房、退房和打印所有房间状态等功能
* 1.该系统的用户是:酒店前台
* 2.酒店使用一个二维数组来模拟”Room[][] rooms"
* 3.酒店中的每一个房间应该是一个对象:Room
* 4.每一个房间应该有:房间编号、房间类型、房间是否空闲
* 5.一同应该对外提供的功能:
* 订房:用户输入房间编号来订房
* 退房:用户输房间编号来退房
* 查看所有房间状态:用户输入指定的指令来查看
*/
public static void main(String[] args) {
//创建酒店对象
Hotel h = new Hotel();
Scanner sc = new Scanner(System.in);
//提示用户输入的房间编号信息
System.out.println("本系统支持的房间编号:");
System.out.println("1楼: 101 102 103 104 105...110");
System.out.println("2楼: 201 202 203 204 205...210");
System.out.println("3楼: 301 302 303 304 305...310");
//构建主界面
System.out.println("----------欢迎进入酒店管理系统----------");
while(true){
System.out.println("1 订房");
System.out.println("2 退房");
System.out.println("3 查看所有房间的状态");
System.out.println("4 退出系统");
System.out.println("请输入你的选择:(按center键确认)");
int n = sc.nextInt();
//实现选择的功能
switch(n){
case 1:
System.out.println("请输入订房的编号:");
h.order(sc.nextInt());
System.out.println("恭喜订房成功!\n");
break;
case 2:
System.out.println("请输入退房的编号:");
h.exit(sc.nextInt());
System.out.println("恭喜退房成功!\n");
break;
case 3:
System.out.println("所有房间的状态信息如下所示:");
h.print();
break;
case 4:
System.out.println("系统正在退出中......");
System.out.println("\n系统已退出,欢迎下次光临!");
System.exit(0);//结束JVM虚拟机的运行
default:
System.out.println("指令输入有误,请重新输入!");
break;
}
}
}
}
来源:https://blog.csdn.net/weixin_54702911/article/details/121544542


猜你喜欢
- ID说明 设备唯一标识符(UDID):设备唯一硬件标识,设备生产时根据特定的硬件信息生成,可用于设备的生产环境及合法性校验。不对第
- 动态SQL实现前端指定返回字段问题描述在使用ClickHouse时,遇到需要根据业务需求,动态返回指定字段,从而充分利用ClickHouse
- 这周在做公司的一个C#项目中,要写一个webservice提供一个下载方法,之前公司有过,但是要整改,于是这种鸟屎摊子又交给了我,其中一个密
- 首先使用一个用户提交界面作为举例(文本框,密码框,选择,下拉表单等),效果如下<!DOCTYPE html PUBLIC "
- 本文实例讲述了Android仿微信语音聊天功能代码。分享给大家供大家参考。具体如下:项目效果如下:具体代码如下:AudioManager.j
- application.properties大家都不陌生,我们在开发的时候,经常使用它来配置一些可以手动修改而且不用编译的变量,这样的作用在
- Knife4j就相当于是swagger的升级版,对于我来说,它比swagger要好用得多1、在pom.xml引入依赖包<!-- Swa
- 本文介绍idea的安装和基本使用首先保证JDK正常安装及配置下载地址:https://www.jetbrains.com/idea/down
- 1 Struts2框架内部执行过程Structs请求过程源码分析参考链接https://www.jb51.net/article/22058
- MybatisPlus代码生成器含XML所需依赖 <!--Mybatis-Plu
- 本文实例讲述了C#中数组段用法。分享给大家供大家参考。具体分析如下:1.数组段说明① 结构ArraySegment<T>表示数组
- 一、插入数据主键ID获取一般我们在做业务开发时,经常会遇到插入一条数据并使用到插入数据的ID情况。如果先插入在查询的话需要多一次sql查询,
- 在做业务开发时,遇到了一个事务不起作用的问题。大概流程是这样的,方法内部的定时任务调用了一个带事务的方法,失败后事务没有回滚。查阅资料后,问
- Hystrix 是一个帮助解决分布式系统交互时超时处理和容错的类库, 它同样拥有保护系统的能力。Netflix的众多开源项目之一。设计流程:
- 本文实例为大家分享了C#实现文字转语音的具体代码,供大家参考,具体内容如下客户提出要求,将文字内容转为语音,因为内网环境,没办法采用联网,在
- 背景项目中用到了多数据源,不同的数据源根据业务不同配置在不同的工程中,由maven来统一聚合。但是前几天在开发过程中突然发现项目前台工程的事
- 在jdk文档中对RandomAccess接口的定义如下: public interface RandomAccess下面是jdk
- 棋牌类游戏是目前比较火的游戏之一。今天本文就以实例形式实现洗牌游戏。本文实例所采用的算法是:遍历每个位置上的牌,然后与随机位置上的牌交换。运
- 程序的结构分类:顺序结构:按照写代码的顺序 一次执行选择结构:根据条件的不同有选择的执行不同的代码循环结构:在一定条件下 反复执行某一片代码
- 引言上文Android:实现一个自定义有限制区域的图例(角度自识别)涂鸦工具类(上)中我们已经实现了自定义View签名的功能,包含撤回、清除