《C++程序設計》課程設計說明書電影院售票系統(tǒng)

上傳人:仙*** 文檔編號:28465879 上傳時間:2021-08-28 格式:DOC 頁數:74 大小:929KB
收藏 版權申訴 舉報 下載
《C++程序設計》課程設計說明書電影院售票系統(tǒng)_第1頁
第1頁 / 共74頁
《C++程序設計》課程設計說明書電影院售票系統(tǒng)_第2頁
第2頁 / 共74頁
《C++程序設計》課程設計說明書電影院售票系統(tǒng)_第3頁
第3頁 / 共74頁

下載文檔到電腦,查找使用更方便

15 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《《C++程序設計》課程設計說明書電影院售票系統(tǒng)》由會員分享,可在線閱讀,更多相關《《C++程序設計》課程設計說明書電影院售票系統(tǒng)(74頁珍藏版)》請在裝配圖網上搜索。

1、內蒙古科技大學本科生C+程序設計課程設計說明書題 目:電影院售票系統(tǒng) 學生姓名: 學 號:專 業(yè):計算機科學與技術班 級:計2010-1班指導教師: 74內蒙古科技大學課程設計說明書成績評定標準課程設計的驗收答辯采取“講解程序+提問+即時編程”的方式??己隧椖吭u價質量成績程序功能完全實現,并能通過答辯。(60%)A能完全正確回答提問;B問題回答的基本意思正確;C不能回答或回答錯誤,抽取程序小的功能即時編程,能完成;D不能回答或回答錯誤,即時編程無法完成;程序設計符合面向對象的思想和原則,結構合理(15)A程序結構層次分明,提取出各個實體類,類的設計合理;B程序結構層次分明,具有客戶類和服務類;

2、C類的設計基本正確;D幾乎在一個類或者方法中實現了大部分的邏輯,結構不夠清晰;程序的風格(10%)A遵守編碼規(guī)范,有良好的風格; 以下問題每出現一項成績降一個等級: 1類、方法和變量命名不符合規(guī)范; 2方法和屬性前缺少注釋; 3程序沒有適當縮進;設計說明書(15%)從以下幾方面考核: 1結構完整 2圖表正確 3文字通順 4版面工整目 錄成績評定標準2【摘要】5第一章 問題描述61.1 電影院售票管理系統(tǒng)的設計6第二章 問題分析82.1 闡述你對問題的理解、解決問題的方案說明82.2 系統(tǒng)功能模塊的劃分8第三章 數據模型103.1 相關數據結構的說明類的設計103.2 程序結構說明,即程序各個部

3、分之間如何協(xié)調來完成任務123.3 全局變量,重要形式參數、局部變量等等,它們的命名及用途解釋15第四章 算法描述184.1 解題算法的設計思路介紹184.2 主要程序代碼,加上詳細的注釋204.3 畫出程序流程圖44第五章 設計總結55第六章 附錄56參考文獻75 【摘要】電影院售票管理系統(tǒng)兩個模塊管理系統(tǒng)和售票系統(tǒng)。1.管理系統(tǒng)具有如下功能:(1)錄入信息:且可不定時增加數據。并根據放映時間排序。(2)瀏覽信息:可顯示出某日期所有放映信息,如果當前系統(tǒng)時間超過了某電影的放映時間,則顯示“此電影放映結束”的提示信息。(3)查詢電影:可按日期或電影名查詢。并顯示目標的詳細信息。 (4)修改信息

4、:可根據電影名修改該電影的各種信息(余票除外)并簡單排序。(5)刪除電影:根據電影名找到該電影并刪除。2.售票系統(tǒng)功能如下:(1)售票:售票即為影片預定??筛鶕敵龅目深A訂信息選擇訂票,如果該影片已放映,則提示不能訂票,如果售票成功,自動跟新座位數。(2)退票:影片退訂即退票。根據放映時間和系統(tǒng)時間來判斷是否能進行退票,并自動更新座位數。其他參數:程序中定義了一個node結構和一個ticket類。結構用來存信息,節(jié)點類存節(jié)點長度,和管理里面的數據。第一章 問題描述1.1 電影院售票管理系統(tǒng)的設計1.設計資料及參數:用C+設計一個系統(tǒng),能提供下列服務:(1)錄入放映信息,格式為:放映日期放映時間

