c++課程設(shè)計--酒店管理系統(tǒng)_第1頁
已閱讀1頁,還剩27頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p>  1.課題簡介………………………………………03 </p><p>  2.設(shè)計方案………………………………………04</p><p>  3.具體設(shè)計及截屏圖……………………………05</p><p>  4.關(guān)鍵代碼分析…………………………………10</p><p>  5.測試……………………………………………15&

2、lt;/p><p>  6.課題總結(jié)與體會………………………………17</p><p>  7.參考文獻(xiàn)………………………………………18</p><p>  8.源代碼…………………………………………19</p><p><b>  1.課題簡介</b></p><p>  客房管理系統(tǒng)是根據(jù)某酒店

3、對客房管理的實際情況進(jìn)行編寫的,主要目的是為了方便酒店對客房的實際情況進(jìn)行集中的查詢與管理工作,以提高整個酒店的工作。</p><p>  經(jīng)過電腦及生活中的調(diào)查研究,根據(jù)客人的經(jīng)濟水平和生活理念,客房的類型已趨向于多樣化,有標(biāo)準(zhǔn)房,單人房,VIP間,甚至總統(tǒng)套房。而初步設(shè)定通過客房的編號、類型、價格來定位一個客房的管理系統(tǒng)。</p><p>  客房是一個對外服務(wù)的內(nèi)容,為了客人的住宿要

4、求,所以系統(tǒng)需要實現(xiàn)客房信息的錄入、修改和刪除功能。</p><p>  客人對剩余客房需要進(jìn)行選擇,系統(tǒng)必須實現(xiàn)相應(yīng)的查詢、排序和輸出功能,使客人擇優(yōu)而居。</p><p>  本次課程設(shè)計需要實現(xiàn)的是——客房管理系統(tǒng)的鏈表實現(xiàn)。</p><p>  主要實現(xiàn)的功能包括:客房信息的錄入、修改、刪除、剩余客房信息查詢、排序、輸出。客房信息可寫入文件,也可從文件中讀取

5、??头啃畔⑸婕暗臄?shù)據(jù)有客房編號、客房類型、定房日期、客房內(nèi)容(設(shè)施)、定房有效期等。</p><p><b>  2.設(shè)計方案</b></p><p>  按照需求分析所得,客房信息系統(tǒng)有以下幾個功能模塊:</p><p>  1.添加錄入信息模塊;</p><p>  編寫指針摸板,定義臨時的客房間數(shù),包括其各項類的成

6、員,編號,類型,定房日期,價格,客房內(nèi)容,入住天數(shù)。</p><p>  3.修改客房信息模塊;</p><p>  讀取保存的客房信息數(shù)據(jù),根據(jù)客房編號查找所需修改的客房信息,然后根據(jù)具體所需,修改成員參數(shù),并保存。</p><p>  4.刪除客房信息模塊;</p><p>  從保存中的文件中讀取信息,刪除需要刪除的信息,完善現(xiàn)在的客房

7、運作。</p><p>  5.查詢剩余客房函數(shù);</p><p>  分按編號、類型、價格查詢,這樣可以更具有人性化來選擇所剩余的客房,從而進(jìn)行日常安排。</p><p>  6.排序剩余客房模塊;</p><p>  根據(jù)具體所需排序,可以是編號、價格或者類型,本系統(tǒng)中根據(jù)的是客房入住的天數(shù)來排序。</p><p>

8、;  7.輸出剩余客房函數(shù);</p><p>  輸出根據(jù)系統(tǒng)所需排序后的客房信息,本系統(tǒng)中是根據(jù)了客人入住的有效期即天數(shù)來及時了解空出的房間。</p><p>  由上述需求分析可得,系統(tǒng)的功能模塊圖如圖1所示。</p><p><b>  圖1</b></p><p>  2.具體設(shè)計及截屏圖</p>

9、<p><b>  1、類的設(shè)計</b></p><p>  根據(jù)上述需求分析,有客房類和鏈表類。</p><p><b>  (1)客房類</b></p><p>  系統(tǒng)研究客房cGuestroom類中成員: ID[SIZE]是客房編號,Type[SIZE]是客房類型,Book[SIZE]是定房日期,Pric

10、e[SIZE]是每間客房的價格,StayTime[SIZE]是定房的有效期,F(xiàn)unction[SIZE]是客房的主要內(nèi)容(如浴室、衛(wèi)生間、網(wǎng)線等設(shè)施),標(biāo)志flag和構(gòu)造函數(shù)cGuestroom()。客房類的UML圖如(圖2)所示:</p><p><b>  圖2</b></p><p><b> ?。?)鏈表類</b></p>

