c++電影院管理系統(tǒng)的設(shè)計(jì)_第1頁
c++電影院管理系統(tǒng)的設(shè)計(jì)_第2頁
c++電影院管理系統(tǒng)的設(shè)計(jì)_第3頁
c++電影院管理系統(tǒng)的設(shè)計(jì)_第4頁
c++電影院管理系統(tǒng)的設(shè)計(jì)_第5頁
已閱讀5頁,還剩38頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、 內(nèi)蒙古科技大學(xué) 課程設(shè)計(jì)論文題 目:C+課程設(shè)計(jì)電影院售票管理系統(tǒng)學(xué)生姓名:張雪婉學(xué) 號(hào):1167119224專 業(yè):通信工程 班 級(jí):2011-2指導(dǎo)教師:郝斌【摘要】1第一章 問題描述1.1 電影院售票管理系統(tǒng)的設(shè)計(jì)第二章 問題分析2.1 闡述你對(duì)問題的理解、解決問題的方案說明2.2 系統(tǒng)功能模塊的劃分第三章 數(shù)據(jù)模型3.1 相關(guān)數(shù)據(jù)結(jié)構(gòu)的說明類的設(shè)計(jì)3.2 程序結(jié)構(gòu)說明,即程序各個(gè)部分之間如何協(xié)調(diào)來完成任務(wù)第四章 算法描述4.1 解題算法的設(shè)計(jì)思路介紹4.2 主要程序代碼,加上詳細(xì)的注釋第五章 設(shè)計(jì)總結(jié)第六章 附錄【摘要】電影院售票管理系統(tǒng)實(shí)現(xiàn)的功能:1、錄入信息:且可不定時(shí)增加數(shù)據(jù)。

2、并根據(jù)放映時(shí)間排序。2、瀏覽信息:可顯示出某日期所有放映信息,如果當(dāng)前系統(tǒng)時(shí)間超過了某電影的放映時(shí)間,則顯示“此電影放映結(jié)束”的提示信息。3、查詢電影:可按日期或電影名查詢。并顯示目標(biāo)的詳細(xì)信息。 4、售票:售票即為影片預(yù)定??筛鶕?jù)輸出的可預(yù)訂信息選擇訂票,如果該影片已放映,則提示不能訂票,如果售票成功,自動(dòng)跟新座位數(shù)。5、退票:影片退訂即退票。根據(jù)放映時(shí)間和系統(tǒng)時(shí)間來判斷是否能進(jìn)行退票,并自動(dòng)更新座位數(shù)。其他參數(shù):程序中定義了一個(gè)moive結(jié)構(gòu)和一個(gè)ticket類,在結(jié)構(gòu)體和類外還定義了seat()和putout()兩個(gè)函數(shù)。moive結(jié)構(gòu)用來存放電影的數(shù)據(jù)(屬性)信息;ticket類實(shí)現(xiàn)管

3、理moive結(jié)構(gòu)體里面的數(shù)據(jù)和系統(tǒng)功能模塊;seat()和putout()函數(shù)用來輔助結(jié)構(gòu)體和類,簡化程序。第一章: 問題描述1.1、設(shè)計(jì)資料及參數(shù)用C+設(shè)計(jì)一個(gè)系統(tǒng),能提供下列服務(wù):(1)錄入放映信息,格式為:放映日期放映時(shí)間場次電影名稱票價(jià)會(huì)員折扣剩余座位2011-11-210:301桃姐308782011-11-214:002桃姐30886可不定時(shí)地增加放映數(shù)據(jù)。(2)瀏覽放映信息,可顯示出某日期所有放映信息,如果當(dāng)前系統(tǒng)時(shí)間超過了某電影的放映時(shí)間,則顯示“此電影放映結(jié)束”的提示信息。(3)查詢電影:可按日期或電影名查詢。 (4)售票和退票功能A:查詢電影名。當(dāng)剩余座位數(shù)大于0,并且當(dāng)前

