1.系统功能流程图
2.具体代码实现
(1)后台客户信息表
录入客户信息
ls=[['姓名','性别','年龄','房间号','房间类型','预计入住时间','实际入住时间','退房时间''手机号'],\
['张三','男','22','101','单人间','2023-06-21','2023-06-23','2023-06-25','18811223344'],\
['李四','男','31','202','豪华间','2023-06-15','2023-06-22','2023-06-24''13599885645'],\
['王五','男','44','308','商务间','2023-06-17','2023-06-19','2023-06-26''15465326987'],\
['王柳','女','26','404','标间','2023-06-14','2023-06-15','2023-06-17''17851756235'],\
['肖明','男','29','405','标间','2023-06-15','2023-06-16','2023-06-20''13565452365'],\
['李强','男','27','306','商务间','2023-06-16','2023-06-18','2023-06-19''13456325986'],\
['何丽','女','24','309','商务间','2023-06-20','2023-06-21','2023-06-23''17854632236'],\
['李静','女','29','112','单人间','2023-06-15','2023-06-16','2023-06-19''15455623265']]
with open('hotel.csv','w')as f:
for i in ls:
f.write(','.join(i)+'\n')
先将客户信息储存在列表中,再写入csv文件中,作为初始的已入住的客户信息表
(2)功能页面设计
主页面:
# 总菜单界面
def menu_total():
print('+', '——' * 20, '+')
for i in range(10):
if i == 0:
print('|', '=' * 8, '~~欢迎使用酒店管理系统~~', '=' * 9, '|')
elif i == 3:
print('{:<5}{:>20}{:>15}'.format('|', '*1.员工端', '|'))
elif i == 4:
print('{:<5}{:>20}{:>15}'.format('|', '*2.用户端', '|'))
elif i == 5:
print('{:<5}{:>20}{:>15}'.format('|', '*3.退出系统', '|'))
print('{:<5}{:>20}{:>19}'.format('|', ' ', '|'))
print('+', '——' * 20, '+')
#操作总菜单
def main_total():
while True:
menu_total()
pattern = input('请输入您要执行操作的对应编号(1/2/3):')
pattern = pattern.strip()
if pattern == '1':
print(main_stuff())
elif pattern == '2':
print(main_customer())
else:
break
运行演示:
通过输入数字1,2,3选择要进行的具体操作,输入1进入员工端,输入2进入用户端,输入3退出该系统
(3)员工端页面设计
# 客户端主菜单界面
def menu_stuff():
print('+', '——' * 20, '+')
for i in range(10):
if i == 0:
print('|', '=' * 8, '~~欢迎使用酒店管理系统~~', '=' * 9, '|')
elif i == 3:
print('{:<5}{:>20}{:>15}'.format('|', '*1.添加客户信息', '|'))
elif i == 4:
print('{:<5}{:>20}{:>15}'.format('|', '*2.修改客户信息', '|'))
elif i == 5:
print('{:<5}{:>20}{:>15}'.format('|', '*3.查询客户信息', '|'))
elif i == 6:
print('{:<5}{:>20}{:>15}'.format('|', '*0.退出管理系统', '|'))
print('{:<5}{:>20}{:>19}'.format('|', ' ', '|'))
print('+', '——' * 20, '+')
#客户端操作页面
def main_stuff():
while True:
menu_stuff()
pattern = input('请输入您要执行操作的对应编号(1/2/3/0):')
pattern = pattern.strip()
if pattern == '1':
print(add())
elif pattern == '2':
print(change())
elif pattern == '3':
print(search())
elif pattern == '0':
break
else:
print('输入错误,请重新输入...')
print()
print('*' * 9, '~~酒店管理系统结束~~', '*' * 10)
return
运行演示:
(4)客户端页面设计
def menu_customer():
print('+', '——' * 20, '+')
for i in range(10):
if i == 0:
print('|', '=' * 8, '~~欢迎使用用户酒店管理系统~~', '=' * 9, '|')
elif i == 3:
print('{:<5}{:>20}{:>15}'.format('|', '*1.查询房间信息', '|'))
elif i == 4:
print('{:<5}{:>20}{:>15}'.format('|', '*2.选择预定房间', '|'))
elif i == 5:
print('{:<5}{:>20}{:>15}'.format('|', '*3.修改预定信息', '|'))
elif i == 6:
print('{:<5}{:>20}{:>15}'.format('|', '*0.退出管理系统', '|'))
print('{:<5}{:>20}{:>19}'.format('|', ' ', '|'))
print('+', '——' * 20, '+')
#客户端菜单
def main_customer():
while True:
menu_customer()
pattern = input('请输入您要执行操作的对应编号(1/2/3/4/0):')
pattern = pattern.strip()
if pattern == '1':
search_customer()
elif pattern == '2':
reserve()
elif pattern == '3':
change_customer()
elif pattern == '0':
break
else:
print('输入错误,请重新输入...')
print()
print('*' * 9, '~~用户端酒店管理系统结束~~', '*' * 10)
return
运行演示:
(5)员工端功能设计
添加客户信息:
添加客户信息
def add():
while True:
while True:
student_name=input("请输入客户姓名:")
student_name=student_name.strip()
if len(student_name) == 0:
print('姓名不能为空!2请重新输入')
else:
break
while True:
student_id=input("请输入客户性别:")
student_id=student_id.strip()
if len(student_id)==0:
print('性别不能为空!请重新输入')
else:
break
while True:
classes = input('请输入客户年龄:')
classes = classes.strip()
if len(classes) == 0:
print('年龄不能为空!请重新输入')
elif not classes.isdigit():
print('年龄格式输入有误!请重新输入')
else:
break
while True:
dorm_num = input('请输入房间号:')
dorm_num = dorm_num.strip()
if len(dorm_num) == 0:
print('房间号不能为空!')
elif len(dorm_num) != 3:
print('房间号输入格式不正确!')
else:
break
while True:
bed_num = input('请输入房间类型:')
bed_num = bed_num.strip()
if len(bed_num) == 0:
print('房间类型不能为空!请重新输入')
else:
break
while True:
qingkuang = input('请输入入住情况:')
qingkuang = qingkuang.strip()
if len(qingkuang) == 0:
print('入住情况不能为空!请重新输入')
else:
break
while True:
tel_num = input('请输入电话号码:')
if len(tel_num) == 0:
print('电话不能为空!')
if len(tel_num) !=11:
print('电话格式输入有误!')
else:
break
addinformation = [student_name, student_id, classes,
dorm_num, bed_num,qingkuang, tel_num]
with open('hotel.csv','a') as f:
f.write(','.join(addinformation)+'\n')
answer = input('是否继续添加...(Y/N)').lower()
if answer == 'y':
continue
elif answer == 'n':
print('退出添加...')
break
return
运行实例:
修改客户信息:
#修改客户信息
def change():
while True:
f=open('hotel.csv', 'r')
a=[]
for line in f:
a.append(line.split(','))
name=input("要修改的旅客信息的旅客姓名:")
for ids in a:
if ids[0]==name:
pattern = input('请输入要修改的选项(返回/继续)')
if pattern == "返回":
print('返回选项...')
return change()
elif pattern=="继续":
print(ids)
while True:
s=input("修改姓名\性别\年龄\房间号\房间类型\入住情况\手机号")
if s=="姓名":
ids[0]=input("姓名")
elif s=="性别":
ids[1]=input("性别")
elif s=="年龄":
ids[2]=input("年龄")
elif s=="房间号":
ids[3]=input("房间号")
elif s=="房间类型":
ids[4]=input("房间类型")
elif s=="入住情况":
ids[5]=input("入住情况")
elif s=="手机号":
ids[6]=input("手机号")
ids[6]+='\n'
else:
print("无该选项")
f.close()
f=open('hotel.csv', 'w')
for j in a:
f.write(",".join(j))
answer = input('是否继续修改该旅客信息...(Y/N)').lower()
if answer == 'y':
print("继续修改")
elif answer == 'n':
print('退出修改...')
break
else:
print('无该选项...')
break
else:
print('该旅客不存在!')
f.close()
answer = input('是否继续修改...(Y/N)').lower()
if answer == 'y':
change()
elif answer == 'n':
print('退出修改...')
break
运行实例:
查询客户信息:
#查询客户信息
def search():
with open('hotel.csv', 'r') as f:
lines = f.readlines()
while True:
keywords = input('请输入要查找的客户姓名或房间号:')
found = False
for line in lines:
if keywords in line:
print(line)
found = True
if not found:
print('您要查找的信息不存在')
answer = input('是否继续查找?(Y/N)').lower()
if answer != 'y':
print('退出查找...')
break
return 0
运行示例:
(6)用户端功能设计
查询房间信息:
#客户查询房间信息
def search_customer():
rooms = {
"单人间": 150,
"标准间": 250,
"豪华间": 400,
"商务间": 600
}
for room, price in rooms.items():
print(f"{room}: {price}元/晚")
return
运行示例:
选择预定房间:
#客户预定房间
def reserve():
rooms = {
"单人间": 150,
"标准间": 250,
"豪华间": 400,
"商务间": 600}
while True:
while True:
name = input('请输入您的姓名')
name =name.strip()
if len(name) == 0:
print('姓名不能为空!请重新输入')
else:
break
while True:
gender=input('请输入您的性别:')
gender =gender.strip()
if len(gender) == 0:
print('性别不能为空!请重新输入')
else:
break
while True:
age = input('请输入您的年龄:')
age = age.strip()
if len(age) == 0:
print('年龄不能为空!请重新输入')
elif not age.isdigit():
print('年龄格式输入有误!请重新输入')
else:
break
while True:
import random
booked_rooms = [101,112,202,306,308,309,404]
room_type = input("请输入房间类型(单人间/标准间/商务间/豪华间):")
if room_type == "单人间":
while True:
room_number = random.randint(100, 110)
if room_number not in booked_rooms:
booked_rooms.append(room_number)
break
elif room_type == "标准间":
while True:
room_number = random.randint(400, 410)
if room_number not in booked_rooms:
booked_rooms.append(room_number)
break
elif room_type == "商务间":
while True:
room_number = random.randint(300, 310)
if room_number not in booked_rooms:
booked_rooms.append(room_number)
break
elif room_type == "豪华间":
while True:
room_number = random.randint(200, 210)
if room_number not in booked_rooms:
booked_rooms.append(room_number)
break
else:
print("抱歉,不支持该类型房间")
if room_type in ["单人间", "标准间", "商务间", "豪华间"]:
print("分配给您的", room_type, "的房间号码是:", room_number)
break
while True:
import time
current_time = time.localtime()
nights = int(input("请输入入住天数:"))
checkout_time = time.strftime("%Y-%m-%d", time.localtime(time.time() + nights * 86400))
print("预计入住时间为:", checkout_time)
break
while True:
tel_nums = input('请输入电话号码:')
if len(tel_nums) == 0:
print('电话不能为空!')
if len(tel_nums) !=11:
print('电话格式输入有误!')
else:
break
information = [name, gender,age, room_number,room_type,checkout_time, 0,0,
tel_nums]
with open('hotel.csv','a') as f:
f.write(','.join(str(information))+'\n')
answer = input('是否继续添加...(Y/N)').lower()
if answer == 'y':
continue
elif answer == 'n':
print('预约房间成功,已退出预约...')
break
return
运行示例:
修改预定信息:
#客户修改预定信息
def change_customer():
with open('hotel.csv', 'r') as f:
lines = f.readlines()
s = []
for line in lines:
s.append(line.split(','))
name_change = input('请输入要修改信息的客户姓名:')
found = False
for i in s:
if name_change == i[0]:
found = True
while True:
choice = input("请输入您要修改的选项(房间类型/入住天数/电话号码):")
if choice == '房间类型':
i[4] = input('请输入您需要的房间类型:')
print('修改成功!')
elif choice == '入住天数':
import time
current_time = time.localtime()
nights = int(input("请输入入住天数:"))
checkout_time = time.strftime("%Y-%m-%d", time.localtime(time.time() + nights * 86400))
i[5] = checkout_time
print('修改成功!')
elif choice == '电话号码':
i[8] = input('请输入新的电话号码:')
i[8] += '\n'
print('修改成功!')
else:
print('无该选项...')
break
if not found:
print('该姓名不存在!')
answer = input('是否继续修改?(Y/N)').lower()
if answer == 'y':
change_customer()
return 0
运行示例: