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

下載本文檔

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

文檔簡介

1、課程設計報告題目電子醫囑錄入系統系別年級專業班級學號學生指導教師 職稱 講師設計時間 目錄1 緒論11.1課題背景和意義 1.1.2主要研究容 仁2系統功能設計1.2.1初始化模塊2.2.2預約模塊2.2.3查看預約信息模塊2.2.4刪除預約信息模塊2.2.5創建病人信息模塊 3.2.6修改病人信息模塊3.2.7查看病人信息模塊 3.2.8保存信息并退出模塊 3.3 系統詳細設計.3.3.1數據表的存儲組織 3.病人信息數據結構 4科室信息數據結構 4病人預約信息數據結構 5三種結構的關聯53.2主要算法設計6.初始化模塊 7預約模塊8查看預約模塊 9刪除預約模塊 10創建病人信息模塊 11修

2、改病人信息模塊12查看病人信息模塊 13保存信息并退出模塊 144系統測試154.1病人信息管理測試 1.64.2病人預約信息管理測試 194.3文件信息存取測試225總結與展望235.1全文總結23心得體會24參考文獻251 緒論1.1課題背景和意義隨著社會的信息化,各個行業的管理與運營都逐漸開始使用電子系統來取代 傳統的管理模式。使用電子醫囑管理可以幫助醫院更為便捷的管理醫囑,通過計算機技術給醫院的管理人員和就診病人在病歷創建、預約查詢以及記錄統計等方 面帶來便利,為醫院在管理醫囑方面提供一種更好的方式。1.2主要研究容本系統使用C語言編寫了電子醫囑管理系統,主要實現醫院中醫生醫囑的電 子

3、管理。通過此系統可對醫囑進行管理和維護操作,實現電子醫囑管理的一般功 能。主要容包括:(1)電子醫囑查詢。提供按照科室信息、病人信息查詢;(2)電子醫囑創建。提供病人信息、預約記錄的錄入功能;(3)電子醫囑編輯。提供對系統數據的修改、刪除等功能;(4)電子醫囑維護。提供對系統數據的保存、讀取等功能。系統采用菜單方式作為人機交互界面,為用戶提供便捷的使用方式。用戶根 據菜單提示,選擇所需要的服務,系統自動做出相應的響應。醫囑信息包含病人、 號、科室名稱、就診科室等??剖倚畔ⅰ⒉∪诵畔⒌淖x取和保存要求有一定的格 式規,錄入的信息以文件的形式保存并可以對其進行瀏覽、查詢、修改、刪除等 基本操作。整個

4、程序基于鏈表實現,一個就診信息的更改不影響其他的就診記錄。2系統功能設計電子醫囑管理系統是由五大功能模塊組成:預約模塊、查看預約信息模塊、刪除預約信息模塊、創建病人信息模塊、修改病人信息模塊、查看病人信息模塊、保存信息并退出模塊以及初始化模塊如圖 2.1所示。圖2.1電子醫囑管理系統的功能模塊2.1初始化模塊創建鏈表并將文件中的格式化信息讀取到存鏈表中2.2預約模塊預約模塊的操作流程包括選擇預約科室,輸入預約人員號,若存在病人則預約,若不存在則返回主界面。2.3查看預約信息模塊查看預約信息模塊的操作流程包括輸入預約人員得到相關預約科室信息,若存在病人則預約,若不存在則返回主界面。2.4刪除預約

5、信息模塊刪除預約信息模塊的操作流程包括輸入預約人員得到相關預約科室信息,選擇刪除預約科室刪除成功返回主界面。2.5創建病人信息模塊創建病人信息模塊的操作流程依次輸入、年齡、性別、聯系、住址、密碼 并回車添加病人信息。2.6修改病人信息模塊修改病人信息模塊的操作流程輸入病人號顯示病人信息輸入修改項并輸入 修改的容,若退出則按0返回主界面。2.7查看病人信息模塊查看病人信息模塊的操作流程輸入病人顯示病人信息按回車返回主界面。2.8保存信息并退出模塊保存信息并退出模塊的操作流程直接退出程序將鏈表中的信息保存到文件。3系統詳細設計3.1數據表的存儲組織根據2.3節中設計,系統建立病人基本信息和病人預約