4、系統(tǒng)時(shí)間小于放映時(shí)間時(shí)才能售票,計(jì)算會(huì)員折扣,售票后自動(dòng)更新剩余座位數(shù)。 B:退票時(shí),輸入退票的電影名和場次,當(dāng)電影未放映時(shí)才能退票,如果以會(huì)員折扣購買的電影票,退票按照折扣價(jià)退款,退票后自動(dòng)更新剩余座位數(shù)。1.2、設(shè)計(jì)要求及成果根據(jù)系統(tǒng)功能要求,可以將問題解決分為以下步驟:(1)分析系統(tǒng)中的各個(gè)實(shí)體之間的關(guān)系及其屬性和行為;(2)根據(jù)問題描述,設(shè)計(jì)系統(tǒng)的類層次;(3)完成類層次中各個(gè)類的描述(包括屬性和方法);(4)完成類中各個(gè)成員函數(shù)的定義;(5)完成系統(tǒng)的應(yīng)用模塊;(6)功能調(diào)試;(7)提交課程設(shè)計(jì)報(bào)告:完成系統(tǒng)總結(jié)報(bào)告以及系統(tǒng)使用說明書第二章:問題分析2.1、對(duì)問題理解的闡述、解決方案

5、的說明由設(shè)計(jì)題目知電影院售票管理系統(tǒng)主要由1、錄入(input)2、顯示(show)3、查詢(search)4、售票(sell)5、退票(refund)五個(gè)模塊組成。對(duì)整個(gè)系統(tǒng)進(jìn)行功能分析不難發(fā)現(xiàn),電影院管理系統(tǒng)可以對(duì)所有數(shù)據(jù)的信息進(jìn)行操作,比如:錄入(input)、顯示(show)、查詢(search)、售票(sell)和退票(refund)。所以需要設(shè)計(jì)一個(gè)moive結(jié)構(gòu)體和ticket類來實(shí)現(xiàn)對(duì)基本數(shù)據(jù)的儲(chǔ)存和模塊功能的實(shí)現(xiàn)??紤]到程序?qū)崿F(xiàn)程序的盡量簡潔明了,又增加了時(shí)間比較函數(shù)(timecmp)、座位判斷函數(shù)(seat)和信息輸出函數(shù)(putout)三個(gè)函數(shù),對(duì)程序?qū)崿F(xiàn)一定程度的簡化。

6、2.2、系統(tǒng)的模塊功能流程圖如下:運(yùn)行程序時(shí),需要先輸入數(shù)據(jù)。并定義了時(shí)間的輸入格式。如(2013-6-21 22:00)。顯示數(shù)據(jù)時(shí),會(huì)先跟系統(tǒng)時(shí)間比較,如果小于系統(tǒng)當(dāng)前時(shí)間,則輸出提示“已播放”。查找時(shí)滿足要求的按名字查找和按日期查找。找到之后與系統(tǒng)時(shí)間比較輸出提示,如果沒找到,輸出提示。查詢時(shí)分為按電影名和日期兩種查詢功能。查詢時(shí)將會(huì)出現(xiàn)界面來供操作者選擇。訂票函數(shù)中會(huì)先給出可預(yù)訂的提示,這樣可以更有效訂票。輸入之后會(huì)先檢查是否播放,若播放則給出提示,退出。若未找到,則同樣給出提示。如果票賣光了,仍然有提示,如果電影達(dá)到預(yù)定要求,則先給出現(xiàn)有座位的預(yù)訂情況,方便用戶高效率訂票。當(dāng)客戶輸入

7、一座位時(shí)程序會(huì)判斷這個(gè)作為是否被預(yù)訂,如果是,則給出提示;如果no就輸出用戶需要支付的金額,并記錄在座位號(hào)對(duì)應(yīng)的數(shù)組中。方便退票時(shí)退款。訂票成功后還會(huì)輸出現(xiàn)有座位的信息方便核實(shí)。退票時(shí),操作者要先輸入電影名,若電影名不存在或時(shí)間以過,會(huì)提示“輸入錯(cuò)誤”或“電影已播放,無法退票”。若在預(yù)定的電影中,還會(huì)要求輸入退訂的座位號(hào),以便進(jìn)一步確認(rèn)是否真正該電影。若兩道確認(rèn)都成功通過,就會(huì)輸出要腿還的金額。其中訂票和退票函數(shù)都是用大篇幅(一兩百行)來構(gòu)建起強(qiáng)大而有完善的提示功能,已完成快捷而又便利操作。第三章:數(shù)據(jù)模型3.1相關(guān)數(shù)據(jù)結(jié)構(gòu)和類的說明struct moive /定義moive結(jié)構(gòu)體,存放數(shù)據(jù)i

