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

上傳人:仙*** 文檔編號:28465879 上傳時間:2021-08-28 格式:DOC 頁數(shù):74 大?。?29KB
收藏 版權申訴 舉報 下載
《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頁珍藏版)》請在裝配圖網(wǎng)上搜索。

1、 內蒙古科技大學 本科生《C++程序設計》課程設計說明書 題 目:電影院售票系統(tǒng) 學生姓名: 學 號: 專 業(yè):計算機科學與技術 班 級:計2010-1班 指導教師: 74 內蒙古科技大學課程設計說明書 成績評定標準 課程設計的驗收答辯采取“講解程序+提問+即時編程”的方式。 考核項目 評價質量 成績 程序功能完全實現(xiàn),并能通過答辯。(60%) A能完全正確回答提問; B問題回答的基本意思正確; C不能回答或回答錯誤,抽取程序小的功能即時編程,能完成; D不能回答或回答錯誤,即時編程無法完成;

2、程序設計符合面向對象的思想和原則,結構合理(15) A程序結構層次分明,提取出各個實體類,類的設計合理; B程序結構層次分明,具有客戶類和服務類; C類的設計基本正確; D幾乎在一個類或者方法中實現(xiàn)了大部分的邏輯,結構不夠清晰; 程序的風格(10%) A遵守編碼規(guī)范,有良好的風格; 以下問題每出現(xiàn)一項成績降一個等級: 1.類、方法和變量命名不符合規(guī)范; 2.方法和屬性前缺少注釋; 3.程序沒有適當縮進; 設計說明書 (15%) 從以下幾方面考核: 1.結構完整 2.圖表正確 3.文字通順 4.版面工整

3、 目 錄 成績評定標準 2 【摘要】 5 第一章 問題描述 6 1.1 電影院售票管理系統(tǒng)的設計 6 第二章 問題分析 8 2.1 闡述你對問題的理解、解決問題的方案說明 8 2.2 系統(tǒng)功能模塊的劃分 8 第三章 數(shù)據(jù)模型 10 3.1 相關數(shù)據(jù)結構的說明類的設計 10 3.2 程序結構說明,即程序各個部分之間如何協(xié)調來完成任務 12 3.3 全局變量,重要形式參數(shù)、局部變量等等,它們的命名及用途解釋 15 第四章 算法描述 18 4.1 解題算法的設計思路介紹 18 4.2 主要程序代碼,加上詳細的注釋 20 4.3 畫出程序流程圖 44 第五章 設計

4、總結 55 第六章 附錄 56 參考文獻 75 【摘要】 電影院售票管理系統(tǒng)兩個模塊管理系統(tǒng)和售票系統(tǒng)。 1.管理系統(tǒng)具有如下功能: (1)錄入信息:且可不定時增加數(shù)據(jù)。并根據(jù)放映時間排序。 (2)瀏覽信息:可顯示出某日期所有放映信息,如果當前系統(tǒng)時間超過了某電影的放映時間,則顯示“此電影放映結束”的提示信息。 (3)查詢電影:可按日期或電影名查詢。并顯示目標的詳細信息。 (4)修改信息:可根據(jù)電影名修改該電影的各種信息(余票除外)并簡單排序。 (5)刪除電影:根據(jù)電影名找到該電影并刪除。 2.售票系統(tǒng)功能如下: (1)售票:售票即為影片預定???/p>

5、根據(jù)輸出的可預訂信息選擇訂票,如果該影片已放映,則提示不能訂票,如果售票成功,自動跟新座位數(shù)。 (2)退票:影片退訂即退票。根據(jù)放映時間和系統(tǒng)時間來判斷是否能進行退票,并自動更新座位數(shù)。 其他參數(shù):程序中定義了一個node結構和一個ticket類。結構用來存信息,節(jié)點類存節(jié)點長度,和管理里面的數(shù)據(jù)。 第一章 問題描述 1.1 電影院售票管理系統(tǒng)的設計 1.設計資料及參數(shù): 用C++設計一個系統(tǒng),能提供下列服務: (1)錄入放映信息,格式為: 放映日期 放映時間 場次 電影名稱 票價 會員折扣 剩余座位 2011-11-2 10:30 1 桃姐 30 8

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

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

8、作,比如:錄入(input)、顯示(show)、查找(search)、修改(change)、刪除(del);而售票系統(tǒng)則只進行售票(sell)和退票(refund)。所以需要設計一個manager和customer函數(shù)來區(qū)分權限的函數(shù)。所以,manager里包含了需要實現(xiàn)的input、show、search、change、del等函數(shù)來滿足管理要求的功能。Customer包含sell和refund。 2.2 系統(tǒng)功能模塊的劃分 系統(tǒng)的模塊圖如下: 歡迎界面 主函數(shù) 售票customer 管理manager 刪除 退票 售票 顯示 輸入 查找 修

