版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、、設計題目編寫一個程序定義行醫(yī)類,反映病人到醫(yī)院看病,排隊看醫(yī)生的情況,在 病人排隊過程中,主要發(fā)生兩件事:( 1) 病人到達診室,將病歷本交給護士,排到等待隊列中候診。( 2) 護士從等待隊列中取出一位病人的病歷,該病人進入診室就診。 要求程序采用菜單方式,其選項及功能說明如下:1)排隊輸入病人的病歷號,加入到病人排隊隊列中2)就診 -病人排隊隊列中最前面的病人就診,并將其從隊列中刪除3)查看排隊從隊首到隊尾列出所有的排隊病人的病歷號。4)下班-退出運行 。、需求分析1)運行環(huán)境(軟、硬件環(huán)境)軟件: Microsoft Visual Studio/Microsoft Visual C+6.
2、0;硬件:計算機硬件系統(tǒng)(包括鍵盤等)2)輸入的形式和輸入值的范圍輸入形式:通過鍵盤鍵入測試數(shù)據(jù)輸入值范圍:字符型(char) 醫(yī)生,護士字符數(shù)組病人病歷號3)輸出的形式描述輸入通過顯示計算機屏顯示, 醫(yī)生選擇相應功能之后, 顯示屏會顯示出各種對應信息。4)功能描述病人到診室,交給護士自己的病歷表之后,護士登記病人的病歷號, 同時納入隊列中進行排隊等待。當?shù)鹊皆摬v號的病人進入診室進行就 診時,系統(tǒng)刪除前一位病人的病歷號,同時下一位病人進入等待就診階 段。如此反復,當時間到達下班時間之后,系統(tǒng)停止運行,醫(yī)生操作退 出系統(tǒng)!此過程中,醫(yī)生可以隨時調(diào)動系統(tǒng)數(shù)據(jù),查看需要就診的病人 病歷號及病人人數(shù)
3、,此過程使用隊列的遍歷函數(shù)予以實現(xiàn)。5)測試數(shù)據(jù)分別選擇驗證相應功能的數(shù)據(jù)進行實驗數(shù)據(jù)測試。 測試排隊功能數(shù)據(jù):(選擇 1) 病歷號: 100,101,102, 103 測試輸入錯誤時,系統(tǒng)顯示:(選擇 12) 測試就診功能數(shù)據(jù):(選擇 2)測試查看隊列功能數(shù)據(jù):(選擇 3) 測試下班功能數(shù)據(jù):(選擇 4)三、概要設計1)抽象數(shù)據(jù)類型定義描述(對各類的成員及成員函數(shù)進行抽象描述,參見書或 ppt 及實驗) template < class T>class Nodepublic :T data;/ 數(shù)據(jù)域Node<T> *next; / 指針域; template <
4、; class T>class LinkQueuepublic :LinkQueue(); LinkQueue();void InQueue(T x);/ 構(gòu)造函數(shù),初始化一個空的鏈隊列/ 析構(gòu)函數(shù),釋放鏈隊中各結(jié)點的存儲空間/將元素X入隊T OutQueue();/ 將隊頭元素出隊T GetQueue();/取鏈隊列的隊頭元素int Empty()if (front=NULL)return1;return 0;/判斷鏈隊列是否為空void Traverse();/遍歷函數(shù)private :Node<T> *front, *rear;/ 隊頭和隊尾指針;2)功能模塊設計(如主
5、程序模塊設計)頭文件類:第一,結(jié)點類;第二,鏈隊列類;第三,行醫(yī)類:主函數(shù)3)模塊層次調(diào)用關(guān)系圖病人就醫(yī)營理系統(tǒng)病人排隊病人就醫(yī)查看隊列按病歷口話診當前病歷口有四、詳細設計實現(xiàn)概要設計中定義的所有的類的定義及類中成員函數(shù), 并對主要的模塊寫 出偽碼算法。結(jié)點類:template < class T>class Node public :T data; /數(shù)據(jù)域Node<T> *next;/指針域鏈隊列類:template < class T>public :LinkQueue();LinkQueue();void lnQueue(T x);T OutQueu
6、e();class LinkQueue/構(gòu)造函數(shù),初始化一個空的鏈隊列/析構(gòu)函數(shù),釋放鏈隊中各結(jié)點的存儲空間/將元素x入隊/將隊頭元素出隊T GetQueue();/取鏈隊列的隊頭元素int Empty()if (front=NULL)return 1; return 0; / 判斷鏈隊列是否為空 void Traverse(); / 遍歷函數(shù) private :Node<T> *front, *rear; / 隊頭和隊尾指針 ;template < class T> LinkQueue<T>:LinkQueue() front=rear=NULL; tem
7、plate < class T> void LinkQueue<T>:InQueue(T x) Node<T> *s; s= newNode<T>s->data=x;/申請一個數(shù)據(jù)域為x的結(jié)點ss->next=NULL;if (front=NULL) / 空隊列,新結(jié)點既是隊頭,又是隊尾 front=rear=s;else rear->next=s;/將結(jié)點s插入到隊尾rear=s; template <class T>T LinkQueue<T>:OutQueue()Node <T> *p;
8、 T x;if (front=NULL)cout<< " 隊空 "<<endl;exit(0);/ 暫存隊頭元素/ 將隊頭元素所在結(jié)點摘鏈p=front; x=p->data;front=front->next;if (front=NULL)rear=front;delete p; return x;template <class T>void LinkQueue<T>:Traverse()Node<T> *p; p=front;cout<< " 正在排隊的病人顯示: "
9、 <<endl; while (p!=NULL)cout<<p->data<< " " ; p=p->next; cout<<endl;行醫(yī)類:class Hospitalizeprivate :LinkQueue < int > queue;public :Hospitalize();Hospitalize();void StandInALine();void Cure();void Display();void Hospitalize:StandInALine()int num;cout<&l
10、t; " 請輸入病歷號 :" ; cin>>num;queue.InQueue(num);隊列中void Hospitalize:Cure()if (queue.Empty()cout<< " 現(xiàn)已沒有病人在排隊了elseint a;a=queue.OutQueue();/ 病人隊列/ 無參數(shù)的構(gòu)造函數(shù)/ 析構(gòu)函數(shù)/ 排隊/ 就診/ 查看排隊/ 病歷號/ 輸入排隊病人/ 將病歷號加入到病人排隊!" <<endl;/ 病人排隊隊列中最前面的病人就診,并將其從隊列中刪除cout<<a<< "
11、; 號病人現(xiàn)在就醫(yī) !" <<endl;void Hospitalize:Display()queue.Traverse(); / 從隊首到隊尾列出所有的排隊病人的病歷號cout<<endl;五、調(diào)試分析包括調(diào)試過程中遇到的問題及解決的方法、 算法的時間空間復雜性分析、 經(jīng) 驗體會。本實驗中遇到問題 :Q1 :結(jié)點類中的成員設為私有導致后面的鏈隊列類不可使用結(jié)點類的相關(guān) 寒暑;A1 :將結(jié)點類中的成員變量或成員函數(shù)全部設為公有;或者是將結(jié)點類設 置為鏈隊列的友元類。本實驗的時間復雜度為0 (n),空間復雜度 為0(1);本實驗經(jīng)驗體會 :一個良好的開端對于程序
12、的成功運行具有至關(guān)重要的作用。 第一節(jié)課上, 老 師說,“有的同學如果想直接在VC上編寫程序,而未經(jīng)過之前的算法等相關(guān)準 備的話是很難寫成功的!”的確,想想自己平時編寫程序的時候,如果直接就在 VC上編寫的話,程序?qū)懙煤苈?,效率會很低!所以,這個實驗中,我嘗試著按 照老師講的, 首先分析了程序的相關(guān)要求, 聯(lián)系自己平時所學知識, 很快把程序 主體架構(gòu)寫出來了, 這大大方便了后續(xù)的相關(guān)工作。 在第二節(jié)課上, 按照要求把相關(guān)函數(shù)詳細代碼寫出,所以程序第二節(jié)課就寫好了。所以,這個實驗之后,我 逐漸明白了在程序編寫之前,做好適當?shù)臏蕚涫侵陵P(guān)重要的。本實驗中,通過上網(wǎng)查找和和同學討論等方式,這個實驗增強
13、了自學能力, 有助于提高自己的實踐能力,運用知識的能力。六、用戶使用說明詳細列出每一步的操作說明。第一,病人進入診室,護士收集病歷號并輸入至本系統(tǒng)。即選擇菜單欄中的“ 1”,從而實現(xiàn)將病人納入到隊列中去。第二,當輪到某病歷號的病人就診時,醫(yī)生可以通過查看未就診,依然在隊列中的病人的病歷號,然后選擇“ 2”,實現(xiàn)對該病人的就診。第三,該病人就診完畢,系統(tǒng)刪除該病人的信息,即病人出隊,下一位病 人可以進入就診階段。同時,醫(yī)生可以通過功能鍵“ 3”,選擇查看病人隊列。第四,當病人隊列已無元素,醫(yī)生下班了,就可以通過選擇功能鍵“4”,從而實現(xiàn)對系統(tǒng)的關(guān)閉,系統(tǒng)停止運行。七、測試結(jié)果菜單顯示:5 JLJ
14、. 圭WZJJ,/病Affl 到病亠弓 殍呂ul<宦排隊:f-請選擇江i青輸入病歷號江囲;t:12普誤!請重新選擇一洛迎彰逓就醫(yī)管理系統(tǒng)畫著排隊一從機會至 下班一退出毎存*爾好!1.請選擇:加人到病人隊列中?煎面的病人就備體務暮嚴刪般隊號從歷其病中開人 列,病 隊診隊 A 病人的 入的島 剋加0肚 刪、前夕®I孜迎進ife-ffl就診:f-請選擇立丄腦號病人現(xiàn)在就醫(yī)?,歷中隊 L _HN>-= 旻一病歹至 層的沓 入隊此仃運 入人一出 r扁m-下_ij - - « »±HX 12 3 4你54J選主月1 TP查看隊列:下班退出系統(tǒng):列中刪除2
15、下班一退出運行fT爾好!歡迎進八、附錄:程序設計源代碼#include <iostream> #include <string>#include <stdlib.h> using namespacestd; template < class T> class NodepublicT data;/數(shù)據(jù)域Node<T> *next;/ 指針域;template < class T> class LinkQueuepublic :LinkQueue();LinkQueue();void InQueue(T x);/構(gòu)造函數(shù),初始
16、化一個空的鏈隊列/析構(gòu)函數(shù),釋放鏈隊中各結(jié)點的存儲空間/將元素x入隊T OutQueue();/將隊頭元素出隊T GetQueue();/取鏈隊列的隊頭元素int Empty()if (front=NULL)return 1;return 0;/判斷鏈隊列是否為空void Traverse。;/ 遍歷函數(shù)private :Node<T> *front, *rear;/隊列頭指針,尾指針;template < class T>LinkQueue<T>:LinkQueue()front=rear=NULL; / 初始化為空template < class
17、T>void LinkQueue<T>:InQueue(T x)Node<T> *s;s= newNode<T>s->data=x; / 申請一個數(shù)據(jù)域為 x 的結(jié)點 s s->next=NULL;if (front=NULL) / 空隊列,新結(jié)點既是隊頭,又是隊尾 front=rear=s; else rear->next=s;/ 將結(jié)點 s 插入到隊尾rear=s;template < class T>T LinkQueue<T>:OutQueue()Node <T> *p; T x;if (f
18、ront=NULL)cout<< " 隊空 " <<endl;exit(0);p=front;x=p->data; / 暫存隊頭元素 front=front->next; / 將隊頭元素所在結(jié)點摘鏈 if (front=NULL)rear=front;delete p;return x;template < class T>void LinkQueue<T>:Traverse()Node<T> *p;p=front;cout<< "* 正在排隊的病人顯示 ( 按照病歷號 ) : &
19、quot; <<endl;while (p!=NULL)cout<<p->data<< " " ;p=p->next;cout<<endl;/ 醫(yī)生工作class Hospitalizeprivate :LinkQueue < int > queue;public :Hospitalize();Hospitalize();void StandInALine();void Cure();void Display();void Hospitalize:StandInALine()int num;cout&l
20、t;< " 請輸入病歷號 :" ;cin>>num;queue.InQueue(num);void Hospitalize:Cure()if (queue.Empty()cout<< " 現(xiàn)已沒有病人在排隊了 !" <<endl;elseint a;a=queue.OutQueue();診,并將其從隊列中刪除cout<<a<< " 號病人現(xiàn)在就醫(yī) !" <<endl;void Hospitalize:Display()queue.Traverse();病歷號cout<<endl;/ 主函數(shù)/ 病人隊列/ 無參數(shù)的構(gòu)造函數(shù)/ 析構(gòu)函數(shù)/ 排隊/ 就診/ 查看排隊/ 病歷號/ 輸入排隊病人/ 將病歷號加入到病人排隊隊列中/ 病人排隊隊列中最前面的病人就/ 從隊首到隊尾列出所有的排隊病人的void main()Hospitalize a;int n;while (n!= 4)cout<<11 *11<<endl;cout<< "* 你好!歡迎進入病人就醫(yī)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度新型建筑用沖擊錘租賃與安裝服務合同3篇
- 2025年度奶茶店員工保密協(xié)議與知識產(chǎn)權(quán)保護合同4篇
- 2025年度個人房屋裝修貸款合同模板10篇
- 2025年度摩托車駕駛培訓學校合作辦學合同4篇
- 2025年度城市臨時商業(yè)區(qū)搭建與經(jīng)營管理合同4篇
- 二零二五年度智慧交通工程款代付合作協(xié)議4篇
- 數(shù)字化轉(zhuǎn)型路徑-第1篇-深度研究
- 2025年度個人住宅陽臺防水改造合同范本6篇
- 二零二五年度船舶動力電池份額轉(zhuǎn)讓與市場推廣協(xié)議3篇
- 2025年度模具加工與全球供應鏈優(yōu)化合同4篇
- 數(shù)學-山東省2025年1月濟南市高三期末學習質(zhì)量檢測濟南期末試題和答案
- 中儲糧黑龍江分公司社招2025年學習資料
- 湖南省長沙市2024-2025學年高一數(shù)學上學期期末考試試卷
- 船舶行業(yè)維修保養(yǎng)合同
- 2024年林地使用權(quán)轉(zhuǎn)讓協(xié)議書
- 物流有限公司安全生產(chǎn)專項整治三年行動實施方案全國安全生產(chǎn)專項整治三年行動計劃
- 2025屆江蘇省13市高三最后一卷生物試卷含解析
- 當前中國個人極端暴力犯罪個案研究
- 中國象棋比賽規(guī)則
- 7天減肥餐食譜給你最能瘦的一周減肥食譜
- GB/T 31525-2015圖形標志電動汽車充換電設施標志
評論
0/150
提交評論