写点什么

Python 电影售票系统

作者:漫步桔田
  • 2023-02-25
    北京
  • 本文字数:12766 字

    阅读完需:约 42 分钟

一、系统要求

电影售票系统程序,应具备以下几点功能:

1.用户认证

系统用户分为用户、管理员两个角色,系统可根据不同用户角色权限进入不同界面,所有用户角色需要通过身份验证才能登录系统进行操作。

2.用户登录

主要实现用户登录系统可查看本人会员信息、购买影票、查看订票、影票退订、修改信息等功能。

3.管理登录

主要实现管理员登录系统可查看会员和管理信息、添加会员、注销会员、查看购票、影票出售、影票退订、查看影票余票和售票、增删管理、增删影片、修改信息等功能。

二、管理系统

1.管理系统

import json,time,refrom managements import management_loginfrom users import users_loginfrom registered import registeredfrom back import backread_movie = open('movie.json', 'r', encoding='utf-8')movie = json.loads(read_movie.read())read_user = open('user.json', 'r', encoding='utf-8')user = json.loads(read_user.read())read_management = open('management.json', 'r', encoding='utf-8')management = json.loads(read_management.read())read_ticket_record = open('ticket_record.json', 'r', encoding='utf-8')ticket_record = json.loads(read_ticket_record.read()) def movie_tickets():    while True:        permissions = input('请您选择用户操作(1.用户登录 2.注册用户 3. 找回密码 4.退出系统):')        if permissions == '1':            while True:                login = input('请您选择登录权限(1.个人登录 2.管理登录 3.退出登录):')                if login == '1':                    users_login(user, movie, ticket_record)                elif login == '2':                    management_login(management, user, movie, ticket_record)                elif login == '3':                    break         elif permissions == '2':            registered(user)        elif permissions == '3':            back(management, user)        elif permissions == '4':            break  movie_tickets() save = open('movie.json', 'w', encoding='utf-8')json.dump(movie, save, ensure_ascii=False, indent=4)save = open('user.json', 'w', encoding='utf-8')json.dump(user, save, ensure_ascii=False, indent=4)save = open('management.json', 'w', encoding='utf-8')json.dump(management, save, ensure_ascii=False, indent=4)save = open('ticket_record.json', 'w', encoding='utf-8')json.dump(ticket_record, save, ensure_ascii=False, indent=4)
复制代码

2.管理登录

