使用简单的Java代码实现酒店管理系统
我们通过学习Java基础知识,让自己正式踏入学习Java语言的行列,这篇博客是用来让我们真正的了解并应用面向对象的思想来实现的。使用简单的Java代码实现酒店管理系统1.需求分析2.画图分析3.代码实现1.需求分析我们如果要实现酒店管理系统,就需要先对酒店管理系统的业务要求进行分析:酒店管理系统需要实现哪些功能?(1)输入某个命令查询酒店中的所有房间;(2)输入某个房间的编号订房;(3)输入某个房
·
我们通过学习Java基础知识,让自己正式踏入学习Java语言的行列,这篇博客是用来让我们真正的了解并应用面向对象的思想来实现的。
1.需求分析
我们如果要实现酒店管理系统,就需要先对酒店管理系统的业务要求进行分析:
- 酒店管理系统需要实现哪些功能?
(1)输入某个命令查询酒店中的所有房间;
(2)输入某个房间的编号订房;
(3)输入某个房间的编号退房;
(4)输入某个命令可以退出酒店管理系统;- 酒店管理系统使用什么数据结构来表示房间?
(1)酒店管理系统使用数组的形式来存储房间,这里我们用二维数组来表示;- 酒店的房间我们都有什么属性?
(1)房间编号;
(2)房间类型;
(3)房间是否空闲;- 我们用什么来控制房间类有上面这些属性?
(1)我们可以使用自定义注解来实现;
2.画图分析
3.代码结构
4.代码实现
/**
Room房间实体类
*/
package com.hotel.room.model;
/**
* 房间实体类
*
* @author john
* @date 2024/5/8 15:14
*/
public class Room {
/**
* 房间编号
*/
private Integer roomNo;
/**
* 房间类型
*/
private String roomType;
/**
* 是否空闲
*/
private Boolean roomFree;
public Room(Integer roomNo, String roomType, Boolean roomFree) {
this.roomNo = roomNo;
this.roomType = roomType;
this.roomFree = roomFree;
}
public Integer getRoomNo() {
return roomNo;
}
public Room setRoomNo(Integer roomNo) {
this.roomNo = roomNo;
return this;
}
public String getRoomType() {
return roomType;
}
public Room setRoomType(String roomType) {
this.roomType = roomType;
return this;
}
public Boolean getRoomFree() {
return roomFree;
}
public Room setRoomFree(Boolean roomFree) {
this.roomFree = roomFree;
return this;
}
@Override
public String toString() {
return "Room [" + roomNo + ", " + roomType + ", "+ (roomFree ? "有人入住" : "无人入住")+"]";
}
}
package com.hotel.room.model;
import java.util.Scanner;
/**
* 酒店实体类
* 功能:
* (1)查看所有房间状态
* (2)订房
* (3)退房功能
*
* @author john
* @date 2024/5/8 15:14
*/
public class Hotel {
/**
* 这里需要定义一个二维数组来表示房间,因为我们设想的酒店有很多层,且每层有很多你发件
*/
private static Room[][] rooms;
public Hotel() {
// 这里定义酒店为5层,且每层有9个房间
rooms = new Room[5][9];
// 这里我们来设置酒店的房间,由于酒店的房间很多,所以我们使用for循环来分别设置每个楼层。
for (int m = 0 ; m < rooms.length ; m ++) {
for (int n = 0 ; n < rooms[m].length ; n ++) {
/*
这里我们的房间编号这样设置:
如果是是酒店的第一层楼的第一个房间,我们将房间编号设置成:101
我规定我们的酒店的楼层为1~5层;
我规定我们的酒店的第一个房间为1
所以如果我们用二维数组来表示酒店的楼层和第几个房间时,因为我们的二维数组的横纵坐标都是从0开始的,所以我们需要分别加上1,此时房间编号的表达式就为:
(m + 1) * 100 + n + 1
当m = 0时:
n = 0:房间编号为101;
n = 1:房间编号为102;
n = 2;房间编号为103;
...
当m = 1时:
n = 0:房间编号为201;
n = 1:房间编号为202;
...
...
*/
// 第一层
if (m == 0) {
rooms[m][n] = new Room((m + 1) * 100 + n + 1, "单人豪华房", false);
}
// 第二层
if (m == 1) {
rooms[m][n] = new Room((m + 1) * 100 + n + 1, "双人豪华房", false);
}
// 第三层
if (m == 2) {
rooms[m][n] = new Room((m + 1) * 100 + n + 1, "三人豪华房", false);
}
// 第四层
if (m == 3) {
rooms[m][n] = new Room((m + 1) * 100 + n + 1, "三人豪华房", false);
}
// 第五层
if (m == 4) {
rooms[m][n] = new Room((m + 1) * 100 + n + 1, "三人豪华房", false);
}
}
}
}
/**
* 查看所有房间状态
*/
public void queryAllRooms () {
for (Room[] room : rooms) {
for (Room value : room) {
System.out.println(value.toString());
}
}
}
/**
* 使用房间编号订房
* @param roomNo 房间编号
*/
public void makeRoom (int roomNo) {
Room room = rooms[roomNo / 100 - 1][roomNo % 100 - 1];
// 如果该编号的房间已经有人订了
if (room.getRoomFree()) {
System.out.println("抱歉,请您订购其他房间,此房间已经有人居住!");
} else {
room.setRoomFree(true);
System.out.println("订房完成");
}
}
/**
* 使用房间编号退房
* @param roomNo 房间编号
*/
public void existRoom (int roomNo) {
Room room = rooms[roomNo / 100 - 1][roomNo % 100 - 1];
// 如果该编号的房间本来就没有人居住
if (!room.getRoomFree()) {
System.out.println("抱歉,请您退订其他房间,该房间没有人居住不需要退订!");
} else {
room.setRoomFree(false);
System.out.println("退房完成");
}
}
/**
* 程序运行入口
*/
public static void main(String[] args) {
Hotel hotel = new Hotel();
System.out.println("欢迎使用酒店管理系统,请认真阅读以下使用说明:");
Scanner scanner = new Scanner(System.in);
while (true) {
System.out.println("请输入对应的功能编号:[1]查看房间列表; [2]订房; [3]退房; [0]退出系统");
System.out.print("请输入功能编号:");
int i = scanner.nextInt();
if (i == 1) {
hotel.queryAllRooms();
System.out.println("酒店所有的房间已经加载完毕!");
}
else if (i == 2) {
System.out.print("请输入房间编号,房间编号为101~110、201~210、301~310、401~410、501~510:");
int rId = scanner.nextInt();
if (rId >= 101 && rId <= 110 || rId >= 201 && rId <= 210 || rId >= 301 && rId <= 310 || rId >= 401 && rId <= 410 || rId >= 501 && rId <= 510) {
hotel.makeRoom(rId);
} else {
System.out.println("请输入正确的房间编号!");
}
}
else if (i == 3) {
System.out.print("请输入房间编号,房间编号为101~110、201~210、301~310、401~410、501~510:");
int rId = scanner.nextInt();
if (rId >= 101 && rId <= 110 || rId >= 201 && rId <= 210 || rId >= 301 && rId <= 310 || rId >= 401 && rId <= 410 || rId >= 501 && rId <= 510) {
hotel.existRoom(rId);
} else {
System.out.println("请输入正确的房间编号!");
}
}
else if (i == 0) {
System.out.println("成功退出酒店管理系统!");
scanner.close();
return;
}
else {
System.out.println("请仔细阅读使用说明,输入正确的功能编号");
}
}
}
//....后续可以添加自己的功能
}
输出结果:
更多推荐
已为社区贡献1条内容
所有评论(0)