基于Python如何实现电影售票系统
发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,基于Python如何实现电影售票系统,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。一、系统要求电影售票系统程序,应具备以
千家信息网最后更新 2025年01月20日基于Python如何实现电影售票系统
基于Python如何实现电影售票系统,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
一、系统要求
电影售票系统程序,应具备以下几点功能:
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('账号错误,请您核对!')
四、效果图展示
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注行业资讯频道,感谢您对的支持。
会员
输入
管理
登录
昵称
号码
选择
信息
卡号
系统
成功
手机
手机号码
密码
电影
座位
性别
用户
查询
影片
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
嘉定市网络安全区
软件开发 业务系统 创业
校园有线网络安全
本地服务器搭建ip
网络技术专业就业如何
无线电与网络技术
网络安全补漏网站
参考文献数据库应用格式
北京鑫源网络技术有限公司
扬州营销软件开发系统
长沙正规软件开发价格
广西科技大学有互联网专业吗
验证db2数据库安装成功
一麟网络技术
用数据库显示商品
我的世界服务器自动刷
服务器快捷管理软件
软件开发都要学啥
国开计算机网络技术专科论文
ins数据库怎么样
杭州迅城网络技术有限公司
微信软件开发客服
红谷滩网络技术学校
sql中删除数据库
数据库把字段一样的删除
公安数据库能更改吗
软件开发说明书案例
qt数据库万能查询模块
数据库 权限 风险 控制
南京软件开发月薪