1. 程式人生 > >C語言課設——電影院選票系統

C語言課設——電影院選票系統

出錯 維數 介紹 txt 用戶名 位置 數據 交互性 表示

C語言課設——電影院選票系統

1.課題介紹

大家都愛看電影,現請參考一個熟悉電影票預訂系統,實現C語言版的訂票系統。了解訂票如何實現的。系統主要有2類用戶:管理員用戶和顧客用戶。

管理員用戶

  • 1.電影放映廳信息管理
選擇該菜單能展示所有放映廳,用戶輸入某個放映廳編號後,能實現對放映廳增加、刪除、修改功能。主要對movie_house.txt數據修改。
放映廳主要字段信息有:
放映廳編號、放映廳名稱、放映廳行數、放映廳列數、放映廳座位初始狀態。
假如放映廳是一個10行10列座位安排,其初始狀態可以生成一個二維數組house[10][10]={0,1,2,0,0},存儲座位狀態 。0表示未定、1表示已定、2表示不能定。初始時候應該只有0,2兩種狀態。
  • 2.電影場次信息管理
實現對movie.txt數據增刪改及查找。答辯務必演示增刪改操作,對於已存在場次能提示不得修改。不存在場次不能刪除等容錯處理。修改和添加記錄時候,一個放映廳一個時段只能排1部電影。若超過要提示不能修改。
movie.txt主要字段有:
電影場次編號、電影名稱、播放日期、播放時間段、所在放映廳、放映廳座位當前狀態。
(1)放映廳位置當前狀態,表示當前位置購票情況,如house[10][10]={0,1,2,0,0}。其中:
0表示未定座位、1表示已定座位、2表示不能定座位。
(2)當前狀態初始值應該是從movie_house.txt讀取放映廳座位初始狀態。

顧客登錄系統

  • 1.電影訂票
操作步驟如下:
(1)展示當前時間段後可看的電影場次信息。(註意時間,一定是當前時間段後的電影信息)
(2)顧客輸入輸入觀看電影名稱和時間段,展示目前廳內位置信息。註意用矩陣方式顯示位置信息,每行10列左右,具體自己設計。位置信息在電影信息文件即movie.txt查看位置狀態信息。0表示可預訂用綠色表示,1表示不能定用紅色標識,2不可訂可用灰色表示。這塊建議圖形化展示。
(3)若該場次無位置,提示選擇其他電影場次。若有位置,繼續下面操作:
?* 選擇1人位置,輸入行列位置編號後,若當前位置可選,生成訂單,寫入訂票信息文件movie_order.txt,更新movie.txt中座位狀態。若當前位置已定或不可選,提示錯誤信息。屏幕座位狀態能實時更新。
?* 選擇多人位置,輸入人數及行列位置編號後,實現座位選擇,屏幕實時更新。(選做)
  位置編號從1---位置中數量編號。
?* 訂單生成後能計算總票價。
  • 2.查看我的訂單
展示所有歷史訂票信息,然後可刪除未看的電影訂單。(選做)
   註意刪除訂單後,相應電影場次中位置信息狀態也要修改。

具體數據文件

(1)放映廳信息文件:movie_house.txt。字段:
放映廳編號、放映廳名稱、放映廳行數、放映廳列數、放映廳座位初始狀態。
(2)電影場次信息文件movie.txt。字段有:
電影場次編號、電影名稱、該場次電影單價、播放日期、播放時間段、所在放映廳、放映廳座位當前狀態。
(3)電影訂單信息文件movie_order.txt。字段有:
   顧客編號、電影名稱、購買數量、購買座位、總金額、購買時間。
  購買座位: [1,1],[25,3]。表示購買2個座位,一個是第一行第一列,一個是第25行第三列。
(4)顧客賬號文件customer.txt,自建。包括:顧客編號、密碼。
(5)影院管理員賬號manager.txt,自建。包括:管理員編號、密碼。

要求

(1)系統演示時候必須保證文件內至少有50行數據。
(2)系統必須具備容錯處理。沒有位置、沒有電影等都要出錯處理及提醒。
(3)系統交互性要好,操作簡單好用。
(4)有能力同學可以擴展系統功能,如導入easyx庫,加入圖片。系統交互性更好。電影放映廳等狀態改進。