6、信息表。在系統實現 中,采用存鏈表和磁盤文件二級的數據存儲結構來存放這些數據信息。系統將文件信息轉換為存鏈表,再將鏈表轉換成磁盤文件形式。系統首先將 磁盤文件數據轉入存鏈表,在通過對鏈表數據的處理,對用戶請求作出響應。本系統以病人信息文件以及預約信息二份文本文件作為表單對應的磁盤存 儲,在存中以結構變量的方式分別存放基本信息, 并以鏈表的形式將所有的數據 組織起來。病人信息數據結構病人信息在存中米用結構類型進行描述。病人結構成員包括:病人、號、性 別、年齡、聯系方式、家庭住址、密碼。病人、號、性別、年齡、聯系方式、家 庭住址、密碼均以字符數組的形式存儲。 在病人結構中有一個個結構指針, 指向

7、下一個病人結構,通過這個指針可以組成病人鏈表。該結構變量實現病人信息表 在計算機上的存儲,其結構聲明如圖 3.1所示。typedef struct patie nti nf char n ame10; char nu mber19; char sex10; char age10;char tel20; char addr20;char PassWord5; struct patie nti nf *n ext;pat inf;圖3.1病人結構科室信息數據結構科室信息在存中采用結構類型進行描述??剖医Y構成員包括:科室名稱。科 室名稱以指針數組的形式存儲。在科室結構中有二個結構指針,一個指向下一個

8、 科室結構,通過這個指針可以組成科室信息鏈表, 一個指向下一個病人結構,通 過這個指針可以組成病人鏈表。該結構變量實現病人信息表在計算機上的存儲, 其結構聲明如圖3.2所示。typedef struct head char *n ame; struct head *n ext; struct pat *n ext_;class_;圖3.2科室結構病人預約信息數據結構病人預約信息在存中采用結構類型進行描述。預約結構成員包括:病人號。病人號以字符數組的形式存儲。在預約結構中有一個結構指針,指向下一個預約 結構通過該指針可以將某一科室的所有預約病人起來, 組成就診鏈表。該結構變 量實現病人預約信息表

9、在計算機上的存儲,其結構聲明如圖 3.3所示。typedef struct pat char nu mber19; struct pat *n ext;patie nt;圖3.3預約結構三種結構的關聯本系統數據之間以指針相結合的方式來系統中各類對象。 系統中,科室結構 中的病人號以及科室編號的值將科室和預約病人關聯起來。在系統實現中為了提 高查詢效率,查詢模塊實現中采用了值的相等對記錄進行定位??剖摇㈩A約病人之間存在著層次關系,為了在存中較好的體現這種層次關系,本系統采用二重鏈表的方式組織信息之間的關聯關系。具體結構如圖3.4所示科室信息存放在二重鏈表的主鏈結點上,每個主鏈結點除了保存下一個結

10、點 的地址,還保存該科室的預約病人的基本信息鏈表頭結點地址;預約病人信息存放在二重鏈表中相應科室的預約病人鏈結點上,每個結點保存下一個預約病人基 本信息結點的地址。ALL f外科圖3.4二重鏈表存儲結構示意圖病人信息存放在單鏈表中,具體結構如圖3.5所示。病人信息結點除了保存病人信息還保存下一個結點的地址圖3.5單鏈表存儲結構示意圖3.2主要算法設計本系統在算法設計上采用“自頂向下,逐步求精”的設計方法。由全局 到局部、由整體到細節、由抽象到具體,逐步將系統的問題分解為相對簡單的小 規模問題。本系統依照使用功能分成幾個子模塊:預約模塊、查看預約信息模塊、刪除預約信息模塊、創建病人信息模塊、修改