import  time, reoperation = '''********欢迎使用漫漫影院系统*********  1.查看信息  2.添加会员  3.注销会员   4.查看购票  5.影票出售  6.影票退订  7.查看余票  8.增删管理  9.增删影片  10.销售记录 11.修改信息 12.退出系统*********************************''' def management_login(a, b, c, d):    account = input('请您输入账号:')    password = input('请您输入密码:')    if account in a:        if a[account][0] == password:            time.sleep(0.5)            print('密码正确,登录成功!')            while True:                print(operation)                choose = input('请您选择操作选项:')                 if choose == '1':                    while True:                        query = input('请你选择查询选项(1.查询会员 2.查询管理 3.退出查询):')                        if query == '1':                            for i in b:                                time.sleep(0.5)                                print('会员卡号:{}、会员昵称:{}、会员性别:{}、手机号码:{}'.format                                      (i, b[i][1], b[i][2], b[i][3]))                        elif query =='2':                            for i in a:                                time.sleep(0.5)                                print('管理账号:{}、管理昵称:{}、管理性别:{}、手机号码:{}'.format                                      (i, a[i][1], a[i][2], a[i][3]))                        elif query == '3':                            break                 elif choose == '2':                    while True:                        add = input('是否需要添加会员(1.需要 2.退出):')                        if add == '2':                            break                        else:                            name = input('请您输入会员昵称:')                            gender = input('请您输入会员性别:')                            phone = input('请您输入手机号码:')                            password = input('请您输入登录密码:')                            account = []                            for i in b:                                account.append(int(i))                            account.sort()                            b[str(account[-1] + 1)] = [password, name, gender, phone]                            time.sleep(0.5)                            print('注册成功!')                            time.sleep(0.5)                            print('会员卡号:{}、登录密码:{}、会员昵称:{}、会员性别:{}、手机号码:{}'.format                                  (str(account[-1] + 1), password,  name, gender,phone))                 elif choose == '3':                    while True:                        delete = input('是否需要注销会员(1.需要 2.取消):')                        if delete == '2':                            break                        cancel = input('请您输入需要注销会员卡号:')                        if cancel not in b:                            print('卡号输入有误!')                        else:                            del b[cancel]                            time.sleep(0.5)                            print('会员注销成功!')                 elif choose == '4':                    while True:                        query = input('请您选择查询操作(1.查询个人 2.查询全部 3.退出查询):')                        if query == '1':                            query_personal = input('请您输入需要查询会员卡号:')                            if query_personal in d:                                for i in d[query_personal]:                                    time.sleep(0.5)                                    print('会员卡号:{}、会员昵称:{}、购票影片:{}、影厅座位:{}'.format                                          (query_personal, b[query_personal][1], i, ' '.join(d[query_personal][i])))                            else:                                print('未查询到购票信息!')                        elif query == '2':                            for x in d:                                for y in d[x]:                                    if x in b:                                        time.sleep(0.5)                                        print('会员卡号:{}、会员昵称:{}、购票影片:{}、影厅座位:{}'.format                                              (x, b[x][1], y, ' '.join(d[x][y])))                                    else:                                        time.sleep(0.5)                                        print('会员卡号:{}、会员昵称:{}、购票影片:{}、影厅座位:{}'.format                                              (x, a[x][1], y, ' '.join(d[x][y])))                         elif query == '3':                            break                 elif choose == '5':                    card_number = ''                    judge = input('是否有会员卡(1.有卡 2.无卡):')                    if judge == '1':                        card_number = input('请您输入会员卡号:')                    elif judge == '2':                        card_number = account                    time.sleep(0.5)                    print('*' * 3 + '电影放映表' + '*' * 3)                    for x, y in list(enumerate(c, 1)):                        print(x, y['name'])                    print('*' * 13)                     time.sleep(0.5)                    buy = int(input('请您选择电影场次:'))                    print('*' * 8 + '电影信息' + '*' * 8)                    print('影名:{}'.format(c[buy - 1]['name']))                    print('类别:{}'.format(c[buy - 1]['category']))                    print('导演:{}'.format(c[buy - 1]['director']))                    print('演员:{}'.format(c[buy - 1]['actor']))                    print('*' * 23)                     while True:                        time.sleep(0.5)                        print('*' * 13 + '影厅座位' + '*' * 13)                        for i in c[buy - 1]['seat']:                            print('  '.join(i))                        print('*' * 32)                        ticket = input('是否继续购票(1.继续 2.退出):')                        if ticket == '2':                            break                         line_numbers = int(input('请您选择影厅行号:'))                        seat_numbers = int(input('请您选择影厅座号:'))                        if c[buy - 1]['seat'][line_numbers][seat_numbers] == '■':                            print('不好意思,座位已选!')                        else:                            c[buy - 1]['seat'][line_numbers][seat_numbers] = '■'                            time.sleep(0.5)                            print('购票成功,电影名:{} 座位号:{}排{}号'.format                                  (c[buy - 1]['name'], line_numbers, seat_numbers))                             if card_number in d and c[buy - 1]['name'] in d[card_number]:                                d[card_number][c[buy - 1]['name']].append(                                    '{}排{}号'.format(line_numbers, seat_numbers))                            elif card_number in d and c[buy - 1]['name'] not in d[card_number]:                                d[card_number][c[buy - 1]['name']] = [                                    '{}排{}号'.format(line_numbers, seat_numbers)]                            else:                                d[card_number] = {                                    c[buy - 1]['name']: ['{}排{}号'.format(line_numbers, seat_numbers)]}                 elif choose == '6':                    while True:                        unsubscribe = input('是否需要退订影票(1.需要 2.退出):')                        if unsubscribe == '2':                            break                        else:                            card_number = input('请您输入会员卡号:')                            for i in d[card_number]:                                if card_number in b:                                    time.sleep(0.5)                                    print('卡号:{} 昵称:{} 影名:{} 座位:{}'.format                                          (card_number, b[card_number][1], i, ' '.join(d[card_number][i])))                                else:                                    time.sleep(0.5)                                    print('卡号:{} 昵称:{} 影名:{} 座位:{}'.format                                          (card_number, a[card_number][1], i, ' '.join(d[card_number][i])))                            name = dict(enumerate(d[card_number], 1))                            for i in name:                                print(i, name[i])                            movie_number = int(input('请您选择需要退票电影序号:'))                            number = dict(enumerate(d[card_number][name[movie_number]], 1))                            for i in number:                                print(i, number[i])                            seat_number = int(input('请您选择需要退票电影座位:'))                            message = re.findall(r'\d+', number[seat_number])                            for i in c:                                if name[movie_number] == i['name']:                                    i['seat'][int(message[0])][int(message[1])] = '□'                            d[card_number][name[movie_number]].remove(number[seat_number])                            time.sleep(0.5)                            print('退票成功!')                            if not d[card_number][name[movie_number]]:                                del d[card_number][name[movie_number]]                 elif choose == '7':                    more_ticket = []                    for x in range(len(c)):                        number = 0                        for y in c[x]['seat']:                            number += y.count('□')                        more_ticket.append(number)                        time.sleep(0.5)                        print('影名:{}-余票:{}张'.format(c[x]['name'], more_ticket[x]))                 elif choose == '8':                    while True:                        options = input('请您选择操作选项(1.添加管理 2.删除管理 3.退出系统):')                        if options == '1':                            name = input('请您输入管理昵称:')                            gender = input('请您输入管理性别:')                            phone = input('请您输入手机号码:')                            password = input('请您输入登录密码:')                            account = []                            for i in a:                                account.append(int(i))                            account.sort()                            a[str(account[-1] + 1)] = [password, name, gender, phone]                            time.sleep(0.5)                            print('注册成功!')                            time.sleep(0.5)                            print('管理账号:{}、登录密码:{}、管理昵称:{}、管理性别:{}、手机号码:{}'.format                                  (str(account[-1] + 1), password, name, gender, phone))                        elif options == '2':                            while True:                                delete = input('是否继续删除管理员(1.继续 2.退出):')                                if delete == '2':                                    break                                else:                                    card = input('请您输入删除管理员卡号:')                                    del a[card]                                    time.sleep(0.5)                                    print('删除成功!')                        elif options == '3':                            break                 elif choose == '9':                    while True:                        options = input('请您选择操作选项(1.添加影片 2.删除影片 3.退出系统):')                        if options == '1':                            name = input('请您输入影名:')                            category = input('请您输入类别:')                            director = input('请您输入导演:')                            actor = input('请您输入演员:')                            seat = [[' ', '1', '2', '3', '4', '5', '6', '7', '8', '9', ' '],                                    ['1', '□', '□', '□', '□', '□', '□', '□', '□', '□', '1'],                                    ['2', '□', '□', '□', '□', '□', '□', '□', '□', '□', '2'],                                    ['3', '□', '□', '□', '□', '□', '□', '□', '□', '□', '3'],                                    ['4', '□', '□', '□', '□', '□', '□', '□', '□', '□', '4'],                                    ['5', '□', '□', '□', '□', '□', '□', '□', '□', '□', '5'],                                    ['6', '□', '□', '□', '□', '□', '□', '□', '□', '□', '6'],                                    [' ', '1', '2', '3', '4', '5', '6', '7', '8', '9', ' ']]                            c.append({'name': name, 'category': category, 'director': director, 'actor': actor,                                      'seat': seat})                            time.sleep(0.5)                            print('添加影片成功!')                        elif options == '2':                            for x, y in list(enumerate(c, 1)):                                print(x, y['name'])                            delete = int(input('请您选择需要删除影片序号:'))                            c.pop(delete - 1)                            time.sleep(0.5)                            print('影片删除成功!')                        elif options == '3':                            break                 elif choose == '10':                    sales_ticket = []                    for x in range(len(c)):                        number = 0                        for y in c[x]['seat']:                            number += y.count('■')                        sales_ticket.append(number)                        time.sleep(0.5)                        print('影名:{}-售出:{}张'.format(c[x]['name'], sales_ticket[x]))                elif choose == '11':                    print('管理卡号:{}、管理昵称:{}、管理性别:{}、手机号码:{}'.format                          (account, a[account][1], a[account][2], a[account][3]))                    while True:                        continues = input('是否需要修改信息(1.需要 2.退出)')                        if continues == '2':                            break                        else:                            modify = input('请您选择修改选项(1.管理昵称 2.管理性别 3.手机号码):')                            if modify == '1':                                a[account][1] = input('请您输入管理昵称:')                            elif modify == '2':                                a[account][2] = input('请您输入管理性别:')                            elif modify == '3':                                a[account][3] = input('请您输入手机号码:')                            time.sleep(0.5)                            print('信息修改成功!')                 elif choose == '12':                    break        else:            print('密码错误,登录失败!')    else:        print('账号错误,请您核对!')
复制代码

