




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、 課程設(shè)計(jì)報告 題目 電子醫(yī)囑錄入系統(tǒng) 系 別 年 級 專 業(yè) 班 級 學(xué) 號 學(xué)生姓名 指導(dǎo)教師 職 稱 講師 設(shè)計(jì)時間 目錄1 緒論11.1課題背景和意義11.2主要研究內(nèi)容12 系統(tǒng)功能設(shè)計(jì)22.1初始化模塊22.2預(yù)約模塊22.3查看預(yù)約信息模塊22.4刪除預(yù)約信息模塊32.5創(chuàng)建病人信息模塊32.6修改病人信息模塊32.7查看病人信息模塊32.8保存信息并退出模塊33 系統(tǒng)詳細(xì)設(shè)計(jì)43.1數(shù)據(jù)表的存儲組織43.1.1病人信息數(shù)據(jù)結(jié)構(gòu)43.1.2科室信息數(shù)據(jù)結(jié)構(gòu)53.1.3病人預(yù)約信息數(shù)據(jù)結(jié)構(gòu)53.1.4三種結(jié)構(gòu)的關(guān)聯(lián)63.2 主要算法設(shè)計(jì)73.2.1初始化模塊83.2.2預(yù)約模塊93
2、.2.3查看預(yù)約模塊103.2.4刪除預(yù)約模塊113.2.5創(chuàng)建病人信息模塊123.2.6修改病人信息模塊133.2.7查看病人信息模塊143.2.8保存信息并退出模塊154系統(tǒng)測試164.1病人信息管理測試174.2病人預(yù)約信息管理測試214.3文件信息存取測試245 總結(jié)與展望245.1 全文總結(jié)24心 得 體 會25參 考 文 獻(xiàn)261 緒論1.1課題背景和意義隨著社會的信息化,各個行業(yè)的管理與運(yùn)營都逐漸開始使用電子系統(tǒng)來取代傳統(tǒng)的管理模式。使用電子醫(yī)囑管理可以幫助醫(yī)院更為便捷的管理醫(yī)囑,通過計(jì)算機(jī)技術(shù)給醫(yī)院的管理人員和就診病人在病歷創(chuàng)建、預(yù)約查詢以及記錄統(tǒng)計(jì)等方面帶來便利,為醫(yī)院在管理
3、醫(yī)囑方面提供一種更好的方式。1.2主要研究內(nèi)容本系統(tǒng)使用C語言編寫了電子醫(yī)囑管理系統(tǒng),主要實(shí)現(xiàn)醫(yī)院中醫(yī)生醫(yī)囑的電子管理。通過此系統(tǒng)可對醫(yī)囑進(jìn)行管理和維護(hù)操作,實(shí)現(xiàn)電子醫(yī)囑管理的一般功能。主要內(nèi)容包括:(1) 電子醫(yī)囑查詢。提供按照科室信息、病人信息查詢;(2) 電子醫(yī)囑創(chuàng)建。提供病人信息、預(yù)約記錄的錄入功能;(3) 電子醫(yī)囑編輯。提供對系統(tǒng)數(shù)據(jù)的修改、刪除等功能;(4) 電子醫(yī)囑維護(hù)。提供對系統(tǒng)數(shù)據(jù)的保存、讀取等功能。系統(tǒng)采用菜單方式作為人機(jī)交互界面,為用戶提供便捷的使用方式。用戶根據(jù)菜單提示,選擇所需要的服務(wù),系統(tǒng)自動做出相應(yīng)的響應(yīng)。醫(yī)囑信息包含病人姓名、身份證號、科室名稱、就診科室等??剖?/p>
4、信息、病人信息的讀取和保存要求有一定的格式規(guī)范,錄入的信息以文件的形式保存并可以對其進(jìn)行瀏覽、查詢、修改、刪除等基本操作。整個程序基于鏈表實(shí)現(xiàn),一個就診信息的更改不影響其他的就診記錄。2 系統(tǒng)功能設(shè)計(jì)電子醫(yī)囑管理系統(tǒng)是由五大功能模塊組成:預(yù)約模塊、查看預(yù)約信息模塊、刪除預(yù)約信息模塊、創(chuàng)建病人信息模塊、修改病人信息模塊、查看病人信息模塊、保存信息并退出模塊以及初始化模塊如圖2.1所示。 圖2.1電子醫(yī)囑管理系統(tǒng)的功能模塊2.1初始化模塊創(chuàng)建鏈表并將文件中的格式化信息讀取到內(nèi)存鏈表中。2.2預(yù)約模塊預(yù)約模塊的操作流程包括選擇預(yù)約科室,輸入預(yù)約人員身份證號,若存在病人則預(yù)約,若不存在則返回主界面。2
5、.3查看預(yù)約信息模塊查看預(yù)約信息模塊的操作流程包括輸入預(yù)約人員身份證號碼得到相關(guān)預(yù)約科室信息,若存在病人則預(yù)約,若不存在則返回主界面。2.4刪除預(yù)約信息模塊刪除預(yù)約信息模塊的操作流程包括輸入預(yù)約人員身份證號碼得到相關(guān)預(yù)約科室信息,選擇刪除預(yù)約科室刪除成功返回主界面。2.5創(chuàng)建病人信息模塊創(chuàng)建病人信息模塊的操作流程依次輸入身份證號碼、姓名、年齡、性別、聯(lián)系電話、住址、密碼并回車添加病人信息。2.6修改病人信息模塊修改病人信息模塊的操作流程輸入病人身份證號顯示病人信息輸入修改項(xiàng)并輸入修改的內(nèi)容,若退出則按0返回主界面。2.7查看病人信息模塊查看病人信息模塊的操作流程輸入病人身份證號碼顯示病人信息按
6、回車返回主界面。2.8保存信息并退出模塊保存信息并退出模塊的操作流程直接退出程序?qū)㈡湵碇械男畔⒈4娴轿募? 系統(tǒng)詳細(xì)設(shè)計(jì)3.1數(shù)據(jù)表的存儲組織根據(jù)2.3節(jié)中設(shè)計(jì),系統(tǒng)建立病人基本信息和病人預(yù)約信息表。在系統(tǒng)實(shí)現(xiàn)中,采用內(nèi)存鏈表和磁盤文件二級的數(shù)據(jù)存儲結(jié)構(gòu)來存放這些數(shù)據(jù)信息。系統(tǒng)將文件信息轉(zhuǎn)換為內(nèi)存鏈表,再將鏈表轉(zhuǎn)換成磁盤文件形式。系統(tǒng)首先將磁盤文件數(shù)據(jù)轉(zhuǎn)入內(nèi)存鏈表,在通過對鏈表數(shù)據(jù)的處理,對用戶請求作出響應(yīng)。 本系統(tǒng)以病人信息文件以及預(yù)約信息二份文本文件作為表單對應(yīng)的磁盤存儲,在內(nèi)存中以結(jié)構(gòu)變量的方式分別存放基本信息,并以鏈表的形式將所有的數(shù)據(jù)組織起來。 3.1.1病人信息數(shù)據(jù)結(jié)構(gòu)病人信息在
7、內(nèi)存中采用結(jié)構(gòu)類型進(jìn)行描述。病人結(jié)構(gòu)成員包括:病人姓名、身份證號、性別、年齡、聯(lián)系方式、家庭住址、密碼。病人姓名、身份證號、性別、年齡、聯(lián)系方式、家庭住址、密碼均以字符數(shù)組的形式存儲。在病人結(jié)構(gòu)中有一個個結(jié)構(gòu)指針,指向下一個病人結(jié)構(gòu),通過這個指針可以組成病人鏈表。該結(jié)構(gòu)變量實(shí)現(xiàn)病人信息表在計(jì)算機(jī)上的存儲,其結(jié)構(gòu)聲明如圖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病人結(jié)構(gòu)3.1.2科室信息數(shù)據(jù)結(jié)構(gòu)科室信息在內(nèi)存中采用結(jié)構(gòu)類型進(jìn)行描述??剖医Y(jié)構(gòu)成員包括:科室名稱??剖颐Q以指針數(shù)組的形式存儲。在科室結(jié)構(gòu)中有二個結(jié)構(gòu)指針,一個指向下一個科室結(jié)構(gòu),通過這個指針可以組成科室信息鏈表,一個指向下一個病人結(jié)構(gòu),通過這個指針可以組成病人鏈表。該結(jié)構(gòu)變量實(shí)現(xiàn)病人信息表在計(jì)算機(jī)上的存儲,其結(jié)構(gòu)聲明如圖3.2所示。typedef struct headchar *name;struct head *next;struct pat *next_;class_;圖3.2科室結(jié)構(gòu)3.1.3病人預(yù)約信息數(shù)據(jù)結(jié)構(gòu)病人預(yù)約信息在內(nèi)存中采用結(jié)構(gòu)類型進(jìn)行描述。預(yù)約
9、結(jié)構(gòu)成員包括:病人身份證號。病人身份證號以字符數(shù)組的形式存儲。在預(yù)約結(jié)構(gòu)中有一個結(jié)構(gòu)指針,指向下一個預(yù)約結(jié)構(gòu)通過該指針可以將某一科室的所有預(yù)約病人鏈接起來,組成就診鏈表。該結(jié)構(gòu)變量實(shí)現(xiàn)病人預(yù)約信息表在計(jì)算機(jī)上的存儲,其結(jié)構(gòu)聲明如圖3.3所示。typedef struct patchar number19;struct pat *next;patient;圖3.3預(yù)約結(jié)構(gòu)3.1.4三種結(jié)構(gòu)的關(guān)聯(lián)本系統(tǒng)數(shù)據(jù)之間以指針相結(jié)合的方式來鏈接系統(tǒng)中各類對象。系統(tǒng)中,科室結(jié)構(gòu)中的病人身份證號以及科室編號的值將科室和預(yù)約病人關(guān)聯(lián)起來。在系統(tǒng)實(shí)現(xiàn)中為了提高查詢效率,查詢模塊實(shí)現(xiàn)中采用了值的相等對記錄進(jìn)行定位。科
10、室、預(yù)約病人之間存在著層次關(guān)系,為了在內(nèi)存中較好的體現(xiàn)這種層次關(guān)系,本系統(tǒng)采用二重鏈表的方式組織信息之間的關(guān)聯(lián)關(guān)系。具體結(jié)構(gòu)如圖3.4所示??剖倚畔⒋娣旁诙劓湵淼闹麈溄Y(jié)點(diǎn)上,每個主鏈結(jié)點(diǎn)除了保存下一個結(jié)點(diǎn)的地址,還保存該科室的預(yù)約病人的基本信息鏈表頭結(jié)點(diǎn)地址;預(yù)約病人信息存放在二重鏈表中相應(yīng)科室的預(yù)約病人鏈結(jié)點(diǎn)上,每個結(jié)點(diǎn)保存下一個預(yù)約病人基本信息結(jié)點(diǎn)的地址。圖3.4二重鏈表存儲結(jié)構(gòu)示意圖病人信息存放在單鏈表中,具體結(jié)構(gòu)如圖3.5所示。病人信息結(jié)點(diǎn)除了保存病人信息還保存下一個結(jié)點(diǎn)的地址。NULL病人信息PatInfHEAD圖3.5單鏈表存儲結(jié)構(gòu)示意圖3.2 主要算法設(shè)計(jì) 本系統(tǒng)在算法設(shè)計(jì)上采
11、用“自頂向下,逐步求精”的設(shè)計(jì)方法。由全局到局部、由整體到細(xì)節(jié)、由抽象到具體,逐步將系統(tǒng)的問題分解為相對簡單的小規(guī)模問題。本系統(tǒng)依照使用功能分成幾個子模塊:預(yù)約模塊、查看預(yù)約信息模塊、刪除預(yù)約信息模塊、創(chuàng)建病人信息模塊、修改病人信息模塊、查看病人信息模塊、保存信息并退出模塊以及初始化模塊。 系統(tǒng)的總控模塊的算法流程如圖3.1所示。系統(tǒng)運(yùn)行文本菜單初始化界面加載文件中存儲的鏈表數(shù)據(jù)系統(tǒng)功能模塊的選擇和運(yùn)行保存數(shù)據(jù)鏈表關(guān)閉系統(tǒng)結(jié)束圖3.1主程序運(yùn)行流程圖3.2.1初始化模塊初始化模塊負(fù)責(zé)將文本文件轉(zhuǎn)換成內(nèi)存鏈表。在第2章的概要設(shè)計(jì)中,系統(tǒng)數(shù)據(jù)分為二種基礎(chǔ)數(shù)據(jù),這二種系統(tǒng)數(shù)據(jù)要求儲存到數(shù)據(jù)文件中。為
12、便于處理每個文件,本系統(tǒng)將三種數(shù)據(jù)分別存放在二個文本文件中。為了實(shí)現(xiàn)上述功能編輯了三個子函數(shù)與一個創(chuàng)建單鏈表語句 : struct head *TreeListCreat(int n);void PatInfToListRead();void AppointedInfToListRead();PatInfHEAD-next=NULL; 初始化的過程包括將預(yù)約信息文件、病人信息文件從數(shù)據(jù)文件中讀取并存放到所創(chuàng)建的鏈表中。算法流程如圖3.2所示。圖3.2初始化模塊運(yùn)行流程圖3.2.2預(yù)約模塊預(yù)約模塊中包括找到對應(yīng)預(yù)約科室尾部結(jié)點(diǎn)并添加結(jié)點(diǎn)其中使用到四個函數(shù):struct pat * mainLis
13、tLocatedSearch(char *str);struct pat* leafListTailSearch(struct pat* head);patinf *PatInfNodeSearch(char *number);struct pat* leafListnodeAdd(patient *previous);過程包括找到所預(yù)約科室頭結(jié)點(diǎn)然后根據(jù)頭結(jié)點(diǎn)找到添加鏈表的尾結(jié)點(diǎn)輸入信息在添加結(jié)點(diǎn)。算法流程如圖3.3所示。圖3.3預(yù)約模塊運(yùn)行流程圖3.2.3查看預(yù)約模塊查看預(yù)約模塊中包括找到病人預(yù)約二重鏈表中所有的預(yù)約信息使用到兩個子函數(shù):void AppointNumDisplay();v
14、oid PatAppointedSearch(char *str);過程包括遍歷分科室遍歷二級鏈表然后顯示預(yù)約信息。算法流程如圖3.4所示。圖3.4查看預(yù)約模塊運(yùn)行流程圖3.2.4刪除預(yù)約模塊刪除預(yù)約模塊中包括找到結(jié)點(diǎn)位置,和找到結(jié)點(diǎn)前一個位置用到四個子函數(shù):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);過程包括先找到要刪除結(jié)點(diǎn)的前一個結(jié)點(diǎn)位置和刪除結(jié)點(diǎn)位置然后刪除結(jié)點(diǎn)然后將前一個結(jié)點(diǎn)的位置指向下一個結(jié)點(diǎn)。算法流程如圖3.5所示。圖3.5刪除預(yù)約模塊運(yùn)行流程圖3.2.5創(chuàng)建病人信息模塊創(chuàng)建病人信息模塊中包括找到病人信息鏈表的尾結(jié)點(diǎn)然后添加結(jié)點(diǎn)使用到兩個子函數(shù):patinf * PatInfListTailSearch()void PatInfListnodeAdd(patinf *tail)過程包括找到病人結(jié)點(diǎn)尾部
16、然后在病人結(jié)點(diǎn)尾部添加一個結(jié)點(diǎn)。算法流程如圖3.6所示。圖3.6創(chuàng)建病人信息模塊運(yùn)行流程圖3.2.6修改病人信息模塊修改病人信息模塊中使用到一個子函數(shù):patinf *PatInfNodeSearch(char *number);過程包括找到結(jié)點(diǎn)然后修改內(nèi)容。算法流程如圖3.7所示。圖3.7修改病人信息模塊運(yùn)行流程圖3.2.7查看病人信息模塊查看病人信息模塊中使用到一個子函數(shù):patinf *PatInfNodeSearch(char *number);過程包括找到結(jié)點(diǎn)然后顯示內(nèi)容。算法流程如圖3.8所示。圖3.8查看病人信息模塊運(yùn)行流程圖3.2.8保存信息并退出模塊保存信息并退出模塊中使用到
17、兩個子函數(shù):void PatListInfSave();void AppointListInfSave();過程包括保存格式化的病人信息到文件和保存格式化的預(yù)約信息到文件然后退出程序。算法流程如圖3.9所示。圖3.9保存信息并退出模塊運(yùn)行流程圖4系統(tǒng)測試 軟件測試即使用人工或者自動手段來運(yùn)行或測試某個系統(tǒng)的過程,其目的在于檢驗(yàn)它是否滿足規(guī)定的需求或弄清預(yù)期結(jié)果與實(shí)際結(jié)果之間的差別。隨著軟件測試技術(shù)的不斷發(fā)展,測試方法也越來越多樣化,針對性更強(qiáng);選擇合適的軟件測試方法可以讓測試事半功倍。常用的軟件測試方法有:黑盒測試、白盒測試、靜態(tài)測試、動態(tài)測試、自動化測試、功能測試、集成測試、場景測試、系統(tǒng)測
18、試等。本系統(tǒng)的測試針對系統(tǒng)的功能進(jìn)行檢查,以功能進(jìn)行分類,對幾個模塊進(jìn)行測試。4.1病人信息管理測試運(yùn)行程序首先創(chuàng)建病人信息如圖4.1.1所示圖4.1.1創(chuàng)建病人信息然后可選擇修改病人信息如圖4.1.2所示圖4.1.2修改病人信息可修改多項(xiàng)病人信息如圖4.1.3所示 圖4.1.3修改多項(xiàng)病人信息也可查看病人信息如圖4.1.4所示圖4.1.4查看病人信息4.2病人預(yù)約信息管理測試創(chuàng)建病人信息后便可開始預(yù)約如圖4.2.1所示圖4.2.1預(yù)約科室 也可查輸入病人身份證查看預(yù)約信息如圖4.2.2所示圖4.2.2查看預(yù)約信息還可刪除預(yù)約如圖4.2.3所示圖4.2.4刪除預(yù)約信息4.3文件信息存取測試初始
19、化會打開”病人信息.txt”與”科室信息.txt”讀取信息如果文件不存在則會創(chuàng)建,程序退出選擇”7.保存信息并退出”,鏈表中的信息會保存到文件中5 總結(jié)與展望5.1 全文總結(jié)本文使用C語言實(shí)現(xiàn)了電子醫(yī)囑管理系統(tǒng),實(shí)現(xiàn)了課程設(shè)計(jì)的功能要求,能夠正確運(yùn)行。從實(shí)用和性能方面可以進(jìn)一步加以改善。(1)完整性。可通過增加科室名單表等方法,對輸入信息進(jìn)行完整性檢查。如果輸入科室名稱與名單表不符,則該信息視為無效。對年齡設(shè)置上下限,以保證數(shù)據(jù)的合理性。(2)安全性。在系統(tǒng)中可以增加多種角色的登陸方式,提高系統(tǒng)的安全性。對于不同角色的用戶,給與不同的操作權(quán)限,從而保證系統(tǒng)內(nèi)部數(shù)據(jù)的安全性。在登陸時可加入口令認(rèn)
20、證,確保用戶身份的正確性。(3)性能優(yōu)化。對內(nèi)部數(shù)據(jù)建立索引表,對索引表進(jìn)行二分查找,提高查詢速度。對鏈表可以采用雙向十字鏈表結(jié)構(gòu)存儲,提高信息處理的速度。心 得 體 會 剛開始看到題目時一頭霧水,不知該從何處下手,因?yàn)槠綍r只做過一些輸入輸出的普通小程序,根本沒有界面的概念。于是我就想如果先運(yùn)行一下書上提供的樣例程序,腦中大概也就有了一些概念和想法??墒前褧咸峁┑膸讉€代碼拿來一運(yùn)行編譯error就有幾十行,面對那上千行的代碼,我就不知該怎么下手了。后來實(shí)在沒辦法,首先拿起那本C語言實(shí)驗(yàn)與課程設(shè)計(jì)看了三天,大概懂了一些函數(shù)的用法,就開始將書上的代碼一段一段的輸入進(jìn)去跑一跑,慢慢的就大概懂了怎么
21、來實(shí)現(xiàn)那些界面。首先把那個任務(wù)說明看了幾遍,就將程序主要分成五大塊內(nèi)容:(1)文件處理功能:首先得有將數(shù)據(jù)信息保存的功能,這就得用到老師講的“文件”那章的知識,我又拿起課本看了幾遍。其次還得有數(shù)據(jù)備份的功能,以備在重大失誤后能找回一些數(shù)據(jù),將損失降低。有了備份,還得有恢復(fù)備份數(shù)據(jù)地功能。最后必須有安全退出系統(tǒng)的功能。(2)數(shù)據(jù)處理功能:首先得讓系統(tǒng)能讀入操作者輸入的數(shù)據(jù)并將數(shù)據(jù)存儲在文件中。然后如果操作者 輸入數(shù)據(jù)有誤那還得有對數(shù)據(jù)修改,部分?jǐn)?shù)據(jù)刪除,以及數(shù)據(jù)添加的功能。(3)查詢功能:第一可以按照科室編號來查詢,第二還可以按照病人身份證號查詢,第三還可以按照科室編號,病人身份證及就診日期進(jìn)行
22、多條件統(tǒng)計(jì)查詢。(4)統(tǒng)計(jì)信息功能:最重要的要有日就診人數(shù)統(tǒng)計(jì)功能,其次還可以有病人就診歷史,就診病人年齡分類的統(tǒng)計(jì)。(5)系統(tǒng)幫助功能:第一得告訴操作者本系統(tǒng)的用途,然后告訴怎樣操作使用系統(tǒng)以及一些基本的操作快捷功能。最后,當(dāng)屏幕上顯示的信息過多時還得有清理屏幕的功能,以方便用戶觀看數(shù)據(jù)。接下來就是一一實(shí)現(xiàn)那些功能。通過運(yùn)用課堂上講過的數(shù)組,指針,文件等知識,編寫了鏈表的創(chuàng)建,之后是將鏈表的內(nèi)容寫入到文件中保存,并將文件中寫入的內(nèi)容再次逐條讀取出來,顯示在屏幕上。這個主體寫完了,接下來就開始寫科室、病人等信息的查詢函數(shù),這個就比較容易點(diǎn)。還有就是我想寫一個能將同一病人在不同科室下的所有就診記
23、錄全部顯示的功能,方便病人查詢自己就診歷史。最后就是調(diào)試程序了。這個應(yīng)該是整個課程設(shè)計(jì)中最為復(fù)雜和難搞的部分。首先是整個系統(tǒng),光是函數(shù)就有幾十個,而且經(jīng)常是一個函數(shù)中又調(diào)用著若干其它函數(shù),這樣調(diào)試起來就比較困難,因?yàn)榫退阋粋€函數(shù)里,一點(diǎn)小小的錯誤就會引起連鎖反應(yīng)導(dǎo)致其它函數(shù)都出錯,而且有些錯誤時隱性的,就是可能在這個函數(shù)中運(yùn)行沒問題,可在哪個函數(shù)中運(yùn)行起來又有大問題。所以調(diào)試也是最耗時間和精力的一個環(huán)節(jié),有時候我為了測試一個函數(shù)的功能是否穩(wěn)定,我得將程序跑很多次,一遍又一遍的運(yùn)行,看看有沒有一些不足的地方,有沒有一些隱藏的問題,然后又得靜下心來仔細(xì)分析問題原因所在并慢慢地糾正并再次調(diào)試運(yùn)行,直
24、到滿意為止。差不多有連續(xù)十來天我有空就將程序跑一跑,看看有沒有大問題潛藏在其中,一經(jīng)發(fā)現(xiàn)立刻將它修正。這十來天我也體會調(diào)試員真還得過硬的基礎(chǔ)知識,能敏銳覺察出代碼中的錯誤,而且還得有足夠的精力和耐力。 盡管程序系統(tǒng)算是完成了,但是開始寫報告時才發(fā)現(xiàn)原來課程設(shè)計(jì)才剛完成了一半而已。還得將當(dāng)初的構(gòu)思、想法、到實(shí)現(xiàn)、再到最后的調(diào)試,這其中每個環(huán)節(jié)的步驟用文字的形式記錄下來,好讓其他人也能了解你當(dāng)初的想法。其實(shí)有些想法有你自己特異的思維方式,也許口頭說說還行,真得寫下來,并讓別人也看懂,并不那么容易。在本次C課程設(shè)計(jì)構(gòu)思創(chuàng)作過程中,得到了老師的大力幫助和支持,在此表示衷心的感謝,感謝提供無私的幫助和支
25、持的老師們!感謝他們默默無聞的奉獻(xiàn)! 另外也要感謝熱心的同學(xué)們,他們在我的設(shè)計(jì)過程中給與了很多的建議與幫助。參 考 文 獻(xiàn)1曹計(jì)昌,盧萍,李開. C語言程序設(shè)計(jì),北京:科學(xué)出版社,20082張引. C程序設(shè)計(jì)基礎(chǔ)課程設(shè)計(jì), 杭州: 浙江大學(xué)出版社,20073黃明,梁旭,萬洪莉. C語言課程設(shè)計(jì),北京: 電子工業(yè)出版社,20064Brain W Kernighan, Dennis M Ritchie. THE C PROGRAMMING LANGUAGE. 北京:清華大學(xué)出版社。PRENTICE HALL,2011.5ISO/IEC的C語言標(biāo)準(zhǔn)。ISO/IEC 9899:20116秦友淑,曹化工
26、。C語言程序設(shè)計(jì)教程(第二版)。7田淑清.二級教程-C語言程序設(shè)計(jì)(2008 年版)8劉振安.C語言程序設(shè)計(jì)M.機(jī)械工業(yè)出版社,2007#include #include #include #include #include #include #define N 5/*科室數(shù)量*/time_t _Curtime = (time_t)0;struct tm* _RetTime = NULL;/*功能:定義patient結(jié)構(gòu)體*輸入:*返回:*/typedef struct patientinfchar number19;char PassWord5;char name10;char age10;
27、char sex10;char tel20;char addr20;struct patientinf *next;patinf;/*功能:定義patient結(jié)構(gòu)體*輸入:*返回:*/typedef struct patchar number19;char time20;struct head *_next;struct pat *next;patient;/*功能:定義class_結(jié)構(gòu)體*輸入:*返回:*/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=內(nèi)科,外科,兒科,骨科,皮膚科;char Strfilepat17=病人信息.txt;char Strfileappointed17=預(yù)約信息.txt;/*功能:從文件中讀入預(yù)約信息*輸入:*返回:*/void AppointListInfSave();/*功能:從文件中讀入預(yù)約信息*輸入:*返回:*/void Appoin
29、tedInfToListRead();/*功能:顯示各個科室預(yù)約人數(shù)信息*輸入:*返回:*/void AppointNumDisplay();/*功能:從文件中讀入科室信息*輸入:*返回:*/void ClassMessageDisplay(int number);/*功能:遍歷鏈表所有元素*輸入:鏈表頭結(jié)點(diǎn),匹配元素*返回:結(jié)點(diǎn)位置(結(jié)點(diǎn)地址)*/struct pat * leafListLocatedSearch(struct pat *secondlist,char *num);/*功能:遍歷鏈表所有元素*輸入:鏈表頭結(jié)點(diǎn),匹配元素*返回:結(jié)點(diǎn)位置的上一個位置*/struct pat *
30、 leafListLocatedSearchPrevious(struct pat *secondlist,char *num);/*功能:向結(jié)點(diǎn)尾部添加結(jié)點(diǎn)*輸入:葉子結(jié)點(diǎn)*返回:尾結(jié)點(diǎn)*/struct pat* leafListnodeAdd(patient *previous);/*功能:向結(jié)點(diǎn)尾部添加結(jié)點(diǎn)*輸入:葉子結(jié)點(diǎn)*返回:尾結(jié)點(diǎn)*/struct pat* leafListnodeandNumAdd(char *Num,patient *previous);/*功能:遍歷鏈表所有元素*輸入:鏈表頭結(jié)點(diǎn)*返回:結(jié)點(diǎn)個數(shù)*/char leafListnumSearch(struct p
31、at *secondlist);/*功能:找到樹枝尾部*輸入:樹枝頭部結(jié)點(diǎn)*返回:尾部位置(尾部地址)*/struct pat* leafListTailSearch(struct pat* head);/*功能:遍歷鏈表所有元素*輸入:鏈表頭結(jié)點(diǎn)(struct head *mainlist,char *str)*返回:副鏈表頭*/struct pat * mainListLocatedSearch(char *str);/*功能:遍歷鏈表所有元素*輸入:鏈表頭結(jié)點(diǎn)(struct head *mainlist)*返回:結(jié)點(diǎn)位置(結(jié)點(diǎn)地址)*/char mainListnumSearch(str
32、uct head *mainlist);/*功能:從病人鏈表中遍歷病人信息*輸入:*返回:*/void PatAppointedSearch(char *str);/*功能:改變病人信息*輸入:病人身份證號*返回:*/void PatInfChange(char *number);/*功能:向病人信息鏈表末端添加元素*輸入:patinf *tail*返回:*/void PatInfListnodeAdd(patinf *tail);/*功能:找到病人信息鏈表末端*輸入:*返回:末端結(jié)點(diǎn)地址*/patinf * PatInfListTailSearch();/*功能:遍歷病人信息鏈表找到病人結(jié)點(diǎn)
33、的前一結(jié)點(diǎn)*輸入:病人身份證號*返回:病人節(jié)點(diǎn)的前一結(jié)點(diǎn)位置*/patinf *PatInfNodePreviousSearch(char *number);/*功能:遍歷病人信息鏈表找到病人結(jié)點(diǎn)*輸入:病人身份證號*返回:病人節(jié)點(diǎn)位置*/patinf *PatInfNodeSearch(char *number);/*功能:從文件中讀入病人信息*輸入:*返回:*/void PatInfToListRead();/*功能:保存病人信息到鏈表*輸入:*返回:*/void PatListInfSave();/*功能:創(chuàng)建主干鏈表與葉子連接結(jié)點(diǎn)*輸入:主干結(jié)點(diǎn)個數(shù)*返回:主干頭結(jié)點(diǎn)*/struct
34、head *TreeListCreat(int n);/*功能:創(chuàng)建主干鏈表與葉子連接結(jié)點(diǎn)*輸入:主干結(jié)點(diǎn)個數(shù)*返回:主干頭結(jié)點(diǎ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;/*尾結(jié)點(diǎn)的后繼指針為NULL(空)*/pati-_next=h;/*尾結(jié)點(diǎn)的后繼指針為h*/p1-next_=pati;/*返回鏈表的頭指針*/if(h
35、=NULL)/*指定鏈表的頭指針*/h=p1;p2=p1;elsep2-next=p1;p2=p1;p2-next=NULL;/*尾結(jié)點(diǎn)的后繼指針為NULL(空)*/return h;/*返回鏈表的頭指針*/*功能:向結(jié)點(diǎn)尾部添加結(jié)點(diǎn)*輸入:葉子結(jié)點(diǎn)*返回:尾結(jié)點(diǎn)*/struct pat* leafListnodeAdd(patient *previous)struct pat *tail;tail=(struct pat *)malloc(sizeof(struct pat);/*動態(tài)分配內(nèi)存空間,并數(shù)據(jù)轉(zhuǎn)換為(struct pat)類型*/printf(請輸入身份證號:);scanf_s(
36、%s,tail-number,19);if(PatInfNodeSearch(tail-number)=0)return 0;tail-next=NULL;/*尾結(jié)點(diǎn)的后繼指針為NULL(空)*/tail-_next=ALL;/*尾部結(jié)點(diǎn)_next指向ALL大頭*/if(previous-next=NULL)previous-next=tail;return tail;/*返回尾結(jié)點(diǎn)*/*功能:向結(jié)點(diǎn)尾部添加結(jié)點(diǎn)*輸入:葉子結(jié)點(diǎn)*返回:尾結(jié)點(diǎn)*/struct pat* leafListnodeandNumAdd(char *Num,patient *previous)struct pat *t
37、ail;tail=(struct pat *)malloc(sizeof(struct pat);/*動態(tài)分配內(nèi)存空間,并數(shù)據(jù)轉(zhuǎn)換為(struct pat)類型*/strncpy_s(tail-number,Num,19);/tail-next=NULL;/*尾結(jié)點(diǎn)的后繼指針為NULL(空)*/tail-_next=ALL;/*尾部結(jié)點(diǎn)_next指向ALL大頭*/if(previous-next=NULL)previous-next=tail;/*head指向創(chuàng)建的結(jié)點(diǎn)*/return tail;/*返回尾結(jié)點(diǎn)*/*功能:遍歷鏈表所有元素*輸入:鏈表頭結(jié)點(diǎn)(struct head *mainl
38、ist)*返回:結(jié)點(diǎn)位置(結(jié)點(diǎn)地址)*/char mainListnumSearch(struct head *mainlist)char a=0;/*創(chuàng)建臨時變量*/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、入:鏈表頭結(jié)點(diǎn)(struct head *mainlist,char *str)*返回:副鏈表頭*/struct pat * mainListLocatedSearch(char *str)int a=0;/*創(chuàng)建臨時變量*/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;/*功能:遍歷鏈表所有元素*輸入:鏈表頭結(jié)點(diǎn),匹配元素*返回
40、:結(jié)點(diǎn)位置(結(jié)點(diǎn)地址)*/struct pat * leafListLocatedSearch(struct pat *secondlist,char *num)/*創(chuàng)建臨時變量*/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;/*功能:遍歷鏈表所有元素*輸入:鏈表頭結(jié)點(diǎn),匹配元素*返回:結(jié)點(diǎn)位置的上一個位置*/struct pat * leafListLocatedSearchPrevious(struct pat *secondlist,char *num)/*創(chuàng)建臨時變量*/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;/*功能:遍歷鏈表所有元素*輸入:鏈表頭結(jié)點(diǎn)*返回:結(jié)點(diǎn)個數(shù)*/char leafListnumSearch(struct pat *secondlist)char a=0;/*創(chuàng)建臨時變量*/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;/*功能:找到樹枝尾部*輸入:樹枝頭部結(jié)點(diǎn)*返回:尾部位置(尾部地址)*/struct pat* leafListTailSearch(struct pat* head)struct pat* Temp;/*創(chuàng)建臨時變量*/Temp=head;while(Temp-next!=NULL)Temp=Temp-next;return Temp;/*功能:顯示各個科室預(yù)約人數(shù)信息*輸入:*返回:*/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;/*功能:找到病人信息鏈表末端*輸入:*返回:末端結(jié)點(diǎn)地址*/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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 公司老年黨出游活動方案
- 公司秋季踏青活動方案
- 公司景區(qū)旅游活動方案
- 公司管理沙龍策劃方案
- 2025年信息系統(tǒng)與信息管理考試題及答案
- 2025年維護(hù)工程師職稱資格考試試題及答案
- 2025年現(xiàn)代信息技術(shù)在教育中的應(yīng)用考試試題及答案
- 2025年新聞傳播專業(yè)基礎(chǔ)知識考試試卷及答案
- 2025年物理實(shí)驗(yàn)技能考試試題及答案
- 2025年健身與體育專業(yè)知識與實(shí)務(wù)考試試題及答案
- 產(chǎn)品授權(quán)代理合同的續(xù)簽與變更
- DB11-T 2010-2022 救災(zāi)物資儲備管理規(guī)范
- 注水泵工(中級)技能鑒定理論考試題及答案
- 2023春國開精益生產(chǎn)終考題庫及答案
- 4.1中國特色社會主義進(jìn)入新時代 課件高中政治統(tǒng)編版必修一中國特色社會主義-3
- 安徽省秸稈資源潛力和綜合利用現(xiàn)狀分析
- 保潔服務(wù) 投標(biāo)方案(技術(shù)標(biāo))
- 2024年國企采購商品房合同模板
- 湖南省長沙2024年七年級下冊生物期末試卷附答案
- 新材料產(chǎn)業(yè)研發(fā)與產(chǎn)業(yè)化應(yīng)用實(shí)施方案案
- 2024年小學(xué)四年級下冊數(shù)學(xué)期末測試卷附完整答案【典優(yōu)】
評論
0/150
提交評論