用Python实现电影售票系统的过程和代码是什么
Admin 2022-05-24 群英技术资讯 520 次浏览
电影售票系统程序,应具备以下几点功能:
1.用户认证
系统用户分为用户、管理员两个角色,系统可根据不同用户角色权限进入不同界面,所有用户角色需要通过身份验证才能登录系统进行操作。
2.用户登录
主要实现用户登录系统可查看本人会员信息、购买影票、查看订票、影票退订、修改信息等功能。
3.管理登录
主要实现管理员登录系统可查看会员和管理信息、添加会员、注销会员、查看购票、影票出售、影票退订、查看影票余票和售票、增删管理、增删影片、修改信息等功能。
数据信息行较多,如小伙伴需要可点击链接前往进行下载: 博客小程序—电影售票系统数据下载
1.管理系统
import json,time,re from managements import management_login from users import users_login from registered import registered from back import back read_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, re operation = '''********欢迎使用漫漫影院系统********* 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('账号错误,请您核对!')
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
Python使用shutil操作文件、subprocess运行子程序,一些朋友可能会遇到这方面的问题,对此在下文小编向大家来讲解一下,内容详细,易于理解,希望大家阅读完这篇能有收获哦,有需要的朋友就往下看吧!
今天给大家分享的是关于python方差检验的内容,会给大家简单的介绍python方差检验的含义及用法,对大家学习python有一定的帮助,感兴趣的朋友就继续往下看吧。
这篇文章主要介绍了Python学习之名字,作用域,名字空间,文章围绕主题展开详细内容介绍,具有一定的参考价值,需要的小伙伴可以参考以一下
python之基数排序的实现。算法思想,插入\交换\选择\归并类的排序算法都需要通过比较关键字的大小来完成排序.因为存在两两比较所以这一类的排序方法在最好情况下能达到的复杂度是O(n*logn),如快速排序...
这篇文章给大家分享如何用python实现验证密码三次的效果的代码,小编觉得挺实用的,验证码验证在很多登录业务都会使用到,因此分享给大家做个参考,接下来一起跟随小编看看吧。
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008