9、改 管理函數(shù)進入時需要管理密碼:1234 運行程序時,需要先輸入數(shù)據(jù),根據(jù)需要在對數(shù)據(jù)進行簡單操作。錄入時,每錄入一個信息就會對現(xiàn)有信息進行插入排序。 顯示數(shù)據(jù)時,會先跟系統(tǒng)時間比較,如果小于系統(tǒng)當前時間,則輸出提示“已播放”。 查找時滿足要求的按名字查找和按日期查找。找到之后與系統(tǒng)時間比較輸出提示,如果沒找到,輸出提示。 修改函數(shù)支持多種修改,可以避免輸入的一些錯誤。也可以修改日期,以調整放映時間。 刪除函數(shù)是為防止輸入錯誤,或是內存不夠用而設計的。比如前幾天已播放的,在內存中如果作用不是很大,完全是可以刪除的。這樣能跟有效利用資源。 售票系統(tǒng)設計較為簡單,主要是訂

10、票和退票。 訂票函數(shù)中會先給出可預訂的提示,這樣可以更有效訂票。輸入之后會先檢查是否播放,若播放則給出提示,退出。若未找到,則同樣給出提示。如果票賣光了,仍然有提示,如果電影達到預定要求,則先給出現(xiàn)有座位的預訂情況,方便用戶高效率訂票。當客戶輸入一座位時程序會判斷這個作為是否被預訂,如果是,則給出提示;如果no就輸出用戶需要支付的金額,并記錄在座位號對應的數(shù)組中。方便退票時退款。訂票成功后還會輸出現(xiàn)有座位的信息方便核實。 其中訂票和退票函數(shù)都是用大篇幅(一兩百行)來構建起強大而有完善的提示功能,趨于人性化的設計跟拉近了與客戶的距離。 第三章 數(shù)據(jù)模型 3.1 相關數(shù)據(jù)結構的說明類的

11、設計 程序中定義的數(shù)據(jù): struct node { int year; int month; int day; int hour; int minute; int datetime[5];//裝時間 ,方便比較 int num; string name; float price; float discount; int rest; float seat[10][10]; }; class ticket { private: node tic[N]; int len; public: ticket

12、(); ~ticket(); int sort(int i); void input(); void show(); void search(); void change(); void del(); void sell(); void refund(); }tick; 內蒙古科技大學課程設計說明書 對系統(tǒng)進行數(shù)據(jù)分析就會知道電影院售票管理系統(tǒng)主要處理的是基本電影信息。每個電影的基本信息放在struct node中定義,包括基本的放映日期(date),時間(time),場次(num),影片名(name),票價(price),會員折扣(dis

13、count)及余座(rest)。其中日期是包含有年、月、日,時間包含時、分,整形數(shù)據(jù),其中還有一個數(shù)組(detetime[5])是把該影片時間存儲進去,方便以后的排序和與系統(tǒng)時間比較。還有一個而二維數(shù)組seat[10][10],是用來存儲座位信息(初始化全為0),如果此座位被預定,則對應的座位存的就是訂票時的付款,這也方便了退票時的退款。 還要解決數(shù)據(jù)的組織問題,怎么才能把不同的電影存起來呢?方法目前只學了兩種,數(shù)組和鏈表。數(shù)組和鏈表各有優(yōu)缺點。用鏈表實現(xiàn)雖然對空間進行了充分利用,但其對數(shù)據(jù)的存儲讓人實在無奈,并且操作也不容易實現(xiàn)。剩下就是數(shù)組了,雖然需要定義一個大點的數(shù)組,但其對數(shù)據(jù)操作非

14、常方便,這深受初學者的我們的青睞。所以在ticket類中定義了個node[50]。如果需要擴大直接改文件前的#define N后的數(shù)字就可以了。 其實質隨意選擇把電影信息存在結構體而不是類中,主要考慮到,結構體存取數(shù)據(jù)的方便性,而采用類無疑會給程序很多負擔存取。 數(shù)據(jù)組織結構圖: ticket類 Input() Show() Search() Change() Del() Sell() Refund() len node[50] 3.2 程序結構說明,即程序各個部分之間如何協(xié)調來完成任務 程序的主要實現(xiàn)過程是在ticket類 中定義的成員函數(shù)來實現(xiàn)完

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