8、nt year;/年int month;/月int day;/日int hour;/時(shí)int minute;/分int datetime5;/裝電影放映時(shí)間,方便比較與系統(tǒng)時(shí)間比較 int num;/場次string name;/電影名float price;/票價(jià)float discount;/折扣int rest;/余票float seat1010;/初始值都為0,只在預(yù)定后改變其值;class ticket/定義ticket類private:moive ticN;/存電影數(shù)據(jù)的數(shù)組int len;/現(xiàn)有電影數(shù)量public:ticket();/構(gòu)造函數(shù)ticket();/析構(gòu)函數(shù)frie

9、nd void seat(int i);/把seat函數(shù)定義為類ticket的友元函數(shù)friend void putout(int i);/把putout函數(shù)定義為類ticket的友元函數(shù)void input();/錄入void show();/顯示void search();/查找void sell();/訂票void refund();/退票;tick;在類中把seat()和putout()函數(shù)定義為類的友元函數(shù),實(shí)現(xiàn)類外的函數(shù)訪問類內(nèi)的成員,這樣可以源代碼的篇章幅度,實(shí)現(xiàn)在一定程度上簡化程序。私有數(shù)據(jù)成員moive ticN,便于操作數(shù)據(jù)。數(shù)據(jù)組織結(jié)構(gòu)圖:3.2 程序結(jié)構(gòu)說明,即程序各個(gè)

10、部分之間如何協(xié)調(diào)來完成任務(wù)程序的主要實(shí)現(xiàn)過程是在ticket類 中定義的成員函數(shù)和友元函數(shù)來實(shí)現(xiàn)完成,并且在類外實(shí)現(xiàn)。這樣方便了對(duì)數(shù)據(jù)進(jìn)行操作。并且定義了一個(gè)全局的比較函數(shù)timecmp,可以比較兩個(gè)時(shí)間數(shù)組的大??;函數(shù)seat實(shí)現(xiàn)判斷某一座位是否被預(yù)定;函數(shù)putout實(shí)現(xiàn)對(duì)電影信息的輸出。這三個(gè)函數(shù)在程序中用途很廣泛,在整個(gè)程序中多次有時(shí)間的比較,座位的檢索,電影的信息的輸出,當(dāng)用到某一函數(shù)時(shí),直接在模塊調(diào)用即可,不必多次編寫,實(shí)現(xiàn)程序的簡化。其中程序總很多代碼是重復(fù)用到的,但是沒有寫成函數(shù)來調(diào)用有兩點(diǎn)原因。首先如果寫成函數(shù)調(diào)用的話會(huì)降低程序的可讀性,其次寫成函數(shù)的話,代碼就固定下來了,使

11、得程序不夠靈活。所以在程序不必要的地方,就用代碼來代替函數(shù)調(diào)用。舉個(gè)例子說,在修改,刪除,訂票,退票中都會(huì)用到按電影名查找。可是沒有單獨(dú)把按電影名查找單獨(dú)寫成函數(shù)來調(diào)用,是因?yàn)樵诎措娪懊檎視?huì)輸出很多詳細(xì)的電影信息和提示信息。這樣也不便于調(diào)用函數(shù)。第四章:算法的描述4.1 解題算法的設(shè)計(jì)思路介紹timecmp函數(shù)是用來比較日期時(shí)間函數(shù),它需要先把兩個(gè)時(shí)間裝入數(shù)組再傳進(jìn)來地址,然后從年月日時(shí)分進(jìn)行比較。如果有大小區(qū)分,直接返回。int timecmp(int a,int b,int n)int i; for(i=0;i<n;i+)if(ai>bi)return 1;if(ai<

12、bi)return -1;if(i=n)return 0;Seat函數(shù)作為檢索某一座位是否已被預(yù)訂,因?yàn)閟eatmn=0,即初始化都為0。二當(dāng)該座位被預(yù)訂后就會(huì)賦予座位號(hào),所以用兩層for循環(huán),把所有的座位都檢索了一遍。在輸出,就一下子看出那些座位被預(yù)定,那些沒有。因?yàn)閟eat函數(shù)是類外函數(shù),不能直接操作類ticket的成員,所以要在類中寫入“friend voidseat(int i);”即定義為類的友元函數(shù)。若不加,編譯將會(huì)出錯(cuò)。void seat(int i) for(int m=0;m<10;m+) cout<<endl<<"t"for