11、病人信息模塊、查看病人信息模塊、 保存信息并退出模塊以及初始化模塊。系統的總控模塊的算法流程如圖3.1所示。文本菜單初始化界面加載文件中存儲館勺鏈表數據系統功能模塊的選擇和運行保存數據鏈表關閉系統圖3.1主程序運行流程圖321初始化模塊初始化模塊負責將文本文件轉換成存鏈表。在第 2章的概要設計中,系統數 據分為二種基礎數據,這二種系統數據要求儲存到數據文件中。為便于處理每 個文件,本系統將三種數據分別存放在二個文本文件中。為了實現上述功能編 輯了三個子函數與一個創建單鏈表語句 :struct head *TreeListCreat(int n); void Patl nfToListRead(

12、);void Appoi ntedl nfToListRead(); Patl nfHEAD->n ext=NULL;初始化的過程包括將預約信息文件、病人信息文件從數據文件中讀取并存放到所創建的鏈表中。算法流程如圖 3.2所示。圖3.2初始化模塊運行流程圖預約模塊預約模塊中包括找到對應預約科室尾部結點并添加結點其中使用到四個函 數:struct pat * main ListLocatedSearch(char *str);struct pat* leafListTailSearch(struct pat* head);pati nf *Pat In fNodeSearch(char *

13、nu mber);struct pat* leafList no deAdd(patie nt *previous);過程包括找到所預約科室頭結點然后根據頭結點找到添加鏈表的尾結點輸入信息在添加結點。算法流程如圖 3.3所示。圖3.3預約模塊運行流程圖查看預約模塊查看預約模塊中包括找到病人預約二重鏈表中所有的預約信息使用到兩個子函數:void Appoi ntNumDisplay();void PatAppo in tedSearch(char *str);過程包括遍歷分科室遍歷二級鏈表然后顯示預約信息。算法流程如圖3.4所示。圖3.4查看預約模塊運行流程圖刪除預約模塊刪除預約模塊中包括找到結

14、點位置,和找到結點前一個位置用到四個子函數struct pat * leafListLocatedSearch(struct pat *sec on dlist,char *nu m);struct pat * main ListLocatedSearch(char *str);struct pat * leafListLocatedSearchPrevious(struct pat *sec on dlist,char *nu m); struct pat * leafListLocatedSearch(struct pat *sec on dlist,char *nu m);過程包括先找到

15、要刪除結點的前一個結點位置和刪除結點位置然后刪除結點然后將前一個結點的位置指向下一個結點。算法流程如圖3.5所示。圖3.5刪除預約模塊運行流程圖創建病人信息模塊倉U建病人信息模塊中包括找到病人信息鏈表的尾結點然后添加結點使用到 兩個子函數:pat inf* Patl nfListTailSearch()void PatI nfList nodeAdd(pati nf *tail)過程包括找到病人結點尾部然后在病人結點尾部添加一個結點。算法流程如圖3.6所示圖3.6創建病人信息模塊運行流程圖修改病人信息模塊修改病人信息模塊中使用到一個子函數:pati nf *Pat In fNodeSearch

16、(char *nu mber);過程包括找到結點然后修改容。算法流程如圖3.7所示圖3.7修改病人信息模塊運行流程圖327查看病人信息模塊查看病人信息模塊中使用到一個子函數:pati nf *Pat In fNodeSearch(char *nu mber);過程包括找到結點然后顯示容。算法流程如圖3.8所示圖3.8查看病人信息模塊運行流程圖保存信息并退出模塊保存信息并退出模塊中使用到兩個子函數:void PatListl nfSave();void Appo in tList In fSave();過程包括保存格式化的病人信息到文件和保存格式化的預約信息到文件然后退出程序。算法流程如圖3.9

17、所示。圖3.9保存信息并退出模塊運行流程圖4系統測試軟件測試即使用人工或者自動手段來運行或測試某個系統的過程,其目的在于檢驗它是否滿足規定的需求或弄清預期結果與實際結果之間的差別。隨著軟件測試技術的不斷發展,測試方法也越來越多樣化,針對性更強;選擇合適的軟 件測試方法可以讓測試事半功倍。常用的軟件測試方法有:黑盒測試、白盒測試、靜態測試、動態測試、自動 化測試、功能測試、集成測試、場景測試、系統測試等。本系統的測試針對系統 的功能進行檢查,以功能進行分類,對幾個模塊進行測試。4.1病人信息管理測試運行程序首先創建病人信息如圖所示 j AUser swepks tog eth? rD.電于醫矚錄