16、名查找??墒菦]有單獨把按電影名查找單獨寫成函數(shù)來調用,是因為在按電影名查找會輸出很多詳細的電影信息,會使客戶感覺到是在浪費時間。下面是按電影名查找的代碼片段: for(i=0;i

17、<"_______________________________________________________________________________"<

18、<

19、//獲取當前系統(tǒng)時間 tim=localtime(&t); int array[5]={tim->tm_year+1900,tim->tm_mon+1,tim->tm_mday,tim->tm_hour,tim->tm_min}; int s; s=timecmp(tick.tic[i].datetime,array,5);//與系統(tǒng)時間比較 if(s<=0) {

20、 cout<<"\a(已播放?。? <

21、 { cout<<"["; if(tick.tic[i].seat[m][n]!=0) { cout<<"有人"; } else { cout<<"無人"; }

22、 cout<<"]"; } } cout<

23、 } } } 而在另一些函數(shù)種植需要提示用戶找沒找到就可以了。下面是del函數(shù)的按電影名查找 for(i=0;i

24、 cout<<"\n\a\t\t\t\t未找到結果,刪除失??!\n"<

25、tetime[5];//裝時間 ,方便比較 int num;//場次 string name;//電影名 float price;//票價 float discount;//會員折扣 int rest;//余票 float seat[10][10];//座位信息 }; class ticket { private: node tic[N];//存電影的數(shù)組 int len;//現(xiàn)有電影數(shù)量 public: ticket();//構造函數(shù) ~ticket();//析構函數(shù) int sort(int i);//排序 void

26、input();//錄入 void show();//顯示 void search();//查找 void change();//修改 void del();//刪除 void sell();//訂票 void refund()//退票; }tick; 3. int timecmp(int a[],int b[],int n)//時間比較函數(shù),先把時間裝入兩個數(shù)組,把數(shù)組地址傳進來,比較a,b分別是數(shù)組名。n表示循環(huán)比較的次數(shù)。 4. char ch;//接受日期中的字符—或: 5. string na;//輸入的姓名 6. time_t t;//時間

27、變量,已包含在頭文件庫函數(shù)ctime中。 7. struct tm *tim;//時間類型的結構體 8. t=time(NULL);//獲取當前系統(tǒng)時間 9. tim=localtime(&t); 10. int array[5]={tim->tm_year+1900,tim->tm_mon+1,tim->tm_mday,tim->tm_hour,tim->tm_min}; //將系統(tǒng)時間裝入數(shù)組,方便比較 11. int k=0;//標記找到的記錄 12. r=timecmp(tick.tic[i].datetime,array,5);//與系統(tǒng)時間比較 ,返回值給r

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

29、rn 1; } if(a[i]

30、-1)//找到第一個比他大的日期 ,插入其前面 { break; } } if(j==tick.len-1) { return j; } if(j==i) { for(j=i+1;j

31、emp=tick.tic[i]; if(jj;n--) { tick.tic[n]=tick.tic[n-1]; } tick.tic[j]=temp; return j; } else { if(j==tick.len) { for(n=i;n

32、 tick.tic[n]=tick.tic[n+1]; } } tick.tic[n]=temp; return n; } } 4.2 主要程序代碼,加上詳細的注釋 下面簡單介紹一下程序運行結果 主函數(shù)開始運行界面: do { cout<

33、<"\n\n\n\t\t\t\t請選擇:"; cin>>choice; switch(choice) { case 1:manager();break; case 2:customer();break; default :exit(0); } } while(1); Manager系統(tǒng)代碼及運行截圖 密碼輸入界面代碼 do { cout<>inpass; if(inpass==password)

34、 { break; } else { cout<>a; if(a==N||a==n) { exit(0); } }while(1); 選擇菜單代碼 do { cout<<"\n\t\t\t\t歡迎進入管理系統(tǒng)\n\n"; cout<<"\n\t\t\t\t1.錄入影片"; cout<<"\n\t

35、\t\t\t2.顯示影片"; cout<<"\n\t\t\t\t3.查找影片"; cout<<"\n\t\t\t\t4.修改影片"; cout<<"\n\t\t\t\t5.刪除影片"; cout<<"\n\t\t\t\t6.退出"; cout<<"\n\n\n\t\t\t\t請選擇:"; cin>>as; switch(as) { case 1:tick.input();break; case 2:tick.show();break;

36、 case 3:tick.search();break; case 4:tick.change();break; case 5:tick.del();break; case 6: default :system("pause"); return;//任意鍵繼續(xù) } } while(1); } 選擇1——管理系統(tǒng)——>輸入密碼 選擇1——>錄入 void ticket::input()//錄入信息 { system("cls");//清屏 char

37、ch;//接受日期中的字符—或: cout<<"\n\n\n\t\t\t\t《錄入模塊》\n\n\n"<>tick.tic[i].year>>ch>>tick.tic[i].month>>ch>>tick.tic[i].day; cout<<"\n請輸入放映時間(12:30):"; cin>>tick.tic[i].hour; cin>>ch; c

38、in>>tick.tic[i].minute; tick.tic[i].datetime[0]=tick.tic[i].year; tick.tic[i].datetime[1]=tick.tic[i].month; tick.tic[i].datetime[2]=tick.tic[i].day; tick.tic[i].datetime[3]=tick.tic[i].hour; tick.tic[i].datetime[4]=tick.tic[i].minute; cout<<"\n請輸入場次:"; ci

39、n>>tick.tic[i].num; cout<<"\n請輸入電影名稱:"; cin>>tick.tic[i].name; cout<<"\n請輸入電影票價:"; cin>>tick.tic[i].price; cout<<"\n請輸入會員折扣:"; cin>>tick.tic[i].discount; tick.tic[i].rest=100; for(int m=0;m<10;m++) { for(int n=0;n<10;n++) tick.t

40、ic[i].seat[m][n]=0; } tick.len++;//個數(shù)加1 if(i!=0)//按時間,插入排序 { int j=sort(i); } cout<>ch; if(ch==y || ch==Y || ch==n || ch==N) break; else cout<<"輸入錯誤請重新輸入:"; }

41、if(ch==n || ch==N) break; } } 選擇n退出——>選2顯示。 代碼如下 ================================================================ cout<<"\n\n\n\t\t\t\t《顯示模塊》\n\n\n"<

