版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告模擬理發(fā)館的經(jīng)營狀況軟件工程2012-3班 程大川 201201051002 韓 笑 2012010510092014年1月2日、問題描述 理發(fā)館一天的工作過程如下:1)理發(fā)館有N把理發(fā)椅,可同時為N位顧客進(jìn)行理發(fā)。2)理發(fā)師分三個等級(一級、二級、三級),對應(yīng)不同的服務(wù)收費(fèi)。3)當(dāng)顧客進(jìn)門時,需選擇某級別理發(fā)師,只要該級別的理發(fā) 師有空椅,則可立即坐下理發(fā),否則需排隊(duì)等候。一旦該級別的理發(fā)師有顧客理發(fā)完離去,排在隊(duì)頭的顧客 便可開始理發(fā)。5)若理發(fā)館每天連續(xù)營業(yè)T分鐘,求(1) 一天內(nèi)顧客在理發(fā)館內(nèi)的平均逗留時間;(2)顧客排隊(duì)等候理發(fā)的隊(duì)列長度平均值;(3)營業(yè)時間到點(diǎn)
2、后仍需完成服務(wù)的收尾工作時間;(4)統(tǒng)計(jì)每天的營業(yè)額;(5)統(tǒng)計(jì)每天不同級別理發(fā)師的創(chuàng)收?;疽?1)模擬理發(fā)館一天的工作過程:必須采用事件驅(qū)動的離散模型 (參考教科書3,5節(jié)離散事件模擬p65);2)每個顧客到達(dá)和下一顧客到達(dá)時間的間隔應(yīng)是隨機(jī)的;3)理發(fā)師編號、理發(fā)師級別和每天的營業(yè)時間由用戶輸入;4)某顧客挑選某一個級別的理發(fā)師而不得時,選第一個隊(duì)列排隊(duì)等待;5)每個顧客進(jìn)門時將生成三個隨機(jī)數(shù):durtime:進(jìn)門顧客理發(fā)所需服務(wù)時間(簡稱:理發(fā)時間); intertime:下一顧客將到達(dá)的時間間隔(簡稱:間隔時I);select:服務(wù)選項(xiàng)。6)服務(wù)收費(fèi):應(yīng)包含服務(wù)時間和理發(fā)師級別兩個
3、因素。7)除了輸出統(tǒng)計(jì)的數(shù)據(jù)外,還需要顯示理發(fā)館的狀態(tài),可以采 用文本方式(橫向顯示每張椅編號、理發(fā)師級別??v向表示 等待該理發(fā)師理發(fā)的排隊(duì)長度)。測試數(shù)據(jù):用戶輸入每位理發(fā)師編號、級別號和營業(yè)的 時間,結(jié)合隨機(jī)數(shù)進(jìn)行測試。實(shí)現(xiàn)提示1)顧客進(jìn)門和出門這兩個時刻發(fā)生的事情稱“事件”,按事件的先后次序逐個處理事件的工作方式稱“事件驅(qū)動模擬”。離散事件驅(qū)動模型的特點(diǎn)是只關(guān)注和刻畫事物的狀態(tài)變化(即事件),不關(guān)心變化的過渡過程。模型靠每一個事件引發(fā) 其它事件的方式來維持運(yùn)轉(zhuǎn)。每個事件都有發(fā)生時間,模型 的運(yùn)轉(zhuǎn)實(shí)際就是按事件發(fā)生時間順序逐個處理事件,處理 將產(chǎn)生新的事件。因此,建模的關(guān)鍵就是全面分析事物
4、的主要特點(diǎn),抽象出幾種能反映本質(zhì)的事件和它們之間的驅(qū)動關(guān)系。系統(tǒng)時間就是當(dāng)前事件的事件發(fā)生時間,它不是等間隔 變化而是跳躍變化的。2)數(shù)據(jù)結(jié)構(gòu):本題設(shè)計(jì)兩個抽象數(shù)據(jù)類型隊(duì)列抽象數(shù)據(jù)類型:登錄排隊(duì)等候理發(fā)的顧客情況。每個元 素應(yīng)包括顧客進(jìn)門時刻、理發(fā)師級別、理發(fā)所需時間。 N把 椅子又t應(yīng)N個隊(duì)列。事件鏈表抽象數(shù)據(jù)類型:登錄顧客進(jìn)門事件、出門事件。每個事件應(yīng)包括事件類型(進(jìn)門事件類型為 0,出門事件 類型按N把椅子所排隊(duì)列分為為1、2、.N )和事件發(fā) 生的時刻occurtime。為便于按事件發(fā)生先后順序逐一處 理事件,事件表應(yīng)按“時刻”有序。3)對理發(fā)椅需要進(jìn)行編號,使不同級別的理發(fā)師與編號的
5、理發(fā)椅相對應(yīng)。二、系統(tǒng)簡介開發(fā)環(huán)境:Codeblocks 12.11;利用基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)來完成對理發(fā)館經(jīng)營狀況的模擬整個系統(tǒng)共分為3個文件,分別為主文件BarberShop.exe 配置文件config.csv以及程序運(yùn)行后產(chǎn)生的統(tǒng)計(jì)信息文件 statistics.txt三、總體設(shè)計(jì)(模塊框架圖)五、使用說明使用前請先使用excel表格配置config.csv,根據(jù)每個參數(shù)的填寫要求填寫填寫完成后,打開主文件BarberShop.exe即可開始模擬理發(fā)館經(jīng)營狀況模擬完成后,系統(tǒng)會生成statistics.txt文件,即理發(fā)館經(jīng)營狀況的文件六、源程序#include#include#include
6、#include using namespace std; int nowTime,cusnum4;char barberName410010; struct settings int openTime;int endTime;int closeTime;int numBaber4;int fee4;int addFee4;int interTimeMo;int durTimeMo;int customNum;setting;struct answersint totalTime;int totalLenth;int customNum;int totalEarn;int closeTime;
7、int baberEarn4100;answer;typedef structint time;int durTime;int level;event;typedef struct char name10;int inTime,outTime,durTime;custom;bool operator(const event& a,const event& b)priority_queue elist;queue barber4100;void show()(system(cls);printf(歡迎使用理發(fā)館經(jīng)營狀況模擬系統(tǒng)n);printf(使用此系統(tǒng)前請先配置config.csv文件,注意
8、不要更改預(yù)設(shè)字段n);printf(即將導(dǎo)入配置文件,);system(pause);)void showStatus(int t,int type,int kk,int ii,char *name)(system(cls);printf(當(dāng)前時間:.2d:%.2d:%.2d 當(dāng)前狀態(tài):”,t/3600,t%3600/60,t%60);if(tsetting.endTime)printf(正在營業(yè),歡迎光臨!n);elseprintf(已經(jīng)打烽,歡迎明天光臨!n);printf(今日已經(jīng)接待顧客 d位,當(dāng)前顧客數(shù)共 d位n,answer.customNum,cusnum1+cusnum2+cu
9、snum3);if(type=0)printf(n顧客s,服務(wù)等級:%d級,進(jìn)店理發(fā)n,name,kk); elseprintf(n顧客s,服務(wù)等級: d級,離開店鋪n,name,kk);printf(n當(dāng)前店內(nèi)狀態(tài)n);printf(*n);printf( 一級服務(wù)區(qū)理發(fā)師共 %d位,顧客共%d位n,setting.numBaber1,cusnum1);for(int i=0;isetting.numBaber1;i+) (printf(理發(fā)師 %8s 等待人數(shù) 3d,barberName1i,(int)barber1i.size();if(kk=1&i=ii)if(type=0)print
10、f( ,name);printf(n);)printf(”*n);printf(n*n);printf(二級服務(wù)區(qū)理發(fā)師共 %d位,顧客共%d位n,setting.numBaber2,cusnum2);for(int i=0;isetting.numBaber2;i+) (printf(理發(fā)師 %8s 等待人數(shù) 3d,barberName2i,(int)barber2i.size(); if(kk=2&i=ii)if(type=0)printf( ,name);printf(n);printf(*n);printf(n*n);printf(三級服務(wù)區(qū)理發(fā)師共%d位,顧客共%d位n,settin
11、g.numBaber3,cusnum3);for(int i=0;isetting.numBaber3;i+)(printf(理發(fā)師 %8s 等待人數(shù) 3d”,barberName3i,(int)barber3i.size(); if(kk=3&i=ii)if(type=0)printf( ,name);printf(n);printf(*nn);system(pause);void showCount() (system(cls);FILE *fp;fp=fopen(statistics.txt,w);fprintf(fp,忙碌的一天了,看看今天的經(jīng)營狀況吧nn);int u=setting
12、.openTime,v=setting.endTime;fprintf(fp,今天的營業(yè)時間為.2:%.2:%.2-%.2:%.2:%.2肝,山3600川3600/60山60”3600,丫3600/60,丫60);v=answer.closeTime;fprintf(fp,”關(guān)門時間為 .2d:%.2d:%.2dn,v/3600,v%3600/60,v%60);int babernum=setting.numBaber1+setting.numBaber2+setting.numBaber3;fprintf(fp,今天理發(fā)是共d位,共接待顧客 d位 n,babernum,answer.cust
13、omNum);v=answer.totalTime/answer.customNum;fprintf(fp,每位顧客的平均逗留時間為00:%.2d:%.2d,平均等待人數(shù)為%d位,v/60,v%60,answer.totalLenth/answer.customNum);for(int k=1;k=3;k+)for(int i=0;isetting.numBaberk;i+)answer.totalEarn+=answer.baberEarnki;fprintf(fp,今天的營業(yè)額為 %d 元n,answer.totalEarn);fprintf(fp,*n);fprintf(fp, 一級服務(wù)
14、區(qū)理發(fā)師共 %d 位n,setting.numBaber1);for(int i=0;isetting.numBaber1;i+)fprintf(fp,理發(fā)師%8s創(chuàng)收 %d元n,barberName1i,answer.baberEarn1i);fprintf(fp,*fprintf(fp,n*n);fprintf(fp,二級服務(wù)區(qū)理發(fā)師共 %d 位n,setting.numBaber2);for(int i=0;isetting.numBaber2;i+)fprintf(fp,理發(fā)師%8s創(chuàng)收 %d元 n,barberName2i,answer.baberEarn2i);fprintf(fp
15、,*n);fprintf(fp,n*n);fprintf(fp,三級服務(wù)區(qū)理發(fā)師共 %d 位n,setting.numBaber3);for(int i=0;isetting.numBaber3;i+)fprintf(fp,理發(fā)師%8s創(chuàng)收 %d元n,barberName3i,answer.baberEarn3i);fprintf(fp, I*fclose(fp);system(statistics.txt);printf(感謝使用! n);system(pause);void getConfig()int u,v;answer.customNum=0;FILE *fp;fp=fopen(co
16、nfig.csv,r);fscanf(fp,%*s);fscanf(fp,%*s ,%d:%d,&u,&v);setting.openTime=u*3600+v*60;fscanf(fp,%*s ,%d:%d,&u,&v);setting.endTime=u*3600+v*60;for(int i=1;i=3;i+)fscanf(fp,%*s ,%d,&setting.numBaberi); for(int i=1;i=3;i+) fscanf(fp,%*s ,%d,&setting.feei);fscanf(fp,%*s ,%d,&setting.addFeei);fscanf(fp,%*s
17、 ,%d,&u);erTimeMo=2*u;fscanf(fp,%*s ,%d,&u);setting.durTimeMo=2*u;fclose(fp);void getname(char *s)int n=rand()%5+3;s0=A+rand()%26;for(int i=1;in;i+)si=rand()%26+a;sn=0;void init()getConfig();while(!elist.empty() elist.pop();srand(time(NULL);nowTime=setting.openTime;answer.customNum=answer.closeTime=
18、answer.totalEarn=answer.totalLenth=answer.totalTime=0;for(int i=0;i4;i+) cusnumi;for(int k=1;k=3;k+)for(int i=0;isetting.numBaberk;i+)answer.baberEarnki=0;getname(barberNameki);int charge(int level,int time)if(time=1800)return setting.feelevel;elsereturn setting.feelevel+(time-1800)/600*setting.addF
19、eelevel;void makeEvent() event tem;tem.time=nowTime+rand()%erTimeMo+1;tem.level=rand()%3+1;tem.durTime=rand()%setting.durTimeMo+1;nowTime=tem.time;if(nowTime=setting.endTime)answer.customNum+;answer.customNum+;elist.push(tem);cusnumtem.level+;)void choose(event now) int minlen=0;for(int i=0;isetting
20、.numBabernow.level;i+)if(barbernow.leveli.size()barbernow.levelminlen.size() minlen=i;)queue &q=barbernow.levelminlen;custom tem;tem.inTime=now.time;tem.durTime=now.durTime;getname();if(q.empty()tem.outTime=tem.inTime+tem.durTime;elsetem.outTime=q.back().outTime+tem.durTime;answer.totalLenth+=(int)q
21、.size();showStatus(tem.inTime,0,now.level,minlen,); q.push(tem);)void customOut(event& now)for(int k=1;k=3;k+)for(int i=0;isetting.numBaberk;i+) queue &q=barberki;while(!q.empty()&q.front().outTime=now.time)(answer.totalTime+=q.front().outTime-q.front().inTime; answer.baberEarnki+=charge(k,q.front()
22、.durTime); cusnumk-;showStatus(q.front().outTime,1,k,i,q.front().name);q.pop();void close()(for(int k=1;k=3;k+)for(int i=0;isetting.numBaberk;i+)(queue &q=barberki;while(!q.empty()(answer.totalTime+=q.front().outTime-q.front().inTime;answer.baberEarnki+=charge(k,q.front().durTime);answer.closeTime=m
23、ax(answer.closeTime,q.front().outTime);cusnumk-;showStatus(q.front().outTime,1,k,i,q.front().name);q.pop();void deal() (makeEvent();while(!elist.empty()(event now=elist.top();elist.pop();customOut(now);choose(now);makeEvent();close();showCount();int main()show();init();deal();return 0;)七、測試結(jié)果1、配置理發(fā)館
24、模擬系統(tǒng)參數(shù)打開用excel打開con巾g.csv文件,按照要求填寫參數(shù)并保存& H 0 B * * X Bi ccnfig.csvH181234567, 以AA參數(shù)開門時間關(guān)門時間格式/范圍/單位一級理發(fā)師數(shù)量二級理發(fā)師數(shù)量三級理發(fā)師數(shù)量一級基礎(chǔ)收費(fèi)超過30分鐘每十分鐘收費(fèi)二級基礎(chǔ)收費(fèi)10超過30分鐘每十分鐘收費(fèi))11121314三級基礎(chǔ)收費(fèi)超過30分鐘每十分鐘收費(fèi)來客平均間隔時間顧客平均理發(fā)時間hh :mni kh 二 mm 1-100 1-100 1-100數(shù)值8:0021:00432元元元元元元秒秒105O O212、打開主文件,按任意鍵繼續(xù)3、理發(fā)店經(jīng)營狀況模擬開始,開門后 7分39
25、秒,第一位顧客Dtvvgu進(jìn)=| 叵PT3-|店,需要的服務(wù)等級為1級,選擇了等待人數(shù)最少的理發(fā)師之一 Vldabo,1 GXUsersXDearChDsktopBarberShoprexe弟前時間:,8再土皿當(dāng)前狀態(tài),正鰭叱;歡迎光臨, 與日己紀(jì)接待顧客T位,當(dāng)前顧客瘢蒞顧客配uugu,服務(wù)等級:1級,進(jìn)店理發(fā)當(dāng)前店內(nèi)狀態(tài)務(wù)區(qū)理發(fā)!I(lf UIdaho?!j Gyjftwn理發(fā)師理發(fā)師SJb Lt a,數(shù)數(shù)數(shù)數(shù) 位人人人人顧客共1位0 ei5ktopIBarberShoPrexe漱迎光臨T當(dāng)前時間二.41.46當(dāng)前狀態(tài):正在鬻 與日已經(jīng)接待顧客2位,輸顧客旃國顧客配uugu,服務(wù)等級:1級
26、,離開店鋪當(dāng)前店內(nèi)狀態(tài)0 &也隊(duì)人人人一魏務(wù)區(qū)理發(fā)!J 理袁I市 U Idaho 理爰飾GyjftwnSJb Lt a顧客共啦1 Dtyugu 0顧客共啦 B0 0三級思務(wù)區(qū)理發(fā)IJ隴像山顧客翔.位 理發(fā) Buzwpfs等苣人熬0理Ql而Ubqdgn第存人數(shù)0請按任意鍵繼續(xù). 一 .5、陸陸續(xù)續(xù)的來往之后,在中午12:56分,已經(jīng)接待了 32名顧客,當(dāng) 前店鋪共4名顧客 C:UsersDearChiiDesktopBarberShop.exe尊幽密戀舞睛鼐套歡迎光.顧客加u”,服務(wù)等級:3級,離開店鋪當(dāng)前店內(nèi)狀態(tài)而幣幣發(fā) Im 二 m 二 0t Bt_ 建理也,顧客共2位-J t s L三例量務(wù)區(qū)理發(fā)師甥俅L顧客期位 理發(fā)師B
溫馨提示
- 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 會議報(bào)告與總結(jié)撰寫制度
- 蘭州大學(xué)口腔醫(yī)院2026年招聘備考題庫及參考答案詳解1套
- 2026年鶴山鎮(zhèn)中心衛(wèi)生院醫(yī)學(xué)檢驗(yàn)科招聘備考題庫及參考答案詳解
- 中學(xué)學(xué)生社團(tuán)活動經(jīng)費(fèi)監(jiān)管職責(zé)制度
- 中學(xué)社團(tuán)指導(dǎo)教師職責(zé)制度
- 2026年昭通市第三人民醫(yī)院總務(wù)科綜合崗位招聘備考題庫附答案詳解
- 2026年菜園壩街道社區(qū)衛(wèi)生服務(wù)中心招聘放射技師1名備考題庫附答案詳解
- 2026年秦皇島市九龍山醫(yī)院第二批公開選聘工作人員備考題庫有答案詳解
- 2026年長春黃金設(shè)計(jì)院有限公司招聘備考題庫帶答案詳解
- 2026年皮山縣人民醫(yī)院招聘備考題庫及一套答案詳解
- 2024年地下儲氣庫行業(yè)現(xiàn)狀分析:全球地下儲氣庫數(shù)量增至679座
- GB/T 6003.2-2024試驗(yàn)篩技術(shù)要求和檢驗(yàn)第2部分:金屬穿孔板試驗(yàn)篩
- 離婚協(xié)議標(biāo)準(zhǔn)版(有兩小孩)
- 浙江省臺州市路橋區(qū)2023-2024學(xué)年七年級上學(xué)期1月期末考試語文試題(含答案)
- 假體隆胸后查房課件
- 2023年互聯(lián)網(wǎng)新興設(shè)計(jì)人才白皮書
- DB52-T 785-2023 長順綠殼蛋雞
- 關(guān)于地方儲備糧輪換業(yè)務(wù)會計(jì)核算處理辦法的探討
- GB/T 29319-2012光伏發(fā)電系統(tǒng)接入配電網(wǎng)技術(shù)規(guī)定
- GB/T 1773-2008片狀銀粉
- GB/T 12007.4-1989環(huán)氧樹脂粘度測定方法
評論
0/150
提交評論