醫(yī)院病床安排算法_第1頁
醫(yī)院病床安排算法_第2頁
醫(yī)院病床安排算法_第3頁
醫(yī)院病床安排算法_第4頁
醫(yī)院病床安排算法_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

TOC\o"1-5"\h\z目錄 I\o"CurrentDocument"1課程設(shè)計內(nèi)容 1\o"CurrentDocument"1.1課程設(shè)計目的 1\o"CurrentDocument"1.2課程設(shè)計要求 1\o"CurrentDocument"1.3課程設(shè)計背景 1\o"CurrentDocument"2概要設(shè)計 2\o"CurrentDocument"2.1程序模塊結(jié)構(gòu)圖 2\o"CurrentDocument"2.2主界面模塊說明 2\o"CurrentDocument"2.3病人模塊說明 22.3.1病人數(shù)據(jù)模塊說明 22.3.2狀態(tài)顯示模塊說明 22.3.3病人初始化模塊說明 22.3.4看病模塊(遞歸)說明 2\o"CurrentDocument"2.4系統(tǒng)模塊說明 22.4.1系統(tǒng)界面模塊說明 22.4.2隨機數(shù)模塊說明 32.4.3隊列處理模塊說明 3\o"CurrentDocument"3詳細(xì)設(shè)計 4\o"CurrentDocument"3.1主程序的實現(xiàn) 4\o"CurrentDocument"3.2病人模塊的實現(xiàn) 43.2.1病人數(shù)據(jù)模塊的實現(xiàn) 43.2.2狀態(tài)顯示模塊的實現(xiàn) 43.2.3病人初始化模塊的實現(xiàn) 53.2.4看病模塊的實現(xiàn) 7\o"CurrentDocument"3.3系統(tǒng)模塊的實現(xiàn) 83.3.1系統(tǒng)界面模塊的實現(xiàn) 83.3.2隨機數(shù)模塊的實現(xiàn). 83.3.3隊列處理模塊的實現(xiàn) 8\o"CurrentDocument"4運行結(jié)果 11\o"CurrentDocument"4.1輸入 11\o"CurrentDocument"4.2模擬病人看病流程 11\o"CurrentDocument"小結(jié) 14\o"CurrentDocument"參考文獻(xiàn) 151課程設(shè)計內(nèi)容1.1課程設(shè)計目的1) 課程設(shè)計題目:醫(yī)院病床安排2) 需求分析:根據(jù)自己的選題,書寫相關(guān)的文字說明。3) 總體結(jié)構(gòu)設(shè)計:繪制所選題目系統(tǒng)的功能模塊圖(函數(shù))及相關(guān)說明。4) 各子模塊設(shè)計:各子模塊的程序流程圖及相關(guān)說明。5) 編程實現(xiàn):選定C或C++語言對各子模塊進(jìn)行編程并進(jìn)行集成。6) 測試結(jié)果:輸入數(shù)據(jù)、輸出結(jié)果的圖示。7) 總結(jié):總結(jié)課程設(shè)計的過程、體會及建議。1.2課程設(shè)計要求隨機產(chǎn)生n個病人,現(xiàn)醫(yī)院有m張病床,m張病床上當(dāng)前已經(jīng)有p(p<=m)位正在住院的病人,每個已經(jīng)住院或準(zhǔn)備住院的病人都有對應(yīng)自身的住院時長。合理安排所有病人,使所有病人在最短等待時間完成住院治療。病人看病的流程是:掛號,排隊等待安排住院時間,住院,手術(shù),出院等幾個階段。醫(yī)院實行先到先服務(wù)的原則。既如果問診時有剩余床位,可立即入住,如果沒有,則排隊等待,同時醫(yī)院對急診病人有特殊照顧,如果是外傷,則不需要排隊,可直接接受服務(wù)。既外傷病人有較高的優(yōu)先權(quán)。其排隊流程可如下圖所示:輸”四口判斷肉邛蟹:入住|恒和忡町輸出景,立熟入在因為病人n是確定的常數(shù),我們在分析該問題時不考慮后面病人的增加,平均等待時間=總等待時間/病人總數(shù),因為病人總數(shù)n是確定的,所以只要下去分析如何使總等待時間最小就行。1.3課程設(shè)計背景醫(yī)院病床利用統(tǒng)計是醫(yī)院信息管理最活躍的要素之一,合理分析床位利用情況對于提高醫(yī)院經(jīng)濟(jì)效益,改善病房管理,挖掘潛力增強服務(wù)能力等有十分重要的意義。當(dāng)該住院部對全體非急癥病人是按照FCFS(Firstcome,Firstserve)規(guī)則安排住院,但等待住院病人隊列卻越來越長,醫(yī)院希望能通過某種方式來解決該住院部的病床合理安排問題,以提高對醫(yī)院資源的有效利用。為此,我們引進(jìn)高響應(yīng)比優(yōu)先(High-priorityresponseratio)算法。2概要設(shè)計2.1程序模塊結(jié)構(gòu)圖馨獲取隊首||插入隊首馨獲取隊首||插入隊首||插入隊尾冊U除指定病人繆£排序看病模塊(遞歸)病人初始化模塊狀態(tài)顯示模塊病人數(shù)據(jù)模塊2.2主界面模塊說明主界面模塊提供本程序的功能菜單,使本程序各個功能一目了然,給用戶一個直觀的使用體驗,方便用戶簡單快捷的使用本程序。2.3病人模塊說明2.3.1病人數(shù)據(jù)模塊說明這個模塊用struct包裝病人數(shù)據(jù),并放在3個隊列中。一個是未入院病人列表,一個是等待病人列表,另一個是正在治療列表。2.3.2狀態(tài)顯示模塊說明這個模塊用于實現(xiàn)顯示所有病人的實時狀態(tài),通過列表的方式直觀的顯示在界面上。2.3.3病人初始化模塊說明這個模塊用于初始化所有病人數(shù)據(jù),同時建立3個隊列。2.3.4看病模塊(遞歸)說明這個模塊用于實現(xiàn)對病人的處理以及調(diào)動。2.4系統(tǒng)模塊說明2.4.1系統(tǒng)界面模塊說明這個模塊用于顯示系統(tǒng)的標(biāo)題畫面,以及等待畫面。2.4.2隨機數(shù)模塊說明這個模塊用于生成隨機數(shù)來支持病人初始化模塊的運行。2.4.3隊列處理模塊說明這個模塊用于處理病人隊列,實現(xiàn)對病人隊列的插入、取出、刪除、排序等功能,來支持看病模塊中對病人的3個隊列處理。3詳細(xì)設(shè)計3.1主程序的實現(xiàn)主程序通過獲得輸入數(shù)據(jù)和調(diào)用其他模塊來實現(xiàn)整個系統(tǒng)的功能。以上過程的主要實現(xiàn)代碼如下:#include<iostream>#include"patient.h"intmain(intargc,char**argv){intn,m,p,w=0; //n:未看病病人,m:病床數(shù),p:已入住病人,w:等待人數(shù)patientinList[100];//未看病病人列表patientwaitList[100]; 〃等待列表patienttreatList[100];〃治療列表////////病人初始化//////////patient_init(&n,&m,&p,&w,inList,waitList,treatList);////////看病//////////see_doctor(&n,m,&p,&w,inList,waitList,treatList);return0;}3.2病人模塊的實現(xiàn)3.2.1病人數(shù)據(jù)模塊的實現(xiàn)用struct包裝病人數(shù)據(jù)。以上過程主要實現(xiàn)代碼如下:structpatient{intid;inttreatTime;boolemergency;};3.2.2狀態(tài)顯示模塊的實現(xiàn)在界面上直觀的顯示所有病人的實時狀態(tài)。以上過程主要實現(xiàn)代碼如下:////////////////////病人顯示/////////////////////voidpatient_display(intn,intm,intp,intw,patient*inList,patient*waitList,patient*treatList){boolflag1,flag2,flag3;std::cout<<"未入院病人 等待中病人 治療中病人"<<std::endl;std::cout<<"idtimeemergencyidtimeemergencyidtime"<<std::endl;for(inti=0;i<100;i++){//////////輸出未入院病人///////////if(i<n){flag1=false;std::cout<<inList[i].id<<""<<inList[i].treatTime<<"";if(inList[i].emergency==true)std::cout<<"true\t\t";elsestd::cout<<"false\t\t";}else{flag1=true;std::cout<<"\t\t\t";}///////////輸出等待中病人////////////////if(i<w){flag2=false;std::cout<<waitList[i].id<<""<<waitList[i].treatTime<<""if(waitList[i].emergency==true)std::cout<<"true\t\t";elsestd::cout<<"false\t\t";}else{flag2=true;std::cout<<" ";}///////////輸出治療中病人////////////////////if(i<p){flag3=false;std::cout<<treatList[i].id<<""<<treatList[i].treatTime;}else{flag3=true;std::cout<<"";}///////////換行/////////////////////std::cout<<std::endl;if(flag1==true&&flag2==true&&flag3==true)break;}}3.2.3病人初始化模塊的實現(xiàn)初始化所有病人的數(shù)據(jù),同時建立3個關(guān)鍵列表。以上過程主要實現(xiàn)代碼如下://////病人初始化///////////////voidpatient_init(int*n,int*m,int*p,int*w,patient*inList,patient*waitList,patient*treatList){///////////////////////////輸入/////////////////////////////////////////boolflag=false;while(!flag){system("cls");sys_display();std::cout<<"輸入_病人數(shù):";std::cin>>*n;std::cout<<"輸入_病床數(shù):";std::cin>>*m;std::cout<<"輸入_已入住病人數(shù):";std::cin>>*p;if(*p<=*m){flag=true;}else{std::cout<<"error:輸入錯誤!"<<std::endl;Sleep(2000);}}/////////////////////////創(chuàng)建病人//////////////////////////////////////for(inti=0;i<*p;i++){ 〃創(chuàng)建正在被治療的病人treatList[i].id=i;treatList[i].treatTime=random(20);sys_handle();Sleep(200);}for(inti=0;i<*n;i++){ 〃創(chuàng)建尚未入院的病人inList[i].id=i+*p;inList[i].treatTime=random(20);if(random(2)==1)inList[i].emergency=true;elseinList[i].emergency=false;sys_handle();Sleep(200);3.2.4看病模塊的實現(xiàn)這個模塊用于實現(xiàn)對病人的處理以及調(diào)動。以上過程主要實現(xiàn)代碼如下:intdoctor_time=0;/////////////病人看病//////////////voidsee_doctor(int*n,intm,int*p,int*w,patient*inList,patient*waitList,patient*treatList){doctor_time++;system("cls");sys_display();std::cout<<"Time:"<<doctor_time<<std::endl;//std::cout<<m<<std::endl;std::cout<<" "<<std::endl;patient_display(*n,m,*p,*w,inList,waitList,treatList);patientindat;///////////如果為入院病人>0貝0進(jìn)入等待隊列///////if(*n>0){indat=pop(n,inList);if(indat.emergency==true){push_front(w,waitList,indat);}elsepush_back(w,waitList,indat);}//////////正在治療的病人treatTime--/////////////for(inti=0;i<*p;i++){if(treatList[i].treatTime>0)treatList[i].treatTime--;elsedel(p,treatList,i);}//////////如果存在空余病房貝0等待病人入院///////if(*p<m){if(*w>0){indat=pop(w,waitList);push_back(p,treatList,indat);}}sort(*w,waitList);Sleep(1000);if(*p>0)see_doctor(n,m,p,w,inList,waitList,treatList);}3.3系統(tǒng)模塊的實現(xiàn)3.3.1系統(tǒng)界面模塊的實現(xiàn)這個模塊用于顯示系統(tǒng)的標(biāo)題畫面,以及等待畫面以上過程主要實現(xiàn)代碼如下:voidsys_display()(std::cout<<"**********************************************************"<<std::endl;std::cout<<"* 醫(yī)院病床安排算法 *"<<std::endl;std::cout<<"**********************************************************"<<std::endl;}///////////////////////////顯示正在處理/////////////////////////////////////intsys_sign=0;chardelaySign[]={'-','\\','|','/'};voidsys_handle(){system("cls");sys_display();std::cout<<"正在處理..."<<delaySign[sys_sign]<<std::endl;sys_sign++;if(sys_sign==4)sys_sign=0;}3.3.2隨機數(shù)模塊的實現(xiàn)這個模塊用于用于生成隨機數(shù)來支持病人初始化模塊的運行。以上過程主要實現(xiàn)如下代碼:///////////產(chǎn)生隨機數(shù)///////////intrandom(intend){srand((int)time(NULL)); 〃每次執(zhí)行種子不同,生成不同的隨機數(shù)returnrand()%end+1;}3.3.3隊列處理模塊的實現(xiàn)這個模塊用于處理病人隊列,實現(xiàn)對病人隊列的插入、取出、刪除、排序等功能,來支持看病模塊中對病人的3個隊列處理。以上過程主要實現(xiàn)代碼如下://////////////獲取隊首//////////////patientpop(int*n,patient*inList){patientoutdat=inList[0];outdat.emergency=inList[0].emergency;patientdatx;*n=*n-1;for(inti=0;i<*n;i++){datx=inList[i];inList[i]=inList[i+1];inList[i+1]=datx;}returnoutdat;}/////////////添加到隊首(專用于加入等待隊列)/////////////voidpush_front(int*n,patient*inList,patientindat){patientdatx;intj=0;for(j=0;j<*n;j++){if(inList[j].emergency==false)break;}for(inti=*n;i>j;i--){datx=inList[i];inList[i]=inList[i-1];}*n=*n+1;inList[j]=indat;}///////////添加到隊尾///////////////voidpush_back(int*n,patient*inList,patientindat){inList[*n]=indat;*n=*n+1;}///////////刪除指定id病人///////////voiddel(int*n,patient*inList,intix){*n=*n-1;for(inti=ix;i<*n;i++){inList[i]=inList[i+1];}}///////////排序(等待隊列專用)/////////voidsort(intn,patient*inList){intem=n;for(inti=0;i<n;i++){if(inList[i].e

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論