11、<p>  在tList類中,有成員:構(gòu)造函數(shù)tList(),創(chuàng)建鏈表Create(),判斷鏈表是否為空的函數(shù)Empty() const,從尾部插入一個元素的函數(shù)Insert(const T e),返回第i個節(jié)點的函數(shù)GetcNode(int i),在鏈表中查詢某個值的函數(shù)bool Find(const T e),析構(gòu)函數(shù)~tList(),頭節(jié)點head。鏈表類的UML圖如(圖3)所示:</p><p>

12、;<b>  圖3</b></p><p><b>  2.界面設(shè)計:</b></p><p>  (1) 主界面的設(shè)計</p><p>  主界面中顯示客房管理系統(tǒng)的全部信息,客房信息的錄入,客房信息的保存,客房信息的修改,客房信息的刪除,剩余客房的查詢,剩余客房的排序,剩余客房的輸出,客房信息管理系統(tǒng)如圖4所示。<

13、;/p><p><b>  圖4 主界面</b></p><p> ?。?)分界面:客房信息的錄入的設(shè)計</p><p>  提示輸入客房編號,客房類型,客人定房日期,客房價格,客房中的主要內(nèi)容,客房定房的有效期??头啃畔浫肴鐖D5所示。</p><p>  圖5 錄入客房信息的分界面</p><p>

14、; ?。?)分界面:客房信息的保存的設(shè)計</p><p>  針對第一步客房信息的輸入及以后信息的修改、刪除做一個文件保存。客房信息保存如圖6所示。</p><p>  圖6 保存客房信息的分界面</p><p> ?。?)分界面:客房信息的修改的設(shè)計</p><p>  提示根據(jù)編號進(jìn)行客房信息修改,輸入要修改的內(nèi)容,如不修改的項目就遠(yuǎn)洋輸

15、出。客房信息修改界面如圖7所示。</p><p>  圖7 修改客房信息的分界面</p><p>  (5)分界面:客房信息的刪除的設(shè)計</p><p>  提示進(jìn)入刪除截面,根據(jù)客房編號查找所需刪除的客房信息。客房信息的刪除界面如圖8所示。</p><p>  圖8 刪除客房信息的分界面</p><p>  (6)分

16、界面:剩余客房信息的查詢的設(shè)計</p><p>  在保存完所修改或刪除的客房信息,查詢剩余的客房信息,按提示進(jìn)入剩余客房查詢界面,有按編號、類型、價格查詢,根據(jù)擁護(hù)自主選擇。查詢剩余客房的信息界面如圖9所示。</p><p>  圖9 查詢客房信息的分界面</p><p> ?。?)剩余客房信息的排序的設(shè)計</p><p>  按提示進(jìn)行剩

17、余客房的排序,本系統(tǒng)中是以客人的入住天數(shù)排序,顯示屏幕如圖10所示。</p><p> ?。?)分界面:剩余客房信息的輸出的設(shè)計</p><p>  在排序完后的剩余客房中,輸出所有客房的信息,以檢驗客房的經(jīng)營情況。剩余客房信息輸出界面如圖10所示。</p><p>  圖10 輸出剩余客房的信息</p><p><b>  4.關(guān)

18、鍵代碼分析</b></p><p><b> ?。?)系統(tǒng)的登錄</b></p><p>  在主函數(shù)中,輸出客房信息系統(tǒng)的各功能提示。選擇需要執(zhí)行功能的序號,由switch判斷和選擇所需要執(zhí)行的功能。</p><p>  選擇1:執(zhí)行客房信息的錄入;</p><p>  選擇2:執(zhí)行保存客房的信息;<

19、/p><p>  選擇3:執(zhí)行教工基本信息的保存;</p><p>  選擇4:執(zhí)行教工基本信息的刪除;</p><p>  選擇5:執(zhí)行教工工資按從高到低排序;</p><p>  選擇6:執(zhí)行教工基本信息的修改;</p><p>  選擇7:執(zhí)行教工基本信息的查詢;</p><p><b&

