系列文章目录
学习Java的最终目的就是学会如何去运行Java编写一些我们需要的程序,那么今天我门来编写一个酒店管理系统的案例
一、 HotelMgSystem
首先我们建立一个程序入口HotelMgSystem
package test;
import java.util.Scanner;
public class HotelMgSystem {
public static void main(String[] args) {
//先开辟一个空间,定义一个酒店
Hotel h= new Hotel();
//下面便是欢迎和指导用户如何使用操作系统的过程
Scanner sc=new Scanner(System.in);
System.out.println("欢迎使用酒店管理系统");
System.out.println("输入对应的数字管理系统");
System.out.println("1:表示查看房间列表,2:表示订房,3:表示退房,4:退出系统");
//用一个while循环,可以使得系统的操作多次使用
while (true) {
System.out.println("请输入数字选择需要的操作");
int i=sc.nextInt();
if (i==1){
//查看房间列表
h.print();
}
if (i==2){
//订房
System.out.println("请输入要订房的房间编号");
int a=sc.nextInt();
h.order(a);
}
if(i==3){
//退房
System.out.println("请输入要退房的房间编号");
int b=sc.nextInt();
h.exit(b);
}
if (i==4){
//退出系统
System.out.println("退出成功");
return;
}
}
}
}
这是我已经编写完成的代码,大家只需要看到public static void main(String[] args)就行
二、Room
接下来我们来在jvm中开辟属于房间的内存,由于我们生活的世界是立体的,所以我建立了一个二位数组来储存房间的位置
package test;
import java.util.Objects;
public class Room {
private int id;
//房间编号
/*
101 102 103 104 ...
201 202 203 204 ...
301 302 303 304...
*/
private String type;
//房间类型
/*
标准 普通 豪华 总统
*/
private boolean status;
//房间是否空闲
public Room() {
}
public Room(int id, String type, boolean status) {
this.id = id;
this.type = type;
this.status = status;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
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;
}
//对equals方法的重写
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Room room = (Room) o;
return id == room.id &&
status == room.status &&
Objects.equals(type, room.type);
}
@Override
public int hashCode() {
return Objects.hash(id, type, status);
}
//对toString方法的重写
@Override
public String toString() {
return "{" +
"房间号:" + id +
','+"类型:" + type +
", " + "状态:"+(status?"空闲":"占用") +
'}';
}
}
我们需要重写toString(),和equals(),这是一种良好的编程习惯应该,不过在idea中我们可以直接生成重写的方法,大大节约的时间成本
三、Hotel
接下来我们就可以编写房间需要的方法了,比如开房,退房,查看房间等等操作
package test;
public class Hotel {
//用二维数组来定义房间
//在这里调用Room定义的类
private Room[][] rooms;
private String name;
public Hotel() {
//假设这个酒店是一个4层楼,每层都有7个房间
rooms = new Room[4][7];//现在每个房间里面的都是null,暂时我们没赋值
//接下来我们用双重循环赋值
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);
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);
if (i == 3)
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++) {
System.out.print(rooms[i][j]);
}
System.out.println();
}
}
public void order(int id) {
Room room1 =rooms[id / 100 - 1][id % 100 - 1];
room1.setStatus(false);
System.out.println("订房成功");
}
public void exit(int id){
Room room2 =rooms[id / 100 - 1][id % 100 - 1];
room2.setStatus(true);
System.out.println("退房成功");
}
}
有一点需要注意的是,在使用二维数组的时候,我们最好使用遍历,这样会大大节约我们的工作量
运行
`接下来我们运行看看
"C:\JetBrains\IntelliJ IDEA 2019.2.4\jbr\bin\java.exe" "-javaagent:C:\JetBrains\IntelliJ IDEA 2019.2.4\lib\idea_rt.jar=56457:C:\JetBrains\IntelliJ IDEA 2019.2.4\bin" -Dfile.encoding=UTF-8 -classpath C:\IdeaProjects\heima169work\out\production\day19 test.HotelMgSystem
欢迎使用酒店管理系统
输入对应的数字管理系统
1:表示查看房间列表,2:表示订房,3:表示退房,4:退出系统
请输入数字选择需要的操作
我们输入1试试看
1
{房间号:101,类型:标准间, 状态:空闲}{房间号:102,类型:标准间, 状态:空闲}{房间号:103,类型:标准间, 状态:空闲}{房间号:104,类型:标准间, 状态:空闲}{房间号:105,类型:标准间, 状态:空闲}{房间号:106,类型:标准间, 状态:空闲}{房间号:107,类型:标准间, 状态:空闲}
{房间号:201,类型:普通间, 状态:空闲}{房间号:202,类型:普通间, 状态:空闲}{房间号:203,类型:普通间, 状态:空闲}{房间号:204,类型:普通间, 状态:空闲}{房间号:205,类型:普通间, 状态:空闲}{房间号:206,类型:普通间, 状态:空闲}{房间号:207,类型:普通间, 状态:空闲}
{房间号:301,类型:豪华间, 状态:空闲}{房间号:302,类型:豪华间, 状态:空闲}{房间号:303,类型:豪华间, 状态:空闲}{房间号:304,类型:豪华间, 状态:空闲}{房间号:305,类型:豪华间, 状态:空闲}{房间号:306,类型:豪华间, 状态:空闲}{房间号:307,类型:豪华间, 状态:空闲}
{房间号:401,类型:总统间, 状态:空闲}{房间号:402,类型:总统间, 状态:空闲}{房间号:403,类型:总统间, 状态:空闲}{房间号:404,类型:总统间, 状态:空闲}{房间号:405,类型:总统间, 状态:空闲}{房间号:406,类型:总统间, 状态:空闲}{房间号:407,类型:总统间, 状态:空闲}
请输入数字选择需要的操作
看到打印出来所有的房间,因为我在程序操作中加了循环,所以我们的程序可以一直运行直到我们输入4
我们输入4看看
请输入数字选择需要的操作
4
退出成功
Process finished with exit code 0
很显然这个程序达到了我的预估效果,所以这个案例我们算是完成了
总结
这个案例基本结合了我们前面所学的一切内容,大家感兴趣可以尝试一些啦