【文末赠书】用Python实现一个电影订票系统!
来源丨Python小二
一、效果展示
通过Python实现一个电影订票系统,效果如下所示:
二、整体结构图
三、代码分解
3.1 infos.py
一部电影的详细信息适合用 字典 结构来存储,我们可以给字典里添加多个键值对来保存电影的名称、座位表和宣传时用的字符画,比如电影《泰坦尼克号》的详细信息就可以按下面的形式保存到字典 titanic 中:
infos = [{'name': '泰坦尼克号','symbol': '''
+==================== 泰坦尼克号 =====================+▄▄▄▄▄▪ ▄▄▄▄▄ ▄▄▄· ▐ ▄ ▪ ▄▄· •██ ██ •██ ▐█ ▀█ •█▌▐█ ██ ▐█ ▌▪▐█.▪ ▐█· ▐█. ▪▄█▀▀█ ▐█▐▐▌ ▐█· ██ ▄▄▐█▌ ·▐█▌ ▐█▌· ▐█ ▪▐▌ ██▐█▌ ▐█▌ ▐███▌▀▀▀ ▀▀▀ ▀▀▀ ▀ ▀ ▀▀ █ ▪▀▀▀ ·▀▀▀
+===================== Titanic =====================+
''','seats': [['○', '○', '○', '○', '○', '○', '○', '○'],['○', '○', '○', '○', '●', '○', '○', '●'],['○', '○', '●', '○', '●', '○', '○', '○'],['○', '○', '●', '○', '○', '○', '○', '●'],['○', '○', '●', '○', '○', '○', '●', '○'],['●', '○', '○', '○', '●', '●', '●', '●']]},{'name': '雨人','symbol': '''
+====================== 雨人 =======================+,---. .--. ,-..-. .-. .--. .-. .-. | .-.\ / /\ \ |(|| \| | |\ /| / /\ \ | \| | | `-'/ / /__\ \(_)| | | |(\ / |/ /__\ \| | | | ( | __ || || |\ | (_)\/ || __ || |\ | | |\ \ | | |)|| || | |)| | \ / || | |)|| | |)| |_| \)\|_| (_)`-'/( (_) | |\/| ||_| (_)/( (_) (__) (__) '-' '-' (__)
+===================== Rain Man ====================+
''','seats': [['○', '○', '○', '○', '●', '○', '○', '●'],['○', '○', '○', '●', '●', '○', '○', '○'],['○', '●', '○', '○', '○', '○', '○', '○'],['○', '○', '○', '○', '○', '○', '○', '○'],['○', '○', '●', '○', '○', '○', '○', '○'],['○', '○', '○', '○', '○', '○', '○', '○']]},{'name': '卡门','symbol': '''
+======================= 卡门 =======================+▄█▄ ██ █▄▄▄▄ █▀▄▀█ ▄███▄ ▄ █▀ ▀▄ █ █ █ ▄▀ █ █ █ █▀ ▀ █ █ ▀ █▄▄█ █▀▀▌ █ ▄ █ ██▄▄ ██ █ █▄ ▄▀ █ █ █ █ █ █ █▄ ▄▀ █ █ █ ▀███▀ █ █ █ ▀███▀ █ █ █ █ ▀ ▀ █ ██ ▀
+====================== Carmen =====================+
''','seats': [['○', '○', '○', '○', '○', '○', '○', '○'],['○', '○', '●', '●', '○', '○', '●', '●'],['○', '○', '○', '○', '○', '○', '●', '○'],['○', '○', '○', '○', '○', '○', '○', '○'],['○', '○', '○', '○', '○', '○', '○', '○'],['○', '○', '○', '●', '○', '○', '○', '●']]},{'name': '机器人总动员','symbol': '''
+==================== 机器人总动员 ===================+(`\ .-') /` ('-. ('-. `.( OO ),' ( OO ).-. _( OO) ,--./ .--. / . --. / ,--. ,--. (,------. | | | | \-. \ | |.-') | |.-') | .---' | | | |,.-'-' | | | | OO ) | | OO ) | | | |.'.| |_)\| |_.' | | |`-' | | |`-' |(| '--. | | | .-. |(| '---.'(| '---.' | .--' | ,'. | | | | | | | | | | `---. '--' '--' `--' `--' `------' `------' `------'
+====================== WALL·E =====================+
''','seats': [['●', '○', '○', '○', '○', '○', '○', '○'],['●', '○', '○', '○', '○', '○', '○', '●'],['○', '○', '●', '○', '●', '○', '●', '○'],['○', '○', '○', '○', '○', '○', '○', '●'],['○', '○', '○', '○', '●', '○', '○', '○'],['●', '●', '○', '○', '○', '●', '○', '○']]},{'name': '黑客帝国','symbol': '''
+===================== 黑客帝国 =====================+________ __ ___ __ _ /_ __/ /_ ___ / |/ /___ _/ /______(_) __/ / / __ \/ _ \ / /|_/ / __ `/ __/ ___/ / |/_// / / / / / __/ / / / / /_/ / /_/ / / /> < /_/ /_/ /_/\___/ /_/ /_/\__,_/\__/_/ /_/_/|_|
+==================== The Matrix ===================+
''','seats': [['○', '●', '○', '○', '○', '○', '○', '○'],['○', '○', '○', '●', '●', '○', '○', '●'],['○', '○', '○', '○', '○', '○', '○', '○'],['○', '○', '○', '○', '○', '○', '○', '○'],['○', '○', '○', '○', '○', '○', '○', '●'],['○', '○', '●', '○', '○', '○', '○', '○']]},
]
3.2 seat_book.py
选座系统,需要实现下面这两样需求:
展示所有座位的预订状态,方便用户查看哪些座位还可以预订;
根据用户输入的座位号完成预订。
可以把选座系统抽象成一个类:SeatBooking,这个类包含了两种方法,check_bookings() 用于展示所有座位的预订状态,book_seat() 用于完成预订。
import timeclass SeatBooking:# 展示所有座位的预订信息def check_bookings(self, seats):print("正在为您查询该场次电影的预订状态...")time.sleep(0.7)print('从上到下为 1~6 排,从左至右为 1~8 座')print("======================")for row in seats:time.sleep(0.1)print(' '.join(row))print("======================")time.sleep(0.7)# 获取符合要求的行索引def get_row(self):input_row = input("预订第几排的座位呢?请输入 1~6 之间的数字")valid_row = [str(i + 1) for i in range(6)]while input_row not in valid_row:input_row = input('没有按要求输入哦,请输入 1~6 之间的数字')row = int(input_row) - 1return row# 获取符合要求的列索引def get_col(self):input_column = input('预订这一排的第几座呢?请输入 1~8 之间的数字')valid_column = [str(i + 1) for i in range(8)]while input_column not in valid_column:input_column = input('没有按要求输入哦,请输入 1~8 之间的数字')column = int(input_column) - 1return column# 预订指定座位def book_seat(self, seats):while True:row = self.get_row()column = self.get_col()# 指定座位没有被预订if seats[row][column] == '○':print("正在为您预订指定座位...")time.sleep(0.7)seats[row][column] = '●'print("预订成功!座位号:{}排{}座".format(row + 1, column + 1))break # 结束循环,退出选座# 指定座位已经被预订了else:print("这个座位已经被预订了哦,试试别的吧")time.sleep(0.7)# 预订最靠前的座位def book_seat_at_front(self, seats):print("正在为您预订最靠前的座位...")time.sleep(0.7)# 外循环:遍历 seats 的行for row in range(6):# 内循环:遍历 seats 的列for column in range(8):# 若碰到没有被预订的座位if seats[row][column] == '○':seats[row][column] = '●' # 预订该座位print("预订成功!座位号:{}排{}座".format(row + 1, column + 1))return # 结束函数的执行,返回到它被调用的地方# 没有在循环内部结束程序,说明不存在没有被预订的座位print("非常抱歉
【文末赠书】用Python实现一个电影订票系统!相关推荐
- 可操作性强!Python实现一个电影订票系统!
来源丨Python小二 一.效果展示 通过Python实现一个电影订票系统,效果如下所示: 二.整体结构图 三.代码分解 3.1 infos.py 一部电影的详细信息适合用 字典 结构来存储,我们可以 ...
- 用Python实现一个电影订票系统!
一.效果展示 通过Python实现一个电影订票系统,效果如下所示: 二.整体结构图 三.代码分解 3.1 infos.py 一部电影的详细信息适合用 字典 结构来存储,我们可以给字典里添加多个键值对 ...
- 【代码分解】用Python实现一个电影订票系统
一.整体结构图 二.代码分解 2.1 infos.py 一部电影的详细信息适合用 字典 结构来存储,我们可以给字典里添加多个键值对来保存电影的名称.座位表和宣传时用的字符画,比如电影<泰坦尼克号 ...
- 我制作了一个基于Python 的电影订票系统
文章目录 一.效果展示 二.整体结构图 三.代码分解 3.1 infos.py 3.2 seat\_book.py 3.3 film\_selector.py 3.4 main.py 一.效果展示 通 ...
- 在线电影订票系统 - 数据库建模
数据库建模有三个步骤,依次是概念模型.逻辑模型和物理模型. 三种模型 概念模型 概念模型是一个抽象的宏观层次的业务模型,比如E-R(实体关系)图,在概念模型中最重要的对象是实体和关系. 在了解 ...
- 基于web的电影订票系统/电影购票网站
摘要 随着信息技术和网络技术的飞速发展,人类已进入全新信息化时代,传统管理技术已无法高效,便捷地管理信息.为了迎合时代需求,优化管理效率,各种各样的管理系统应运而生,各行各业相继进入信息管理时代,电影 ...
- 基于ssm框架实现的在线电影订票系统
一.项目简介 本项目是一套基于ssm在线电影订票系统,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的Java学习者. 包含:项目源码.数据库脚本等,该项目附带全部源码可作为毕设使用. 项 ...
- java-php-python-springcloud-基于微服务的电影订票系统-计算机毕业设计
java-php-python-springcloud-基于微服务的电影订票系统-计算机毕业设计 java-php-python-springcloud-基于微服务的电影订票系统-计算机毕业设计 本源 ...
- 计算机毕业设计、课程设计、实战项目之[含论文+源码等]基于SpringBoot在线电影订票系统[包运行成功]
<基于SpringBoot在线电影订票系统>该项目采用技术后台:Springboot.spring.springmvc.springdata.mysql数据库.前台:FreeMarker. ...
最新文章
- 2021年大数据Flink(十八):Flink Window操作
- 进入计算机用户名和密码,巧用U盘进入设密码系统免于输入用户名和登录密码...
- Android之自定义ViewPager实现图片的无线轮播
- hdu 3046(最小割)
- 如果用编程语言参加战争,哪门语言才是程序员的最强武器?
- 数据库的一些基本知识
- CodeForces - 1332B Composite Coloring(数论+构造)
- webService学习9:jquery ajax调用webservice
- 【原创】SharePoint中如何判断任务是否已经延期
- 【Flink】Flink 1.9 版本 web UI 突然没有日志
- C#用域账号登陆,访问网络路径
- java 状态模式的实现与应用
- 机器视觉的四大类应用
- 【转载】CSS常用英文字体介绍
- Linux下如何使用Vi编辑器
- 监管大屏系统_国网信息运维综合监管系统及大屏可视化平台建设介绍
- 智能家居加速落地,景联文科技提供数据采集标注服务
- Ogre引擎渲染系列之Normal Specular Mapping
- 广告联盟的实现过程(一)
- 618手机争夺战:5G时代首场大考,荣耀再度领跑
热门文章
- 干货!如何录制电脑屏幕gif动图?
- 美团点评高性能跨平台动态化框架-Picasso
- excel如何快速制作柱状图
- 利用C++调用PyTorch的模型
- python查找图片
- android+归属地+数据库,「Android」来去电显示归属地、归属地查询的小程序。
- 计算机网络(本)形考任务一,二,三答案
- 太牛了!java程序设计慕课版第二章答案
- windows10系统语言字体显示乱码问题
- Python办公自动化实战 13 | Python-docx库:Python与Word的完美结合_学员考试准考证批量生成