20、gt;  選擇8:退出;</b></p><p><b>  主函數(shù):</b></p><p>  int main()</p><p>  { tList<cGuestroom> tListMedic;</p><p>  tListMedic.Create();

21、 //創(chuàng)建鏈表</p><p>  ReadData(&tListMedic);</p><p><b>  while(1)</b></p><p>  { cout<<"\n\n 客房管理系統(tǒng) \n\n";</p>

22、;<p>  cout<<" ---------------------------------- \n\n";</p><p>  cout<<" 1.客房信息的錄入 \n\n";</p><p>  cout<<"

23、2:客房信息保存\n\n";</p><p>  cout<<" 3.客房信息的修改 \n\n";</p><p>  cout<<" 4.客房信息的刪除 \n\n";</p><p>  

24、cout<<" 5.剩余客房信息的查詢 \n\n";</p><p>  cout<<" 6.剩余客房信息的排序 \n\n";</p><p>  cout<<" 7.剩余客房信息的輸出

25、 \n\n";</p><p>  cout<<" 8.退 出 系 統(tǒng) \n\n";</p><p>  cout<<" 請選擇:";</p><p>  int choose=0;</p>&

26、lt;p>  cin>>choose;</p><p>  switch (choose) //用戶選擇</p><p>  { case 1:AddtheGuestroom(&tListMedic); break; //輸入客房信息</p><p&g

27、t;  case 2:SaveData(&tListMedic);break; //客房信息信息保存</p><p>  case 3:ModifytheGuestroom(&tListMedic); break; //修改客房信息</p><p>  case 4:DeletetheGuestroom(&tListMedi

28、c); break; //刪除客房信息</p><p>  case 5:FindtheremainGuestroom(&tListMedic); break; //查詢剩余客房信息</p><p>  case 6:RanktheremainGuestroom(&tListMedic); break; //排序剩余客房信息</p><p&

29、gt;  case 7:OutputtheremainGuestroom(&tListMedic); break; //輸出剩余客房信息</p><p>  case 8:exit(0); //退出</p><p>  default : break;} </p><p>  retu

30、rn 0; }</p><p><b>  }</b></p><p>  在讀取數(shù)據(jù)庫中,可以從以有的文件中讀取數(shù)據(jù)到程序中,避免了程序的重復(fù)輸入數(shù)據(jù),有利于后面的信息修改、刪除等功能。</p><p><b>  讀取數(shù)據(jù)庫:</b></p><p>  void ReadData(tList&

31、lt;cGuestroom> *tListMedic) //讀取數(shù)據(jù)庫</p><p><b>  {</b></p><p>  char buf[BUFSIZE]; </p><p>  ifstream ifile("Guestroom.txt",ios_base::in);//創(chuàng)建一個輸出文件流對

32、象</p><p>  if (!ifile) </p><p><b>  { </b></p><p>  cerr << "讀取時打開文件出錯!" << endl; </p><p><b>  } </b></p><p>

33、  cGuestroom Guestroom;</p><p>  while(ifile.getline(buf,BUFSIZE)) //遍歷文本,讀取數(shù)據(jù)</p><p><b>  {</b></p><p>  ifile.getline(buf,BUFSIZE);</p><p>  str

34、cpy(Guestroom.ID,buf); //讀取客房編號</p><p>  memset(buf,0,BUFSIZE);</p><p>  ifile.getline(buf,BUFSIZE); //讀取客房類型</p><p>  strcpy(Guestroom.Type,buf);</p>

35、<p>  memset(buf,0,BUFSIZE);</p><p>  ifile.getline(buf,BUFSIZE); //讀取提前定房日期</p><p>  strcpy(Guestroom.Book,buf);</p><p>  memset(buf,0,BUFSIZE);</p><p&

36、gt;  ifile.getline(buf,BUFSIZE); //讀取價格</p><p>  strcpy(Guestroom.Price,buf);</p><p>  memset(buf,0,BUFSIZE);</p><p>  ifile.getline(buf,BUFSIZE); //讀取客房主要內(nèi)容

37、</p><p>  strcpy(Guestroom.Function,buf);</p><p>  memset(buf,0,BUFSIZE);</p><p>  ifile.getline(buf,BUFSIZE); //讀取入住有效期</p><p>  Guestroom.StayTime=atoi(bu

38、f);</p><p>  memset(buf,0,BUFSIZE);</p><p>  Guestroom.flag=true;</p><p>  tListMedic->Insert(Guestroom);</p><p><b>  }</b></p><p>  cout<

39、;<"讀取數(shù)據(jù)成功!\n\n";</p><p>  ifile.close(); //關(guān)閉文件</p><p><b>  return;</b></p><p><b>  }</b></p><p><

40、b> ?。?)信息的添加</b></p><p>  客房信息的錄入,創(chuàng)建cGuestroom類和tempGuestroom對象,調(diào)用構(gòu)造函數(shù),輸入客房的房間編號、房間類型、定房日期、房間價格、房間內(nèi)容及個人的入住有效期,通過Insert函數(shù)實現(xiàn)。</p><p>  void AddtheGuestroom(tList<cGuestroom> *tListM

41、edic) // 輸入客房函數(shù)</p><p>  { cGuestroom tempGuestroom; //定義臨時客房</p><p>  cout<<"下面開始添加客房信息\n";</p><p>  cout<<"請輸入入住的客房編號:"

