Java基础数组编写酒店管理系统

article/2025/11/5 14:01:56

文章目录

  • Java基础数组编写酒店管理系统
      • 需求说明:
      • 实现代码:
        • ①酒店类(Hotel.java)
        • ②房间类(Room.java)
        • ③酒店管理测试类(HotelMgtSystem.java)
      • 测试结果:

Java基础数组编写酒店管理系统

需求说明:

为某个酒店编写程序:酒店管理系统,模拟订房、退房、打印所有房间状态等功能。(纯javase,无数据库)

1、该系统的用户是:酒店前台。

2、酒店使用一个二维数组来模拟。“Room[][] rooms;”

3、酒店中的每一个房间应该是一个java对象:Room

4、每一个房间Room应该有:房间编号、房间类型、房间是否空闲.

5、系统应该对外提供的功能:

  • 可以预定房间:用户输入房间编号,订房。
  • 可以退房:用户输入房间编号,退房。
  • 可以查看所有房间的状态:用户输入某个指令应该可以查看所有房间状态。

实现代码:

①酒店类(Hotel.java)

public class Hotel {// 一共有几层,每层的房间类型是什么,每个房间的编号是什么。// 我们可以先写死。一共三层、一层单人间、二层标准间、三层总统套房,每层有10个房间。/*** 房间编号* 1楼:101 102 103 104 105 106..* 2楼:201 202 203 204 205 206..* 3楼:301 302 303 304 305 306..* ...*///二维数组模拟大厦房间private Room[][] rooms;public Hotel(){//为大厦的房间开辟空间// 动态初始化rooms = new Room[3][10];//大厦一共3层,每层有10个房间//创建大厦房间// 创建30个Room对象,放到数组当中。// 怎么放? 二维数组遍历。for(int i = 0; i< rooms.length;i++){//楼层i,0,1,2 房间号i+1,1,2,3for(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();}}//订房方法/*** 订房* @param roomNo 调用此方法时需要传递一个房间编号过来。这个房间编号是前台小姐姐输入的。*/public void order(int roomNo){//207代表第3层第6个房间下标是rooms[1][6]// 订房最主要的是将房间对象的status修改为false。// Room对象的status修改为false。// 假设房间编号207(下标是 rooms[1][6] )// 通过房间编号演算出下标。获取房间对象。Room room = rooms[roomNo / 100 - 1][roomNo % 100 -1];//修改状态为已占用room.setStatus(false);System.out.println(roomNo + "房间已被占用!");}//退房方法/*** 退房* @param roomNo*/public void exit(int roomNo){Room room = rooms[roomNo / 100 - 1][roomNo % 100 -1];//修改状态为空闲room.setStatus(true);System.out.println(roomNo + "已退房");}
}

②房间类(Room.java)

public class Room{/*** 房间编号* 1楼:101 102 103 104 105 106..* 2楼:201 202 203 204 205 206..* 3楼:301 302 303 304 305 306..* ...*/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;}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 getStatus() {return status;}public void setStatus(boolean status) {this.status = status;}//重写toString方法//toString方法的目的就是将java对象转换成字符串形式//怎么转,转换成什么格式,程序员自己定。目的就是:简单、清晰明了。public String toString(){//动态(把一个变量塞到一个字符串当中,口诀:加一个双引号,双引号中间加两个加号,两个加号中间加变量名)return "["+no+","+type+","+(status ? "空闲" : "占用")+"]";}//重写equals方法//equals是比较两个对象是否相同的//至于怎么比较,这个还是程序员自己定//你认为两个房间的编号相同,就表示同一个房间,那么你写代码比较房间编号就行public boolean equals(Object obj){if(obj == null && !(obj instanceof Room)) return false;if(this == obj) return true;Room r = (Room)obj;return this.getNo() == r.getNo();}/*//编写一个临时程序测试,可以删除这个main方法public static void main(String[] args){Room r1 = new Room(101,"贵宾VIP室",true);System.out.println(r1);//Room是引用,println(引用),会自动调用引用的toString()方法//System.out.println(r1.toString());//同上Room r2 = new Room(102,"贵宾VIP室",true);System.out.println(r1.equals(r2));}*/
}

③酒店管理测试类(HotelMgtSystem.java)

