電子醫囑錄入系統_第1頁
電子醫囑錄入系統_第2頁
電子醫囑錄入系統_第3頁
電子醫囑錄入系統_第4頁
電子醫囑錄入系統_第5頁
已閱讀5頁,還剩65頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、 課程設計報告 題目 電子醫囑錄入系統 系 別 年 級 專 業 班 級 學 號 學生姓名 指導教師 職 稱 講師 設計時間 目錄1 緒論11.1課題背景和意義11.2主要研究內容12 系統功能設計22.1初始化模塊22.2預約模塊22.3查看預約信息模塊22.4刪除預約信息模塊32.5創建病人信息模塊32.6修改病人信息模塊32.7查看病人信息模塊32.8保存信息并退出模塊33 系統詳細設計43.1數據表的存儲組織43.1.1病人信息數據結構43.1.2科室信息數據結構53.1.3病人預約信息數據結構53.1.4三種結構的關聯63.2 主要算法設計73.2.1初始化模塊83.2.2預約模塊93

2、.2.3查看預約模塊103.2.4刪除預約模塊113.2.5創建病人信息模塊123.2.6修改病人信息模塊133.2.7查看病人信息模塊143.2.8保存信息并退出模塊154系統測試164.1病人信息管理測試174.2病人預約信息管理測試214.3文件信息存取測試245 總結與展望245.1 全文總結24心 得 體 會25參 考 文 獻261 緒論1.1課題背景和意義隨著社會的信息化,各個行業的管理與運營都逐漸開始使用電子系統來取代傳統的管理模式。使用電子醫囑管理可以幫助醫院更為便捷的管理醫囑,通過計算機技術給醫院的管理人員和就診病人在病歷創建、預約查詢以及記錄統計等方面帶來便利,為醫院在管理

3、醫囑方面提供一種更好的方式。1.2主要研究內容本系統使用C語言編寫了電子醫囑管理系統,主要實現醫院中醫生醫囑的電子管理。通過此系統可對醫囑進行管理和維護操作,實現電子醫囑管理的一般功能。主要內容包括:(1) 電子醫囑查詢。提供按照科室信息、病人信息查詢;(2) 電子醫囑創建。提供病人信息、預約記錄的錄入功能;(3) 電子醫囑編輯。提供對系統數據的修改、刪除等功能;(4) 電子醫囑維護。提供對系統數據的保存、讀取等功能。系統采用菜單方式作為人機交互界面,為用戶提供便捷的使用方式。用戶根據菜單提示,選擇所需要的服務,系統自動做出相應的響應。醫囑信息包含病人姓名、身份證號、科室名稱、就診科室等。科室

4、信息、病人信息的讀取和保存要求有一定的格式規范,錄入的信息以文件的形式保存并可以對其進行瀏覽、查詢、修改、刪除等基本操作。整個程序基于鏈表實現,一個就診信息的更改不影響其他的就診記錄。2 系統功能設計電子醫囑管理系統是由五大功能模塊組成:預約模塊、查看預約信息模塊、刪除預約信息模塊、創建病人信息模塊、修改病人信息模塊、查看病人信息模塊、保存信息并退出模塊以及初始化模塊如圖2.1所示。 圖2.1電子醫囑管理系統的功能模塊2.1初始化模塊創建鏈表并將文件中的格式化信息讀取到內存鏈表中。2.2預約模塊預約模塊的操作流程包括選擇預約科室,輸入預約人員身份證號,若存在病人則預約,若不存在則返回主界面。2

5、.3查看預約信息模塊查看預約信息模塊的操作流程包括輸入預約人員身份證號碼得到相關預約科室信息,若存在病人則預約,若不存在則返回主界面。2.4刪除預約信息模塊刪除預約信息模塊的操作流程包括輸入預約人員身份證號碼得到相關預約科室信息,選擇刪除預約科室刪除成功返回主界面。2.5創建病人信息模塊創建病人信息模塊的操作流程依次輸入身份證號碼、姓名、年齡、性別、聯系電話、住址、密碼并回車添加病人信息。2.6修改病人信息模塊修改病人信息模塊的操作流程輸入病人身份證號顯示病人信息輸入修改項并輸入修改的內容,若退出則按0返回主界面。2.7查看病人信息模塊查看病人信息模塊的操作流程輸入病人身份證號碼顯示病人信息按