18、入系統¥2-1. 預約2. 查看預約仃息3. 刪除預約信息4 .創建病人指息5. 修改病人信息6查看病人信息7.探存信息退出愉入:4輸XW人信15:身份證號:000 姓名;000 年 _:000 性別:000 聯聚電話;000 住址:000 密碼:。00添加成功!請按任意犍繼續圖創建病人信息然后可選擇修改病人信息如圖所示iMAUsprswepkstogethe. -電于醫囑錄入系統U-一-1. 預約2. 15甘預約信息3刪涂預約信息4. 倉j盤病人信息3応改病人仁息G. 2E看廟人信息7.保存信息退岀目j 5 錮入日館證:000炳人信息:1. 身 1:lt 號:0002. 姓名:00

19、03. 年齡;0004. 性別:0005. 聯系電話:000&住址:0007.密 P J: 000輸入修改項:22. 姓名:000 請輸入要改成的內容:病人f言息:身份證號:0()0 ttg:222 年齡:000 性別:000聯系電話:000 仕址:000 密碼:000是否修改完成(是請按0)輸入:圖修改病人信息 C :U p r wer k stog et h? rD.L.身份證:0002. 姓 2:0003. 甲齡:0004. 栓別:0005. 聯系也話:00°6. 住址:0007. 密碼:000輸入修改項:2 匕 姓g:000 請輸入要改成的內容2L9I3.4.6.病人

20、信息:身份證號:000 姓 :222 年: 000 性別:000人殺世占:000住It: 000Slzooo是否修改完成(足諸按0)輸入:33. 年齡:000潔輸入哼改成的內容;333病人信息: L身份證號:000 ?炸名,223. 年嫌:3334. 徃別:000入麻聚電話:0006. 住址:0007+密碼:000是否修改完成(是請按0)輸入:圖修改多項病人信息 C:User swepkstog eth rD. X電廣醫矚求入系統¥21. 預約2. 査看預約信息3. 刪除更約佶息4 創建病人信息3. 倍改病人信息6. 査看構人倍息了保存倉息退出 輸入:6 輸入身份證號:000病人信息

21、:P份LEtJ :0002. 姓名;2223. 年齡;3334. 性別:0003.聯系電話:000 8住址;0007. VF,;iH:000諳按住意鍵繼續.*圖查看病人信息4.2病人預約信息管理測試 C :User sweek s t og e th? rD.-電廣醫矚求入系統V2-1. 預約2. 査看預約信息3. 刪除預約傭息4 創建病人信息5.修改構人信息&甘看病人信恵7 保存詹息退出輸入:1預約:人人人人:0 0 0 0 04 #I和樸斗忖一 內外兒骨皮一 i «- s h 0 12 3 4輸入預約科莖用號;o 請輸入身份證號:000 両約戒功諳按住意鍵繼續.,圖421

22、預約科室也可查輸入病人查看預約信息如圖 422所示C:User wppk stoge thrD -電子醫囑錄入系統V2-1.預約2查看預約信息3刪除預約信息4創建禍人信息5. 修改病人信息 匸查看応人f?息7. 保存信息退出輸入吃査看預約信息:人人人人:0一1 o o o f, 內外兒骨皮詢入屈人身侍證號:000:0到到到科到 科到科找科找科找狀找 內找外未兒無甘衣皮衣圖422查看預約信息還可刪除預約如圖423所示 1 C :U ser Awrrk t og r thT rD. 電于醫囑錄入系統¥2-1. 預約2. 預約仁息3刪除預約信息4創建病人信息ag. a# is人仁息7保存信

23、息退出輸入:3輸入病人身份證號:0000.內科 找到:0001. 拆科 未找到:0002. 兒科 未找到:0003. 骨科 耒莪到:0004. 皮膚科 耒 lO'kooo選擇刪隱預約科窒諭入:0找到:000找到:000刪除成功圖424刪除預約信息4.3文件信息存取測試初始化會打開”病人信息.txt”與”科室信息.txt”讀取信息如果文件不存在則會創建,程序退出選擇” 7呆存信息并退出”,鏈表中的信息會保存到文件中5總結與展望5.1 全文總結本文使用C語言實現了電子醫囑管理系統,實現了課程設計的功能要求, 能夠正確運行。從實用和性能方面可以進一步加以改善。(1)完整性??赏ㄟ^增加科室表等

