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 用户界面
在这里你可以输入你需要的指令,对酒店的房间进行一系列的操作