42、;;</p><p>  cin>>tempGuestroom.ID; //讀入客房編號</p><p>  cout<<"請輸入客房類型:";</p><p>  cin>>tempGuestroom.Type;

43、 //讀入客房類型</p><p>  cout<<"請輸入客人定房日期:";</p><p>  cin>>tempGuestroom.Book; //讀入定房日期</p><p>  cout<<"請輸入客房價格:";</p&

44、gt;<p>  cin>>tempGuestroom.Price; //讀入價格</p><p>  cout<<"請輸入客房的主要內(nèi)容:";</p><p>  cin>>tempGuestroom.Function;

45、 //讀入主要內(nèi)容</p><p>  cout<<"請輸入客房入住有效期:";</p><p>  cin>>tempGuestroom.StayTime; //讀入入住有效期</p><p>  tempGuestroom.flag=true;</p>&

46、lt;p>  tListMedic->Insert(tempGuestroom);</p><p>  cout<<"添加成功!\n";</p><p>  system("pause");</p><p>  system("cls");</p><p>&

47、lt;b>  }</b></p><p><b> ?。?)信息的刪除</b></p><p>  刪除客房信息,按要求提示輸入要刪除客房的房間編號,定義一個指向鏈表第一個節(jié)點的指針p。如果指針創(chuàng)建成功,開始用while和if語句實現(xiàn)p指向的節(jié)點的客房編號與存在的客房編號的比較。如果相同,輸出該客房的信息并刪除;如果沒有相同的,提示沒有所查詢的房間。

48、</p><p>  void DeletetheGuestroom(tList<cGuestroom> *tListMedic) //刪除客房信息</p><p>  { char id[BUFSIZE];</p><p>  cout<<"\n請輸入你要查找的客房編號:";</p><p&

49、gt;  cin>>id; //讀取客房編號</p><p>  bool flag=false;</p><p>  int count=0;</p><p>  cNode<cGuestroom> *p;</p><p>  

50、p=tListMedic->head->next;</p><p><b>  while(p)</b></p><p>  { if(strcmp(p->data.ID,id)==0 && p->data.flag)</p><p>  { count++;</p><p&g

51、t;  flag=true;</p><p><b>  break;}</b></p><p>  p=p->next;}</p><p>  if(flag==false) cout<<"對不起,你所查找的客房延長了住房日期!\n";</p><p><b> 

52、 //如果不能刪</b></p><p>  else //如果能刪 </p><p>  { count--;</p><p>  cout<<"找到了,該客房的原始信息是:\n";</p><p&g

53、t;  cout<<"\n\n客房編號:"<<(p->data).ID<<"\t客房類型:"<<(p->data).Type<<"\n\t\t定房日期:"<<(p->data).Book<<"\n\t\t價格:"<<(p->data).Pr

54、ice;</p><p>  cout<<"\n\t\t客房的主要內(nèi)容:"<<(p->data).Function<<"\n\t\t入住有效期:"<<(p->data).StayTime;</p><p>  cout<<endl;</p><p>  (

55、p->data).flag=false;</p><p>  cout<<"該客房的信息刪除成功!\n";} </p><p>  cout<<endl;</p><p>  system("pause");</p><p>  system("cls"

56、);</p><p><b>  return;</b></p><p><b>  }</b></p><p><b> ?。?)信息的修改</b></p><p>  按提示輸入要修改的客房的客房編號,定義一個指向鏈表第一個節(jié)點的指針p。如果指針創(chuàng)建成功,開始用while和

57、if語句實現(xiàn)p指向的節(jié)點的客房編號與存在的客房編號的比較。如果相同,提示輸入房間的各個信息;如果沒有相同,提示沒有所查詢的客房。</p><p>  void ModifytheGuestroom(tList<cGuestroom> *tListMedic) //修改客房信息</p><p>  { char id[BUFSIZE];</p><p&

58、gt;  cout<<"\n請輸入你要查找的客房編號:";</p><p>  cin>>id; //讀取客房編號</p><p>  bool flag=false;</p><p>  cNode<cGuestroom&