24、方法,對輸入信息進行完整性檢查。如 果輸入科室名稱與表不符,則該信息視為無效。對年齡設置上下限,以保證數據 的合理性。(2)安全性。在系統中可以增加多種角色的登陸方式, 提高系統的安全性。 對于不同角色的用戶,給與不同的操作權限,從而保證系統部數據的安全性。 在 登陸時可加入口令認證,確保用戶身份的正確性。(3)性能優化。對部數據建立索引表,對索引表進行二分查找,提高查詢 速度。對鏈表可以采用雙向十字鏈表結構存儲,提高信息處理的速度。心得體會剛開始看到題目時一頭霧水,不知該從何處下手,因為平時只做過一些輸 入輸出的普通小程序,根本沒有界面的概念。于是我就想如果先運行一下書上提 供的樣例程序,腦

25、概也就有了一些概念和想法。可是把書上提供的幾個代碼拿來 一運行編譯error就有幾十行,面對那上千行的代碼,我就不知該怎么下手了。 后來實在沒辦法,首先拿起那本C語言實驗與課程設計看了三天,大概懂了一 些函數的用法,就開始將書上的代碼一段一段的輸入進去跑一跑,慢慢的就大概懂了怎么來實現那些界面。首先把那個任務說明看了幾遍,就將程序主要分成五大塊容:(1)文件處理 功能:首先得有將數據信息保存的功能,這就得用到老師講的“文件”那章的知 識,我又拿起課本看了幾遍。其次還得有數據備份的功能,以備在重大失誤后能 找回一些數據,將損失降低。有了備份,還得有恢復備份數據地功能。最后必須 有安全退出系統的功

26、能。(2)數據處理功能:首先得讓系統能讀入操作者輸入的 數據并將數據存儲在文件中。然后如果操作者 輸入數據有誤那還得有對數據修 改,部分數據刪除,以及數據添加的功能。(3)查詢功能:第一可以按照科室編 號來查詢,第二還可以按照病人號查詢,第三還可以按照科室編號,病人及就診 日期進行多條件統計查詢。(4)統計信息功能:最重要的要有日就診人數統計功 能,其次還可以有病人就診歷史,就診病人年齡分類的統計。(5)系統幫助功能: 第一得告訴操作者本系統的用途,然后告訴怎樣操作使用系統以及一些基本的操 作快捷功能。最后,當屏幕上顯示的信息過多時還得有清理屏幕的功能,以方便用戶觀看數據。接下來就是一一實現那

27、些功能。通過運用課堂上講過的數組,指針,文件等 知識,編寫了鏈表的創建,之后是將鏈表的容寫入到文件中保存, 并將文件中寫 入的容再次逐條讀取出來,顯示在屏幕上。這個主體寫完了,接下來就開始寫科 室、病人等信息的查詢函數,這個就比較容易點。還有就是我想寫一個能將同一 病人在不同科室下的所有就診記錄全部顯示的功能, 方便病人查詢自己就診歷史。最后就是調試程序了。這個應該是整個課程設計中最為復雜和難搞的部分。 首先是整個系統,光是函數就有幾十個,而且經常是一個函數中又調用著若干其它函數,這樣調試起來就比較困難,因為就算一個函數里,一點小小的錯誤就會 引起連鎖反應導致其它函數都出錯, 而且有些錯誤時隱

28、性的,就是可能在這個函 數中運行沒問題,可在哪個函數中運行起來又有大問題。 所以調試也是最耗時間 和精力的一個環節,有時候我為了測試一個函數的功能是否穩定, 我得將程序跑 很多次,一遍又一遍的運行,看看有沒有一些不足的地方,有沒有一些隱藏的問 題,然后又得靜下心來仔細分析問題原因所在并慢慢地糾正并再次調試運行,直到滿意為止。差不多有連續十來天我有空就將程序跑一跑, 看看有沒有大問題潛 藏在其中,一經發現立刻將它修正。這十來天我也體會調試員真還得過硬的基礎 知識,能敏銳覺察出代碼中的錯誤,而且還得有足夠的精力和耐力。盡管程序系統算是完成了,但是開始寫報告時才發現原來課程設計才剛 完成了一半而已。

