病人就醫(yī)管理代碼_第1頁(yè)
病人就醫(yī)管理代碼_第2頁(yè)
病人就醫(yī)管理代碼_第3頁(yè)
病人就醫(yī)管理代碼_第4頁(yè)
病人就醫(yī)管理代碼_第5頁(yè)
已閱讀5頁(yè),還剩9頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、2.病人就醫(yī)管理 1.目標(biāo)與要求編寫(xiě)一個(gè)程序,反應(yīng)病人到醫(yī)院看病,排隊(duì)看醫(yī)生的情況。在病人排隊(duì)的過(guò)程中,主要發(fā)生兩件事。(1)病人到達(dá)診室,將病歷本交給護(hù)士,拍到等待隊(duì)列中候診。(2)護(hù)士從等待隊(duì)列中取出以為病人的病歷,該病人進(jìn)入診室就診。要求程序采用菜單方式,其選項(xiàng)及功能說(shuō)明如下。(1)排隊(duì)輸入病人的病歷號(hào),加入到病人排隊(duì)隊(duì)列中。(2)就診病人排列隊(duì)列中最前面的病人就診,并將其從隊(duì)列中刪除。(3)查看排隊(duì)從隊(duì)首到隊(duì)尾列出所有的排隊(duì)病人的病歷號(hào)。(4)下班退出運(yùn)行。 2.工具、準(zhǔn)備工作 在實(shí)驗(yàn)開(kāi)始前,應(yīng)回顧或復(fù)習(xí)相關(guān)內(nèi)容。需要一臺(tái)計(jì)算機(jī),其中安裝有Visual C+ 6.0、Visual c+

2、 2005、Visual C+ 2005 Express Dev-c+或MinGW Developer Studio等集成開(kāi)發(fā)環(huán)境軟件 3.實(shí)驗(yàn)分析 4.代碼如下: /頭文件:hospitalize.h #ifndef _HOSPITALIZE_H_#define _HOSPITALIZE_H_#include lk_queue.h/ 鏈隊(duì)列/ 行醫(yī)類(lèi)class Hospitalizeprivate:/ 行醫(yī)類(lèi)的數(shù)據(jù)成員:LinkQueue queue;/ 病人隊(duì)列/ 輔助函數(shù)void StandInALine();/ 排隊(duì)void Cure();/ 就診void Display();/ 查看

