




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計理發(fā)館仿真模擬(基于隊列)問題描述(或者需求分析)理發(fā)館一天的工作過程如下:
1)理發(fā)館有N把理發(fā)椅,可同時為N位顧客進行理發(fā)。
2)理發(fā)師分三個等級(一級、二級、三級),對應(yīng)不同的服務(wù)收費。
3)當(dāng)顧客進門時,需選擇某級別理發(fā)師,只要該級別的理發(fā)師有空椅,則可立即坐下理發(fā),否則需排隊等候。
4)一旦該級別的理發(fā)師有顧客理發(fā)完離去,排在隊頭的顧客便可開始理發(fā)。
5)若理發(fā)館每天連續(xù)營業(yè)T分鐘,求
(1)一天內(nèi)顧客在理發(fā)館內(nèi)的平均逗留時間;
(2)顧客排隊等候理發(fā)的隊列長度平均值;
(3)營業(yè)時間到點后仍需完成服務(wù)的收尾工作時間;
(4)統(tǒng)計每天的營業(yè)額;
(5)統(tǒng)計每天不同級別理發(fā)師的創(chuàng)收?;疽螅?)模擬理發(fā)館一天的工作過程:必須采用事件驅(qū)動的離散模型(參考教科書3.5節(jié)離散事件模擬p65);
2)每個顧客到達和下一顧客到達時間的間隔應(yīng)是隨機的;
3)理發(fā)師編號、理發(fā)師級別和每天的營業(yè)時間由用戶輸入;
4)某顧客挑選某一個級別的理發(fā)師而不得時,選第一個隊列排隊等待;
5)每個顧客進門時將生成三個隨機數(shù):
(1)durtime:進門顧客理發(fā)所需服務(wù)時間(簡稱:理發(fā)時間);
(2)intertime:下一顧客將到達的時間間隔(簡稱:間隔時間);
(3)select:服務(wù)選項。
6)服務(wù)收費:應(yīng)包含服務(wù)時間和理發(fā)師級別兩個因素。
7)除了輸出統(tǒng)計的數(shù)據(jù)外,還需要顯示理發(fā)館的狀態(tài),可以采用文本方式(橫向顯示每張椅編號、理發(fā)師級別??v向表示等待該理發(fā)師理發(fā)的排隊長度)。算法設(shè)計思想:在實現(xiàn)技術(shù)上,假設(shè)當(dāng)前temp每次將它加一表示過了一分鐘,然后判斷在這個時間單位中判斷是否有人理發(fā)完畢,如果有將此座位上的num置為-1。然后判斷是否有人可以接受服務(wù),如果有判斷是否有空椅子,如果有,則進入理發(fā),否則將他入隊。重復(fù)執(zhí)行上面的過程,直到temp加到了其關(guān)門時間。顧客進門和出門這兩個時刻發(fā)生的事情稱“事件”,按事件的先后次序逐個處理事件的工作方式稱“事件驅(qū)動模擬”。離散事件驅(qū)動模型的特點是只關(guān)注和刻畫事物的狀態(tài)變化(即事件),不關(guān)心變化的過渡過程。模型靠每一個事件引發(fā)其它事件的方式來維持運轉(zhuǎn)。每個事件都有發(fā)生時間,模型的運轉(zhuǎn)實際就是按事件發(fā)生時間順序逐個處理事件,'處理'將產(chǎn)生新的事件。因此,建模的關(guān)鍵就是全面分析事物的主要特點,抽象出幾種能反映本質(zhì)的事件和它們之間的驅(qū)動關(guān)系。系統(tǒng)時間就是當(dāng)前事件的事件發(fā)生時間,它不是等間隔變化而是跳躍變化的。程序中的數(shù)據(jù)結(jié)構(gòu)及存儲結(jié)構(gòu)說明:顧客結(jié)構(gòu):typedefstruct{intnum;intcometime;intdurtime;intwaittime;}cutpeople;理發(fā)椅結(jié)構(gòu)體:typedefstructcutnode{intnum;/*顧客編號*/intcometime;/*顧客到達時間*/structcutnode*next;}cutnode;/*隊列的結(jié)點定義*/隊列結(jié)構(gòu)體:typedefstruct{cutnode*front;cutnode*rear;}cutqueue;/*隊列的鏈?zhǔn)蕉x*/流程圖:部分圖示(程序運行截圖)程序代碼:#defineNUM100#defineERROR0#defineKONG-1#include<stdio.h>#include<math.h>#include<conio.h>typedefstruct{intnum;intcometime;intdurtime;intwaittime;}cutpeople;/*顧客信息結(jié)點的定義*/typedefstructcutnode{intnum;/*顧客編號*/intcometime;/*顧客到達時間*/structcutnode*next;}cutnode;/*隊列的結(jié)點定義*/typedefstruct{cutnode*front;cutnode*rear;}cutqueue;/*隊列的鏈?zhǔn)蕉x*/intinitqueue(cutqueue*d1){d1->front=(cutnode*)malloc(sizeof(cutnode));if(d1->front){d1->front->next=NULL;d1->rear=d1->front;}elsereturn(OVERFLOW);}/*初始化隊列*/intenterqueue(cutqueue*d2,intcometime,intnum){cutnode*q;q=(cutnode*)malloc(sizeof(cutnode));if(q){q->cometime=cometime;q->num=num;q->next=NULL;d2->rear->next=q;d2->rear=q;}elsereturn(OVERFLOW);}/*入隊列*/cutnodedeleted(cutqueue*d3){cutnode*a;cutnodep;a=d3->front->next;d3->front->next=a->next;etime=a->cometime;p.num=a->num;if(d3->rear==a)d3->rear=d3->front;free(a);return(p);}/*出隊列*/intpdkong1(cutqueue*d4)/*判斷隊列是否為空*/{if(d4->front!=d4->rear)return(1);elsereturn(0);}voidinitundercut(cutpeople*undercut,intd5)/*數(shù)組undercut指的是理發(fā)店內(nèi)的位子*/{inti;for(i=0;i<d5;i++){undercut[i].num=-1;/*若位子上沒有人,則其num取值為-1*/undercut[i].cometime=-1;undercut[i].durtime=-1;undercut[i].waittime=-1;}}/*初始化理發(fā)店內(nèi)的位子情況*/intpdkong2(cutpeople*undercut,intd6){intk=0;while(k<d6){if(undercut[k].num==-1)break;elsek++;}if(k>=d6)return(-1);elsereturn(k);}/*判斷店內(nèi)是否有空位子,若有,返回位置,否則返回0*/intpdtime(cutpeople*undercut,intd7,inttime,intv[20]){intb=0,i=0,j;for(j=0;j<20;j++)v[j]=-1;/*數(shù)組v裝的是在此時刻同時理發(fā)完畢的人*/while(b<d7){if(undercut[b].cometime+undercut[b].waittime+undercut[b].durtime==time)v[i++]=b;b++;}}/*判斷在time時刻是否有人已經(jīng)理發(fā)完畢*/main(){intN,T,R;/*椅子數(shù).總時間.隨機數(shù)*/cutqueues;/*等待隊列*/inttemp=0;/*時間計數(shù)器*/intnumber_custeromer=1;/*顧客總數(shù)*/intintertime;/*記錄下一個顧客來的時間間隔*/intu[20],r,i,a;inttotallenth=0;cutnodez;cutpeople*undercut;floataverage_time,average_queuelength;undercut=(cutpeople*)malloc(N*sizeof(cutpeople));initundercut(undercut,N);initqueue(&s);printf("Pleaseshuruthechairs:");scanf("%d",&N);printf("Pleaseshuruyingyeshijian:");scanf("%d",&T);undercut[0].num=number_custeromer++;undercut[0].cometime=0;undercut[0].waittime=0;R=fabs(srand((unsigned)time(NULL)));/*產(chǎn)生隨機數(shù)*/undercut[0].durtime=15+R%50;intertime=2+R%10;clrscr();/*清屏*/printf("numcometimedurtime\n");while(temp<=T||pdkong1(&s)){intertime--;temp++;pdtime(undercut,N,temp,u);if(u[0]!=-1)/*判斷是否有理發(fā)完畢的人*/{for(r=0;r<20&&u[r]!=-1;r++){printf("%4d%4d%4d\n",undercut[u[r]].num,undercut[u[r]].cometime+undercut[u[r]].waittime,undercut[u[r]].durtime);undercut[u[r]].num=-1;if(pdkong1(&s)){z=deleted(&s);R=fabs(srand((unsigned)time(NULL)+temp));undercut[u[r]].durtime=15+R%50;undercut[u[r]].num=z.num;undercut[u[r]].cometime=etime;undercut[u[r]].waittime=etime;intertime=2+R%10;}}/*如果有理發(fā)完畢的人,并且隊列不空,就出隊*/}if(intertime==0)/*如果有人來理發(fā)了*/{R=fabs(srand((unsigned)time(NULL)+temp));intertime=2+R%10;if(T-temp>=intertime){i=pdkong2(undercut,N);/*判斷是否有空位子*/if(i>=0){undercut[i].durtime=15+R%50;if(T-temp>=undercut[i].durtime)/*判斷是否符合進入條件*/{undercut[i].num=number_custeromer++;
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年宣傳教育全年工作總結(jié)模版
- 傭金返還合同范例
- 企業(yè)文化在辦公空間人性化設(shè)計中的體現(xiàn)
- 2025年新《黨政領(lǐng)導(dǎo)干部選拔任用工作條例》學(xué)習(xí)討論發(fā)言稿模版
- 機器人焊接 14 項目七任務(wù)7.2教學(xué)設(shè)計
- 醫(yī)療大數(shù)據(jù)挑戰(zhàn)與機遇并存的價值挖掘
- 倉儲協(xié)議合同范例簡短范例
- 幼兒園教師年度考核個人工作總結(jié)模版
- 關(guān)于建筑師負責(zé)制的工作總結(jié)模版
- 醫(yī)療物資全鏈條管理的實踐與思考
- 職業(yè)生涯規(guī)劃家庭影響因素
- 潔凈環(huán)境監(jiān)測課件
- Python數(shù)據(jù)分析與應(yīng)用-從數(shù)據(jù)獲取到可視化(第2版)課件 第3章 數(shù)據(jù)分析庫pandas基礎(chǔ)
- 疼痛科護理的現(xiàn)狀與發(fā)展趨勢
- 用戶思維培訓(xùn)課件
- 企業(yè)反商業(yè)賄賂法律法規(guī)培訓(xùn)
- 安心護行 從個案分析看創(chuàng)傷骨科患者VTE管理低分子肝素合理應(yīng)用版本
- CONSORT2010流程圖(FlowDiagram)【模板】文檔
- 軟件質(zhì)量保證與測試技術(shù)智慧樹知到課后章節(jié)答案2023年下青島工學(xué)院
- 備用柴油發(fā)電機定期啟動試驗記錄表
- 學(xué)前教育畢業(yè)論文5000字【6篇】
評論
0/150
提交評論