29、還得將當初的構思、想法、到實現、再到最后的調試,這其中 每個環節的步驟用文字的形式記錄下來, 好讓其他人也能了解你當初的想法。 其 實有些想法有你自己特異的思維方式, 也許口頭說說還行,真得寫下來,并讓別 人也看懂,并不那么容易。在本次C課程設計構思創作過程中,得到了老師的大力幫助和支持,在此 表示衷心的感謝,感謝提供無私的幫助和支持的老師們!感謝他們默默無聞的 奉獻!另外也要感謝熱心的同學們,他們在我的設計過程中給與了很多的建議 與幫助。參考文獻1 曹計昌,盧萍,開.C語言程序設計,:科學,20082 引.C程序設計基礎課程設計,:大學,2007:清華大學。3 黃明,梁旭,萬洪莉.C語言課程

30、設計,:電子工業,20064 Brain W Kernigha n, Denn is M Ritchie. THE C PROGRAMMING LANGUAGE. PRENTICE HALL,2011.ISO/IEC 的 C語言標準。ISO/IEC 9899 : 20116 秦友淑,曹化工。C語言程序設計教程(第二版)。7 田淑清.二級教程-C語言程序設計(2008年版)8 振安.C語言程序設計M.機械工業,2007#i nclude<stdio.h>#i nclude<malloc.h>#i nclude<stdlib.h>#i nclude<str

31、i ng.h>#i nclude<time.h>#i nclude<Win dows.h>#defi neN 5 /*科室數量*/time_t_Curtime = (time_t )0;structtm* _RetTime = NULL;/*功能:定義patient 結構體*輸入:*返回:*/typedefstructpatie ntinfchar char char char char char char structnumber 19;PassWord 5;name 10;age 10;sex 10;tel 20;addr 20;patientinf* nex