42、____________________________"<tm_year+1900,tim->tm_mon+1,tim->tm_mday,tim->tm_hour,tim->tm_min}; int r; for(int i=0;i

43、ick.len;i++) { r=timecmp(tick.tic[i].datetime,array,5); cout<

44、<<"\t"<繼續(xù)錄入 選擇2——>顯示 選3——>查找 查找的界

45、面代碼 =============================================================== cout<<"\n\n\n\t\t\t\t《查找模塊》\n\n\n"<>flag; if(flag!=1&&flag!=2)

46、 { cout<<"\n\a\t\t\t\t選擇有誤!請選擇正確的查找模式。"<>na;

47、for(i=0;i

48、 cout<<"日----期\t時-間\t場次\t電影名稱\t票價\t折扣\t余票"<

49、name<<"\t\t"; cout<tm_year+1900,tim->tm_m

50、on+1,tim->tm_mday,tim->tm_hour,tim->tm_min}; int r; r=timecmp(tick.tic[i].datetime,array,5);//與系統(tǒng)時間比較 if(r<=0) { cout<<"\a(已播放?。? <

51、endl; } cout<

52、 { cout<<"有人"; } else { cout<<"無人"; } cout<<"]"; } } } } if(j!=1) { co

53、ut<

54、================================ char ch; int temp[3]; cout<<"\n請輸入放映日期:"; cin>>temp[0]>>ch>>temp[1]>>ch>>temp[2]; int j=1; for(i=0;i

55、 查找結果如下:"<

56、tic[i].month<<"-"<

57、 struct tm *tim; t=time(NULL);//獲取當前系統(tǒng)時間 tim=localtime(&t); int array[5]={tim->tm_year+1900,tim->tm_mon+1,tim->tm_mday,tim->tm_hour,tim->tm_min}; int s; s=timecmp(tick.tic[i].datetime,array,5);//與系

58、統(tǒng)時間比較 if(s<=0) { cout<<"\a(已播放?。? <

59、 cout<

60、 cout<<"無人"; } cout<<"]"; } } cout<

61、未找到結果!"<修改 修改界面的源代碼 =================================================================== if(tick.tic[i].name==na)//找到 { j++; char a; do

62、 { cout<

63、"\t\t\t\t6.修改會員折扣"; cout<>flag; char ch; switch(flag) { case 1:cout<<"\n請輸入放映日期:"; cin>>tick.tic[i].year>>ch>>tick.tic[

64、i].month>>ch>>tick.tic[i].day; tick.tic[i].datetime[0]=tick.tic[i].year; tick.tic[i].datetime[1]=tick.tic[i].month; tick.tic[i].datetime[2]=tick.tic[i].day;i=sort(i);break; case 2:cout<<"\n請輸入放映時間:"; cin>>tick.tic[i].hour>>ch>>tick.tic[i].minute

65、; tick.tic[i].datetime[3]=tick.tic[i].hour; tick.tic[i].datetime[4]=tick.tic[i].minute;i=sort(i);break; case 3:cout<<"\n請輸入放映場次:";cin>>tick.tic[i].num;break; case 4:cout<<"\n請輸入影片名:";cin>>tick.tic[i].name;break; case 5:cout<<"\n請輸入票價:";cin>>tick

66、.tic[i].price;break; case 6:cout<<"\n請輸入會員折扣:";cin>>tick.tic[i].discount;break; default:break; } cout<>a; }while(a!=N&&a!=n); cout<<" 當前電影信息如下:"<

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

相關資源

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

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

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


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