6、回車返回主界面。2.8保存信息并退出模塊保存信息并退出模塊的操作流程直接退出程序將鏈表中的信息保存到文件。3 系統詳細設計3.1數據表的存儲組織根據2.3節中設計,系統建立病人基本信息和病人預約信息表。在系統實現中,采用內存鏈表和磁盤文件二級的數據存儲結構來存放這些數據信息。系統將文件信息轉換為內存鏈表,再將鏈表轉換成磁盤文件形式。系統首先將磁盤文件數據轉入內存鏈表,在通過對鏈表數據的處理,對用戶請求作出響應。 本系統以病人信息文件以及預約信息二份文本文件作為表單對應的磁盤存儲,在內存中以結構變量的方式分別存放基本信息,并以鏈表的形式將所有的數據組織起來。 3.1.1病人信息數據結構病人信息在

7、內存中采用結構類型進行描述。病人結構成員包括:病人姓名、身份證號、性別、年齡、聯系方式、家庭住址、密碼。病人姓名、身份證號、性別、年齡、聯系方式、家庭住址、密碼均以字符數組的形式存儲。在病人結構中有一個個結構指針,指向下一個病人結構,通過這個指針可以組成病人鏈表。該結構變量實現病人信息表在計算機上的存儲,其結構聲明如圖3.1所示。typedef struct patientinfchar name10;char number19;char sex10;char age10;char tel20;char addr20;char PassWord5;struct patientinf *next

8、;patinf;圖3.1病人結構3.1.2科室信息數據結構科室信息在內存中采用結構類型進行描述。科室結構成員包括:科室名稱。科室名稱以指針數組的形式存儲。在科室結構中有二個結構指針,一個指向下一個科室結構,通過這個指針可以組成科室信息鏈表,一個指向下一個病人結構,通過這個指針可以組成病人鏈表。該結構變量實現病人信息表在計算機上的存儲,其結構聲明如圖3.2所示。typedef struct headchar *name;struct head *next;struct pat *next_;class_;圖3.2科室結構3.1.3病人預約信息數據結構病人預約信息在內存中采用結構類型進行描述。預約

9、結構成員包括:病人身份證號。病人身份證號以字符數組的形式存儲。在預約結構中有一個結構指針,指向下一個預約結構通過該指針可以將某一科室的所有預約病人鏈接起來,組成就診鏈表。該結構變量實現病人預約信息表在計算機上的存儲,其結構聲明如圖3.3所示。typedef struct patchar number19;struct pat *next;patient;圖3.3預約結構3.1.4三種結構的關聯本系統數據之間以指針相結合的方式來鏈接系統中各類對象。系統中,科室結構中的病人身份證號以及科室編號的值將科室和預約病人關聯起來。在系統實現中為了提高查詢效率,查詢模塊實現中采用了值的相等對記錄進行定位。科

10、室、預約病人之間存在著層次關系,為了在內存中較好的體現這種層次關系,本系統采用二重鏈表的方式組織信息之間的關聯關系。具體結構如圖3.4所示。科室信息存放在二重鏈表的主鏈結點上,每個主鏈結點除了保存下一個結點的地址,還保存該科室的預約病人的基本信息鏈表頭結點地址;預約病人信息存放在二重鏈表中相應科室的預約病人鏈結點上,每個結點保存下一個預約病人基本信息結點的地址。圖3.4二重鏈表存儲結構示意圖病人信息存放在單鏈表中,具體結構如圖3.5所示。病人信息結點除了保存病人信息還保存下一個結點的地址。NULL病人信息PatInfHEAD圖3.5單鏈表存儲結構示意圖3.2 主要算法設計 本系統在算法設計上采

11、用“自頂向下,逐步求精”的設計方法。由全局到局部、由整體到細節、由抽象到具體,逐步將系統的問題分解為相對簡單的小規模問題。本系統依照使用功能分成幾個子模塊:預約模塊、查看預約信息模塊、刪除預約信息模塊、創建病人信息模塊、修改病人信息模塊、查看病人信息模塊、保存信息并退出模塊以及初始化模塊。 系統的總控模塊的算法流程如圖3.1所示。系統運行文本菜單初始化界面加載文件中存儲的鏈表數據系統功能模塊的選擇和運行保存數據鏈表關閉系統結束圖3.1主程序運行流程圖3.2.1初始化模塊初始化模塊負責將文本文件轉換成內存鏈表。在第2章的概要設計中,系統數據分為二種基礎數據,這二種系統數據要求儲存到數據文件中。為