32、t ; patinf/*功能:定義patient 結構體*輸入:*返回:*/ typedef struct pat charnumber 19;chartime 20;structhead * _n extstructpat * next ; patient/*功能:定義class_ 結構體*輸入:*返回:*/typedefstructhead char* n ame;structhead* nextstructpat* n ext_ class_/*定義一個大頭*/class_ *ALL=( struct head *) malloc (sizeof (struct head);/*定義病人

33、信息鏈表頭*/pat inf* Pat In fHEAD =( pat inf*) malloc (sizeof ( pati nf );char strhead2 5="頭"char STR N 12="科","外科","兒科","骨科","皮膚科"char Strfilepat 17="病人信息.txt"char Strfileappointed 17="預約信息.txt"/*功能:從文件中讀入預約信息*輸入:*返回:*/voidA

34、ppo in tListI nfSave();/*功能:從文件中讀入預約信息*輸入:*返回:*/void Appo in ted In fToListRead();/*功能:顯示各個科室預約人數信息*輸入:*返回:*/void Appoi ntNumDisplay ();/*功能:從文件中讀入科室信息*輸入:*返回:*/void ClassMessageDisplay (intnumber );/*功能:遍歷鏈表所有元素輸入:鏈表頭結點,匹配元素返回:結點位置(結點地址)*/struct pat * sec on dlist, char *nu m);/*功能:向結點尾部添加結點輸入:葉子結點

35、返回:尾結點*/struct pat * leafList no deAdd/* 功能:向結點尾部添加結點輸入:葉子結點返回:尾結點*/ leafListLocatedSearch(struct pat* sec on dlist, char *nu m);/*功能:遍歷鏈表所有元素*輸入:鏈表頭結點,匹配元素返回:結點位置的上一個位置*/pat(patient* previous );struct pat * leafListLocatedSearchPrevious(structstruct pat* previous );leafList no dea ndNumAdd(char * N

36、um patient/*功能:遍歷鏈表所有元素*輸入:鏈表頭結點*返回:結點個數*/charleafList nu mSearch( struct pat * sec on dlist);/*功能:找到樹枝尾部*輸入:樹枝頭部結點*返回:尾部位置(尾部地址) */(struct pat * head );struct pat * leafListTailSearch/*功能:遍歷鏈表所有元素輸入:鏈表頭結點(struct head *mainlist,char *str)返回:副鏈表頭*/struct pat * mainListLocatedSearch (char *str );/*功能:

37、遍歷鏈表所有元素* 輸入:鏈表頭結點(struct head *mainlist)*返回:結點位置(結點地址) */(struct head * mainlist);char mai nList nu mSearch/*功能:從病人鏈表中遍歷病人信息輸入:返回:*/(char * str );void PatAppoi ntedSearch/*功能:改變病人信息輸入:病人號返回:*/voidPatInfChange( char * number );/*功能:向病人信息鏈表末端添加元素* 輸入:pat in f *tail*返回:*/voidPat In fList nodeAdd( pati

38、 nf *tail );/*功能:找到病人信息鏈表末端*輸入:*返回:末端結點地址*/patinf* PatInfListTailSearch();/*功能:遍歷病人信息鏈表找到病人結點的前一結點*輸入:病人號返回:病人節點的前一結點位置*/(char * number );pat inf * Patl nfNodePreviousSearch/*功能:遍歷病人信息鏈表找到病人結點*輸入:病人號*返回:病人節點位置*/(char *nu mber);patinf* PatInfNodeSearch/*功能:從文件中讀入病人信息*輸入:*返回:*/voidPatI nfToListRead();

39、/*功能:保存病人信息到鏈表*輸入:*返回:*/voidPatListI nfSave();/*功能:創建主干鏈表與葉子連接結點*輸入:主干結點個數*返回:主干頭結點*/struct head * TreeListCreat (int n);/*功能:創建主干鏈表與葉子連接結點*輸入:主干結點個數*返回:主干頭結點*/struct head * TreeListCreat (int n)int i ; struct structhead *h,* p1 ,* p2 ; pat * pat N;h=NULL;for (i =0; i <n; i +)p1 =( struct head *)

40、 malloc ( sizeof ( struct head );/*動態分配存空間,并數據轉換為(struct head) 類型*/pat i =( struct pat *) malloc ( sizeof (struct pat );/*為結點分配空間*/p1-> name=*( STR+i);strcpy_s ( pat i -> number , 5, strhead2 );pat i -> next =NULL; /*尾結點的后繼指針為NULL(空)*/pat i -> _next =h; /*尾結點的后繼指針為h*/p1 -> next_ =pat

41、i ; /*返回鏈表的頭指針*/if (h=NULL)/*指定鏈表的頭指針*/ h = p1;p2=p1 ;elsep2 -> next =p1 ;p2=p1 ;p2-> next =NULL; /*尾結點的后繼指針為NULL(空)*/return h; /*返回鏈表的頭指針*/*功能:向結點尾部添加結點*輸入:葉子結點*返回:尾結點*/struct pat * leafList no deAdd( patie nt * previous )struct pat * tail ;tail =( struct pat *) malloc (sizeof (struct pat );/

42、*動態分配存空間,并數據轉換為(struct pat) 類型*/printf ("請輸入號:");scanf_s ("%s" , tail -> number , 19);if ( PatInfNodeSearch(tail -> number )= 0)return 0 ;tail -> next =NULL; /*尾結點的后繼指針為 NULL(空)*/tail -> _next =ALL; /* 尾部結點 _next 指向 ALL大頭 */if (previous-> nextNULL)previous-> nex

43、t=tail;return tail ; / previous )struct pat * tail ;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)

44、previous -> next =tail ; /*head 指向創建的結點 */return tail ; /*返回尾結點*/ /*返回尾結點*/*功能:向結點尾部添加結點*輸入:葉子結點*返回:尾結點*/struct pat * leafListnodeandNumAdd( char * Num patient功能:遍歷鏈表所有元素輸入:鏈表頭結點(struct head *mainlist)返回:結點位置(結點地址)*/ char main List nu mSearch ( struct head * main list ) char a=0;/*創建臨時變量*/struct

45、head * ma in Temp =( struct head*) malloc (sizeof (struct head );mai nTemp =mai nlist;printf ("n");while (1)a+;printf ("%d.%s:n", a, mainTemp -> name);if ( ma in Temp - >n ext =NULL) printf("n"); return a;main Temp =ma in Temp -> n ext ; /*功能:遍歷鏈表所有元素輸入:鏈表頭結點(s

46、truct head *mainlist,char *str)返回:副鏈表頭*/struct patmain ListLocatedSearch(char * str )int a=0;/* sec on dlist, char *num)/*創建臨時變量*/struct pat * Previous ,* secTemp =( struct pat創建臨時變量*/struct head *p=( struct head *) malloc (sizeof (struct head );p=ALL->next ;while (1)if ( strcmp ( p-> name, st

47、r )= 0)return p-> next_ ; _a+;if ( p-> next = NULL)break ;p = p-> next ;return 0 ; /*功能:遍歷鏈表所有元素*輸入:鏈表頭結點,匹配元素返回:結點位置(結點地址)*/patpat *) malloc (sizeof (structstruct pat * leafListLocatedSearch(structwhile (1)if ( strcmp ( secTemp -> number , num)= 0) printf ("找到:%sn" , num);retu

48、rn secTemp ; /?if ( secTemp -> next = NULL)break ;secTemp =secTemp -> next ;printf ("未找到:%sn" , num);return 0 ;/ malloc (sizeof (struct pat );secTemp =sec on dlist;while (1)if ( strcmp ( secTemp -> number , num)= 0)*功能:遍歷鏈表所有元素*輸入:鏈表頭結點,匹配元素返回:結點位置的上一個位置*/patstruct pat * leafListL

49、ocatedSearchPrevious(structprintf ("找到:%sn" , num);return Previous ;if ( secTemp -> next = NULL) break ;Previous =secTemp ;secTemp =secTemp -> next ;printf ("未找到:%sn" , num);return 0 ;/*功能:遍歷鏈表所有元素*輸入:鏈表頭結點返回:結點個數*/char leafList nu mSearch( struct pat * sec on dlist)char a=

50、0;(struct/*創建臨時變量*/struct pat * secTemp =( struct pat *) malloc ( sizeof pat );secTemp =sec on dlist;while (1)if ( strcmp ( secTemp -> number , strhead2 )= 0)else a+;if (secTemp->next =NULL) break ;secTemp =secTemp -> next ; return a; /*功能:找到樹枝尾部輸入:樹枝頭部結點返回:尾部位置(尾部地址)*/head )struct pat * le

51、afListTailSearch(struct patstruct pat * Temp; /* 創建臨時變量 */Temp=head ;while (Temp-> next != NULL)Temp=Temp-> next ;return Temp;/*功能:顯示各個科室預約人數信息*輸入:*返回:*/()patie nt* p;class_*cp;cp =ALL-> next ;printf("void Appoi ntNumDisplay for (int i =0; i +) printf ("%d.%s:" p=cp -> nex

52、t_ ;-n"i , cp -> name););printf("%d 人n" , leafListnumSearch(p);if ( cp -> next =NULL) break ;cp=cp ->next ;);printf ("n"/*功能:從病人鏈表中遍歷病人信息*輸入:*返回:*/voidPatAppointedSearch( char * str )patient* p;class_ * cp;cp =ALL->next ;while (1)printf("%sn" , cp->n

53、ame);p=leafListLocatedSearch(cp -> next,str );if ( cp -> next =NULL) break ;cp=cp ->next ;/*功能:找到病人信息鏈表末端*輸入:*返回:末端結點地址*/patinf * PatlnfListTailSearch()pati nf );pat inf* p=( pat inf*) malloc ( sizeof (p=PatI nfHEAD ;while (1)if ( p-> next =NULL) break ;elsep = p-> next ;return p; /*功能:向病人信息鏈表末端添加元素* 輸入:pat in f *tailprintf("輸入病人信息:n");printf("號:");sca nf s("%s",p-> number , 19);printf(" :");sca nf_s("%s",p->

溫馨提示

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

評論

0/150

提交評論