JAVA实现简易的酒店管理系统

设计思路

1.一个酒店所需要的对象有Hotel酒店本身、Room房间、Guest顾客
2.Hotel需要拥有的基本功能:查询所有空房、顾客入住、顾客退房、查询顾客信息
3.Guest顾客需要有的属性:name姓名、phone手机号、idcard身份证
4.Room房间需要有的属性:roomnumber房间号、guest入住的顾客
5.Hotel需要有的属性:不同楼层、多个Room房间(二维数组)

创建对象类

首先建立三个对象类Guest、Room、Hotel
和各个对象类中的成员变量

//顾客对象类
public class Guest {
    String name;//顾客姓名
    String phone;//顾客手机
    String idcard;//顾客身份证号
 }
//房间对象类
public class Room {
    int room_num;//房间编号
    Guest guest;//房间用户   
}
//Hotel酒店对象类
public class Hotel {
    //定义一个5层楼,每层5个房间的酒店
    Room[][] rooms = new Room[5][5];
}

创建对象类的构造方法

思考需不需要用到对象类的构造方法

//添加构造方法后的Room类
public class Room {
    int room_num;//房间数量
    Guest guest;//房间用户

    Room(int num){
        this.room_num=num;
    }
}
//添加构造方法后的Guest类
public class Guest {
    String name;//顾客姓名
    String phone;//顾客手机
    String idcard;//顾客身份证号

    //顾客的构造函数
    Guest(String input_name,String input_phone,String input_idcard){
        this.name=input_name;
        this.phone=input_phone;
        this.idcard=input_idcard;
    }
}

通过Hotel的构造方法给rooms编号

//添加构造方法后的Hotel类
public class Hotel {
    Room[][] rooms = new Room[5][5];


     /* 
     *给Room[][]的room_num值编号
     * 1001~1005
     * ~5001~5005
     *通过for循环实现
     */
    Hotel() {
        for (int i = 0; i < rooms.length; i++) {
            for (int j = 0; j < rooms[i].length; j++) {
                rooms[i][j] = new Room((i + 1) * 1000 + j + 1);
            }
        }
    }
}

最终代码

建立好这些构造方法之后可以按照酒店所需要的功能,依次在Hotel对象类中添加对应的方法,方法再通过主函数中的switch来实现选择

import java.util.Scanner;

// 主函数
public class Main {
    public static void main(String[] args) {
        Hotel hotel=new Hotel();
        Scanner scan=new Scanner(System.in);
        X: while (true){
            System.out.println("show查询房间  in添加信息 refer查询用户信息 out退出房  exit退出系统");
            String input=scan.next();
            String input_String=input;
            switch (input_String){
                case "refer":
                    System.out.println("输入需要查询的房间号");
                    int input_refer=scan.nextInt();
                    hotel.refer(input_refer);
                    break ;
                case "show" :
                    hotel.show();
                    break;
                case "in" :
                    System.out.println("输入房间号,姓名,手机号,身份证号");
                    hotel.in();
                    break;
                case "out":
                    System.out.println("输入要退出的房间号");
                    hotel.out();
                    break;
                case "exit":break X;
                default:
                    System.out.println("输入命令错误,请重新输入");
            }
        }

    }
}

// Hotel类
class Hotel {
    Room[][] rooms = new Room[5][5];

    //给Room[][]的room_num值编号
    Hotel() {
        for (int i = 0; i < rooms.length; i++) {
            for (int j = 0; j < rooms[i].length; j++) {
                rooms[i][j] = new Room((i + 1) * 1000 + j + 1);
            }
        }
    }

    //创建一个show查询方法,显示所有的房间信息
    void show() {
        //通过循环将房间号以二位数组形式输出
        for (int i = 0; i < rooms.length; i++) {
            for (int j = 0; j < rooms[i].length; j++) {
                System.out.print(rooms[i][j].room_num + "\t");
            }
            System.out.println();

            for (int j = 0; j < rooms[i].length; j++) {
                //判断rooms[i][j]中是否住人
                if (rooms[i][j].guest != null) {
                    //若对应房间有人住则,输出房间顾客的姓名
                    System.out.print(rooms[i][j].guest.name + "\t");
                } else {
                    //若对应的房间无人居住,则输出默认值null
                    System.out.print(rooms[i][j].guest + "\t");
                }
            }
            System.out.println();
        }
    }

    //创建一个in方法,输入房间信息
    void in() {
        //建立一个循环,通过循环控制输入异常时重新输入
        while (true) {
            Scanner scan = new Scanner(System.in);
            int input_roomnum = scan.nextInt();//输入想要入住的房间号
            String input_guestname = scan.next();//输入顾客姓名
            String input_guestphone = scan.next();//输入顾客的手机号
            String input_guestidcard = scan.next();//输入顾客的身份证号
            int i = input_roomnum / 1000 - 1;//根据对应房间号求出该值所对应的下标i
            int j = input_roomnum % 10 - 1;//根据对应房间号求出该值所对应的下标j
            if (rooms[i][j].guest != null) {
                System.out.println("该房间已有人入住,请更换房间");
            } else {
                //将输入的值以新建一个构造方法的信息填写到room[i][j]房间所对应的顾客信息中
                rooms[i][j].guest = new Guest(input_guestname,input_guestphone,input_guestidcard);
                System.out.println("入住成功");
                break;
            }
        }
    }

    //创建一个out方法,删除房间信息
    void out() {
        while (true) {
            Scanner scan = new Scanner(System.in);
            int input_roomnum = scan.nextInt();
            int i = input_roomnum / 1000 - 1;
            int j = input_roomnum % 10 - 1;
            if (rooms[i][j].guest != null) {
                //将room[i][j]房间中顾客信息都改为空值,即退房成功
                rooms[i][j].guest = null;
                System.out.println("退房成功");
                break;
            } else {
                System.out.println("退房失败,请重新输入");
            }
        }
    }


    //创建一个查询类,根据输入房间号,显示入住人员的所有信息
    void refer(int roomnum) {
        int i = roomnum / 1000 - 1;
        int j = roomnum % 10 - 1;
        if (rooms[i][j].guest != null) {
            System.out.println("姓名 : "+rooms[i][j].guest.name);
            System.out.println("手机号 : "+rooms[i][j].guest.phone);
            System.out.println("身份证号 : "+rooms[i][j].guest.idcard);
        } else {
            System.out.println("该房为空房");
        }
    }
}


//构造一个Room类
class Room {
    int room_num;//房间数量
    Guest guest;//房间用户

    Room(int num){
        this.room_num=num;
    }
}



//创建一个顾客类
class Guest {
    String name;//顾客姓名
    String phone;//顾客手机
    String idcard;//顾客身份证号

    //顾客的构造函数
    Guest(String input_name,String input_phone,String input_idcard){
        this.name=input_name;
        this.phone=input_phone;
        this.idcard=input_idcard;
    }
}

实现效果

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

评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值