模擬旅館管理系統(tǒng)的一個(gè)功能-床位的分配與回收_第1頁
模擬旅館管理系統(tǒng)的一個(gè)功能-床位的分配與回收_第2頁
模擬旅館管理系統(tǒng)的一個(gè)功能-床位的分配與回收_第3頁
模擬旅館管理系統(tǒng)的一個(gè)功能-床位的分配與回收_第4頁
模擬旅館管理系統(tǒng)的一個(gè)功能-床位的分配與回收_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

./實(shí)驗(yàn)報(bào)告課程名稱數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)名稱床位的分配與回收實(shí)驗(yàn)類型_綜合型實(shí)驗(yàn)地點(diǎn)計(jì)405機(jī)房實(shí)驗(yàn)日期指導(dǎo)教師海平專業(yè)軟件工程班級軟件1601學(xué)號1611030102寇春雷石油化工大學(xué)計(jì)算機(jī)與通信工程學(xué)院數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告評分表項(xiàng)目要求分?jǐn)?shù)有無項(xiàng)目〔√得分預(yù)習(xí)報(bào)告〔30分實(shí)驗(yàn)?zāi)康拿鞔_5實(shí)驗(yàn)容理解透徹5實(shí)驗(yàn)方案設(shè)計(jì)完整合理程序總體框架設(shè)計(jì)完整10完成相關(guān)輔助代碼5測試方案合理5實(shí)驗(yàn)過程〔30分發(fā)現(xiàn)問題5問題的分析15問題的解決方法10實(shí)驗(yàn)報(bào)告〔20分容翔實(shí)無缺漏5如實(shí)記錄實(shí)驗(yàn)過程10撰寫規(guī)整5實(shí)驗(yàn)總結(jié)〔10分實(shí)驗(yàn)結(jié)果的分析5按照結(jié)果對原實(shí)驗(yàn)方案的改進(jìn)意見5實(shí)驗(yàn)體會(huì)〔10分實(shí)驗(yàn)的收獲5實(shí)驗(yàn)容的發(fā)散考慮5總分實(shí)驗(yàn)四模擬旅館管理系統(tǒng)的一個(gè)功能——床位的分配與回收題目:模擬旅館管理系統(tǒng)的一個(gè)功能——床位的分配與回收問題描述:某旅館有n個(gè)等級的房間,第I等級有個(gè)房間,每個(gè)等級有個(gè)床位〔1≤I≤n。試模擬旅館管理系統(tǒng)中床位分配和回收的功能,設(shè)計(jì)能為單個(gè)旅客分配床位,在其離店便回收床位〔供下次分配的算法。⒉基本要求〔1輸入數(shù)據(jù)分配時(shí),輸入旅客、年齡、性別、到達(dá)日期和所需房間等級?;厥諘r(shí),輸入房間等級、房間號和床位號。2輸出數(shù)據(jù)分配成功時(shí)打印旅客、年齡、到達(dá)日期、房間等級、房間和床位。分配不成功時(shí),如所有等級均無床位,則打印"客滿"信息;如旅客需要的等級均無空床位,則打印"是否愿意更換等級?"的詢問信息。若旅客愿意更換,則重新輸入有關(guān)信息,再進(jìn)行分配,否則分配工作結(jié)束。⒊實(shí)現(xiàn)提示〔1數(shù)據(jù)結(jié)構(gòu)主要采用順序結(jié)構(gòu)結(jié)構(gòu)的線性表及堆棧。每個(gè)房間用一個(gè)如下所示的具有五個(gè)字段的結(jié)點(diǎn)〔房結(jié)點(diǎn)表示:性別房間號現(xiàn)有空床數(shù)BTOPRLINK其中,性別:0表示房間為空狀態(tài)1表示房間分配給女旅客2表示房間分配給男旅客現(xiàn)有空床數(shù):數(shù)據(jù)在0~之間,其中是第i等級一個(gè)房間的床位數(shù),當(dāng)現(xiàn)有空床數(shù)為時(shí),表示房間為空;為0時(shí),表示房間滿。RLINK:當(dāng)房間空時(shí),用作空房棧的連接;當(dāng)房間不空時(shí),指向下一個(gè)房結(jié)點(diǎn)。BTOP:指向該房間的空床號棧棧頂。一個(gè)房間對應(yīng)一個(gè)順序表示的空床號棧。棧的容量為,棧中存放空床號。分配時(shí),從棧頂取出空床號,棧頂下移〔BTOP=BTOP+1;回收時(shí),棧頂上移〔BTOP=BTOP-1,將回收的空床號填入棧頂。每一個(gè)等級中的空房間構(gòu)成一個(gè)空房棧;已住旅客的房間構(gòu)成一個(gè)鏈?!埠喎Q房鏈,其頭結(jié)點(diǎn)結(jié)構(gòu)如下:可分配女床位總數(shù)可分配男床位總數(shù)TTOPRLINK其中::第i等級中房間總數(shù)第i等級中每個(gè)房間的床位數(shù)可分配男、女床位的總數(shù)的初值等于*,因?yàn)殚_始時(shí)所有房間和床位既可以分配給男旅客,也可以分配給女旅客。當(dāng)在房鏈中分配一個(gè)床位給男〔女旅客,床位總數(shù)應(yīng)減1;當(dāng)從空房棧中取出一個(gè)房間作為男〔女旅客房間時(shí),則可分配女〔男床位總數(shù)應(yīng)減,當(dāng)回收一個(gè)男〔女床位時(shí),則可分配男〔女床位總數(shù)應(yīng)加1;當(dāng)回收一個(gè)男〔女空房至空房棧時(shí),則可分配女〔男床位總數(shù)應(yīng)加。TTOP:指向本級空房棧棧頂,當(dāng)無空房間時(shí),TTOP=^〔NIL。RLINK:指向本級房鏈第一個(gè)頂點(diǎn),當(dāng)房鏈為空時(shí),RLINK=^<NIL>順序表s=<>,其中,順序存放第1~n等級房間的頭結(jié)點(diǎn);存放容如下所示:全店可分配女床總數(shù)全店可分配女床總數(shù)00^^初始時(shí),全店可分配男、女床總數(shù)相同,均為,在分配或回收時(shí),對各等級可分配男〔女床位總數(shù)處理的同時(shí)也要對全店可分配男〔女床總數(shù)作相應(yīng)處理,當(dāng)全店可分配男〔女床總數(shù)等于零時(shí),表示客滿?!?需求分析當(dāng)客戶到來的時(shí)候,可以登錄客戶的信息,并且根據(jù)旅館的情況和客戶的要求進(jìn)行分配床位;當(dāng)客戶結(jié)賬的時(shí)候,可以打印其賬單,并且將床位回收;在進(jìn)行輸入信息的時(shí)候,應(yīng)該有檢查錯(cuò)誤的功能,防止輸入的信息超出正常圍.4、概要設(shè)計(jì)主函數(shù)功能模塊的劃分主函數(shù)退出保存信息客戶退房床位回收客戶登記床位分配退出保存信息客戶退房床位回收客戶登記床位分配顯示初始化功能模塊的描述:1.應(yīng)該包括兩種初始化,第一種是每次打開程序的時(shí)候,自動(dòng)完成對旅館2.顯示模塊.3.客戶登記及床位分配模塊:用來登記客戶的信息以及床位的分配。4.用來登記退房客戶的信息以及床位的回收。5.保存信息模塊:用來保存旅館的相關(guān)信息,包括手動(dòng)初始化之后的客房信息,以及退出程序之前的保存工作。6.退出:退出程序。4.源程序代碼:#include"stdafx.h"#include<iostream>usingnamespacestd;#include<conio.h>//數(shù)據(jù)的輸入和輸出#include<stdlib.h>#include<string>#include<cstring>#include<stdio.h>#defineN7//房間等級#defineNUM4//每個(gè)等級的房間數(shù)#defineM2//每個(gè)房間的床位數(shù)typedefstructcustomer{//顧客結(jié)構(gòu)stringname;intage;intsex;intday,month,year;//到期時(shí)間intbednumber;//該顧客的床號}customer;typedefstructroom{//房間結(jié)構(gòu)customerperson[M];introomgrade;//該房間的房間等級introomnumber;//該房間的房間號intpeoplein;//該房間的房間入住人數(shù)intbed[M];//該房間的總床位structroom*next;//結(jié)構(gòu)體指針}Room;Room*creat<>{//建立房間的鏈表Room*head,*p,*q;inti=1,j,k,m=0,h; head=new<Room>;//生成頭結(jié)點(diǎn) head->next=NULL; q=head;//正位序插在表尾while<i<=N>{//從第一等級開始一立單鏈表for<j=1;j<=NUM;j++>{//進(jìn)入該等級,建立不同房間 p=new<Room>;for<k=0;k<M;k++>{//每個(gè)房間的不同顧客信息初始化 p->person[k].sex=-1;//表示一個(gè)人也沒有 p->person[k].age=0;//客人信息置為0 p->person[k].day=0; p->person[k].month=0; p->person[k].year=0;//名字無需初始化 p->person[k].bednumber=0;//該顧客的床號 } p->roomgrade=i;//該房間的基本信息初始化 p->roomnumber=j;//房間號 p->peoplein=0;//入住人數(shù)for<h=0;h<M;h++>p->bed[h]=0;//0表示該床未住人,1表示住人 q->next=p; q=q->next; } i++; } q->next=NULL;return<head>;}voidinit<Room*head>//初始化{Room*p=head;inti,k;//p=head;while<p!=NULL> { for<k=0;k<M;k++>{//該房間的M個(gè)顧客初始化 p->person[k].age=0; p->person[k].day=0; p->person[k].month=0; p->person[k].sex=-1; p->person[k].year=0;//顧客無需初始化 p->person[k].bednumber=0;//該顧客的床號 } p->peoplein=0;//房價(jià)基本信息初始化for<i=0;i<M;i++> p->bed[i]=0; p=p->next;//下一個(gè)房間搜索 } printf<"\n操作成功!\n">; printf<"**********************************************\n">;}voidcheckin<Room*head>{//訂房間Room*p;inti,j,bednumber=0,sex,roomgrade;// printf<"\n歡迎使用訂房系統(tǒng)\n">; printf<"**********************************************\n">;//輸入性別,及房間等級//,年齡stringname;intage,day,month,year; printf<"請輸入:">; cin>>name;intlen=name.length<>;if<name[0]<65>{ printf<"Error!請重新輸入。\n">;return; } printf<"請輸入年齡:">; scanf_s<"%d",&age>; printf<"請輸入性別〔1為男,0為女:">; scanf_s<"%d",&sex>; printf<"請輸入房的截至日期:">; printf<"年=">;scanf_s<"%d",&year>; printf<"月=">;scanf_s<"%d",&month>; printf<"日=">;scanf_s<"%d",&day>; printf<"請輸入房間等級:<1-%d>:",N>; scanf_s<"%d",&roomgrade>; p=head;intfangjianhao=0;//標(biāo)記床號,房間號intflag=0;//標(biāo)記是否分配成功while<p!=NULL>{//一個(gè)房間一個(gè)房間搜索,訂房if<p->roomgrade==roomgrade>{for<i=1;i<=NUM;i++>{//進(jìn)入該等級,查找房間for<j=0;j<M;j++>{//進(jìn)入該房間查找床位if<p->bed[j]==0>{//查找到次床位 flag=1;//標(biāo)記分配成功 bednumber=j+1;//標(biāo)記床號 fangjianhao=p->roomnumber; p->person[j].name=name;//寫入顧客信息 p->person[j].age=age; p->person[j].sex=sex; p->person[j].year=year; p->person[j].month=month; p->person[j].day=day; p->person[j].bednumber=j+1;//該顧客的床號 p->bed[j]=1;//標(biāo)記此房間的詞此床位已住人 p->peoplein++;//此房間的入住人數(shù)+1break;//找到床位跳出循環(huán) }if<flag==1>break; } if<flag==1>break; }//進(jìn)入該等級,查找房間if<flag==1>break; } p=p->next;//繼續(xù)下一個(gè)房間的搜索 }//while<> printf<"**********************************************\n">;if<flag==0> printf<"\n該等級的房間已滿,請重新另外等級房間!\n">;if<flag==1> printf<"\n您分配的房間信息為:\n房間等級:%d\n房間號:%d\n床號:%d\n",roomgrade,fangjianhao,bednumber>; printf<"**********************************************\n">;}voidcheckout<Room*head>{//退房間Room*p;introomnumber,roomgrade,bednumber,j;intflag=0;//標(biāo)志位 printf<"歡迎使用退房系統(tǒng)\n">; printf<"**********************************************\n">; printf<"請輸入房間等級:">; scanf_s<"%d",&roomgrade>; printf<"請輸入房間號:">; scanf_s<"%d",&roomnumber>; printf<"請輸入床號:">; scanf_s<"%d",&bednumber>; p=head;//p標(biāo)記頭節(jié)點(diǎn)while<p!=NULL>{//搜索房間號,性別,房間等級if<p->roomgrade==roomgrade&&p->roomnumber==roomnumber>{for<j=0;j<M;j++>{//進(jìn)入該房間查找床位if<p->person[j].bednumber==bednumber>{//查找到此床位 flag=1;//標(biāo)記查找成功 p->person[j].name="";//清除顧客信息 p->person[j].age=0; p->person[j].sex=-1; p->person[j].year=0; p->person[j].month=0; p->person[j].day=0; p->person[j].bednumber=0; p->bed[j]=0;//標(biāo)記此房間的詞此床位未住人 p->peoplein--;//此房間的入住人數(shù)-1//p->roomnumber=0;break;//找到床位跳出循環(huán) }if<flag==1>break; }if<flag==1>break; }if<flag==1>break; p=p->next;//繼續(xù)下一個(gè)房間的搜索 }if<flag==1>printf<"刪除信息成功!\n">;if<flag==0>printf<"刪除信息失??!\n">; printf<"**********************************************\n">;}voiddisplay<Room*head>{//顯示房間信息Room*p;inti,k; p=head; printf<"\n\n已訂房間查詢\n\n">; printf<"**********************************************\n">;while<p->next!=NULL>{//搜索if<p->roomgrade<=5&&p->roomgrade>=1>for<k=0;k<M;k++>{//輸出該房間的所有顧客信息if<p->person[k].bednumber!=0>{ printf<"\n房間等級:%d,房間號:%d,",p->roomgrade,p->roomnumber>; printf<"顧客:">; cout<<p->person[k].name; printf<",顧客性別:%d該房間已住人數(shù):%d,房間到期日期:%d年,%d月,%d日,",p->person[k].sex,p->peoplein,p->person[k].year,p->person[k].month,p->person[k].day>; printf<"該房間已住人的床號為:">;for<i=0;i<M;i++>if<p->bed[i]==1> printf<"%d,",i+1>; } } p=p->next;//繼續(xù)下一個(gè)房間的搜索 } printf<"\n**********************************************\n">;}voidmain<>{intn,k=1;//k為判斷循環(huán)的條件Room*head; head=creat<>;//creat<>返回room結(jié)構(gòu)類型while<k==1>{printf<"歡迎您的光臨,很高興為您服務(wù)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論