3.用户登录

import re, time def users_login(x, y, z):    account = input('请您输入账号:')    password = input('请您输入密码:')    if account in x:        if x[account][0] == password:            time.sleep(0.5)            print('密码正确,登录成功!')            while True:                operation = input('请您选择操作(1.会员信息 2.购买影票 3.购票信息 4.影票退订 5.修改信息 6.退出系统):')                 if operation == '1':                    time.sleep(0.5)                    print('*' * 7 + '会员信息' + '*' * 7)                    print('会员卡号:{}'.format(account))                    print('会员昵称:{}'.format(x[account][1]))                    print('会员性别:{}'.format(x[account][2]))                    print('手机号码:{}'.format(x[account][3]))                    print('*' * 21)                 elif operation == '2':                    time.sleep(0.5)                    print('*' * 3 + '电影放映表' + '*' * 3)                    for a, b in list(enumerate(y, 1)):                        print(a, b['name'])                    print('*' * 13)                     buy = int(input('请您选择电影场次:'))                    time.sleep(0.5)                    print('*' * 8 + '电影信息' + '*' * 8)                    print('影名:{}'.format(y[buy - 1]['name']))                    print('类别:{}'.format(y[buy - 1]['category']))                    print('导演:{}'.format(y[buy - 1]['director']))                    print('演员:{}'.format(y[buy - 1]['actor']))                    print('*' * 23)                     while True:                        time.sleep(0.5)                        print('*' * 13 + '影厅座位' + '*' * 13)                        for i in y[buy - 1]['seat']:                            print('  '.join(i))                        print('*' * 32)                        choose = input('是否继续购票(1.继续 2.退出):')                        if choose == '2':                            break                        line_numbers = int(input('请您选择影厅行号:'))                        seat_numbers = int(input('请您选择影厅座号:'))                        if y[buy - 1]['seat'][line_numbers][seat_numbers] == '■':                            print('不好意思,座位已选!')                        else:                            y[buy - 1]['seat'][line_numbers][seat_numbers] = '■'                            time.sleep(0.5)                            print('购票成功,电影名:{} 座位号:{}排{}号'.format(y[buy - 1]['name'], line_numbers, seat_numbers))                            if account in z and y[buy - 1]['name'] in z[account]:                                z[account][y[buy - 1]['name']].append(                                    '{}排{}号'.format(line_numbers, seat_numbers))                            elif account in z and y[buy - 1]['name'] not in z[account]:                                z[account][y[buy - 1]['name']] = [                                    '{}排{}号'.format(line_numbers, seat_numbers)]                            else:                                z[account] = {                                    y[buy - 1]['name']: ['{}排{}号'.format(line_numbers, seat_numbers)]}                 elif operation == '3':                    if account in z:                        for i in z[account]:                            time.sleep(0.5)                            print('卡号:{} 昵称:{} 影名:{} 座位:{}'.format                                  (account, x[account][1], i,' '.join(z[account][i])))                    else:                        print('未查询到购票信息')                elif operation == '4':                    if account in z:                        for i in z[account]:                            time.sleep(0.5)                            print('卡号:{} 昵称:{} 影名:{} 座位:{}'.format(account, x[account][1], i,                                                                   ' '.join(z[account][i])))                    print('未查询到订票信息')                     while True:                        unsubscribe = input('是否需要退订影票(1.需要 2.退出):')                        if unsubscribe == '2':                            break                        else:                            name = dict(enumerate(z[account], 1))                            for i in name:                                print(i, name[i])                            movie_number = int(input('请您选择需要退票电影序号:'))                            number = dict(enumerate(z[account][name[movie_number]], 1))                            for i in number:                                print(i, number[i])                            seat_number = int(input('请您选择需要退票电影座位:'))                            message = re.findall(r'\d+', number[seat_number])                            for i in y:                                if name[movie_number] == i['name']:                                    i['seat'][int(message[0])][int(message[1])] = '□'                            z[account][name[movie_number]].remove(number[seat_number])                            time.sleep(0.5)                            print('退票成功!')                            if not z[account][name[movie_number]]:                                del z[account][name[movie_number]]                 elif operation == '5':                    time.sleep(0.5)                    print('*' * 7 + '会员信息' + '*' * 7)                    print('会员卡号:{}'.format(account))                    print('会员昵称:{}'.format(x[account][1]))                    print('会员性别:{}'.format(x[account][2]))                    print('手机号码:{}'.format(x[account][3]))                    print('*' * 21)                    while True:                        modify = input('是否继续修改(1.继续 2.退出):')                        if modify == '2':                            break                        choose = input('请您选择修改内容(1.会员昵称 2.会员性别 3.手机号码):')                        if choose == '1':                            x[account][1] = input('请输入会员昵称:')                        elif choose == '2':                            x[account][2] = input('请输入会员性别:')                        elif choose == '3':                            x[account][3] = input('请输入手机号码:')                 elif operation == '6':                    print('系统退出成功,欢迎下次使用!')                    break        else:            print('密码错误,登录失败!')    else:        print('账号错误,请您核对!')
复制代码