5、場次電影名稱票價會員折扣剩余座位2011-11-210:301桃姐308782011-11-214:002桃姐30886可不定時地增加放映數據。(2)瀏覽放映信息,可顯示出某日期所有放映信息,如果當前系統(tǒng)時間超過了某電影的放映時間,則顯示“此電影放映結束”的提示信息。(3)查詢電影:可按日期或電影名查詢。 (4)售票和退票功能A:查詢電影名。當剩余座位數大于0,并且當前系統(tǒng)時間小于放映時間時才能售票,計算會員折扣,售票后自動更新剩余座位數。B:退票時,輸入退票的電影名和場次,當電影未放映時才能退票,如果以會員折扣購買的電影票,退票按照折扣價退款,退票后自動更新剩余座位數。2.設計要求及成果根據

6、系統(tǒng)功能要求,可以將問題解決分為以下步驟:(1)分析系統(tǒng)中的各個實體之間的關系及其屬性和行為;(2)根據問題描述,設計系統(tǒng)的類層次;(3)完成類層次中各個類的描述(包括屬性和力一法);(4)完成類中各個成.員函數的定義;(5)完成系統(tǒng)的應用模塊;(6)功能調試;(7)完成系統(tǒng)總結報告以及系統(tǒng)使用說明書。第二章 問題分析2.1 闡述你對問題的理解、解決問題的方案說明由設計題目知電影院售票管理系統(tǒng)主要可分為兩個大模塊:1.管理系統(tǒng)2.售票系統(tǒng)。對整個系統(tǒng)進行功能分析不難發(fā)現,管理系統(tǒng)和售票系統(tǒng)的權限是不一樣的,管理系統(tǒng)具有管理員權限,可以對所有數據的信息進行操作,比如:錄入(input)、顯示(s

7、how)、查找(search)、修改(change)、刪除(del);而售票系統(tǒng)則只進行售票(sell)和退票(refund)。所以需要設計一個manager和customer函數來區(qū)分權限的函數。所以,manager里包含了需要實現的input、show、search、change、del等函數來滿足管理要求的功能。Customer包含sell和refund。2.2 系統(tǒng)功能模塊的劃分系統(tǒng)的模塊圖如下:歡迎界面主函數售票customer管理manager刪除退票售票顯示輸入查找修改管理函數進入時需要管理密碼:1234運行程序時,需要先輸入數據,根據需要在對數據進行簡單操作。錄入時,每錄入一個

8、信息就會對現有信息進行插入排序。顯示數據時,會先跟系統(tǒng)時間比較,如果小于系統(tǒng)當前時間,則輸出提示“已播放”。查找時滿足要求的按名字查找和按日期查找。找到之后與系統(tǒng)時間比較輸出提示,如果沒找到,輸出提示。修改函數支持多種修改,可以避免輸入的一些錯誤。也可以修改日期,以調整放映時間。刪除函數是為防止輸入錯誤,或是內存不夠用而設計的。比如前幾天已播放的,在內存中如果作用不是很大,完全是可以刪除的。這樣能跟有效利用資源。售票系統(tǒng)設計較為簡單,主要是訂票和退票。訂票函數中會先給出可預訂的提示,這樣可以更有效訂票。輸入之后會先檢查是否播放,若播放則給出提示,退出。若未找到,則同樣給出提示。如果票賣光了,仍

9、然有提示,如果電影達到預定要求,則先給出現有座位的預訂情況,方便用戶高效率訂票。當客戶輸入一座位時程序會判斷這個作為是否被預訂,如果是,則給出提示;如果no就輸出用戶需要支付的金額,并記錄在座位號對應的數組中。方便退票時退款。訂票成功后還會輸出現有座位的信息方便核實。其中訂票和退票函數都是用大篇幅(一兩百行)來構建起強大而有完善的提示功能,趨于人性化的設計跟拉近了與客戶的距離。第三章 數據模型3.1 相關數據結構的說明類的設計程序中定義的數據:struct nodeint year;int month;int day;int hour;int minute;int datetime5;/裝時間

10、 ,方便比較 int num;string name;float price;float discount;int rest;float seat1010;class ticketprivate:node ticN;int len;public:ticket();ticket();int sort(int i);void input();void show();void search();void change();void del();void sell();void refund();tick;內蒙古科技大學課程設計說明書對系統(tǒng)進行數據分析就會知道電影院售票管理系統(tǒng)主要處理的是基本電影信息