59、gt; *p;</p><p>  p=tListMedic->head->next;</p><p><b>  while(p)</b></p><p>  { if(strcmp(p->data.ID,id)==0 && p->data.flag)</p><p>  

60、{ flag=true;</p><p><b>  break;}</b></p><p>  p=p->next;}</p><p>  if(flag==true) </p><p>  { cout<<"找到了,該客房的原始信息是:\n";</p&

61、gt;<p>  cout<<"\n\n客房編號:"<<(p->data).ID<<"\t客房類型:"<<(p->data).Type<<"\n\t\t定房日期:"<<(p->data).Book<<"\n\t\t價格:"<<(p-

62、>data).Price;</p><p>  cout<<"\n\t\t客房的主要內(nèi)容:"<<(p->data).Function<<"\n\t\t入住有效期:"<<(p->data).StayTime;</p><p>  cout<<"\n下面開始修改該客房

63、的信息:\n";</p><p>  cGuestroom tempGuestroom; //定義臨時客房</p><p>  cout<<"請輸入客房的客房編號:";</p><p>  cin>>tempGuestroom.ID;

64、 //讀入客房編號</p><p>  cout<<"請輸入客房的客房類型:";</p><p>  cin>>tempGuestroom.Type; //讀入客房類型</p><p>  cout<<"請輸入客人的定房日期:&q

65、uot;;</p><p>  cin>>tempGuestroom.Book; //讀入定房日期</p><p>  cout<<"請輸入客房的客房價格:";</p><p>  cin>>tempGuestroom.Price;

66、 //讀入價格</p><p>  cout<<"請輸入客房的客房主要內(nèi)容:";</p><p>  cin>>tempGuestroom.Function; //讀入客房的主要內(nèi)容</p><p>  cout<<"請輸入客人入住客房有效期

67、:";</p><p>  cin>>tempGuestroom.StayTime; //讀入入住有效期</p><p>  tempGuestroom.flag=true;</p><p>  p->data=tempGuestroom;</p><p>  cout&l

68、t;<"修改成功!";}</p><p>  cout<<endl;</p><p>  system("pause");</p><p>  system("cls");</p><p><b>  return;}</b></p>

69、;<p><b>  5.測試</b></p><p>  程序測試是將編制的程序投入實際運行前,用手工或編譯程序等方法進(jìn)行測試,修正語法錯誤和邏輯錯誤的過程。</p><p><b>  原程序:</b></p><p>  void RanktheremainGuestroom(tList<cGue

70、stroom> *tListMedic) //排序剩余客房</p><p>  {cNode<cGuestroom> *p,*q;</p><p>  cGuestroom remainGuestroom;</p><p>  for (p=tListMedic->head->next; p!= NULL; p=p->next

71、)</p><p>  {for (q=p; q!= NULL; q=q->next)</p><p>  { if (p->data.Price > q->data.Price)</p><p>  { remainGuestroom.flag = p->data.flag; </p><p>  str

72、cpy(remainGuestroom.ID, p->data.ID); </p><p>  strcpy(remainGuestroom.Type, p->data.Type);</p><p>  strcpy(remainGuestroom.Book, p->data.Book); </p><p>  strcpy(remainGuest

73、room.Price, p->data.Price);</p><p>  strcpy(remainGuestroom.Function, p->data.Function);</p><p>  remainGuestroom.StayTime = p->data.StayTime;</p><p>  p->data.flag = q-

74、>data.flag; </p><p>  strcpy(p->data.Function, q->data.Function);</p><p>  strcpy(p->data.ID, q->data.ID); </p><p>  strcpy(p->data.Type, q->data.Type);</p&g

75、t;<p>  strcpy(p->data.Book, q->data.Book); </p><p>  p->data.StayTime = q->data.StayTime; </p><p>  q->data.flag = remainGuestroom.flag; </p><p>  strcpy(q-&g

76、t;data.Function, remainGuestroom.Function);</p><p>  strcpy(q->data.ID, remainGuestroom.ID);</p><p>  strcpy(q->data.Type, remainGuestroom.Type);</p><p>  strcpy(q->data.Bo

77、ok, remainGuestroom.Book); </p><p>  q->data.StayTime = remainGuestroom.StayTime; } }</p><p><b>  }</b></p><p><b>  }</b></p><p>  編譯成功后開始運行,

78、信息錄入后,不能在文檔中正確排序輸出,經(jīng)Debug調(diào)試,發(fā)現(xiàn),以客人的入住天數(shù)排序來及時調(diào)出空余客房為最佳選擇。</p><p>  void RanktheremainGuestroom(tList<cGuestroom> *tListMedic) //排序剩余客房</p><p>  {cNode<cGuestroom> *p,*q;</p>