13、(int n=0;n<10;n+) cout<<"" if(tick.tici.seatmn!=0) cout<<"有人" else cout<<"無人" cout<<"" putout函數(shù)是便于把電影的屬性(數(shù)據(jù)信息)輸出,因?yàn)閠ic是類中的數(shù)據(jù)成員且又是結(jié)構(gòu)體moive類型的變量,故要用兩層引用。但putout函數(shù)也是全局的類外函數(shù),要想訪問類ticket中的成員,也需把其定義為類的友元函數(shù)。不然編譯階段會(huì)出錯(cuò)。void putout(int i) cout

14、<<tick.tici.year<<"-"<<tick.tici.month<<"-"<<tick.tici.day<<"t" cout<<tick.tici.hour<<":"<<tick.tici.minute<<"t" cout<<tick.tici.num<<"t"<<<<&

15、quot;tt" cout<<tick.tici.price<<"t"<<tick.tici.discount<<"t"<<tick.tici.rest<<endl;4.2 主要程序代碼和運(yùn)行結(jié)果圖主函數(shù),即選擇菜單:char as; while(1) cout<<"ntttt歡迎進(jìn)入管理系統(tǒng)nn" cout<<"ntttt1.錄入影片" cout<<"ntttt2.顯示影片"

16、cout<<"ntttt3.查找影片" cout<<"ntttt4.售票" cout<<"ntttt5.退票"<<endl; cout<<"輸入數(shù)字 執(zhí)行相應(yīng)功能:" cin>>as; switch(as) case '1':tick.input();break; case '2':tick.show();break; case '3':tick.search();break; case '

17、;4':tick.sell();break;case '5':tick.refund();break;default :system("pause"); return;/任意鍵繼續(xù) 錄入電影信息:void ticket:input() system("cls");/清屏 char ch;/接受日期中的字符-或: cout<<"nnntttt錄入模塊nnn"<<endl; for(int i=tick.len;i<N;i+) cout<<"n請(qǐng)輸入日期如(201

18、1-11-11):" cin>>tick.tici.year>>ch>>tick.tici.month>>ch>>tick.tici.day; cout<<"n請(qǐng)輸入放映時(shí)間如(12:30):"cin>>tick.tici.hour;cin>>ch;cin>>tick.tici.minute; tick.tici.datetime0=tick.tici.year; tick.tici.datetime1=tick.tici.month; tick.tici.

19、datetime2=tick.tici.day;tick.tici.datetime3=tick.tici.hour;tick.tici.datetime4=tick.tici.minute; cout<<"n請(qǐng)輸入場次:" cin>>tick.tici.num; cout<<"n請(qǐng)輸入電影名稱:" cin>>; cout<<"n請(qǐng)輸入電影票價(jià):" cin>>tick.tici.price; cout<<"n請(qǐng)輸入

20、會(huì)員折扣:" cin>>tick.tici.discount; tick.tici.rest=100; for(int m=0;m<10;m+) for(int n=0;n<10;n+)tick.tici.seatmn=0; tick.len+;/個(gè)數(shù)加1 cout<<endl; cout<<"是否繼續(xù)錄入?(y/n):" while(1) cin>>ch; if(ch='y' | ch='Y' | ch='n' | ch='N') brea

21、k; else cout<<"輸入錯(cuò)誤請(qǐng)重新輸入:" if(ch='n' | ch='N') break; 顯示電影信息:void ticket:show()system("cls");/清屏cout<<"nnntttt顯示模塊nnn"<<endl;cout<<" 所有電影信息如下:"<<endl;cout<<"日-期t時(shí)-間t場次t電影名稱t票價(jià)t折扣t余票"<<endl<

22、<endl;time_t t;struct tm *tim;/時(shí)間變量,已包含在頭文件庫函數(shù)ctime中 t=time(NULL);/獲取當(dāng)前系統(tǒng)時(shí)間 tim=localtime(&t); int array5=tim->tm_year+1900,tim->tm_mon+1,tim->tm_mday,tim->tm_hour,tim->tm_min; int r; for(int i=0;i<tick.len;i+) r=timecmp(tick.tici.datetime,array,5);/與系統(tǒng)時(shí)間比較 ,返回值給r putout( i)

23、;/調(diào)用putout函數(shù) if(r<=0) cout<<"a(已播放!)" <<endl; else cout<<endl; 查詢電影:void ticket:search()char flag;int i;int k=0;/標(biāo)記找到的記錄 system("cls");/清屏 cout<<"nnntttt查找模塊nnn"<<endl; while(flag!='1'&&flag!='2') cout<<endl

