酒店管理系统(Python,Json文件操作)

1. 项目概述

本文档详细描述了飞思酒店管理系统(以下简称系统)的开发需求。系统旨在提供一个高效、可靠的房间管理解决方案,以满足现代酒店业务需求,提升客户服务体验。

2. 项目背景

随着酒店业务的扩展,对房间管理的自动化和智能化需求日益增长。传统手工管理方式效率低下,容易出错,无法满足快速变化的市场需求。因此,开发一个集成化的酒店管理系统成为提升酒店运营效率的关键。

3. 功能需求

3.1 房间管理

  • 查看房间:展示所有房间的详细信息,包括楼层、房间号、房价、状态和类型。

  • 房间预订:允许用户根据房间号进行预订,并记录预订时间。

  • 房间退订:提供退订功能,将房间状态更新为空闲。

3.2 价格管理

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

3.3 数据管理

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

3.4 用户界面

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

3.5 历史记录

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

3.6 系统退出

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

4. 技术需求

  • 开发语言:Python,因其简洁和强大的库支持。

  • 数据存储:使用JSON文件存储房间信息和预订记录,便于读写和跨平台使用。

  • 兼容性:系统应在Windows、macOS和Linux环境下运行无误。

  • 安全性:实现基本的错误处理和数据验证机制,确保数据准确性和程序稳定性。

5. 代码实现

 5.1 Romm类

Room 类代表一个酒店房间,包含以下属性和方法:

属性:

  • floor: 房间所在的楼层
  • id: 房间号
  • price: 房间价格
  • type: 房间类型(如单人间、双人间、套房)
  • state: 房间状态(默认已空闲(空闲为True,已预定为False))
  • history: 记录房间的预订和退订历史
    class Room:
        def __init__(self, floor, id, price, type, state=True):
            self.floor = floor
            self.id = id
            self.price = price
            self.state = state
            self.type = type
            self.history = []  # 用于存储预订历史记录

方法:

  • reserve(): 预订房间。如果房间当前空闲,更新状态并记录预订时间和价格。
  • unsubscribe(): 退订房间。如果房间当前被预订,更新状态并记录退订时间。
  • show_history(): 显示房间的预订历史记录。
        def reserve(self):
            if self.state:
                self.state = False
                reservation_time = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
                self.history.append({
                    'action': 'reserve',
                    'time': reservation_time,
                    'price': self.price
                })
                print(f'预定成功,你的房间楼层为:{self.floor}楼,房间号为:{self.id},价格为:{self.price}元,类型为{self.type}')
            else:
                print('该房间已被预定,请你选择其他房间')
    
        def unsubscribe(self):
            if not self.state:
                self.state = True
                unsubscription_time = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
                self.history.append({
                    'action': 'unsubscribe',
                    'time': unsubscription_time
                })
                print('房间成功退订,欢迎下次光临')
            else:
                print('该房间还没有被预定,请你重新输入需要退订的房间号')
    
        def show_history(self):
            if self.history:
                for record in self.history:
                    print(record)
            else:
                print('该房间没有预订记录')

 5.2 Hotel类

Hotel 类管理所有房间,并提供以下功能:

属性:

  • rooms: 一个包含所有房间的列表
        def __init__(self):
            self.rooms = []
            self.load_data()

方法:

  • add_room(room): 添加一个房间到酒店
  • search_room(room_id): 根据房间号搜索房间,并显示其详细信息
  • modify_room(room_type, room_price): 修改指定类型房间的价格
  • reserve_room(room_id): 预订指定房间
  • unsubscribe_room(room_id): 退订指定房间
  • show_room(): 显示所有房间的信息
  • show_room_history(room_id): 显示指定房间的预订历史记录
  • save_data(): 保存房间信息到 JSON 文件
  • load_data(): 从 JSON 文件加载房间信息
        def add_room(self, room):
            self.rooms.append(room)
            self.save_data()
    
        def search_room(self, room_id):
            for room in self.rooms:
                if room.id == room_id:
                    return f'房间楼层为:{room.floor}楼,房间号为:{room.id},价格为:{room.price}元,类型为{room.type},当前状态为{room.state}'
            print('房间号搜索错误,请重新输入')
            return False
    
        def modify_room(self, room_type, room_price):
            modified = False
            for room in self.rooms:
                if room.type == room_type:
                    room.price = room_price
                    modified = True
            if not modified:
                print('没有该类型房间')
            self.save_data()
        def reserve_room(self, room_id):
            for room in self.rooms:
                if room.id == room_id:
                    room.reserve()
                    self.save_data()
                    return
            print('没有找到该房间')
        def unsubscribe_room(self, room_id):
            for room in self.rooms:
                if room.id == room_id:
                    room.unsubscribe()
                    self.save_data()
                    return
            print('没有找到该房间')
        def show_room(self):
            for room in self.rooms:
                print(room)
        def show_room_history(self, room_id):
            for room in self.rooms:
                if room.id == room_id:
                    room.show_history()
                    return
            print('没有找到该房间')
        def save_data(self):
            data = {
                'rooms': [
                    {
                        'floor': room.floor,
                        'id': room.id,
                        'price': room.price,
                        'state': room.state,
                        'type': room.type,
                        'history': room.history
                    }
                    for room in self.rooms
                ]
            }
            with open('hotel_data.json', 'w') as f:
                json.dump(data, f, ensure_ascii=False, indent=4)
        def load_data(self):
            try:
                with open('hotel_data.json', 'r') as f:
                    data = json.load(f)
                    self.rooms = [
                        Room(
                            floor=room['floor'],
                            id=room['id'],
                            price=room['price'],
                            type=room['type'],
                            state=room['state']
                        )
                        for room in data.get('rooms', [])
                    ]
                    for room, room_data in zip(self.rooms, data.get('rooms', [])):
                        room.history = room_data.get('history', [])
            except FileNotFoundError:
                self.rooms = []

6. 系统功能界面 

6.1 初始化

首先,我们初始化一些酒店信息到酒店管理列表中去

hotel = Hotel()
    # Initialize some rooms
    hotel.add_room(Room(floor=1, id=101, price=200, type='Single'))
    hotel.add_room(Room(floor=1, id=102, price=250, type='Double'))
    hotel.add_room(Room(floor=2, id=201, price=300, type='Suite'))

6.2 功能界面

    while True:
        print('欢迎来到飞思酒店管理系统')
        n = int(input('请输入您需要的指令:1.预定房间,2.退订房间,3.修改价格,4.查看房间信息,5.查看所有房间,6.查看房间预订历史,7.退出 :'))
        if n == 1:
            room_id = int(input('请输入你需要预定的房间号:'))
            hotel.reserve_room(room_id)
        elif n == 2:
            room_id = int(input('请输入你需要退订的房间号:'))
            hotel.unsubscribe_room(room_id)
        elif n == 3:
            room_type = input('请输入你要修改的房间类型:')
            room_price = int(input('请输入你要修改的价格:'))
            hotel.modify_room(room_type, room_price)
        elif n == 4:
            room_id = int(input('请输入你需要查看的房间号:'))
            print(hotel.search_room(room_id))
        elif n == 5:
            hotel.show_room()
        elif n == 6:
            room_id = int(input('请输入你需要查看预订历史的房间号:'))
            hotel.show_room_history(room_id)
        elif n == 7:
            break

 6.3 用户界面

在这里你可以输入你需要的指令,对酒店的房间进行一系列的操作

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值