python基础#面向对象简单案例-酒店管理系统

功能需求

1 房间管理

  • 查看房间:展示所有房间的详细信息,包括楼层、房间号、房价、状态和类型。
  • 房间预订:允许用户根据房间号进行预订,并记录预订时间。
  • 房间退订:提供退订功能,将房间状态更新为空闲。

2 价格管理

  • 价格修改:允许管理员根据房间类型修改房价,并更新所有相应房间的价格。

3 数据管理

  • 数据加载与保存:系统能够从JSON文件加载房间数据,并在操作后保存更改。

4 用户界面

  • 命令行界面:提供简洁的命令行界面供用户进行操作。

5 历史记录

  • 查看预订历史:允许用户查看房间的预订历史记录。

6 系统退出

  • 安全退出:用户完成操作后,可以安全退出系统,并保存所有数据。

代码实现思路

1.数据持久化

  • 使用Python的json模块进行数据的加载和保存,确保系统能够正确读取和写入房间数据。

2.用户交互

  • 通过命令行输入接收用户指令,实现与用户的交互。

3.功能实现

  • 查看房间:遍历房间列表并打印每个房间的详细信息。
  • 预订房间:检查房间状态,若为空闲则记录预订信息和时间。
  • 退订房间:更新房间状态为空闲,并记录退订操作。
  • 修改价格:更新指定类型房间的价格,并反映在所有该类型房间上。
  • 查看预订历史:展示指定房间的所有预订记录。

4.程序结构

  • 主函数循环提供菜单选项,根据用户输入执行相应功能。

代码实现

由于需要保持数据持久化,我们事先将需要用到的数据保存到json文件中
请添加图片描述

1.设计一个Hotle类来管理房间集合,提供加载、保存房间数据,以及搜索、预订、退订和修改价格等方法。

  • 初始化
    def __init__(self):
        self.rooms = []
  • 显示所有房间信息
    def show_rooms(self):
        """
        显示所有房间信息
        :return:
        """
        for room in self.rooms:
            print(room)
  • 保存房间信息
    def save_rooms(self):
        """
        保存房间信息
        :return:
        """
        try:
            with open('rooms.json', 'w', encoding='utf-8') as f:
                json.dump(self.rooms, f, ensure_ascii=False, indent=4)
        except Exception as e:
            print(f"保存房间信息失败:{e}")
  • 加载房间信息
    def load_rooms(self):
        """
        加载房间信息
        :return:
        """
        try:
            with open('rooms.json', 'r', encoding='utf-8') as f:
                self.rooms = json.load(f)
        except Exception as e:
            print(f"加载房间信息失败:{e}")
  • 搜索房间
    def search_rooms(self, number):
        """
        搜索房间
        :param number:
        :return:
        """
        for room in self.rooms:
            if room['number'] == number:
                return room
        return f"房间{number}不存在"
  • 预订房间
    def reserve_room(self, number):
        """
        预订房间
        :param number:
        :return:
        """
        room = self.search_rooms(number)
        if room:
            if room['status'] == '空闲':
                room['status'] = '预订'
                self.save_booking_history(number)
                return f"房间{number}已成功预订于{datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')}"
            else:
                return f"房间{number}当前状态为{room['status']},无法预订"
  • 取消预订房间
    def cancel_room(self, number):
        """
        取消预订房间
        :param number:
        :return:
        """
        room = self.search_rooms(number)
        if room:
            if room['status'] == '预订':
                room['status'] = '空闲'
                return f"房间{number}已成功取消预订"
            else:
                return f"房间{number}当前状态为{room['status']},无法取消预订"
  • 更新房间价格
    def update_room_price(self, room_type, price):
        """
        更新房间价格
        :param number:
        :param price:
        :return:
        """
        if not room_type.strip():
            return "修改房间类型不能为空"
        if price.strip():
            return "修改价格不能为空"
        for room in self.rooms:
            if room['room_type'] == room_type:
                room['price'] = int(price)
        return f"房间类型{room_type}的价格已成功更新为{price}"
  • 查看房间预订历史
    def show_room_history(self, number):
        """
        查看房间预订历史
        :param number:
        :return:
        """
        for room in self.rooms:
            if room['number'] == number:
                if room['booking_history']:
                    return f"房间{number}的预定历史如下:\n{room['booking_history']}"
                else:
                    return f"房间{number}的预定历史为空"
        return f"房间{number}不存在"
  • 保存预订历史
    def save_booking_history(self, number):
        """
        保存预订历史
        :param number:
        :return:
        """
        room = self.search_rooms(number)
        if room:
            if room['status'] == '预订':
                now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
                room['booking_history'].append(now)
                return f"房间{number}的预定历史已成功保存"
        else:
            return f"房间{number}不存在"

2.main类主函数循环提供菜单选项,根据用户输入执行相应功能。

hotel = Hotel()
#加载json文件数据
hotel.load_rooms()

while True:
    print("--欢迎使用酒店管理系统V1.0--")
    print("1. 查看所有房间")
    print("2. 预订房间")
    print("3. 退订房间")
    print("4. 修改价格")
    print("5. 查看房间历史记录")
    print("0. 退出系统")

    choice = input("请输入您的选择:")

    if choice == "1":
        print(hotel.show_rooms())

    elif choice == "2":
        print("--预订房间--")
        no = int(input("请输入房间号:"))
        print(hotel.reserve_room(no))
        hotel.save_rooms()
    elif choice == "3":
        print("--退订房间--")
        no = int(input("请输入房间号:"))
        print(hotel.cancel_room(no))
        hotel.save_rooms()

    elif choice == "4":
        print("--修改价格--")
        room_type = input("请输入房间类型以修改价格:")
        price = input("请输入新的价格:")
        print(hotel.update_room_price(room_type, price))
        hotel.save_rooms()

    elif choice == "5":
        print("--查看房间历史记录--")
        no = int(input("请输入房间号:"))
        print(hotel.show_room_history(no))

    elif choice == "0":
        break

    else:
        print("输入错误,请重新输入!")

实现结果

请添加图片描述
在这里插入图片描述

请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值