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. 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語言課設——電影院選票系統