12、便于處理每個文件,本系統將三種數據分別存放在二個文本文件中。為了實現上述功能編輯了三個子函數與一個創建單鏈表語句 : struct head *TreeListCreat(int n);void PatInfToListRead();void AppointedInfToListRead();PatInfHEAD-next=NULL; 初始化的過程包括將預約信息文件、病人信息文件從數據文件中讀取并存放到所創建的鏈表中。算法流程如圖3.2所示。圖3.2初始化模塊運行流程圖3.2.2預約模塊預約模塊中包括找到對應預約科室尾部結點并添加結點其中使用到四個函數:struct pat * mainLis

13、tLocatedSearch(char *str);struct pat* leafListTailSearch(struct pat* head);patinf *PatInfNodeSearch(char *number);struct pat* leafListnodeAdd(patient *previous);過程包括找到所預約科室頭結點然后根據頭結點找到添加鏈表的尾結點輸入信息在添加結點。算法流程如圖3.3所示。圖3.3預約模塊運行流程圖3.2.3查看預約模塊查看預約模塊中包括找到病人預約二重鏈表中所有的預約信息使用到兩個子函數:void AppointNumDisplay();v

14、oid PatAppointedSearch(char *str);過程包括遍歷分科室遍歷二級鏈表然后顯示預約信息。算法流程如圖3.4所示。圖3.4查看預約模塊運行流程圖3.2.4刪除預約模塊刪除預約模塊中包括找到結點位置,和找到結點前一個位置用到四個子函數:struct pat * leafListLocatedSearch(struct pat *secondlist,char *num);struct pat * mainListLocatedSearch(char *str);struct pat * leafListLocatedSearchPrevious(struct pat *

15、secondlist,char *num);struct pat * leafListLocatedSearch(struct pat *secondlist,char *num);過程包括先找到要刪除結點的前一個結點位置和刪除結點位置然后刪除結點然后將前一個結點的位置指向下一個結點。算法流程如圖3.5所示。圖3.5刪除預約模塊運行流程圖3.2.5創建病人信息模塊創建病人信息模塊中包括找到病人信息鏈表的尾結點然后添加結點使用到兩個子函數:patinf * PatInfListTailSearch()void PatInfListnodeAdd(patinf *tail)過程包括找到病人結點尾部

16、然后在病人結點尾部添加一個結點。算法流程如圖3.6所示。圖3.6創建病人信息模塊運行流程圖3.2.6修改病人信息模塊修改病人信息模塊中使用到一個子函數:patinf *PatInfNodeSearch(char *number);過程包括找到結點然后修改內容。算法流程如圖3.7所示。圖3.7修改病人信息模塊運行流程圖3.2.7查看病人信息模塊查看病人信息模塊中使用到一個子函數:patinf *PatInfNodeSearch(char *number);過程包括找到結點然后顯示內容。算法流程如圖3.8所示。圖3.8查看病人信息模塊運行流程圖3.2.8保存信息并退出模塊保存信息并退出模塊中使用到

17、兩個子函數:void PatListInfSave();void AppointListInfSave();過程包括保存格式化的病人信息到文件和保存格式化的預約信息到文件然后退出程序。算法流程如圖3.9所示。圖3.9保存信息并退出模塊運行流程圖4系統測試 軟件測試即使用人工或者自動手段來運行或測試某個系統的過程,其目的在于檢驗它是否滿足規定的需求或弄清預期結果與實際結果之間的差別。隨著軟件測試技術的不斷發展,測試方法也越來越多樣化,針對性更強;選擇合適的軟件測試方法可以讓測試事半功倍。常用的軟件測試方法有:黑盒測試、白盒測試、靜態測試、動態測試、自動化測試、功能測試、集成測試、場景測試、系統測