24、<<"tttt1.按影片名查找" cout<<endl<<"tttt2.按日期查找" cout<<endl<<"tttt請(qǐng)輸入查找模式:" cin>>flag; if(flag!='1'&&flag!='2') cout<<"natttt選擇有誤!請(qǐng)選擇正確的查找模式。"<<endl; 【按電影名查詢】if(flag='1') string na;int j

25、=1;cout<<"n請(qǐng)輸入影片名:"cin>>na;for(i=0;i<tick.len;i+)if(=na)/找到 k+;/找到的記錄數(shù) if(j=1) cout<<" n 查找結(jié)果如下:"<<endl; cout<<"日-期t時(shí)-間t場次t電影名稱t票價(jià)t折扣t余票"<<endl<<endl; j+; putout( i);/調(diào)用putout函數(shù) time_t t; struct tm *tim; t=time(

26、NULL);/獲取當(dāng)前系統(tǒng)時(shí)間 tim=localtime(&t); int array5=tim->tm_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)時(shí)間比較 if(r<=0) cout<<"a(已播放?。?quot; <<endl; else cout<<endl; cout<<endl<<"

27、;tttt當(dāng)前預(yù)訂情況" seat(i);/調(diào)用seat函數(shù)if(j!=1)cout<<endl;system("pause");/任意鍵繼續(xù) return;if(i=tick.len&&k=0)cout<<"natttt未找到結(jié)果!"<<endl;system("pause");/任意鍵繼續(xù) return;【按日期查詢】elsechar ch;int temp3; cout<<"n請(qǐng)輸入放映日期:"cin>>temp0>&

28、gt;ch>>temp1>>ch>>temp2;int j=1;for(i=0;i<tick.len;i+)/遍歷 if(timecmp(tick.tici.datetime,temp,3)=0)/找到 k+;/找到的記錄數(shù) if(j=1) cout<<"n 查找結(jié)果如下:"<<endl; cout<<"日-期t時(shí)-間t場次t電影名稱t票價(jià)t折扣t余票"<<endl<<endl; j+; putout( i);/調(diào)用putout函數(shù) time_t t;

29、struct tm *tim;/時(shí)間類型的結(jié)構(gòu)體 t=time(NULL);/獲取當(dāng)前系統(tǒng)時(shí)間 tim=localtime(&t); int array5=tim->tm_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)時(shí)間比較 if(s<=0) cout<<"a(已播放?。?quot; <<endl; else cout<<end

