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

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.main.cpp

2. Login.cpp

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


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



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

3. manager.cpp

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

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

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

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

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


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

4. customer.cpp

1.Print_After_Movie 函數
顯示當前時間以後的電影,供用戶選擇

2.Printf_MovieChoice 函數
該函數用於用戶選擇完想看的電影后,輸出改電影當前時間後的全部場次信息

3.Print_MovieSeat 函數
該函數用於打印用戶所選場次的電影的座位信息

4.運行結果

4.1管理員系統

  • 放映廳管理
    • 增長放映廳

    • 刪除放映廳

    • 修改放映廳

  • 電影場次管理
    • 增長電影

    • 刪除電影

    • 修改電影

4.2用戶系統

  • 電影訂票+查看訂單

5.總結

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