18、試等。本系統的測試針對系統的功能進行檢查,以功能進行分類,對幾個模塊進行測試。4.1病人信息管理測試運行程序首先創建病人信息如圖4.1.1所示圖4.1.1創建病人信息然后可選擇修改病人信息如圖4.1.2所示圖4.1.2修改病人信息可修改多項病人信息如圖4.1.3所示 圖4.1.3修改多項病人信息也可查看病人信息如圖4.1.4所示圖4.1.4查看病人信息4.2病人預約信息管理測試創建病人信息后便可開始預約如圖4.2.1所示圖4.2.1預約科室 也可查輸入病人身份證查看預約信息如圖4.2.2所示圖4.2.2查看預約信息還可刪除預約如圖4.2.3所示圖4.2.4刪除預約信息4.3文件信息存取測試初始

19、化會打開”病人信息.txt”與”科室信息.txt”讀取信息如果文件不存在則會創建,程序退出選擇”7.保存信息并退出”,鏈表中的信息會保存到文件中5 總結與展望5.1 全文總結本文使用C語言實現了電子醫囑管理系統,實現了課程設計的功能要求,能夠正確運行。從實用和性能方面可以進一步加以改善。(1)完整性。可通過增加科室名單表等方法,對輸入信息進行完整性檢查。如果輸入科室名稱與名單表不符,則該信息視為無效。對年齡設置上下限,以保證數據的合理性。(2)安全性。在系統中可以增加多種角色的登陸方式,提高系統的安全性。對于不同角色的用戶,給與不同的操作權限,從而保證系統內部數據的安全性。在登陸時可加入口令認

20、證,確保用戶身份的正確性。(3)性能優化。對內部數據建立索引表,對索引表進行二分查找,提高查詢速度。對鏈表可以采用雙向十字鏈表結構存儲,提高信息處理的速度。心 得 體 會 剛開始看到題目時一頭霧水,不知該從何處下手,因為平時只做過一些輸入輸出的普通小程序,根本沒有界面的概念。于是我就想如果先運行一下書上提供的樣例程序,腦中大概也就有了一些概念和想法。可是把書上提供的幾個代碼拿來一運行編譯error就有幾十行,面對那上千行的代碼,我就不知該怎么下手了。后來實在沒辦法,首先拿起那本C語言實驗與課程設計看了三天,大概懂了一些函數的用法,就開始將書上的代碼一段一段的輸入進去跑一跑,慢慢的就大概懂了怎么

21、來實現那些界面。首先把那個任務說明看了幾遍,就將程序主要分成五大塊內容:(1)文件處理功能:首先得有將數據信息保存的功能,這就得用到老師講的“文件”那章的知識,我又拿起課本看了幾遍。其次還得有數據備份的功能,以備在重大失誤后能找回一些數據,將損失降低。有了備份,還得有恢復備份數據地功能。最后必須有安全退出系統的功能。(2)數據處理功能:首先得讓系統能讀入操作者輸入的數據并將數據存儲在文件中。然后如果操作者 輸入數據有誤那還得有對數據修改,部分數據刪除,以及數據添加的功能。(3)查詢功能:第一可以按照科室編號來查詢,第二還可以按照病人身份證號查詢,第三還可以按照科室編號,病人身份證及就診日期進行

22、多條件統計查詢。(4)統計信息功能:最重要的要有日就診人數統計功能,其次還可以有病人就診歷史,就診病人年齡分類的統計。(5)系統幫助功能:第一得告訴操作者本系統的用途,然后告訴怎樣操作使用系統以及一些基本的操作快捷功能。最后,當屏幕上顯示的信息過多時還得有清理屏幕的功能,以方便用戶觀看數據。接下來就是一一實現那些功能。通過運用課堂上講過的數組,指針,文件等知識,編寫了鏈表的創建,之后是將鏈表的內容寫入到文件中保存,并將文件中寫入的內容再次逐條讀取出來,顯示在屏幕上。這個主體寫完了,接下來就開始寫科室、病人等信息的查詢函數,這個就比較容易點。還有就是我想寫一個能將同一病人在不同科室下的所有就診記