79、<p>  cGuestroom remainGuestroom;</p><p>  for (p=tListMedic->head->next; p!= NULL; p=p->next)</p><p>  { for (q=p; q!= NULL; q=q->next)</p><p>  { if (p->data

80、.StayTime > q->data.StayTime)</p><p>  { remainGuestroom.flag = p->data.flag; </p><p>  strcpy(remainGuestroom.ID, p->data.ID); </p><p>  strcpy(remainGuestroom.Type,

81、p->data.Type);</p><p>  strcpy(remainGuestroom.Book, p->data.Book); </p><p>  strcpy(remainGuestroom.Price, p->data.Price);</p><p>  strcpy(remainGuestroom.Function, p->

82、data.Function);</p><p>  remainGuestroom.StayTime = p->data.StayTime;</p><p>  p->data.flag = q->data.flag; </p><p>  strcpy(p->data.Function, q->data.Function);</

83、p><p>  strcpy(p->data.ID, q->data.ID); </p><p>  strcpy(p->data.Type, q->data.Type);</p><p>  strcpy(p->data.Book, q->data.Book); </p><p>  p->data.S

84、tayTime = q->data.StayTime; </p><p>  q->data.flag = remainGuestroom.flag; </p><p>  strcpy(q->data.Function, remainGuestroom.Function);</p><p>  strcpy(q->data.ID, rema

85、inGuestroom.ID);</p><p>  strcpy(q->data.Type, remainGuestroom.Type);</p><p>  strcpy(q->data.Book, remainGuestroom.Book); </p><p>  q->data.StayTime = remainGuestroom.Stay

86、Time; } }</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  6.課題總結(jié)與體會</b></p><p>  本次的C++課程設(shè)計雖然只是短短的兩個星期,但是卻令我體會很多,也學(xué)到很多東西。利用C++去設(shè)計客房

87、管理,使我加強了對C++的認(rèn)識,也對現(xiàn)代客房的基本運作管理有了初步了解。</p><p>  在這次課程設(shè)計中,我還懂得了程序開發(fā)中的一些比較重要的步驟并且學(xué)會了一些沒有接觸過的知識,比如需求分析、類的設(shè)計以及類與類之間的關(guān)系,UML圖形的表示方法等。面向?qū)ο蟪绦蛟O(shè)計作為一門軟件設(shè)計的課程,具有極強的實踐性,使我加強了靈活應(yīng)用理論知識的能力及面向?qū)ο蟪绦蛟O(shè)計技能。C++語言相對于C語言來更具有優(yōu)越性,它不僅兼容C

88、,還有一個非常重要的特點就是面向?qū)ο螅ň唧w來講就是類),另外模板技術(shù)的頻繁引用,也使整個程序看起來更清晰,更有條理化,所以,對模塊的掌握,在C++學(xué)習(xí)中是非常重要的。 </p><p>  在本次的應(yīng)用程序的設(shè)計和創(chuàng)建過程中,我遇到了許多問題,有些是自己沒有在教科書中學(xué)過的,但是卻是系統(tǒng)所必須的,我通過在網(wǎng)上查找資料、查找書本、請教老師,一步步的把這些問題搞懂了,所以,課程設(shè)計也培養(yǎng)了我們探索實踐的能力。<

89、/p><p>  總之,我覺得,我們學(xué)習(xí)和掌握的知識,只有通過實際應(yīng)用,才能真正的理解和掌握,才能更好的去應(yīng)用。以前上C++課程,只是零散被動地接受知識,而不是主動地去吸收滲透,而此次的課程設(shè)計卻讓我對編程產(chǎn)生了興趣,習(xí)慣獨立自主地完成任務(wù),在困難中尋求幫助,加強和同學(xué)間的互幫互助,相信自己會在以后的學(xué)習(xí)和工作更加有經(jīng)驗。通過課程設(shè)計,我既復(fù)習(xí)了以前的舊知識,又學(xué)到了一些新的知識;設(shè)計增強了我們用所學(xué)知識去解決具體問

90、題的能力,進(jìn)一步培養(yǎng)了我們獨立思考問題和解決問題的能力。 </p><p><b>  7.參考文獻(xiàn)</b></p><p>  【1】陳維興,林小茶.C++面向?qū)ο蟪绦蛟O(shè)計教程.北京.清華大學(xué)出版社2010,10</p><p>  【2】譚浩強.C語言程序設(shè)計.北京:清華大學(xué)出版社.2010,5</p><p>  

91、【3】www.51CTO.com</p><p><b>  8.源代碼</b></p><p>  //客房管理系統(tǒng)主要實現(xiàn)的功能包括:客房信息的錄入、修改、刪除、剩余客房信息查詢、排序、輸出??头啃畔⒖蓪懭胛募部蓮奈募凶x取。</p><p>  /* 系統(tǒng)的登錄 信息的添加 信息的刪除 信息的修改 */</

