Python實現電影訂票系統

来源:https://www.cnblogs.com/123456feng/archive/2022/04/10/16122194.html
-Advertisement-
Play Games

一、前言 大家都喜歡看電影吧,一部新劇上場的時候往往會搶不到票,今天通過Python實現一個電影訂票系統,滿足你想看電影的心。 二、整體結構圖 三、代碼分解 3.1 infos.py 一部電影的詳細信息適合用 字典 結構來存儲,我們可以給字典里添加多個鍵值對來保存電影的名稱、座位表和宣傳時用的字元 ...


一、前言

大家都喜歡看電影吧,一部新劇上場的時候往往會搶不到票,今天通過Python實現一個電影訂票系統,滿足你想看電影的心。

在這裡插入圖片描述

二、整體結構圖

在這裡插入圖片描述

三、代碼分解

3.1 infos.py

一部電影的詳細信息適合用 字典 結構來存儲,我們可以給字典里添加多個鍵值對來保存電影的名稱、座位表和宣傳時用的字元

畫,比如電影《泰坦尼克號》的詳細信息就可以按下麵的形式保存到字典 titanic 中:

Python學習交流Q群:903971231###
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() 用於完成預訂。

Python學習交流Q群:903971231####
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("非常抱歉
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 快速上手JWT簽發token和認證,有這一篇就夠了,DRF自帶的和自定義的都幫你總結好了,拿去用~ ...
  • Django REST framework JWT 在用戶註冊或登錄後,我們想記錄用戶的登錄狀態,或者為用戶創建身份認證的憑證。我們不再使用Session認證機制,而使用Json Web Token認證機制。 Json web token (JWT), 是為了在網路應用環境間傳遞聲明而執行的一種基於 ...
  • 目錄 一.簡介 二.效果演示 三.源碼下載 二.猜你喜歡 零基礎 OpenGL (ES) 學習路線推薦 : OpenGL (ES) 學習目錄 >> OpenGL ES 基礎 零基礎 OpenGL (ES) 學習路線推薦 : OpenGL (ES) 學習目錄 >> OpenGL ES 轉場 零基礎 O ...
  • 需求:將一個寫著班級內學生姓名的文件(每個名字占一行),進行隨機點名 分析: 1、創建字元緩衝輸入流對象 2、創建ArrayList集合對象 3、調用字元緩衝輸入流對象方法進行讀取數據 4、將讀到的數據存儲在集合中 5、釋放資源 6、生成一個隨機數,範圍在0-集合.size 7、通過產生的隨機數當作 ...
  • 列表也非常適合存儲一組數字,尤其是大數據處理,處理的幾乎都是由數字(如氣溫、距離、人口數量、經濟等)組成的集合。 Python提供很多工具,在數據可視化中,可高效地處理數字列表。 一、數值列表 range() 讓你能夠輕鬆地生成一系列的數字 for value in range(1,6): prin ...
  • 有些時候,我們希望某件事情發生的時候能夠觸發一個事件,讓這個事件幫我們做些事情。比如,在晚上十一點到晚上十二點這段時間,假如還有人在使用我們的軟體,我們就觸發一個事件播放一首美妙的音樂,希望用戶聽了之後能夠做個好夢,美美睡上一覺。而這,我們需要做好三件事情: 1.定義一個事件。 2.定義一個事件監聽 ...
  • HiKariCP作為SpringBoot2框架的預設連接池,號稱是跑的最快的連接池,資料庫連接池與之前兩篇提到的線程池和對象池,從設計的原理上都是基於池化思想,只是在實現方式上有各自的特點; ...
  • Spring容器創建的Bean預設是單例的。Spring容器調用配置方法完成Bean的創建之後,Bean就緩存在Spring容器里。之後每次調用同一配置方法創建Bean,Spring容器只會返回緩存在Spring容器里的Bean,不再創建新的Bean。這意味著同一配置方法在同一Spring容器里無論 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...