JAVA学习笔记--实现一个简单的酒店管理系统_Sherlock Men的博客-程序员宅基地

技术标签: java  java学习笔记  

使用java实现了一个简单的酒店管理系统,可实现的功能:
控制台输入房间号、查询房间信息、订房、退房、退出系统提示、错误提示等。

主方法块:

package com.bjpowercode.javase.array;

import java.util.Scanner;

/**
 *      为某酒店编写酒店管理系统,模拟订房、退房、打印所有房间状态等功能
 *      1.该系统的用户是:酒店前台
 *      2.酒店中所有的房间使用一个二维数组类模拟
 *      3.酒店中每一个房间应该是一个java对象:Room
 *      4.每一个房间Room应该有:房间编号、房间类型属性、房间是否空闲
 *      5.系统应该对外提供的功能:
 *          可以预定房间:用户输入房间编号,订房
 *          可以退房:用户输入房间编号,退房
 *          可以查看所有房间的状态:用户输入某个指令可以查看房间状态。
 */
public class HomeWoek02 {
    
    public static void main(String[] args) {
    
        //创建酒店对象
        HomeWork02Hotel hotel = new HomeWork02Hotel();
        //hotel.print();

        //给出一个欢迎页面
        System.out.println("欢迎使用酒店管理系统,请认真阅读以下使用说明。");
        System.out.println("请输入对应的功能编号:");
        System.out.println("[1]查看房间列表");
        System.out.println("[2]订房");
        System.out.println("[3]退房");
        System.out.println("[0]退出系统");

        Scanner s = new Scanner(System.in);

        while (true){
    
            System.out.print("请输入功能编号:");
            int i = s.nextInt();
            if (i == 1){
    
                //查看房间列表
                hotel.print();
            }else if (i == 2){
    
                //订房
                System.out.print("请输入订房编号:");
                int roomNo = s.nextInt();//输入房间编号
                hotel.order(roomNo);
            }else if (i == 3){
    
                //退房
                System.out.print("请输入退房编号:");
                int roomNo = s.nextInt();//输入房间编号
                hotel.exit(roomNo);
            }else if (i == 0){
    
                //退出系统
                System.out.println("再见,欢迎下次再来!");
                return;
            }else {
    
                //出错
                System.out.println("输入功能编号有误,请重新输入!");
            }
        }

    }
}

创建酒店对象:

package com.bjpowercode.javase.array;

/**
 * 酒店对象,酒店中有二维数组,二维数组模拟大厦
 */
public class HomeWork02Hotel {
    
    //二维数组模拟大厦房间
    private HomeWork02Room[][] room;

    //盖楼通过构造方法来盖楼
    public HomeWork02Hotel() {
    
        //一共有几次,每层的房间类型是什么,每个房间编号是什么
        //一共三层,一层单人间,二层标准间,三层总统套
        room = new HomeWork02Room[3][10];//三行十列,三层楼,每层十个房间。
        //创建30个room对象放到数组当中
        //使用二维数组遍历
        for (int i = 0; i < room.length; i++) {
    
            for (int j = 0; j < room[i].length; j++) {
    
                if (i == 0) {
    
                    room[i][j] = new HomeWork02Room((i + 1) * 100 + j + 1, "单人间", true);
                } else if (i == 1) {
    
                    room[i][j] = new HomeWork02Room((i + 1) * 100 + j + 1, "标准间", true);
                } else if (i == 2){
    
                    room[i][j] = new HomeWork02Room((i + 1) * 100 + j + 1, "总统套", true);
                }

            }
        }
    }

    //在酒店对象上提供一个打印房间列表的方法
    public void print(){
    
        //打印所有房间状态,就是遍历二维数组
        for (int i = 0; i < room.length; i++) {
    
            for (int j = 0; j < room[i].length; j++) {
    
                HomeWork02Room room2 = room[i][j];
                System.out.print(room2);
            }
            //换行
            System.out.println();
        }
    }