4.注册用户

def registered(x):    name = input('请您输入会员昵称:')    gender = input('请您输入会员性别:')    phone = input('请您输入手机号码:')    password = input('请您输入登录密码:')    account = []     for i in x:        account.append(int(i))    account.sort()    x[str(account[-1] + 1)] = [password, name, gender, phone]     print('注册成功!')    print('会员卡号:{}、登录密码:{}、会员昵称:{}、会员性别:{}、手机号码:{}'.format          (str(account[-1] + 1), password, name, gender, phone))
复制代码

5.找回密码

def back(x, y):    account = input('请您输入登录账号:')    if account in x:        while True:            need = input('是否需要找回密码(1.需要 2.取消):')            if need == '2':                break            phone = input('请您输入预留手机号码:')            if phone == x[account][3]:                x[account][0] = input('请您输入新密码:')                print('号码正确,修改成功!')            else:                print('号码错误,请您核实!')     elif account in y:        while True:            need = input('是否需要找回密码(1.需要 2.取消):')            if need == '2':                break            phone = input('请您输入预留手机号码:')            if phone == y[account][3]:                y[account][0] = input('请您输入新密码:')                print('号码正确,修改成功!')            else:                print('号码错误,请您核实!')    else:        print('账号错误,请您核对!')
复制代码



CSDN 博主「漫步桔田」原文链接:https://blog.csdn.net/u013157570/article/details/122159885

发布于: 刚刚阅读数: 6
用户头像

漫步桔田

关注

编程届一名小学生,热心分享编程知识。 2022-08-25 加入

阿里云社区专家博主、CSDN领域新星创作者。

评论

发布
暂无评论
Python电影售票系统_漫步桔田_InfoQ写作社区