python课程设计之酒店信息管理系统

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

 运行演示:

c058fc277e71461497900d331bed7b15.png

通过输入数字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

运行演示:

c31107584ba3406098adb197e8bf1b67.png

 (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

运行演示:

d953f3884d9542869b7ba4b398803139.png

 (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

运行实例:

670af2c98933424bab43b6815de0478b.png

修改客户信息:

#修改客户信息
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

运行实例:

95584ec382644cd5b1ef35c644fbf555.png

查询客户信息:

#查询客户信息
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

运行示例:

c9dd7dff46ef4168b98dd94fece53c79.png

  • 11
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
酒店管理系统通常需要实现以下功能:房间管理、客户管理、订单管理、财务管理等。 在Python中,可以使用各种库和框架来实现这些功能,例如使用Django或Flask来开发Web应用程序。 以下是一个简单的酒店管理系统Python代码示例: ```python # 客户类 class Customer: def __init__(self, name, phone): self.name = name self.phone = phone # 房间类 class Room: def __init__(self, room_number, room_type, price): self.room_number = room_number self.room_type = room_type self.price = price self.is_available = True def check_in(self): self.is_available = False def check_out(self): self.is_available = True # 订单类 class Order: def __init__(self, customer, room, check_in_date, check_out_date): self.customer = customer self.room = room self.check_in_date = check_in_date self.check_out_date = check_out_date def calculate_total_price(self): days = (self.check_out_date - self.check_in_date).days return days * self.room.price # 财务管理类 class Finance: def __init__(self): self.orders = [] def add_order(self, order): self.orders.append(order) def remove_order(self, order): self.orders.remove(order) def calculate_total_revenue(self): total_revenue = 0 for order in self.orders: total_revenue += order.calculate_total_price() return total_revenue ``` 以上是一个简单的示例代码,具体实现需要根据实际需求进行调整和完善。如果您有具体的问题或需要更详细的介绍,欢迎继续提问。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值