    //订房方法
    public void order(int RoomNo){
    
        //订房最主要的是将房间对象的status修改为false
        HomeWork02Room room3 = room[RoomNo / 100 - 1][RoomNo % 100 -1];
        room3.setRoomStatus(false);
        System.out.println(RoomNo + "已定房!");
    }

    //退房方法
    public void exit(int RoomNo){
    
        //退房就是将房间对象的status修改为true
        HomeWork02Room room4 = room[RoomNo / 100 - 1][RoomNo % 100 - 1];
        room4.setRoomStatus(true);
        System.out.println(RoomNo + "已退房!");
    }
}

创建房间对象:

package com.bjpowercode.javase.array;

import java.util.Objects;

/**
 * 酒店房间
 */
public class HomeWork02Room {
    

    //房间编号
    private int roomNo;

    //房间类型:标准间、单人间、总统套
    private String roomType;

    //房间状态:true表示空闲可以被预定。
    //        false表示已经被预定过了
    private boolean roomStatus;

    //构造无参方法
    public HomeWork02Room() {
    
    }

    //构造有参方法
    public HomeWork02Room(int roomNo, String roomType, boolean roomStatus) {
    
        this.roomNo = roomNo;
        this.roomType = roomType;
        this.roomStatus = roomStatus;
    }

    //set and get方法
    public int getRoomNo() {
    
        return roomNo;
    }

    public void setRoomNo(int roomNo) {
    
        this.roomNo = roomNo;
    }

    public String getRoomType() {
    
        return roomType;
    }

    public void setRoomType(String roomType) {
    
        this.roomType = roomType;
    }

    public boolean isRoomStatus() {
    
        return roomStatus;
    }

    public void setRoomStatus(boolean roomStatus) {
    
        this.roomStatus = roomStatus;
    }

    //重写方法
    @Override
    public boolean equals(Object o) {
    
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        HomeWork02Room room = (HomeWork02Room) o;
        return roomNo == room.roomNo &&
                roomStatus == room.roomStatus &&
                roomType.equals(room.roomType);
    }

    @Override
    public int hashCode() {
    
        return Objects.hash(roomNo, roomType, roomStatus);
    }

    @Override
    public String toString() {
    
        return "{" +
                "房间号=" + roomNo +
                ", 房间类型=" + roomType +
                ", 房间状态=" + (roomStatus ? "空闲" : "占用") +
                "}";
    }

    //测试程序
    /**
        public static void main(String[] args){
        HomeWork02Room room = new HomeWork02Room(101,"总统套",true);
        System.out.println(room.toString());
        HomeWork02Room room2 = new HomeWork02Room(101,"总统套",false);
        System.out.println(room2);
    }
     */

}

运行结果展示:
运行结果与测试

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_45672262/article/details/108203594

智能推荐

Python爬虫HTTP异常:rllib.error.HTTPError: HTTP Error 418,伪装User-Agent以及fake-useragent插件的妙用_python爬虫418_Java Punk的博客-程序员宅基地

通过本篇,你将学会如何将自己的【爬虫程序伪装成浏览器请求】,巧妙运用 fake-useragent 插件,并且学会破解【身份鉴别】类的反爬虫程序。

Java面试题 Collection和Collections的区别?_java面试collections_你好像很好吃a的博客-程序员宅基地

Collection和Collections的区别?Collection是java.util下的接口,它是各种集合的父接口,继承它的主要有Set和List;Collections是java.util下的类,是针对集合的帮助类,提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。...

ELK日志分析系统_秃头老头向前冲的博客-程序员宅基地

ELK平台是一套完整的日志集中处理解决方案,将 ElasticSearch、Logstash 和 Kiabana 三个开源工具配合使用, 完成更强大的用户对日志的查询、排序、统计需求。★ElasticSearch基于Lucene(一个全文检索引擎的架构)开发的分布式存储检索引擎,用来存储各类日志。Elasticsearch 是用 Java 开发的,可通过 RESTful Web 接口,让用户可以通过浏览器与Elasticsearch 通信。Elasticsearch是一个实时的、分布式的可扩展的搜索引

