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

C語言課程設計——電影院訂票系統

nag 表示 重要性 思維 所在 看電影 門面 賬號 播放

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

【具體數據文件】:

(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. LoginAndRigester.cpp

1.LoginCheck 函數

該函數用於根據登陸用戶的身份繪制登陸界面,根據identity將不同的文件名傳入Compare函數,這樣就不用對管理員和用戶分開編寫兩套登陸的函數了
技術分享圖片

2.Compare 函數

該函數用於獲取用戶的賬號和密碼,並將賬號保存在id數組中,以便後期設計訂單函數時用到。並對用戶輸入的賬戶和密碼進行驗證,並將結果通過返回值返回。
技術分享圖片

3.Rigester 函數

該函數同樣利用identity來區分文件名,讀取用戶輸入,並對用戶的賬戶進行查重,如果沒有相同賬戶就在文件末尾追加。
技術分享圖片

2. myOrder. cpp

1.AddOrder 函數

該函數要對傳入的座位信息進行判斷,如果座位為-1,說明沒有選中座位,並對座位的數量進行統計,然後通過時間函數獲取當前的本地時間,將所有數據寫入add的Order類型結構組中,並添加到temp數組的末尾,寫入文件 movie_order.txt 。
技術分享圖片

2.ReadOrder 函數

該函數要將movie_order.txt文件中的數據讀取到temp數組中
技術分享圖片

3.OrderMenu 函數

這個函數就長了,他的功能是打印訂單界面,並將temp數組中的數據按照每六行一頁展示出來,並完成上下頁的翻頁功能,並提供用戶刪除的選項,利用函數對訂單進行刪除。
技術分享圖片

3.session.cpp

1.ReadSession 函數

該函數用於讀取movie.txt中的數據,並存儲到temp數組當中去。
技術分享圖片

2.DelSession 函數

該函數用於刪除場次
技術分享圖片

4.house.cpp

1.AddHouse 函數

功能大致同上
技術分享圖片

2.ReadHouse 函數

技術分享圖片

5.others.cpp

SeatSelect 函數

該函數會根據seatState數組的值將座位表打印到屏幕上,並對用戶的選擇進行判斷與存儲。
技術分享圖片

4. 運行結果

技術分享圖片
圖片被壓縮了。。

5. 總結

剛開始的時候考慮太多,老想著去把這個做的好看一點,結果時間不夠,直接導致管理員的功能沒有完全完善,在用戶的操作上也有一些做得不到位的地方,但總體來說勉強符合預期效果。

這一次的課設設計也著實讓我體會到C語言的重要性,作為一門面向過程的語言,他能夠很好地鍛煉編程思維,但在一些項目上面,遠不及其他那些面向對象的程序來的得心應手,不過學好了C語言,學習其他語言也就不會那麽困難了,像這次的easyx,雖然說只是個頭文件,但是很多原來的C語言的函數都被easyx代替了,所以仍然需要花一些時間去學習,好在上手比較快,勉強趕上了。

技術分享圖片

C語言課程設計——電影院訂票系統