23、錄全部顯示的功能,方便病人查詢自己就診歷史。最后就是調試程序了。這個應該是整個課程設計中最為復雜和難搞的部分。首先是整個系統,光是函數就有幾十個,而且經常是一個函數中又調用著若干其它函數,這樣調試起來就比較困難,因為就算一個函數里,一點小小的錯誤就會引起連鎖反應導致其它函數都出錯,而且有些錯誤時隱性的,就是可能在這個函數中運行沒問題,可在哪個函數中運行起來又有大問題。所以調試也是最耗時間和精力的一個環節,有時候我為了測試一個函數的功能是否穩定,我得將程序跑很多次,一遍又一遍的運行,看看有沒有一些不足的地方,有沒有一些隱藏的問題,然后又得靜下心來仔細分析問題原因所在并慢慢地糾正并再次調試運行,直

24、到滿意為止。差不多有連續十來天我有空就將程序跑一跑,看看有沒有大問題潛藏在其中,一經發現立刻將它修正。這十來天我也體會調試員真還得過硬的基礎知識,能敏銳覺察出代碼中的錯誤,而且還得有足夠的精力和耐力。 盡管程序系統算是完成了,但是開始寫報告時才發現原來課程設計才剛完成了一半而已。還得將當初的構思、想法、到實現、再到最后的調試,這其中每個環節的步驟用文字的形式記錄下來,好讓其他人也能了解你當初的想法。其實有些想法有你自己特異的思維方式,也許口頭說說還行,真得寫下來,并讓別人也看懂,并不那么容易。在本次C課程設計構思創作過程中,得到了老師的大力幫助和支持,在此表示衷心的感謝,感謝提供無私的幫助和支

25、持的老師們!感謝他們默默無聞的奉獻! 另外也要感謝熱心的同學們,他們在我的設計過程中給與了很多的建議與幫助。參 考 文 獻1曹計昌,盧萍,李開. C語言程序設計,北京:科學出版社,20082張引. C程序設計基礎課程設計, 杭州: 浙江大學出版社,20073黃明,梁旭,萬洪莉. C語言課程設計,北京: 電子工業出版社,20064Brain W Kernighan, Dennis M Ritchie. THE C PROGRAMMING LANGUAGE. 北京:清華大學出版社。PRENTICE HALL,2011.5ISO/IEC的C語言標準。ISO/IEC 9899:20116秦友淑,曹化工

26、。C語言程序設計教程(第二版)。7田淑清.二級教程-C語言程序設計(2008 年版)8劉振安.C語言程序設計M.機械工業出版社,2007#include #include #include #include #include #include #define N 5/*科室數量*/time_t _Curtime = (time_t)0;struct tm* _RetTime = NULL;/*功能:定義patient結構體*輸入:*返回:*/typedef struct patientinfchar number19;char PassWord5;char name10;char age10;

27、char sex10;char tel20;char addr20;struct patientinf *next;patinf;/*功能:定義patient結構體*輸入:*返回:*/typedef struct patchar number19;char time20;struct head *_next;struct pat *next;patient;/*功能:定義class_結構體*輸入:*返回:*/typedef struct headchar *name;struct head *next;struct pat *next_;class_;/*定義一個大頭*/class_ *ALL