11、。每個電影的基本信息放在struct node中定義,包括基本的放映日期(date),時間(time),場次(num),影片名(name),票價(price),會員折扣(discount)及余座(rest)。其中日期是包含有年、月、日,時間包含時、分,整形數據,其中還有一個數組(detetime5)是把該影片時間存儲進去,方便以后的排序和與系統(tǒng)時間比較。還有一個而二維數組seat1010,是用來存儲座位信息(初始化全為0),如果此座位被預定,則對應的座位存的就是訂票時的付款,這也方便了退票時的退款。還要解決數據的組織問題,怎么才能把不同的電影存起來呢?方法目前只學了兩種,數組和鏈表。數組和鏈表

12、各有優(yōu)缺點。用鏈表實現雖然對空間進行了充分利用,但其對數據的存儲讓人實在無奈,并且操作也不容易實現。剩下就是數組了,雖然需要定義一個大點的數組,但其對數據操作非常方便,這深受初學者的我們的青睞。所以在ticket類中定義了個node50。如果需要擴大直接改文件前的#define N后的數字就可以了。其實質隨意選擇把電影信息存在結構體而不是類中,主要考慮到,結構體存取數據的方便性,而采用類無疑會給程序很多負擔存取。數據組織結構圖:ticket類Input()Show()Search()Change()Del()Sell()Refund()lennode503.2 程序結構說明,即程序各個部分之間

13、如何協(xié)調來完成任務程序的主要實現過程是在ticket類 中定義的成員函數來實現完成,并且在類外定義。這樣方便了對數據進行操作。并且定義了一個全局的比較函數timecmp,可以比較兩個時間數組的大小。此函數在程序中用途很廣泛,每次輸入輸出都需要與系統(tǒng)時間進行比較,所以在每個操作函數中都用到了。此外sort函數也是非常有用的,它主要用在輸入和修改上。每次更新數據都會根據現有數據的時間進行排序。這也方便了讀數據的客戶。其中程序總很多代碼是重復用到的,但是沒有寫成函數來調用有兩點原因。首先如果寫成函數調用的話會降低程序的可讀性,其次寫成函數的話,代碼就固定下來了,使得程序不夠靈活。所以在程序不必要的地

14、方,就用代碼來代替函數調用。舉個例子說,在修改,刪除,訂票,退票中都會用到按電影名查找??墒菦]有單獨把按電影名查找單獨寫成函數來調用,是因為在按電影名查找會輸出很多詳細的電影信息,會使客戶感覺到是在浪費時間。下面是按電影名查找的代碼片段:for(i=0;itick.len;i+)/遍歷 if(timecmp(tick.tici.datetime,temp,3)=0)/找到 k+;/找到的記錄數 if(j=1) coutn 查找結果如下:endl; cout_endl; cout日-期t時-間t場次t電影名稱t票價t折扣t余票endlendl; j+; couttick.tici.year-ti