30、l; cout<<endl<<"tttt當(dāng)前預(yù)訂情況" seat(i);/調(diào)用seat函數(shù) cout<<endl;if(j!=1)cout<<endl;system("pause");/任意鍵繼續(xù) return;if(i=tick.len&&k=0)cout<<"natttt未找到結(jié)果!"<<endl;system("pause");/任意鍵繼續(xù) return;售票:void ticket:sell()system("

31、cls");/清屏 cout<<"nnntttt售票模塊nnn"<<endl; cout<<" 可預(yù)訂的電影信息如下:"<<endl; cout<<"日-期t時(shí)-間t場次t電影名稱t票價(jià)t折扣t余票"<<endl<<endl; time_t t; struct tm *tim; t=time(NULL);/獲取當(dāng)前系統(tǒng)時(shí)間 tim=localtime(&t); int array5=tim->tm_year+1900,tim-&

32、gt;tm_mon+1,tim->tm_mday,tim->tm_hour,tim->tm_min; int r,i; int k=0;/標(biāo)記可供預(yù)定的影片數(shù)量 for(i=0;i<tick.len;i+) r=timecmp(tick.tici.datetime,array,5);/與系統(tǒng)時(shí)間比較 if(r>0) k+; putout( i);/調(diào)用putout函數(shù) if(i=tick.len&&k=0) cout<<"natttt暫無可供預(yù)定的影片!"<<endl;system("pause

33、");/任意鍵繼續(xù) return;string na;cout<<endl<<"請(qǐng)輸入要預(yù)訂的影片名:"cin>>na; k=0;/再次做標(biāo)記for(i=0;i<tick.len;i+) if(=na)/找到 k+;/找到的記錄數(shù) int j=1; if(j=1) cout<<"n 查找結(jié)果如下:"<<endl; cout<<"日-期t時(shí)-間t場次t電影名稱t票價(jià)t折扣t余票"<<endl<<en

34、dl; j+; putout( i);/調(diào)用putout函數(shù) time_t t; struct tm *tim; t=time(NULL);/獲取當(dāng)前系統(tǒng)時(shí)間 tim=localtime(&t); int array5=tim->tm_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)時(shí)間比較 if(s<=0) cout<<"anttt此電影已播放,無法訂票

35、!" <<endl;system("pause");/任意鍵繼續(xù) return; cout<<endl<<"tttt當(dāng)前預(yù)訂情況" int m,n; seat(i);/調(diào)用seat函數(shù) cout<<endl<<"n請(qǐng)輸入預(yù)訂的座位號(hào)(1100):" int seatnum; cin>>seatnum; if(seatnum>100|seatnum<1) cout<<endl<<"att對(duì)不起,無此座位!&qu

36、ot; system("pause");/任意鍵繼續(xù) return; m=(seatnum-1)/10; n=(seatnum-1)%10; if(tick.tici.seatmn=0&&tick.tici.rest!=0) cout<<endl<<"n是否以會(huì)員權(quán)限購買(Y/N):" char a; cin>>a; if(a!='N'&&a!='n') tick.tici.seatmn=tick.tici.price*tick.tici.discount

37、/10; else tick.tici.seatmn=tick.tici.price; tick.tici.rest-; cout<<endl<<"tttt您需要支付:"<<tick.tici.seatmn<<"元。"<<endl; cout<<endl<<"tttt您的座位號(hào)是:"<<seatnum<<endl; cout<<endl<<"tttt預(yù)訂成功!" seat(i);/調(diào)用

38、seat函數(shù)cout<<endl;system("pause");/任意鍵繼續(xù) return; else if(tick.tici.rest=0) cout<<endl<<"atttt對(duì)不起,沒有票了!" system("pause");/任意鍵繼續(xù) return; else if(tick.tici.seatmn!=0) cout<<endl<<"att對(duì)不起,無此座位或此座位已被預(yù)訂!" system("pause");/任意鍵繼續(xù)

39、 return; if(i=tick.len&&k=0)cout<<"natttt沒有找到您要預(yù)定的電影!"<<endl;system("pause");/任意鍵繼續(xù) return;退票:void ticket:refund()system("cls");/清屏 cout<<"nnntttt退票模塊nnn"<<endl; string na; int i;int k=0;/標(biāo)記修改數(shù)量 cout<<"n請(qǐng)輸入影片名:"c

40、in>>na;for(i=0;i<tick.len;i+) if(=na)/找到 k+;/找到的記錄數(shù) int j=1;if(j=1) cout<<"n 查找結(jié)果如下:"<<endl; cout<<"日-期t時(shí)-間t場次t電影名稱t票價(jià)t折扣t余票"<<endl<<endl; j+; putout( i);/調(diào)用putout函數(shù) time_t t; struct tm *tim; t=time(NULL);/獲取當(dāng)前系統(tǒng)時(shí)間 tim=localtim

41、e(&t); int array5=tim->tm_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)時(shí)間比較 if(r<=0) cout<<"an此電影已播放,不能申請(qǐng)退票!" <<endl;system("pause");/任意鍵繼續(xù) return; elsecout<<endl<<&qu

42、ot;tttt當(dāng)前預(yù)訂情況"int m,n; seat(i);/調(diào)用seat函數(shù) cout<<endl<<"n請(qǐng)輸入退訂的座位號(hào)(1100):" int seatnum; cin>>seatnum; if(seatnum>100|seatnum<1) cout<<endl<<"att對(duì)不起,無此座位!" system("pause");/任意鍵繼續(xù) return; m=(seatnum-1)/10; n=(seatnum-1)%10; if(tick.t

43、ici.seatmn!=0) tick.tici.rest+; cout<<endl<<"tttt您要退訂座位號(hào)是:"<<seatnum<<endl; cout<<endl<<"tttt退給您:"<<tick.tici.seatmn<<"元。"<<endl; cout<<endl<<"tttt退訂成功!"tick.tici.seatmn=0; else cout<<endl

44、<<"attn對(duì)不起,此座位未預(yù)訂,無法退票!n" system("pause");/任意鍵繼續(xù) return; seat(i);/調(diào)用seat函數(shù) cout<<endl; system("pause");/任意鍵繼續(xù) return;if(i=tick.len&&k=0)cout<<"natt沒有找到您要退定的電影!"<<endl;system("pause");/任意鍵繼續(xù) return;第五章:設(shè)計(jì)總結(jié)這次的設(shè)計(jì),讓我體會(huì)深刻,