2.系統模塊圖

技術分享圖片

3.詳細設計

3.1頭文件截圖及簡單文字介紹

技術分享圖片
技術分享圖片
技術分享圖片

3.2各個模塊主要函數截圖及介紹

1. Login.cpp

1.ManagerLogin 函數
該函數用於管理員登錄(默認管理員不能註冊)

技術分享圖片
技術分享圖片

2.CustomerLogin函數
該函數用於用戶登錄及註冊

技術分享圖片
技術分享圖片
技術分享圖片

3.ReadManagerFile 及 ReadCustomerFile函數
這兩個函數主要用於計算manager.txt中的管理員數和customer.txt中的用戶數。
在用戶登陸時,根據計算得出的數量來檢索輸入的用戶名及密碼是否存在
(當時文件那塊兒理解的不是很透徹,現在想想這兩個函數純屬多余,直接用feof()函數判斷是否到文件尾就好了)

技術分享圖片

2. manager.cpp

1.Create_House_Doc函數
該函數用於創建放映廳鏈表,將movie_house.txt中的數據建成鏈表,以便實現管理員的放映廳管理功能

技術分享圖片

2.Insert_House_Doc函數
該函數用於創建放映廳鏈表的連接,及實現管理員在放映廳管理中增加放映廳的功能

技術分享圖片

3.Print_House_Doc函數
該函數用於遍歷放映廳鏈表,並以表格的形式輸出movie_house.txt中的放映廳信息

技術分享圖片

4.Delete_House_Doc函數
該函數用於刪除放映廳數據

技術分享圖片

5.Alter_House_Doc函數
改函數用於修改已有放映廳的信息

技術分享圖片
技術分享圖片

6.InHouseFile函數
該函數用於將修改後的鏈表重新寫入movie_house.txt文件中,實現文件的更新

技術分享圖片

3. customer.cpp

1.Print_After_Movie 函數
顯示當前時間之後的電影,供用戶選擇
技術分享圖片

2.Printf_MovieChoice 函數
該函數用於用戶選擇完想看的電影後,輸出改電影當前時間後的所有場次信息
技術分享圖片

3.Print_MovieSeat 函數
該函數用於打印用戶所選場次的電影的座位信息
技術分享圖片

4.運行結果

4.1管理員系統

  • 放映廳管理
    • 增加放映廳
      技術分享圖片

    • 刪除放映廳
      技術分享圖片

    • 修改放映廳
      技術分享圖片

  • 電影場次管理
    • 增加電影
      技術分享圖片

    • 刪除電影
      技術分享圖片

    • 修改電影
      技術分享圖片

4.2用戶系統

  • 電影訂票+查看訂單
    技術分享圖片

5.總結

剛開始的時候,我想著學習一下EasyX,來實現座位信息的生成,結果,事實告訴我們,一個星期連課設都快搞不定了,更別說學EasyX了。
一開始的時候,我是想著用數組來做的,當時覺得刪除那塊兒的用數組做特別麻煩,然後就想著說用鏈表做。然而,鏈表又不太會用,就一邊翻書,一邊打代碼。剛開始的時候,是花費了很多的時間,到後面,鏈表的那塊兒內容直接都可以復制黏貼。
當時先做的是管理員的那個部分,所以相對於用戶,管理員的部分做的相對要完善一些。然後,一個星期的時間真的有點點短,我裏頭的功能其實並不完善,就像選做中的刪除功能就沒有實現,系統的容錯性也做的不完善。
這次的課設真的是非常的費腦、費時。但是,當你實現了一個又一個的功能後,你就會有一種成就感跟滿足感。課上學的東西應用在這,只是基礎中的基礎,要想實現各個功能必須要自己去查找資料,可以說課設就是鞏固課堂上學習的知識,學習課堂上所沒有的知識的一個過程。做課設的時候,可以先把框架代碼先寫好,然後再一步步的完善各個函數功能。在寫函數的時候,寫好一個函數就應該調試一下這個函數功能是否實現,不然,等到所有代碼都完成了再去調試,在查找錯誤方面就會非常的麻煩。

C語言課設——電影院選票系統