华为机试在线训练-牛客网(11)识别有效IP地址和掩码并分类统计_Ctrlturtle的博客-程序员宅基地

题目描述请解析IP地址和对应的掩码,进行分类识别。要求按照A/B/C/D/E类地址归类,不合法的地址和掩码单独归类。所有的IP地址划分为 A,B,C,D,E五类A类地址1.0.0.0~126.255.255.255;B类地址128.0.0.0~191.255.255.255;C类地址192.0.0.0~22

VScode常用的扩展软件_js jsx snippets_程序猿悦悦的博客-程序员宅基地

1.Auto Close Taghtml自动闭合标签插件2.Auto Rename Taghtml 自动重命名标签插件,谁用谁知道3.Beautify格式化插件4.Chinese (Simplified) vscode汉化插件5.Code Runner在编辑器里运行js代码,同时可在terminal里显示打印结果的工具,方便调试代码,支持多种语言比如 C++, Python, Java等等6.ES7 React/Redux/React-Native/JS snipp...

Swing登录功能(一)在Eclipse中使用WindowBuilder拖拽出一个登录界面(共四节).ch001_机械手学Java的博客-程序员宅基地

前言如果使用IntelliJ IDEA请参考在IntelliJ IDEA中放弃GUI Form使用JFormDesigner6.0.2设计Swing登录界面正文预览效果上图是在eclipse中使用WindowBuilder拖拽出来的效果。布局思路:1.在外层使用border布局风格的特点,可以弄出有边距的效果2.在弄出了边距过后再在中心加一个border布局...

随便推点

大无语事件:PlatformIO未切换文件项目导致ESP32烧录无效_platformlo无法烧录_当然我依旧爱你的博客-程序员宅基地

老铁们,大无语事件出现了。。。最近在学习单片机(准确地来说是Arduino),由于之前看的书都是Arduino uno这块板子,因为这个板子比较经典,在使用vscode 的PlatformIO筛选板子环境的的时候就只会有一块相同的板子跳出来但是由于之前的计划错误,我本来想用一块带有wifi通讯功能的ESP32(乐鑫公司生产)和一块教学版的山寨Arduino(不知名野鸡公司生产)相互通信,但是后来在学习的过程中发现两块板子如果都使用恒压电源进行供电工作,那就大可不必了,WiFi通讯的功能可以通过一块简

定时任务设置与执行_定时任务如何来确定某条任务需要执行定时检查操作_weixin_44549995的博客-程序员宅基地

定时任务设置与执行首先所谓的定时任务就是在指定的时间执行你需要操作的代码也就是不需要你手动地去执行只要定好任务内容触发启动条件他就会自动地按照规定的时间去完成任务内容一次或多次下面我就先讲一下怎么设置定时任务首先我们得在VS项目里引用一个定时插件如下图也就是图中的FluentScheduler插件必需要有这个插件才能完成定时任务的设置与执行没有的话可以去搜索下载引用了之后我们...

Java动态代理invoke方法自动执行的原因_loneux的博客-程序员宅基地

在动态代理中,一般的是先调用Proxy.newProxyInstance()生成代理对象,然后通过调用代理对象的对应方法来实现增强,这里假设代理了被代理对象的test()方法。其中增强的逻辑写在处理器中(InvocationHandler处理器常通过匿名内部类创建)。当调用代理对象的test方法时,处理器中的invoke方法会自动执行,这一点较难理解。以下尝试从源码的角度对动态代理的机制进行简要分析。$Proxy0类中的主体(代理对象是该类的实例)通过匿名内部类创建处理器(InvocationHand

推荐文章

热门文章

相关标签