Java简单小程序:酒店管理系统

Java简单小程序:酒店管理系统

1、房间类:
package 酒店管理系统;
/*
酒店房间
*/
//只要写了一个类,那么必须写出setter和getter方法并且重写equals和toString方法(无论是否用得上)
//目的是如果不重写equals方法,那么它默认继承Object类,那么比较的就是内存地址,而实际开发中不比较内存地址比较类
public class Room {
/*
房间编号
101 102 103 104...
201 202 203 204...
301 302 303 304...
*/
private int no;
/*
房间类型
标准间 单人间 总统套房
*/
private String type;
/*
房间状态
true表示空闲,可预订
false表示占用,不可预订
*/
private boolean 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;
}
//idea对于boolean类型变量生成的getter方法的方法名是isXXX()//可以修改为getXXX
public boolean getStatus() {
return status;
}
public void setStatus(boolean status) {
this.status = status;
}
public Room(int no, String type, boolean status) {
this.no = no;
this.type = type;
this.status = status;
}
//equals方法重写
//equals用来比较两个对象是否相同
//至于如何比较,程序员自己决定(比如编号相同决定房间相同,那么写代码比较房间编号就行)
public boolean equals(Object obj) {
if(obj == null || !(obj instanceof Room)) return false;
if(this == obj) return true;
Room room = (Room) obj;
//当前房间编号等于传过来的房间对象的房间编号(认为是同一个房间)
if(this.no == room.getNo()) return true;
return false;
}
//toString方法重写
//toString方法目的是将Java对象转换成字符串形式
//怎么转或者转成什么格式由程序员自己决定
//不看内存地址,而是
public String toString() {
return "[" + no + "," + type + "," + (status ? "空闲" : "占用") + "]";
}
}
//println输出引用时会自动调用引用的toString方法
二、酒店类:
package 酒店管理系统;
/*
酒店对象,酒店中有二维数组,二维数组模拟大厦
*/
public class Hotel {
//二维数组模拟所有房间
private Room[][] rooms;
//通过构造方法来盖楼
public Hotel() {
//一共有几层
//每层房间类型是什么,编号是什么
//动态初始化
rooms = new Room[3][10];
//创建30个room对象放到数组中
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);
} else if (i == 1) {
//二楼
rooms[i][j] = new Room((i + 1) * 100 + j + 1, "标准间", true);
} else if (i == 2) {
//三楼
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++) {//每层房间
Room room = rooms[i][j];
System.out.print(room);
}
System.out.println();
}
}
/*
订房方法
调用此方法需要传递一个房间编号,房间编号由前台服务人员进行输入
*/
public void order(int roomNo) {
//将room对象的status修改为false
//通过房间编号演算出下标,获取房间对象
Room room = rooms[roomNo / 100 - 1][roomNo % 100 - 1];
if (room.getStatus() == true) {
room.setStatus(false);
System.out.println(roomNo + "已订房成功!");
} else {
System.out.println(roomNo + "房间已被占用,不可预订!");
}
}
/*
退房方法
*/
public void exit(int roomNo) {
//把房间对象修改为占用
Room room = rooms[roomNo / 100 - 1][roomNo % 100 - 1];
if (room.getStatus() == false) {
room.setStatus(true);
System.out.println(roomNo + "已退房成功!");
} else {
System.out.println((roomNo + "该房间为空闲,不可退房!"));
}
}
}
三、主方法测试类:
package 酒店管理系统;
import java.util.Scanner;
public class HotelManagementSystem {
public static void main(String[] args) {
Hotel hotel = new Hotel();
/*
首先输出欢迎页面
*/
System.out.println("欢迎使用酒店管理系统,请认真阅读以下说明");
System.out.println("请输入对应的功能编号:[1]表示查看房价列表。[2]表示订房。[3]表示退房。[0]表示退出系统。");
Scanner s = new Scanner(System.in);
//死循环,一直可以执行使用
while (true) {
System.out.println("请出输入功能编号:");
int i = s.nextInt();
if (i == 1) {
hotel.print();
} else if (i == 2) {
System.out.println("请输入房间编号:");
int roomNo = s.nextInt();
hotel.order(roomNo);
} else if (i == 3) {
System.out.println("请输入房间编号:");
int roomNo = s.nextInt();
hotel.exit(roomNo);
} else if (i == 0) {
System.out.println("再见,欢迎下次光临!");
return;
} else {
System.out.println("输入功能编号无法查询,请重新输入!");
}
}
}
}

四、运行情况:

java 有趣的小程序 java简单的小程序_Java

java 有趣的小程序 java简单的小程序_System_02

Java简单小程序:酒店管理系统相关教程

Java集合框架二:Collection接口

Java集合框架二:Collection接口 代码演示: import java.util.ArrayList;import java.util.Collection;import java.util.Iterator;public class Test01 { public static void main(String[] args) { Collection collection = new ArrayList(); //1.add()添加

Javaweb项目分层和三层架构

Javaweb项目分层和三层架构 文章目录 项目分层 三层架构 项目分层 DAO —— Data Access Object数据访问对象(接口) DAOImpl —— DAO的实现类 entity ——数据对象的实体(有些地方叫model层) Service(不是Server)——就是中间层、业务逻辑层(接口) S

Java编程:查找算法——顺序查找、二分查找、插值查找、斐波那契

Java编程:查找算法——顺序查找、二分查找、插值查找、斐波那契查找 查找算法介绍 在java中,我们常用的查找有四种: 顺序(线性)查找 二分查找/折半查找 插值查找 斐波那契查找 介绍 不需要数组一定有序。 案例 有一个数列: {1,8, 10, 89, 1000, 1234} ,判

最新解决方法This template did not produce a Java class or an

最新解决方法This template did not produce a Java class or an interface (错误提示) 当我们出现了这个提示错误,意思是我们无法创建class,原因就是创建时格式错误,所以导致创建不了,这时候我们先要查看settings (这里我已经导入模板了,但是如果是出

2020/9/30java作业三

2020/9/30java作业三 1. public class IntClass{//默认构造方法public IntCLass{}} IntClass s=new IntClass(); 语句,其实包括了四个动作: 1)右边的“new IntClass”,是以IntClass类为模板,在堆空间里创建一个IntClass对象。 2)末尾的()意味着,在对象

Java多线程的执行流程及其在内存中的表现

Java多线程的执行流程及其在内存中的表现 目录 1 代码 2 执行流程图 3 内存表现 本文将通过一个简单的实例来讲解Java多线程的执行流程及其在内存中的表现。 1 代码 自定义线程类 : public class MyThread extends Thread { // 利用继承特点,将线程名称传递

java基础

java基础 1. java基本特性 J2SE(Java 2 Platform Standard Edition)标准版 是为开发普通桌面和商务应用程序提供的解决方案,该技术体系是其他两者的基础,可以完成一些桌面应用程序的开发。 J2ME(Java 2 Platform Micro Edition)小型版 是为开发移动设备和嵌

如何设置QT的窗口图标和exe应用程序图标(两步搞定操作)

如何设置QT的窗口图标和exe应用程序图标(两步搞定操作) 添加QT的窗口图标和exe应用图标: 第一步.选择制作合适的图标 这里推荐一个免费的图标网站: 点我点我!!!. 直接右键图片另存为即可保存,如下图所示: 此时的图标为png格式,注意需要用ps将图标转