15、ck.tici.month-tick.tici.dayt; couttick.tici.hour:tick.tici.minutet; couttick.tici.numttick.tici.namett; couttick.tici.pricettick.tici.discountttm_year+1900,tim-tm_mon+1,tim-tm_mday,tim-tm_hour,tim-tm_min; int s; s=timecmp(tick.tici.datetime,array,5);/與系統(tǒng)時間比較 if(s=0) couta(已播放?。?endl; else coutendl;

16、coutendltttt當前預訂情況; for(int m=0;m10;m+) coutendlt; for(int n=0;n10;n+) cout; if(tick.tici.seatmn!=0) cout有人; else cout無人; cout; coutendl;if(j!=1)coutendl;system(pause);/任意鍵繼續(xù) return;if(i=tick.len&k=0)coutnatttt未找到結果!endl;system(pause);/任意鍵繼續(xù) return;而在另一些函數種植需要提示用戶找沒找到就可以了。下面是del函數的按電影名查找for(i=0;itic

17、k.len;i+)if(tick.tici.name=na)/找到j+;for(int j=i+1;jtick.len;j+)tick.ticj-1=tick.ticj;coutendltttt刪除成功!n;tick.len-; if(i=tick.len&j=0) coutnatttt未找到結果,刪除失?。tm_year+1900,tim-tm_mon+1,tim-tm_mday,tim-tm_hour,tim-tm_min;/將系統(tǒng)時間裝入數組,方便比較11. int k=0;/標記找到的記錄12. r=timecmp(tick.tici.datetime,array,5);/與系統(tǒng)時間

18、比較 ,返回值給r。13. int j=0;/修改函數中標記修改數量14. string inpass;/manager函數中的管理員密碼初始值123415. Flag,as,choice/是用來存接受的選擇的第四章 算法描述4.1 解題算法的設計思路介紹timecmp函數是用來比較日期時間函數,它需要先把兩個時間裝入數組再傳進來地址,然后從年月日時分進行比較。如果有大小區(qū)分,直接返回。int timecmp(int a,int b,int n)for(int i=0;ibi)return 1;if(aibi)return -1;if(i=n)return 0;/Sort函數主要是對第i個元素

19、進行插入排序。需要先遍歷數組然后插入到第一個比他大的元素前面。int ticket:sort(int i)int r,n,j;for(j=0;ji;j+)/從首元素開始比較日期 r=timecmp(tick.tici.datetime,tick.ticj.datetime,5);if(r=-1)/找到第一個比他大的日期 ,插入其前面 break;if(j=tick.len-1)return j;if(j=i)for(j=i+1;jtick.len;j+)/從首元素開始比較日期 r=timecmp(tick.tici.datetime,tick.ticj.datetime,5); if(r=-1

20、)/找到第一個比他大的日期 ,插入其前面 break;node temp=tick.tici;if(jj;n-) tick.ticn=tick.ticn-1; tick.ticj=temp; return j;elseif(j=tick.len)for(n=i;nj-1;n+) tick.ticn=tick.ticn+1;else for(n=i;nj;n+) tick.ticn=tick.ticn+1;tick.ticn=temp;return n;4.2 主要程序代碼,加上詳細的注釋下面簡單介紹一下程序運行結果主函數開始運行界面:docoutendlendlendlendl;coutttt

21、t歡迎使用電影售票系統(tǒng); coutendlendlendl;coutntttt1.管理系統(tǒng);coutntttt2.售票系統(tǒng);coutchoice;switch(choice)case 1:manager();break;case 2:customer();break;default :exit(0); while(1);Manager系統(tǒng)代碼及運行截圖密碼輸入界面代碼docoutendlinpass; if(inpass=password)break;elsecoutendlatttt密碼錯誤!; coutendla;if(a=N|a=n)exit(0);while(1);選擇菜單代碼 do

22、coutntttt歡迎進入管理系統(tǒng)nn; coutntttt1.錄入影片; coutntttt2.顯示影片; coutntttt3.查找影片; coutntttt4.修改影片; coutntttt5.刪除影片; coutntttt6.退出; coutas; switch(as) case 1:tick.input();break; case 2:tick.show();break; case 3:tick.search();break; case 4:tick.change();break; case 5:tick.del();break; case 6:default :system(pau

23、se); return;/任意鍵繼續(xù) while(1);選擇1管理系統(tǒng)輸入密碼選擇1錄入void ticket:input()/錄入信息 system(cls);/清屏 char ch;/接受日期中的字符或: coutnnntttt錄入模塊nnnendl; for(int i=tick.len;iN;i+) couttick.tici.yearchtick.tici.monthchtick.tici.day; couttick.tici.hour;cinch;cintick.tici.minute; tick.tici.datetime0=tick.tici.year; tick.tici.d

24、atetime1=tick.tici.month; tick.tici.datetime2=tick.tici.day;tick.tici.datetime3=tick.tici.hour;tick.tici.datetime4=tick.tici.minute; couttick.tici.num; couttick.tici.name; couttick.tici.price; couttick.tici.discount; tick.tici.rest=100; for(int m=0;m10;m+) for(int n=0;n10;n+)tick.tici.seatmn=0; tick

25、.len+;/個數加1 if(i!=0)/按時間,插入排序 int j=sort(i); coutendl; coutch; if(ch=y | ch=Y | ch=n | ch=N) break; else cout選2顯示。代碼如下=coutnnntttt顯示模塊nnnendl;cout 所有電影信息如下:endl;cout_endl;cout日-期t時-間t場次t電影名稱t票價t折扣t余票endltm_year+1900,tim-tm_mon+1,tim-tm_mday,tim-tm_hour,tim-tm_min; int r; for(int i=0;itick.len;i+) r=

26、timecmp(tick.tici.datetime,array,5); couttick.tici.year-tick.tici.month-tick.tici.dayt; couttick.tici.hour:tick.tici.minutet; couttick.tici.numttick.tici.namett; couttick.tici.pricettick.tici.discountttick.tici.rest; if(r=0) couta(已播放?。?endl; else cout繼續(xù)錄入選擇2顯示選3查找查找的界面代碼=coutnnntttt查找模塊nnnendl; do

27、coutendltttt1.按影片名查找; coutendltttt2.按日期查找; coutendlflag; if(flag!=1&flag!=2) coutnatttt選擇有誤!請選擇正確的查找模式。endl; while(flag!=1&flag!=2);=按電影名查找代碼=string na;int j=1;coutna;for(i=0;itick.len;i+)if(tick.tici.name=na)/找到 k+;/找到的記錄數 if(j=1) coutn 查找結果如下:endl; cout_endl; cout日-期t時-間t場次t電影名稱t票價t折扣t余票endlendl;

28、j+; couttick.tici.year-tick.tici.month-tick.tici.dayt; couttick.tici.hour:tick.tici.minutet; couttick.tici.numttick.tici.namett; couttick.tici.pricettick.tici.discountttm_year+1900,tim-tm_mon+1,tim-tm_mday,tim-tm_hour,tim-tm_min; int r; r=timecmp(tick.tici.datetime,array,5);/與系統(tǒng)時間比較 if(r=0) couta(已播

29、放!) endl; else coutendl; coutendltttt當前預訂情況; for(int m=0;m10;m+) coutendlt; for(int n=0;n10;n+) cout; if(tick.tici.seatmn!=0) cout有人; else cout無人; cout; if(j!=1)coutendl;system(pause);/任意鍵繼續(xù) return;if(i=tick.len&k=0)coutnatttt未找到結果!endl;system(pause);/任意鍵繼續(xù) return;=按日期查找代碼=char ch;int temp3; couttem

30、p0chtemp1chtemp2;int j=1;for(i=0;itick.len;i+)/遍歷 if(timecmp(tick.tici.datetime,temp,3)=0)/找到 k+;/找到的記錄數 if(j=1) coutn 查找結果如下:endl; cout_endl; cout日-期t時-間t場次t電影名稱t票價t折扣t余票endlendl; j+; couttick.tici.year-tick.tici.month-tick.tici.dayt; couttick.tici.hour:tick.tici.minutet; couttick.tici.numttick.tic

31、i.namett; couttick.tici.pricettick.tici.discountttm_year+1900,tim-tm_mon+1,tim-tm_mday,tim-tm_hour,tim-tm_min; int s; s=timecmp(tick.tici.datetime,array,5);/與系統(tǒng)時間比較 if(s=0) couta(已播放!) endl; else coutendl; coutendltttt當前預訂情況; for(int m=0;m10;m+) coutendlt; for(int n=0;n10;n+) cout; if(tick.tici.seat

32、mn!=0) cout有人; else cout無人; cout; coutendl;if(j!=1)coutendl;system(pause);/任意鍵繼續(xù) return;if(i=tick.len&k=0)coutnatttt未找到結果!修改修改界面的源代碼=if(tick.tici.name=na)/找到 j+;char a;do coutendltttt1.修改放映日期(2011-11-11); coutendltttt2.修改放映時間(12:30); coutendltttt3.修改放映場次; coutendltttt4.修改影片名稱; coutendltttt5.修改影片票價;

33、coutendltttt6.修改會員折扣; coutendlendlendl; coutendlflag; char ch; switch(flag) case 1:couttick.tici.yearchtick.tici.monthchtick.tici.day;tick.tici.datetime0=tick.tici.year; tick.tici.datetime1=tick.tici.month; tick.tici.datetime2=tick.tici.day;i=sort(i);break; case 2:couttick.tici.hourchtick.tici.minut

34、e;tick.tici.datetime3=tick.tici.hour; tick.tici.datetime4=tick.tici.minute;i=sort(i);break; case 3:couttick.tici.num;break; case 4:couttick.tici.name;break; case 5:couttick.tici.price;break; case 6:couttick.tici.discount;break; default:break; coutendla; while(a!=N&a!=n); cout 當前電影信息如下:endl; cout_endl; cout日-期t時-間t場次t電影名稱t票價t折

展開閱讀全文
溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
5. 裝配圖網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關資源

更多
正為您匹配相似的精品文檔
關于我們 - 網站聲明 - 網站地圖 - 資源地圖 - 友情鏈接 - 網站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網版權所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對上載內容本身不做任何修改或編輯。若文檔所含內容侵犯了您的版權或隱私,請立即通知裝配圖網,我們立即給予刪除!