92、p><p>  #include <iostream> //指示編譯器將文件iostream中的代碼嵌入到該程序中該指令所在的地方</p><p>  using namespace std;</p><p>  #include<fstream>//包含文件流頭文件</p><p>  #define BUFSIZ

93、E 50</p><p>  class cGuestroom;</p><p>  void FindTheGuestroom(); //查找客房</p><p>  void FindTheGuestroomById(); //按照編號找客房</p><p>  void FindTheGuestroomByT

94、ype(); //按照類型找客房</p><p>  void FindTheGuestroomByPrice(); //按照價格找客房</p><p>  void DeleteTheGuestroom(); //刪除客房</p><p>  void AddTheGuestroom(); //客房添加</p>

95、;<p>  void ModifyTheGuestroom(); //修改客房</p><p>  template <class T> //template:模板,樣板</p><p>  class cNode //節(jié)點</p><p><b&g

96、t;  {</b></p><p>  public: </p><p><b>  T data;</b></p><p>  cNode *next;</p><p><b>  };</b></p><p>

97、  template <class T></p><p>  class tList </p><p><b>  {</b></p><p>  public: //定義成員函數(shù)</p><p><

98、b>  tList();</b></p><p>  void Create(); //創(chuàng)建鏈表</p><p>  bool Empty() const; //判斷鏈表是否為空</p><p>  void Insert(const T e); //從尾部插

99、入一個元素</p><p>  cNode<T>* GetcNode(int i); //返回第i個節(jié)點</p><p>  bool Find(const T e); //在鏈表中查找某個值</p><p>  ~tList(); //銷毀鏈表,析

100、構(gòu)</p><p>  cNode<T> *head; //頭節(jié)點</p><p><b>  };</b></p><p>  template <class T></p><p>  tList<T>::tList()

101、 //類的成員函數(shù)的實現(xiàn)</p><p><b>  {</b></p><p>  head=new cNode<T>;</p><p>  head->next=NULL;</p><p><b>  }</b></p><p>  tem

102、plate <class T></p><p>  void tList<T>::Create()</p><p><b>  {</b></p><p>  cNode<T> *p;</p><p><b>  p=head;</b></p>&l

103、t;p>  p->next=NULL;</p><p><b>  }</b></p><p>  template <class T></p><p>  bool tList<T>::Empty() const </p><p><b>  {</b>&l

104、t;/p><p>  return (head->next==NULL);</p><p><b>  }</b></p><p>  template <class T></p><p>  void tList<T>::Insert(const T e) //insert:插入<

105、;/p><p><b>  {</b></p><p>  cNode<T> *p,*q;</p><p><b>  p=head;</b></p><p>  q=new cNode<T>;</p><p>  q->data=e;</p&

106、gt;<p>  while(p->next)</p><p><b>  {</b></p><p>  p=p->next;</p><p><b>  }</b></p><p>  p->next=q;</p><p>  q->

107、next=NULL;</p><p><b>  }</b></p><p>  template <class T></p><p>  cNode<T>* tList<T>::GetcNode(int i) //返回第i個節(jié)點</p><p><b&

108、gt;  {</b></p><p><b>  int k=0;</b></p><p>  cNode<T> *p;</p><p><b>  p=head;</b></p><p>  while(p && k<i)</p><

109、;p><b>  {</b></p><p>  p=p->next;</p><p><b>  ++k;</b></p><p><b>  }</b></p><p><b>  return p;</b></p><

110、p><b>  }</b></p><p>  template <class T></p><p>  bool tList<T>::Find(const T e) //在鏈表中查找某個值</p><p><b>  {</b></p><p>

111、;  bool flag=false;</p><p>  cNode<T> *p;</p><p>  p=head->next;</p><p><b>  while(p)</b></p><p><b>  {</b></p><p>  if(p-

112、>data==e)</p><p><b>  {</b></p><p>  flag=true;</p><p><b>  break;</b></p><p><b>  }</b></p><p>  p=p->next;</

113、p><p><b>  }</b></p><p>  return flag;</p><p><b>  }</b></p><p>  template <class T></p><p>  tList<T>::~tList()</p>