28、=(struct head *)malloc(sizeof(struct head);/*定義病人信息鏈表頭*/patinf *PatInfHEAD=(patinf *)malloc(sizeof( patinf);char strhead25=頭;char STRN12=內科,外科,兒科,骨科,皮膚科;char Strfilepat17=病人信息.txt;char Strfileappointed17=預約信息.txt;/*功能:從文件中讀入預約信息*輸入:*返回:*/void AppointListInfSave();/*功能:從文件中讀入預約信息*輸入:*返回:*/void Appoin

29、tedInfToListRead();/*功能:顯示各個科室預約人數信息*輸入:*返回:*/void AppointNumDisplay();/*功能:從文件中讀入科室信息*輸入:*返回:*/void ClassMessageDisplay(int number);/*功能:遍歷鏈表所有元素*輸入:鏈表頭結點,匹配元素*返回:結點位置(結點地址)*/struct pat * leafListLocatedSearch(struct pat *secondlist,char *num);/*功能:遍歷鏈表所有元素*輸入:鏈表頭結點,匹配元素*返回:結點位置的上一個位置*/struct pat *

30、 leafListLocatedSearchPrevious(struct pat *secondlist,char *num);/*功能:向結點尾部添加結點*輸入:葉子結點*返回:尾結點*/struct pat* leafListnodeAdd(patient *previous);/*功能:向結點尾部添加結點*輸入:葉子結點*返回:尾結點*/struct pat* leafListnodeandNumAdd(char *Num,patient *previous);/*功能:遍歷鏈表所有元素*輸入:鏈表頭結點*返回:結點個數*/char leafListnumSearch(struct p

31、at *secondlist);/*功能:找到樹枝尾部*輸入:樹枝頭部結點*返回:尾部位置(尾部地址)*/struct pat* leafListTailSearch(struct pat* head);/*功能:遍歷鏈表所有元素*輸入:鏈表頭結點(struct head *mainlist,char *str)*返回:副鏈表頭*/struct pat * mainListLocatedSearch(char *str);/*功能:遍歷鏈表所有元素*輸入:鏈表頭結點(struct head *mainlist)*返回:結點位置(結點地址)*/char mainListnumSearch(str

32、uct head *mainlist);/*功能:從病人鏈表中遍歷病人信息*輸入:*返回:*/void PatAppointedSearch(char *str);/*功能:改變病人信息*輸入:病人身份證號*返回:*/void PatInfChange(char *number);/*功能:向病人信息鏈表末端添加元素*輸入:patinf *tail*返回:*/void PatInfListnodeAdd(patinf *tail);/*功能:找到病人信息鏈表末端*輸入:*返回:末端結點地址*/patinf * PatInfListTailSearch();/*功能:遍歷病人信息鏈表找到病人結點

33、的前一結點*輸入:病人身份證號*返回:病人節點的前一結點位置*/patinf *PatInfNodePreviousSearch(char *number);/*功能:遍歷病人信息鏈表找到病人結點*輸入:病人身份證號*返回:病人節點位置*/patinf *PatInfNodeSearch(char *number);/*功能:從文件中讀入病人信息*輸入:*返回:*/void PatInfToListRead();/*功能:保存病人信息到鏈表*輸入:*返回:*/void PatListInfSave();/*功能:創建主干鏈表與葉子連接結點*輸入:主干結點個數*返回:主干頭結點*/struct

34、head *TreeListCreat(int n);/*功能:創建主干鏈表與葉子連接結點*輸入:主干結點個數*返回:主干頭結點*/struct head *TreeListCreat(int n)int i;struct head *h,*p1,*p2;struct pat *patN;h=NULL;for(i=0;iname=*(STR+i);strcpy_s(pati-number,5,strhead2);pati-next=NULL;/*尾結點的后繼指針為NULL(空)*/pati-_next=h;/*尾結點的后繼指針為h*/p1-next_=pati;/*返回鏈表的頭指針*/if(h

35、=NULL)/*指定鏈表的頭指針*/h=p1;p2=p1;elsep2-next=p1;p2=p1;p2-next=NULL;/*尾結點的后繼指針為NULL(空)*/return h;/*返回鏈表的頭指針*/*功能:向結點尾部添加結點*輸入:葉子結點*返回:尾結點*/struct pat* leafListnodeAdd(patient *previous)struct pat *tail;tail=(struct pat *)malloc(sizeof(struct pat);/*動態分配內存空間,并數據轉換為(struct pat)類型*/printf(請輸入身份證號:);scanf_s(

36、%s,tail-number,19);if(PatInfNodeSearch(tail-number)=0)return 0;tail-next=NULL;/*尾結點的后繼指針為NULL(空)*/tail-_next=ALL;/*尾部結點_next指向ALL大頭*/if(previous-next=NULL)previous-next=tail;return tail;/*返回尾結點*/*功能:向結點尾部添加結點*輸入:葉子結點*返回:尾結點*/struct pat* leafListnodeandNumAdd(char *Num,patient *previous)struct pat *t

37、ail;tail=(struct pat *)malloc(sizeof(struct pat);/*動態分配內存空間,并數據轉換為(struct pat)類型*/strncpy_s(tail-number,Num,19);/tail-next=NULL;/*尾結點的后繼指針為NULL(空)*/tail-_next=ALL;/*尾部結點_next指向ALL大頭*/if(previous-next=NULL)previous-next=tail;/*head指向創建的結點*/return tail;/*返回尾結點*/*功能:遍歷鏈表所有元素*輸入:鏈表頭結點(struct head *mainl

38、ist)*返回:結點位置(結點地址)*/char mainListnumSearch(struct head *mainlist)char a=0;/*創建臨時變量*/struct head *mainTemp=(struct head *)malloc(sizeof(struct head);mainTemp=mainlist;printf(-n);while(1)a+;printf(%d.%s:n,a,mainTemp-name);if(mainTemp-next=NULL)printf(-n);return a;mainTemp=mainTemp-next;/*功能:遍歷鏈表所有元素*輸

39、入:鏈表頭結點(struct head *mainlist,char *str)*返回:副鏈表頭*/struct pat * mainListLocatedSearch(char *str)int a=0;/*創建臨時變量*/struct head *p=(struct head *)malloc(sizeof(struct head);p=ALL-next;while(1)if(strcmp(p-name,str)=0)return p-next_;a+;if(p-next=NULL)break;p=p-next;return 0;/*功能:遍歷鏈表所有元素*輸入:鏈表頭結點,匹配元素*返回

40、:結點位置(結點地址)*/struct pat * leafListLocatedSearch(struct pat *secondlist,char *num)/*創建臨時變量*/struct pat *secTemp=(struct pat *)malloc(sizeof(struct pat);secTemp=secondlist;while(1)if(strcmp(secTemp-number,num)=0)printf(找到:%sn,num);return secTemp;/?if(secTemp-next=NULL)break;secTemp=secTemp-next;printf

41、(未找到:%sn,num);return 0;/*功能:遍歷鏈表所有元素*輸入:鏈表頭結點,匹配元素*返回:結點位置的上一個位置*/struct pat * leafListLocatedSearchPrevious(struct pat *secondlist,char *num)/*創建臨時變量*/struct pat *Previous,*secTemp=(struct pat *)malloc(sizeof(struct pat);secTemp=secondlist;while(1)if(strcmp(secTemp-number,num)=0)printf(找到:%sn,num);

42、return Previous;if(secTemp-next=NULL)break;Previous=secTemp;secTemp=secTemp-next;printf(未找到:%sn,num);return 0;/*功能:遍歷鏈表所有元素*輸入:鏈表頭結點*返回:結點個數*/char leafListnumSearch(struct pat *secondlist)char a=0;/*創建臨時變量*/struct pat *secTemp=(struct pat *)malloc(sizeof(struct pat);secTemp=secondlist;while(1)if(str

43、cmp(secTemp-number,strhead2)=0);else a+;if(secTemp-next=NULL)break;secTemp=secTemp-next;return a;/*功能:找到樹枝尾部*輸入:樹枝頭部結點*返回:尾部位置(尾部地址)*/struct pat* leafListTailSearch(struct pat* head)struct pat* Temp;/*創建臨時變量*/Temp=head;while(Temp-next!=NULL)Temp=Temp-next;return Temp;/*功能:顯示各個科室預約人數信息*輸入:*返回:*/void

44、AppointNumDisplay()patient *p;class_ *cp;cp=ALL-next;printf(-n);for(int i=0;i+)printf(%d.%s:,i,cp-name);p=cp-next_;printf(%d人n,leafListnumSearch(p);if(cp-next=NULL)break;cp=cp-next;printf(-n);/*功能:從病人鏈表中遍歷病人信息*輸入:*返回:*/void PatAppointedSearch(char *str)patient *p;class_ *cp;cp=ALL-next;while(1)print

45、f(%sn,cp-name);p=leafListLocatedSearch(cp-next_,str);if(cp-next=NULL)break;cp=cp-next;/*功能:找到病人信息鏈表末端*輸入:*返回:末端結點地址*/patinf * PatInfListTailSearch()patinf *p=(patinf *)malloc(sizeof( patinf);p=PatInfHEAD;while(1)if(p-next=NULL)break;elsep=p-next;return p;/*功能:向病人信息鏈表末端添加元素*輸入:patinf *tail*返回:*/void PatInfListnodeAdd(patinf *tail)patinf *p=(patinf *)malloc(sizeof( patinf);tail-next=p;printf(-n);printf(輸入病人信息:n);printf( 身份證號:);scanf_s(%s,p-number,19);printf( 姓名:);scanf_s(%s,p-name,10);printf( 年齡:);scanf_s(%s,p-age,10);print

溫馨提示

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

評論

0/150

提交評論