Python实现电影订票系统转载

原创
小哥 3年前 (2022-10-16) 阅读数 62 #大杂烩


大家好,今天我们一起来实现一个简单的电影订票系统,所谓小而全,跟着完成还是可以学到很多知识


一、效果展示

通过Python实施电影预约系统,结果如下所示。

二、总体结构图二、总体结构图二、总体结构图


代码分解三、代码分解


3.1 infos.py

电影的细节适合使用电影的细节适合使用 字典 我们可以将多个键-值对添加到词典中,以存储电影名称、座位图和促销中使用的角色图片。 titanic 中:

infos = [
  {
    name: 泰坦尼克号RMS泰坦尼克号RMS泰坦尼克号RMS泰坦尼克号,
    symbol: 
+==================== 泰坦尼克号RMS泰坦尼克号RMS泰坦尼克号RMS泰坦尼克号 =====================+
  ▄▄▄▄▄▪▄▄▄▄▄▪   ▄▄▄▄▄  ▄▄▄·   ▐ ▄ ▪      ▄▄· 
  •██   ██  •██   ▐█ ▀█  -▌▐-▌▐▐-▌▐▐▐-▌▐▐▐▐  ██  ▐█ ▌▪
  ▐█.▪ ▐█·  ▐█. ▀▪■■■■■■▪■■■■■▪■■■■■■■  ▐▐▐▐▌▐▐▐▌▐▐▐▐▐▌▐▐▐▐▌  ▐█· ██ ▄▄
  ▐█▌ ·▐█▌  ▐█▌· ▐█ ▪▐▌ ▐▌▐▌▌  ▐█▌ ▌
  ▀▀▀  ▀▀▀  ▀▀▀   ▀  ▀  ▀▀ █  ▪▀▀▀ ·▀▀▀ 
+===================== 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 time
 
class 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) - 1
    return 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) - 1
    return 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("非常抱歉,????所有的座位都订满了,我们不能为您预订座位")

3.3 film_selector.py

先来解决ling一项任务是:电影选片系统。电影选片系统。电影选择系统电影选择系统电影选择器系统。为了方便用户,我们希望用户能够输入序列号来选择要观看的电影,以及 x 选择退出这个系统。要做到这一点,我们需要完成以下两个要求。

  • 与座位选择系统一样,我们可以将“选择一部电影”函数抽象为一个名为 电影选片系统。电影选片系统。电影选择系统电影选择系统电影选择器系统。

  • 根据用户的选择,预订特定演出的座位实际上是第一个呼叫 电影选择系统电影选择系统电影选择器系统 选择电影,然后调用选择电影,并调用 选座系统 正在预订座位。这涉及类和方法调用之间的多个实例化。为了更清楚地组织代码,我们也将这一部分抽象为一个名为 控制系统。控制系统。

    import time   class FilmSelector:   # 显示所有可用选项显示所有可用选项显示所有可用选项   def display_options(self, films):     print("今天的剧场日程表。今天的电影日程表。今天的剧场名单。今天的剧院日程表:。")     print(+================+)     # 逐行打印每部电影逐行打印每部电影逐行打印每部电影     for i in range(len(films)):       print({} - {}.format(i + 1, films[i][name]))       time.sleep(0.2)     # 打印退出选项打印退出选项     print(x - 退出)     print(+================+)     time.sleep(0.7)     # 获取用户选择获取用户选择   def get_choice(self, films):     # 合格投入清单必需投入清单合格投入清单合格投入清单     valid_choice = [str(i + 1) for i in range(len(films))]     valid_choice.append(x)       choice = input(你的选择?你的选择是什么?你的选择是什么?)     # 未满足时循环获取新选项循环以在未满足时获取新选项循环以在它们不匹配时获取新选项     while choice not in valid_choice:       choice = input(没有按要求录入哦,请重新录入没有按要求录入,请重新录入)     # 返回到用户作出的选择返回到用户作出的选择返回到用户作出的选择     return choice

3.4 main.py

import time
from infos import infos
from film_selector import FilmSelector
from seat_booking import SeatBooking
 