114、<p><b>  {</b></p><p>  cNode<T> *p;</p><p>  while(head)</p><p><b>  {</b></p><p>  p=head->next;</p><p>  delete

115、head;</p><p><b>  head=p;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  class cGuestroom</p><p><b>  {</b&g

116、t;</p><p><b>  public:</b></p><p>  char ID[BUFSIZE]; //客房編號</p><p>  char Type[BUFSIZE]; //客房類型</p><p>  char Book[BUFSIZE]; //提前定房日期</p><p&

117、gt;  char Price[BUFSIZE]; //客房價格</p><p>  char Function[BUFSIZE]; //客房主要內(nèi)容</p><p>  int StayTime; //入住天數(shù)有效期</p><p>  bool flag;//標(biāo)志</p><p>  cGuestroom()//構(gòu)造函數(shù)

118、初始化</p><p><b>  {</b></p><p>  memset(ID,0,BUFSIZE);memset(Type,0,BUFSIZE);memset(Book,0,BUFSIZE);memset(Function,0,BUFSIZE);</p><p>  memset(Price,0,BUFSIZE);StayTime=0

119、.0;flag=false;</p><p>  } //memset:把char類型轉(zhuǎn)換成ASCII值</p><p><b>  };</b></p><p>  void ReadData(tList<cGuestroom> *tListGue)//讀取數(shù)據(jù)庫</p>&l

120、t;p><b>  {</b></p><p>  char buf[BUFSIZE]; </p><p>  ifstream ifile("Guestroom.txt",ios_base::in);//創(chuàng)建一個輸出文件流對象</p><p>  if (!ifile) </p><p>&

121、lt;b>  { </b></p><p>  cerr << "讀取時打開文件出錯!" << endl; </p><p><b>  } </b></p><p>  cGuestroom Guestroom;</p><p>  while(ifile

122、.getline(buf,BUFSIZE)) //遍歷文本,讀取數(shù)據(jù)</p><p><b>  {</b></p><p>  ifile.getline(buf,BUFSIZE);</p><p>  strcpy(Guestroom.ID,buf);//讀取客房編號</p><p>  memset(buf,0,B

123、UFSIZE);</p><p>  ifile.getline(buf,BUFSIZE);//讀取客房類型</p><p>  strcpy(Guestroom.Type,buf);</p><p>  memset(buf,0,BUFSIZE);</p><p>  ifile.getline(buf,BUFSIZE);//讀取提前定房日

124、期</p><p>  strcpy(Guestroom.Book,buf);</p><p>  memset(buf,0,BUFSIZE);</p><p>  ifile.getline(buf,BUFSIZE);//讀取價格</p><p>  strcpy(Guestroom.Price,buf);</p><p

125、>  memset(buf,0,BUFSIZE);</p><p>  ifile.getline(buf,BUFSIZE);//讀取客房主要內(nèi)容</p><p>  strcpy(Guestroom.Function,buf);</p><p>  memset(buf,0,BUFSIZE);</p><p>  ifile.getl

126、ine(buf,BUFSIZE);//讀取入住有效期</p><p>  Guestroom.StayTime=atoi(buf);</p><p>  memset(buf,0,BUFSIZE);</p><p>  Guestroom.flag=true;</p><p>  tListGue->Insert(Guestroom);

127、</p><p><b>  }</b></p><p>  cout<<"讀取數(shù)據(jù)成功!\n\n";</p><p>  ifile.close();//關(guān)閉文件</p><p><b>  return;</b></p><p><b

128、>  }</b></p><p>  void AddtheGuestroom(tList<cGuestroom> *tListGue)// 輸入客房函數(shù)</p><p><b>  {</b></p><p>  cGuestroom tempGuestroom; //定義臨時客房</p><

129、;p>  cout<<"下面開始添加客房信息\n";</p><p>  cout<<"請輸入入住的客房編號:";</p><p>  cin>>tempGuestroom.ID; //讀入客房編號</p><p>  cout<<"請輸入客房類型:

130、";</p><p>  cin>>tempGuestroom.Type; //讀入客房類型</p><p>  cout<<"請輸入客人定房日期:";</p><p>  cin>>tempGuestroom.Book; //讀入定房日期</p><p>

131、  cout<<"請輸入客房價格:";</p><p>  cin>>tempGuestroom.Price; //讀入價格</p><p>  cout<<"請輸入客房的主要內(nèi)容:";</p><p>  cin>>tempGuestroom.Function; //

132、讀入主要內(nèi)容</p><p>  cout<<"請輸入客房入住有效期:";</p><p>  cin>>tempGuestroom.StayTime; //讀入入住有效期</p><p>  tempGuestroom.flag=true;</p><p>  tListGue->Inse

133、rt(tempGuestroom);</p><p>  cout<<"添加成功!\n";</p><p>  system("pause"); //pause:停頓,終止</p><p>  system("cls");</p><p><

溫馨提示

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

評論

0/150

提交評論