45、總結(jié)如下:開始拿到題目,感覺好難,因?yàn)樵谡n堂上學(xué)到的都是關(guān)于c+的理論知識(shí),只是對(duì)類、構(gòu)造函數(shù)、析構(gòu)函數(shù)、繼承和派生、重載、虛函數(shù)等的講解。都沒涉及過實(shí)例的解析。寫起程序根本不知道從何入手。自己就去圖書館找資料,看了一個(gè)上午,慢慢有點(diǎn)眉目,就開始寫程序。首先,是數(shù)據(jù)的儲(chǔ)存問題。本來打算只定義一個(gè)結(jié)構(gòu)體來裝載數(shù)據(jù)就行,其他的都可以變成全局函數(shù),在主函數(shù)里調(diào)用即可。但慢慢發(fā)現(xiàn)這樣以來,就對(duì)數(shù)據(jù)的訪問帶來諸多不變,還有定義大量的變量。不過網(wǎng)上有大量實(shí)例參考,最后還是有定義了一個(gè)類,在類里間接地引用結(jié)構(gòu)體里的數(shù)據(jù),避免了大量的參數(shù)之間的數(shù)值傳遞,增加程序的可讀性。在一點(diǎn)就是要大量實(shí)踐,平常的理論學(xué)習(xí),

46、并不代表你會(huì)編、會(huì)運(yùn)用。在這次的編寫中,特別在構(gòu)造函數(shù)和數(shù)據(jù)的初始化上沒少出錯(cuò),沒法還得回歸課本,看了好幾遍,才知道怎樣修改。最后設(shè)計(jì)了一個(gè)結(jié)構(gòu)體,一個(gè)類,在類中定義5個(gè)函數(shù),3個(gè)全局函數(shù),實(shí)現(xiàn)了基本功能。同時(shí)增加了一些修改排序功能。第六章:附錄#include<iostream>#include<string>#include<conio.h>#include<ctime>#define N 50/可存電影總數(shù) using namespace std;/標(biāo)準(zhǔn)命名空間struct moive /定義moive結(jié)構(gòu)體,存放數(shù)據(jù)int year;/年

47、int month;/月int day;/日int hour;/時(shí)int minute;/分int datetime5;/裝時(shí)間 ,方便比較 int num;/場次string name;/電影名float price;/票價(jià)float discount;/折扣int rest;/余票float seat1010;/初始值都為0,只在預(yù)定后改變其值;/class ticket/定義ticket類private:moive ticN;/存電影的數(shù)組int len;/現(xiàn)有電影數(shù)量public:ticket();/構(gòu)造函數(shù)ticket();/析構(gòu)函數(shù)friend void seat(int i);/

48、把seat函數(shù)定義為類ticket的友元函數(shù)friend void putout(int i);/把putout函數(shù)定義為類ticket的友元函數(shù)void input();/錄入void show();/顯示void search();/查找void sell();/訂票void refund();/退票;tick;/構(gòu)造函數(shù)和析構(gòu)函數(shù)的實(shí)現(xiàn)ticket:ticket();ticket:ticket();/timecmp函數(shù)是用來比較日期時(shí)間函數(shù),它需要先把兩/個(gè)時(shí)間裝入數(shù)組再傳進(jìn)來地址,然后從年月日時(shí)分進(jìn)行比較。int timecmp(int a,int b,int n)int i; for

49、(i=0;i<n;i+)if(ai>bi)return 1;if(ai<bi)return -1;if(i=n)return 0;/seat函數(shù)的功能:查看某一座位是否有人void seat(int i) for(int m=0;m<10;m+) cout<<endl<<"t"for(int n=0;n<10;n+) cout<<"" if(tick.tici.seatmn!=0) cout<<"有人" else cout<<"無人&q

50、uot; cout<<"" /putout函數(shù)實(shí)現(xiàn)的功能:輸出對(duì)象tici的數(shù)據(jù)void putout(int i) cout<<tick.tici.year<<"-"<<tick.tici.month<<"-"<<tick.tici.day<<"t" cout<<tick.tici.hour<<":"<<tick.tici.minute<<"t" cout<<tick.tici.num<<"t"<<<<"tt" cout<<tick.tici.price<<"t"<<tick.tici.discount<<"t"<<tick.tici.rest<<endl;/錄入模塊void ticket:input() system("cls");/清屏 char ch;

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論