class Controller:
  def __init__(self, infos):
    self.films = infos  # 影片库所有影片库中的所有影片
    # 打印欢迎消息打印的欢迎消息
    self.welcome()
    # 用户选择他们想看的电影用户选择他想看的电影
    self.choose_film()
    # 根据用户选择执行不同的流程
    if self.choice != x:
      # 为指定场馆预留座位为特定场馆预留座位为特定时段预留座位为特定演出预留座位
      self.choose_seat()
    # 打印结束语打印结束语打印结束语打印结束语
    self.bye()
 
  # 用户选择他们想看的电影用户选择他想看的电影
  def choose_film(self):
    # 实例化 FilmSelector 类
    selector = FilmSelector()
    # 显示用户可用的所有选项显示用户可用的所有选项
    selector.display_options(self.films)
    # 通过 get_choice() 获取用户选择方法获取用户选择方法获取用户选择
    self.choice = selector.get_choice(self.films)
 
  # 为指定场馆预留座位为特定场馆预留座位为特定时段预留座位为特定演出预留座位
  def choose_seat(self):
    # 获取用户选择的电影获取用户选择的电影获取用户选择的电影
    film = self.films[int(self.choice) - 1]
    # 拿出所选电影的片名、座位表和海报
    name = film[name]
    seats_list = film[seats]
    symbol = film[symbol]
 
    # 打印的提醒信息和电影海报打印提示和电影海报
    print(正在为你预订电影正在预订电影正在预订电影我们正在预订电影{}》的座位....format(name))
    time.sleep(0.7)
    print(symbol)
    time.sleep(0.7)
 
    # 打印预订座位的方式列表打印座位预订的方式列表
    print(支持的座位预订方式如下。支持的座位预订如下所示。)
    time.sleep(0.7)
    print(+==========================+)
    print("1 - 按指定排号预定座位")
    print("2 - 给我订一个前排的座位!给我订一个前排的座位!给我订一个前排的座位!给我订一个前排的座位!")
    print(+==========================+)
    time.sleep(0.7)
    print()
 
    # 获得座位预订方法如何获得座位预订获得座位预订方法
    method = input(请选择座位预订方式请选择座位预订方式请选择座位预订方式)
    # 定义一致性输入列表定义一致性输入列表 valid_method
    valid_method = [1,2]
    # 未满足时循环获取新选项循环以在未满足时获取新选项循环以在它们不匹配时获取新选项
    while method not in valid_method:
      method = input(没有按要求录入哦,请重新录入没有按要求录入,请重新录入)
 
    # 实例化 SeatBooking 类
    booking = SeatBooking()
    # 打印所有座位的预订信息打印所有座位的预订信息打印所有座位的预订打印所有座位的预订
    booking.check_bookings(seats_list)
    # 方法 1:指定行号指定行号指定序号指定序号
    if method == 1:
      booking.book_seat(seats_list)
    # 方法 2:预订最前面的座位预订最前面的座位
    else:
      booking.book_seat_at_front(seats_list)
 
  # 打印欢迎消息打印的欢迎消息
  def welcome(self):
    print(+============================+)
    print(+      欢迎来到时代影院欢迎来到时代影院欢迎来到时代影院       +)
    print(+============================+)
    print()
    time.sleep(0.7)
 
  # 打印结束语打印结束语打印结束语打印结束语
  def bye(self):
    print()
    time.sleep(0.7)
    print(+============================+)
    print(+    已经出系统了,下次见!????    +)
    print(+============================+)
 
 
# 实例化 Controller 类
s = Controller(infos)

如果这篇文章对您有帮助,请不要吝啬您的赞扬,谢谢!

推荐阅读:
入门: 最完整的零基学习最全面的零基学习最完整的零基学习Python的问题  | 从零开始学习从零基础学习从零基础学习8个月的Python  | 实战项目 |学Python这是捷径,这是捷径,这是捷径
干货:爬行豆瓣短评,电影《后来的我们》 | 38年NBA最佳球员分析最佳球员分析 |   从万众期待到口碑惨败!唐探3令人失望  | 笑新伊田图龙记笑新伊田图龙记笑新伊田图龙记 | 谜语之王回答灯谜之王灯谜之王谜语之王 |用Python人山人海素描图人山人海素描图人山人海 Dishonor太火了,我用机器学习做了一个迷你推荐系统电影
趣味:弹球游戏  | 九宫格  | 漂亮的花 | 两百行Python日常酷跑游戏日常酷跑游戏日常酷跑游戏!
AI: 会写诗的机器人会写诗的机器人会写诗的机器人 | 给图片上色给图片上色给图片上色 | 预测收入 | 《耻辱》太火了,我用机器学习做了一部迷你推荐系统电影
小工具: Pdf转Word易于修复表单和水印!易于处理的表单和水印!轻松修复桌子和水印!易于修复的形式和水印! | 一键把html将页面另存为网页另存为网页另存为pdf!|  再见PDF提款费!提款费!提款费!提款费用! | 用90构建最强大的代码行构建最强大的代码行构建最强大的代码行PDF转换器,word、PPT、excel、markdown、html一键转换 | 制作一个固定的低成本机票提醒!制作一张别针的低价机票提醒! |60代码行做了一个语音墙纸切换,天天见女士!

年度弹出文案年度弹出文案年度爆炸性文案

  • 1). 卧槽!Pdf转Word用Python轻松搞定 !

  • 2).学Python闻起来好香!我用100一行代码做了一个网站,帮助人们做了一行代码,做了一个网站,帮助了人们做了一行代码,帮助了人们PS旅行图片赚鸡腿吃旅行图片赚鸡腿

  • 3).第一次播放量过亿,火爆全网,我分析了《波妹》,发现了这些秘密

  • 4). 80一行行代码!使用Python让救济金做正确的事做做的人做好事的人A梦分身

  • 5).你必须掌握的东西你必须掌握20个python代码,简短而紧凑,永无止境的有用代码,简短而甜蜜,永无止境的有用的代码,简短而紧凑,永无止境的使用代码,简短而甜蜜,永无止境的用途

  • 6). 30个Python古怪技能集古怪小贴士收藏古怪技能集

  • 7). 我总结的80《菜鸟学习专页》《菜鸟学习专页》《菜鸟学习》Python精选干货.pdf》,都是干货

  • 8). 再见Python!我要学Go了!2500词深度分析词深度分析词深度分析 !

  • 9).发现一只舔狗的福利!这Python爬虫神器太酷了,不能自动下载女孩的照片

点击阅读原文点击查看点击点击阅读点击阅读原文点击查看B放我鸽子看录像!站在我的录像带上!在视频里放我鸽子!站在我的录像带上!

版权声明

所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除

热门