import java.util.Scanner;public class HotelMgtSystem {public static void main(String[] args) {/*//创建酒店大厦对象Hotel hotel = new Hotel();//打印房间动态hotel.print();*///创建酒店对象Hotel hotel = new Hotel();System.out.println("欢迎来到酒店管理系统,请观看使用说明书!");System.out.println("数字1表示查看酒店房间状态,数字2表示订房,数字3表示退房,数字0表示退出系统");Scanner s = new Scanner(System.in);// 一直可以使用(死循环。)。while(true){System.out.print("请输入功能编号: ");int a = s.nextInt();if(a == 1){// 查看房间列表hotel.print();}else if(a == 2){System.out.print("请输入订房编号:");int roomNo = s.nextInt();//前台服务人员输入// 订房hotel.order(roomNo);}else if(a == 3){System.out.print("请输入退房编号:");int roomNo = s.nextInt();//前台服务人员输入// 订房hotel.exit(roomNo);}else if(a == 0){System.out.println("服务结束,感谢你使用酒店管理系统,欢迎下次再来!");return;}else{System.out.println("对不起,你输入的编号非法,无效操作!");}}}
}

测试结果:

在这里插入图片描述
在这里插入图片描述


http://chatgpt.dhexx.cn/article/VrKdc7be.shtml

相关文章

java 小型超市管理系统_基于jsp的小型超市管理系统-JavaEE实现小型超市管理系统 - java项目源码...

基于jspservletpojomysql实现一个javaee/javaweb的小型超市管理系统, 该项目可用各类java课程设计大作业中, 小型超市管理系统的系统架构分为前后台两部分, 最终实现在线上进行小型超市管理系统各项功能,实现了诸如用户管理, 登录注册, 权限管理等功能, 并实现对各类小型超市管…

基于python+django框架+Mysql数据库的新闻信息管理系统设计与实现

项目背景和意义 目的&#xff1a;本课题主要目标是设计并能够实现一个基于web网页的新闻管理系统&#xff0c;整个网站项目使用了B/S架构&#xff0c;基于python的Django框架下开发&#xff1b;管理员通过后台录入信息、管理信息&#xff0c;设置网站信息&#xff0c;管理会员信…

java企业员工管理系统_java企业员工考勤管理系统

本系统前台主要使用JSP作为开发语言&#xff0c;后台使用SqlServer作为数据库管理系统&#xff0c;开发环境是MyEclipse&#xff0c;服务器采用tomcat&#xff0c;开发出的一个基于Web技术的B/S结构的员工考勤管理系统。 通过员工考勤管理系统这个平台&#xff0c;可以实现员工…

ktv收银管理系统服务器,KTV包厢收银管理系统增强版

KTV包厢收银管理系统增强版是一款面向KTV包厢娱乐行业打造的管理软件。KTV包厢收银管理系统增强版界面简洁&#xff0c;操作直观简单易上手&#xff0c;管理人员无需专门培训即可上手使用&#xff0c;可以大大提高娱乐行业门店如练歌房、KTV歌厅等场所的经营管理效率&#xff0…

酒店管理系统需求分析

一、系统概述 1.1背景 随着计算机技术的飞速发展&#xff0c;信息时代的到来&#xff0c;信息改变了我们社会&#xff0c;各类行业在日常经营管理方面也悄悄的走向规范化和网络化&#xff0c;酒店业作为一个前景广阔同时又竞争激烈的行业&#xff0c;它的内容对于经营的决策者…

Java综合实践——酒店前台客房管理系统

设计一个酒店前台客房管理系统包括酒店客房状态的查询&#xff0c;用户的入住、退房等功能。系统命令如下&#xff1a; search all:查询并输出酒店所有客房的状态。 search客房编号&#xff1a;查询该客房状态。 in 客房编号 用户名&#xff1a;用户入住&#xff0c;例如&#…

mysql足球管理系统_java足球俱乐部管理系统

该足球俱乐部管理系统前台主要使用JSP作为开发语言&#xff0c;后台使用MySQL作为数据库管理系统&#xff0c;开发环境是MyEclipse&#xff0c;服务器采用tomcat&#xff0c;bs模式开发出的一个基于Web技术的B/S结构的俱乐部管理系统。 该系统主要解决俱乐部将实行市场化运作&a…

网站后台管理系统

大部分的 Web 应用和动态网站都需要一个后台管理系统用于管理前台界面的信息展示以及用户信息。管理后台的设计虽然不像前台界面那样要求设计精美,但是也需要有清晰的管理模块划分,这样使用后台管理系统的人员才能够方便的进行操作和管理。下面收集了十款非常漂亮的网站后台管…

社区门诊管理系统

随着信息化技术的不断发展,网络不断普及,互联网时代的到来,网络与计算机信息化已在医院门诊、管理等许多方面开始进入到医疗行业。信息化的医疗管理系统已成为当今社会高等医院不可或缺的硬件设施平台。为了提高医疗行业管理效率,提高医疗信息化管理程度,较少医生过多的文书工作…

电子证书管理系统前台_电商平台后台之商品管理系统组成模块

“前端用户的一小步&#xff0c;后台系统的一大步”&#xff0c;平时常见的功能如购物车、优惠券等&#xff0c;看似简单&#xff0c;实则在后台要经过很多条件的校验、多系统间的信息流转。下面小猪电商介绍下电商平台后台之商品管理系统功能模块。 电商商品管理系统是为了能够…

激光雷达测距原理和点云畸变

激光雷达测距的原理&#xff0c;可以看B站这个视频&#xff1a;How Does LiDAR Remote Sensing Work&#xff1f; 激光雷达扫描的一些基本概念&#xff1a; 一帧点云&#xff0c;指完成一圈&#xff08;360度&#xff09;扫描&#xff0c;形成的点云集合。 线数&#xff0c;…

rplidar 三角测距激光雷达原理

买了一个rplidar A2, 做工不错&#xff0c;挺漂亮的&#xff0c;更重要的是可以软件启动停止&#xff0c;噪声很小&#xff0c;而且反射检测灵敏度比较高&#xff08;可以扫描到毛玻璃&#xff0c; 有些差的激光雷达检测不到毛玻璃上的反射&#xff09;。 使用之后感觉很不错。…

车载FMCW雷达的距离-多普勒检测基本原理

本文选自论文&#xff1a;Range Doppler Detection for automotive FMCW Radars 论文作者&#xff1a;Volker Winkler DICE GmbH & Co KG Majority owned by Infineon Technologies Freistaedterstrasse 400, 4040 Linz, Austria 本文由 Leela梨辣 提供&#xff0c;由 调皮…

激光测距原理与方法

激光测距粗划分为两种 第一种原理大致是光速和往返时间的乘积的一半&#xff0c;就是测距仪和被测量物体之间的距离&#xff0c;以激光测距仪为例&#xff1b; 第二种是以激光位移传感器原理为原理的方法的。 激光的测量方法 激光的测量方法大致有三种&#xff0c;脉冲法&am…

CW测速雷达原理介绍

多普勒频率 固定放置的雷达发出特定频率的发射信号&#xff0c;遇到静止物体产生的反射信号频率并不改变&#xff0c;而遇到运动物体产生的反射波将会发生多普勒频移。如下图所示 图中&#xff0c; V V V表示汽车行驶速度&#xff0c; c c c表示电磁波传播速度&#xff0c; λ…

激光雷达三角测距原理

激光发射器与相机相对位置确定&#xff0c;长度H和角度A已知。相机通过图像处理识别激光点&#xff0c;再根据小孔成像原理计算&#xff0c;可以得到角度B。 根据初中知识&#xff0c;三角原理&#xff0c;边角角&#xff08;SAA&#xff09;&#xff0c;可可计算距离D

毫米波传感器原理介绍:测距

本篇文章介绍了毫米波传感器测距的一种原理&#xff0c;帮助嵌入式工程师在做雷达编程的时候能够对SDK代码有更清晰的认知&#xff0c;可以对测距部分逻辑进行修改和裁剪。 因为本篇是第一篇关于毫米波雷达传感器设备的介绍&#xff0c;我便多啰嗦两句。近几年随着无人驾驶等领…

一文了解TOF、三角法测距和相位测距以及FMCW激光雷达测距原理

来源&#xff1a;光学追光者 激光雷达根据原理可以分为TOF&#xff08;飞行时间&#xff09;&#xff0c;三角法测距和相位测距三种方式。 三角法测距为 三角测距法是利用相似三角形本地可以测得透镜中心和照射到CMOS/CCD上的距离&#xff0c;就可以得到物距&#xff0c;本地的…

调频连续波雷达(FMCW)测距/测速原理

雷达按照发射信号种类分成脉冲雷达和连续波雷达两大类&#xff0c;常规脉冲雷达发射周期性的高频脉冲&#xff0c;连续波雷达发射的是连续波信号。 连续波雷达发射的信号可以是单频连续波(CW)或者调频连续波(FMCW)&#xff0c;调频方式也有多种&#xff0c;常见的有三角波、锯…

matlab激光雷达三角测距,三角测距激光雷达原理

激光雷达近几年越来越普及了&#xff0c;复杂的比如应用在无人驾驶汽车上&#xff0c;简单的比如用在扫地机上去。随着无人驾驶和服务机器人行业的发展&#xff0c;后续激光雷达的应用会更广泛。 激光雷达之所以流行&#xff0c;主要是因为它能够精准的测距&#xff0c;那么它是…