3、排隊(duì)public:/ 方法聲明及重載編譯系統(tǒng)默認(rèn)方法聲明:Hospitalize();/ 無(wú)參數(shù)的構(gòu)造函數(shù)Hospitalize();/ 析構(gòu)函數(shù)void Work();/ 醫(yī)生工作;/ 行醫(yī)類(lèi)的實(shí)現(xiàn)部分void Hospitalize:StandInALine()/ 操作結(jié)果: 輸入排隊(duì)病人的病歷號(hào),加入到病人排隊(duì)隊(duì)列中unsigned int num;/ 病歷號(hào)cout num;/ 輸入排隊(duì)病人queue.InQueue(num);/ 將病歷號(hào)加入到病人排隊(duì)隊(duì)列中void Hospitalize:Cure()/ 操作結(jié)果: 病人排隊(duì)隊(duì)列中最前面的病人就診,并將其從隊(duì)列中刪除if (queu

4、e.Empty()/ 無(wú)病人cout 現(xiàn)已沒(méi)有病人在排隊(duì)了! endl;elseunsigned int num;/ 病歷號(hào)queue.OutQueue(num);/ 病人排隊(duì)隊(duì)列中最前面的病人就診,并將其從隊(duì)列中刪除cout num 號(hào)病人現(xiàn)在就醫(yī). endl;void Hospitalize:Display()/ 操作結(jié)果: 從隊(duì)首到隊(duì)尾列出所有的排隊(duì)病人的病歷號(hào)queue.Traverse(Write);/ 從隊(duì)首到隊(duì)尾列出所有的排隊(duì)病人的病歷號(hào)cout endl;void Hospitalize:Work()/ 操作結(jié)果: 醫(yī)生工作int select = 0;while (selec

5、t != 4)cout 1. 排隊(duì)-輸入病人的病歷號(hào),加入到病人隊(duì)列中 endl;cout 2. 就診-病人排隊(duì)隊(duì)列中最前面的病人就診,并將其從隊(duì)列中刪除 endl;cout 3. 查看排隊(duì)-從隊(duì)首到隊(duì)尾列出所有的排隊(duì)病人的病歷號(hào) endl;cout 4. 下班-退出運(yùn)行 endl;cout select;/ 選擇功能switch(select)case 1:StandInALine();/ 排隊(duì)-輸入病人的病歷號(hào),加入到病人隊(duì)列中break;case 2:Cure();/ 就診-病人排隊(duì)隊(duì)列中最前面的病人就診,并將其從隊(duì)列中刪除break;case 3:Display();/ 查看排隊(duì)-從隊(duì)

6、首到隊(duì)尾列出所有的排隊(duì)病人的病歷號(hào)break;#endif/頭文件:lk_queue.h#ifndef _LK_QUEUE_H_#define _LK_QUEUE_H_#include utility.h/ 實(shí)用程序軟件包#include node.h/ 結(jié)點(diǎn)類(lèi)模板/ 鏈隊(duì)列類(lèi)模板templateclass LinkQueue protected:/ 鏈隊(duì)列實(shí)現(xiàn)的數(shù)據(jù)成員:Node *front, *rear;/ 隊(duì)頭隊(duì)尾指指/ 輔助函數(shù)模板:void Init();/ 初始化隊(duì)列public:/ 抽象數(shù)據(jù)類(lèi)型方法聲明及重載編譯系統(tǒng)默認(rèn)方法聲明:LinkQueue();/ 無(wú)參數(shù)的構(gòu)造函數(shù)模板

7、virtual LinkQueue();/ 析構(gòu)函數(shù)模板int Length() const;/ 求隊(duì)列長(zhǎng)度 bool Empty() const;/ 判斷隊(duì)列是否為空void Clear();/ 將隊(duì)列清空void Traverse(void (*visit)(const ElemType &) const ;/ 遍歷隊(duì)列StatusCode OutQueue(ElemType &e);/ 出隊(duì)操作StatusCode GetHead(ElemType &e) const;/ 取隊(duì)頭操作StatusCode InQueue(const ElemType &e);/ 入隊(duì)操作LinkQueue

8、(const LinkQueue ©);/ 復(fù)制構(gòu)造函數(shù)模板LinkQueue &operator =(const LinkQueue ©);/ 重載賦值運(yùn)算符;/ 鏈隊(duì)列類(lèi)模板的實(shí)現(xiàn)部分template void LinkQueue:Init()/ 操作結(jié)果:初始化隊(duì)列rear = front = new Node;/ 生成頭結(jié)點(diǎn)templateLinkQueue:LinkQueue()/ 操作結(jié)果:構(gòu)造一個(gè)空隊(duì)列Init();templateLinkQueue:LinkQueue()/ 操作結(jié)果:銷(xiāo)毀隊(duì)列Clear();templateint LinkQueue:Lengt

9、h() const/ 操作結(jié)果:返回隊(duì)列長(zhǎng)度 int count = 0;/ 計(jì)數(shù)器 for (Node *tmpPtr = front-next; tmpPtr != NULL; tmpPtr = tmpPtr-next)/ 用tmpPtr依次指向每個(gè)元素count+;/ 對(duì)棧每個(gè)元素進(jìn)行計(jì)數(shù)return count;templatebool LinkQueue:Empty() const/ 操作結(jié)果:如隊(duì)列為空,則返回true,否則返回false return rear = front;templatevoid LinkQueue:Clear() / 操作結(jié)果:清空隊(duì)列ElemType t

10、mpElem;/ 臨時(shí)元素值while (Length() 0)/ 隊(duì)列非空,則出列OutQueue(tmpElem);template void LinkQueue:Traverse(void (*visit)(const ElemType &) const / 操作結(jié)果:依次對(duì)隊(duì)列的每個(gè)元素調(diào)用函數(shù)(*visit)for (Node *tmpPtr = front-next; tmpPtr != NULL; tmpPtr = tmpPtr-next)/ 對(duì)隊(duì)列每個(gè)元素調(diào)用函數(shù)(*visit)(*visit)(tmpPtr-data);templateStatusCode LinkQueue

11、:OutQueue(ElemType &e)/ 操作結(jié)果:如果隊(duì)列非空,那么刪除隊(duì)頭元素,并用e返回其值,返回SUCCESS,/否則返回UNDER_FLOW,if (!Empty() / 隊(duì)列非空Node *tmpPtr = front-next;/ 指向隊(duì)列頭素e = tmpPtr-data;/ 用e返回隊(duì)頭元素front-next = tmpPtr-next;/ front指向下一元素if (rear = tmpPtr)/ 表示出隊(duì)前隊(duì)列中只有一個(gè)元素,出隊(duì)后為空隊(duì)列rear = front;delete tmpPtr;/ 釋放出隊(duì)的結(jié)點(diǎn)return SUCCESS;else/ 隊(duì)列為空r

12、eturn UNDER_FLOW;templateStatusCode LinkQueue:GetHead(ElemType &e) const/ 操作結(jié)果:如果隊(duì)列非空,那么用e返回隊(duì)頭元素,返回SUCCESS,/否則返回UNDER_FLOW,if (!Empty() / 隊(duì)列非空Node *tmpPtr = front-next;/ 指向隊(duì)列頭素e = tmpPtr-data;/ 用e返回隊(duì)頭元素return SUCCESS;else/ 隊(duì)列為空return UNDER_FLOW;templateStatusCode LinkQueue:InQueue(const ElemType &e)

13、/ 操作結(jié)果:插入元素e為新的隊(duì)尾,返回SUCCESSNode *tmpPtr = new Node(e);/ 生成新結(jié)點(diǎn)rear-next = tmpPtr;/ 新結(jié)點(diǎn)追加在隊(duì)尾rear = tmpPtr;/ rear指向新隊(duì)尾return SUCCESS;templateLinkQueue:LinkQueue(const LinkQueue ©)/ 操作結(jié)果:由隊(duì)列copy構(gòu)造新隊(duì)列復(fù)制構(gòu)造函數(shù)模板Init();for (Node *tmpPtr = copy.front-next; tmpPtr != NULL; tmpPtr = tmpPtr-next)/ 對(duì)copy隊(duì)列每個(gè)元

14、素對(duì)當(dāng)前隊(duì)列作入隊(duì)列操作InQueue(tmpPtr-data);templateLinkQueue &LinkQueue:operator =(const LinkQueue ©)/ 操作結(jié)果:將隊(duì)列copy賦值給當(dāng)前隊(duì)列重載賦值運(yùn)算符if (© != this)Clear();for (Node *tmpPtr = copy.front-next; tmpPtr != NULL; tmpPtr = tmpPtr-next)/ 對(duì)copy隊(duì)列每個(gè)元素對(duì)當(dāng)前隊(duì)列作入隊(duì)列操作InQueue(tmpPtr-data);return *this;#endif/頭文件: node.h#

15、ifndef _NODE_H_#define _NODE_H_/ 結(jié)點(diǎn)類(lèi)模板template struct Node / 數(shù)據(jù)成員:ElemType data;/ 數(shù)據(jù)域Node *next;/ 指針域/ 構(gòu)造函數(shù)模板:Node();/ 無(wú)參數(shù)的構(gòu)造函數(shù)模板Node(ElemType item, Node *link = NULL);/ 已知數(shù)據(jù)元素值和指針建立結(jié)構(gòu);/ 結(jié)點(diǎn)類(lèi)模板的實(shí)現(xiàn)部分templateNode:Node()/ 操作結(jié)果:構(gòu)造指針域?yàn)榭盏慕Y(jié)點(diǎn) next = NULL;templateNode:Node(ElemType item, Node *link)/ 操作結(jié)果:構(gòu)造一

16、個(gè)數(shù)據(jù)域?yàn)閕tem和指針域?yàn)閘ink的結(jié)點(diǎn) data = item; next = link;#endif/頭文件:utility.h#ifndef _UTILITY_H_/ 如果沒(méi)有定義_UTILITY_H_#define _UTILITY_H_/ 那么定義_UTILITY_H_/ 實(shí)用程序軟件包#ifdef _MSC_VER/ 表示是VC #if _MSC_VER = 1200/ 表示VC6.0/ 標(biāo)準(zhǔn)庫(kù)頭文件#include / 標(biāo)準(zhǔn)串和操作#include / 標(biāo)準(zhǔn)流操作#include / 極限#include / 數(shù)學(xué)函數(shù)#include / 文件輸入輸出#include / 字符

17、處理#include / 日期和時(shí)間函數(shù)#include / 標(biāo)準(zhǔn)庫(kù)#include / 標(biāo)準(zhǔn)輸入輸出#include / 輸入輸出流格式設(shè)置#include / 支持變長(zhǎng)函數(shù)參數(shù)#include / 支持?jǐn)嘌?else/ 其它版本的VC+/ ANSI C+標(biāo)準(zhǔn)庫(kù)頭文件#include / 標(biāo)準(zhǔn)串和操作#include / 標(biāo)準(zhǔn)流操作#include / 極限#include / 數(shù)學(xué)函數(shù)#include / 文件輸入輸出#include / 字符處理#include / 日期和時(shí)間函數(shù)#include / 標(biāo)準(zhǔn)庫(kù)#include / 標(biāo)準(zhǔn)輸入輸出#include / 輸入輸出流格式設(shè)置#in

18、clude / 支持變長(zhǎng)函數(shù)參數(shù)#include / 支持?jǐn)嘌評(píng)sing namespace std;/ 標(biāo)準(zhǔn)庫(kù)包含在命名空間std中#endif/ _MSC_VER = 1200#else/ 非VC / ANSI C+標(biāo)準(zhǔn)庫(kù)頭文件#include / 標(biāo)準(zhǔn)串操作#include / 標(biāo)準(zhǔn)流操作#include / 極限#include / 數(shù)據(jù)函數(shù)#include / 文件輸入輸出#include / 字符處理#include / 日期和時(shí)間函數(shù)#include / 標(biāo)準(zhǔn)庫(kù)#include / 標(biāo)準(zhǔn)輸入輸出#include / 輸入輸出流格式設(shè)置#include / 支持變長(zhǎng)函數(shù)參數(shù)#inc

19、lude / 支持?jǐn)嘌評(píng)sing namespace std;/ 標(biāo)準(zhǔn)庫(kù)包含在命名空間std中#endif/ _MSC_VER/ 自定義類(lèi)型enum StatusCode SUCCESS, FAIL, UNDER_FLOW, OVER_FLOW,RANGE_ERROR, DUPLICATE_ERROR,NOT_PRESENT, ENTRY_INSERTED, ENTRY_FOUND, VISITED, UNVISITED;/ 宏定義#define DEFAULT_SIZE 1000/ 缺省元素個(gè)數(shù)#define DEFAULT_INFINITY 1000000/ 缺省無(wú)窮大/ 實(shí)用函數(shù)(模板)

20、聲明static char GetChar(istream &inStream = cin); / 從輸入流inStream中跳過(guò)空格及制表符獲取一字符static bool UserSaysYes();/ 當(dāng)用戶(hù)肯定回答(yes)時(shí), 返回true, 用戶(hù)否定回答(no)時(shí),返回falsestatic void SetRandSeed();/ 設(shè)置當(dāng)前時(shí)間為隨機(jī)數(shù)種子static int GetRand(int n);/ 生成0 n-1之間的隨機(jī)數(shù)static int GetRand();/ 生成隨機(jī)數(shù)static int GetPoissionRand(double expectValue

21、);/ 生成期望值為expectValue泊松隨機(jī)數(shù) template void Swap(ElemType &e1, ElemType &e2);/ 交換e1, e2之值templatevoid Display(ElemType elem, int n);/ 顯示數(shù)組elem的各數(shù)據(jù)元素值template void Write(const ElemType &e);/ 顯示數(shù)據(jù)元素/ 實(shí)用類(lèi)class Timer;/ 定時(shí)器類(lèi)Timerclass Error;/ 通用異常類(lèi)static char GetChar(istream &inStream)/ 操作結(jié)果:從輸入流inStream中跳過(guò)

22、空格及制表符獲取一字符char ch;/ 臨時(shí)變量while (ch = (inStream).peek() != EOF/ 文件結(jié)束符(peek()函數(shù)從輸入流中接受1/ 字符,流的當(dāng)前位置不變)& (ch = (inStream).get() = / 空格(get()函數(shù)從輸入流中接受1字符,流/ 的當(dāng)前位置向后移1個(gè)位置)| ch = t);/ 制表符return ch;/ 返回字符static bool UserSaysYes()/ 操作結(jié)果: 當(dāng)用戶(hù)肯定回答(yes)時(shí), 返回true, 用戶(hù)否定回答(no)時(shí),返回falsechar ch;/ 用戶(hù)回答字符bool initialR

23、esponse = true;/ 初始回答do/ 循環(huán)直到用戶(hù)輸入恰當(dāng)?shù)幕卮馂橹筰f (initialResponse)/ 初始回答cout (y, n)?; else/ 非初始回答cout 用y或n回答:;while (ch = GetChar() = n);/ 跳過(guò)空格,制表符及換行符獲取一字符initialResponse = false; while (ch != y & ch != Y & ch != n & ch != N);while (GetChar() != n);/ 跳過(guò)當(dāng)前行后面的字符if (ch = y | ch = Y) return true;else return

24、 false;/ 定時(shí)器類(lèi)Timerclass Timerprivate:/ 數(shù)據(jù)成員clock_t startTime;public:/ 方法聲明Timer() startTime = clock(); / 構(gòu)造函數(shù)Timer() ;/ 析構(gòu)函數(shù)double ElapsedTime()/ 返回已過(guò)的時(shí)間clock_t endTime = clock();/ 結(jié)束時(shí)間return (double)(endTime - startTime) / (double)CLK_TCK;/ 返回從Timer對(duì)象啟動(dòng)或最后一次調(diào)用reset()后所使用的CPU時(shí)間void Reset() startTime

25、 = clock(); / 重置開(kāi)始時(shí)間;#define MAX_ERROR_MESSAGE_LEN 100/ 通用異常類(lèi) class Errorprivate:/ 數(shù)據(jù)成員char messageMAX_ERROR_MESSAGE_LEN;/ 異常信息public:/ 方法聲明Error(char mes = 一般性異常!)/ 構(gòu)造函數(shù) strcpy(message, mes);/ 復(fù)制異常信息Error(void) ;/ 析構(gòu)函數(shù)void Show() const/ 顯示異常信息cout message endl;/ 顯示異常信息;static void SetRandSeed()/ 操作結(jié)果:設(shè)置當(dāng)前時(shí)間為隨機(jī)數(shù)種子 srand(unsigned)time(NULL); static int GetRand(int n)/ 操作結(jié)果:生成0 n-1之間的隨機(jī)數(shù) return rand() % (n); static int GetRand()/ 操作結(jié)果:生成隨機(jī)數(shù) return rand(); static int GetPoissionRand(dou

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論