電子醫(yī)囑錄入系統(tǒng)_第1頁
電子醫(yī)囑錄入系統(tǒng)_第2頁
電子醫(yī)囑錄入系統(tǒng)_第3頁
電子醫(yī)囑錄入系統(tǒng)_第4頁
電子醫(yī)囑錄入系統(tǒng)_第5頁
已閱讀5頁,還剩34頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

-.z課程設(shè)計(jì)報(bào)告題目電子醫(yī)囑錄入系統(tǒng)系別年級(jí)專業(yè)班級(jí)**學(xué)生**指導(dǎo)教師職稱講師設(shè)計(jì)時(shí)間目錄1緒論31.1課題背景和意義31.2主要研究?jī)?nèi)容32系統(tǒng)功能設(shè)計(jì)32.1初始化模塊32.2預(yù)約模塊32.3查看預(yù)約信息模塊32.4刪除預(yù)約信息模塊32.5創(chuàng)立病人信息模塊32.6修改病人信息模塊32.7查看病人信息模塊32.8保存信息并退出模塊33系統(tǒng)詳細(xì)設(shè)計(jì)33.1數(shù)據(jù)表的存儲(chǔ)組織3病人信息數(shù)據(jù)構(gòu)造3科室信息數(shù)據(jù)構(gòu)造3病人預(yù)約信息數(shù)據(jù)構(gòu)造3三種構(gòu)造的關(guān)聯(lián)33.2主要算法設(shè)計(jì)3初始化模塊3預(yù)約模塊3查看預(yù)約模塊3刪除預(yù)約模塊3創(chuàng)立病人信息模塊3修改病人信息模塊3查看病人信息模塊3保存信息并退出模塊34系統(tǒng)測(cè)試34.1病人信息管理測(cè)試34.2病人預(yù)約信息管理測(cè)試34.3文件信息存取測(cè)試35總結(jié)與展望35.1全文總結(jié)3心得體會(huì)3參考文獻(xiàn)3-.z1緒論1.1課題背景和意義隨著社會(huì)的信息化,各個(gè)行業(yè)的管理與運(yùn)營(yíng)都逐漸開場(chǎng)使用電子系統(tǒng)來取代傳統(tǒng)的管理模式。使用電子醫(yī)囑管理可以幫助醫(yī)院更為便捷的管理醫(yī)囑,通過計(jì)算機(jī)技術(shù)給醫(yī)院的管理人員和就診病人在病歷創(chuàng)立、預(yù)約查詢以及記錄統(tǒng)計(jì)等方面帶來便利,為醫(yī)院在管理醫(yī)囑方面提供一種更好的方式。1.2主要研究?jī)?nèi)容本系統(tǒng)使用C語言編寫了電子醫(yī)囑管理系統(tǒng),主要實(shí)現(xiàn)醫(yī)院中醫(yī)生醫(yī)囑的電子管理。通過此系統(tǒng)可對(duì)醫(yī)囑進(jìn)展管理和維護(hù)操作,實(shí)現(xiàn)電子醫(yī)囑管理的一般功能。主要內(nèi)容包括:電子醫(yī)囑查詢。提供按照科室信息、病人信息查詢;電子醫(yī)囑創(chuàng)立。提供病人信息、預(yù)約記錄的錄入功能;電子醫(yī)囑編輯。提供對(duì)系統(tǒng)數(shù)據(jù)的修改、刪除等功能;電子醫(yī)囑維護(hù)。提供對(duì)系統(tǒng)數(shù)據(jù)的保存、讀取等功能。系統(tǒng)采用菜單方式作為人機(jī)交互界面,為用戶提供便捷的使用方式。用戶根據(jù)菜單提示,選擇所需要的效勞,系統(tǒng)自動(dòng)做出相應(yīng)的響應(yīng)。醫(yī)囑信息包含病人**、**號(hào)、科室名稱、就診科室等??剖倚畔?、病人信息的讀取和保存要求有一定的格式規(guī)*,錄入的信息以文件的形式保存并可以對(duì)其進(jìn)展瀏覽、查詢、修改、刪除等根本操作。整個(gè)程序基于鏈表實(shí)現(xiàn),一個(gè)就診信息的更改不影響其他的就診記錄。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ù)約人員**號(hào),假設(shè)存在病人則預(yù)約,假設(shè)不存在則返回主界面。2.3查看預(yù)約信息模塊查看預(yù)約信息模塊的操作流程包括輸入預(yù)約人員**得到相關(guān)預(yù)約科室信息,假設(shè)存在病人則預(yù)約,假設(shè)不存在則返回主界面。2.4刪除預(yù)約信息模塊刪除預(yù)約信息模塊的操作流程包括輸入預(yù)約人員**得到相關(guān)預(yù)約科室信息,選擇刪除預(yù)約科室刪除成功返回主界面。2.5創(chuàng)立病人信息模塊創(chuàng)立病人信息模塊的操作流程依次輸入**、**、年齡、性別、聯(lián)系、住址、密碼并回車添加病人信息。2.6修改病人信息模塊修改病人信息模塊的操作流程輸入病人**號(hào)顯示病人信息輸入修改項(xiàng)并輸入修改的內(nèi)容,假設(shè)退出則按0返回主界面。2.7查看病人信息模塊查看病人信息模塊的操作流程輸入病人**顯示病人信息按回車返回主界面。2.8保存信息并退出模塊保存信息并退出模塊的操作流程直接退出程序?qū)㈡湵碇械男畔⒈4娴轿募?系統(tǒng)詳細(xì)設(shè)計(jì)3.1數(shù)據(jù)表的存儲(chǔ)組織根據(jù)2.3節(jié)中設(shè)計(jì),系統(tǒng)建立病人根本信息和病人預(yù)約信息表。在系統(tǒng)實(shí)現(xiàn)中,采用內(nèi)存鏈表和磁盤文件二級(jí)的數(shù)據(jù)存儲(chǔ)構(gòu)造來存放這些數(shù)據(jù)信息。系統(tǒng)將文件信息轉(zhuǎn)換為內(nèi)存鏈表,再將鏈表轉(zhuǎn)換成磁盤文件形式。系統(tǒng)首先將磁盤文件數(shù)據(jù)轉(zhuǎn)入內(nèi)存鏈表,在通過對(duì)鏈表數(shù)據(jù)的處理,對(duì)用戶請(qǐng)求作出響應(yīng)。本系統(tǒng)以病人信息文件以及預(yù)約信息二份文本文件作為表單對(duì)應(yīng)的磁盤存儲(chǔ),在內(nèi)存中以構(gòu)造變量的方式分別存放根本信息,并以鏈表的形式將所有的數(shù)據(jù)組織起來。病人信息數(shù)據(jù)構(gòu)造病人信息在內(nèi)存中采用構(gòu)造類型進(jìn)展描述。病人構(gòu)造成員包括:病人**、**號(hào)、性別、年齡、聯(lián)系方式、家庭住址、密碼。病人**、**號(hào)、性別、年齡、聯(lián)系方式、家庭住址、密碼均以字符數(shù)組的形式存儲(chǔ)。在病人構(gòu)造中有一個(gè)個(gè)構(gòu)造指針,指向下一個(gè)病人構(gòu)造,通過這個(gè)指針可以組成病人鏈表。該構(gòu)造變量實(shí)現(xiàn)病人信息表在計(jì)算機(jī)上的存儲(chǔ),其構(gòu)造聲明如圖3.1所示。typedefstructtypedefstructpatientinf{charname[10]; charnumber[19]; charse*[10]; charage[10]; chartel[20]; charaddr[20];charPassWord[5]; structpatientinf*ne*t;}patinf;圖3.1病人構(gòu)造科室信息數(shù)據(jù)構(gòu)造科室信息在內(nèi)存中采用構(gòu)造類型進(jìn)展描述。科室構(gòu)造成員包括:科室名稱??剖颐Q以指針數(shù)組的形式存儲(chǔ)。在科室構(gòu)造中有二個(gè)構(gòu)造指針,一個(gè)指向下一個(gè)科室構(gòu)造,通過這個(gè)指針可以組成科室信息鏈表,一個(gè)指向下一個(gè)病人構(gòu)造,通過這個(gè)指針可以組成病人鏈表。該構(gòu)造變量實(shí)現(xiàn)病人信息表在計(jì)算機(jī)上的存儲(chǔ),其構(gòu)造聲明如圖3.2所示。typedefstructtypedefstructhead{ char*name; structhead*ne*t; structpat*ne*t_;}class_;圖3.2科室構(gòu)造病人預(yù)約信息數(shù)據(jù)構(gòu)造病人預(yù)約信息在內(nèi)存中采用構(gòu)造類型進(jìn)展描述。預(yù)約構(gòu)造成員包括:病人**號(hào)。病人**號(hào)以字符數(shù)組的形式存儲(chǔ)。在預(yù)約構(gòu)造中有一個(gè)構(gòu)造指針,指向下一個(gè)預(yù)約構(gòu)造通過該指針可以將*一科室的所有預(yù)約病人起來,組成就診鏈表。該構(gòu)造變量實(shí)現(xiàn)病人預(yù)約信息表在計(jì)算機(jī)上的存儲(chǔ),其構(gòu)造聲明如圖3.3所示。typedefstructtypedefstructpat{ charnumber[19]; structpat*ne*t;}patient;圖3.3預(yù)約構(gòu)造三種構(gòu)造的關(guān)聯(lián)本系統(tǒng)數(shù)據(jù)之間以指針相結(jié)合的方式來系統(tǒng)中各類對(duì)象。系統(tǒng)中,科室構(gòu)造中的病人**號(hào)以及科室編號(hào)的值將科室和預(yù)約病人關(guān)聯(lián)起來。在系統(tǒng)實(shí)現(xiàn)中為了提高查詢效率,查詢模塊實(shí)現(xiàn)中采用了值的相等對(duì)記錄進(jìn)展定位??剖?、預(yù)約病人之間存在著層次關(guān)系,為了在內(nèi)存中較好的表達(dá)這種層次關(guān)系,本系統(tǒng)采用二重鏈表的方式組織信息之間的關(guān)聯(lián)關(guān)系。具體構(gòu)造如圖3.4所示??剖倚畔⒋娣旁诙劓湵淼闹麈溄Y(jié)點(diǎn)上,每個(gè)主鏈結(jié)點(diǎn)除了保存下一個(gè)結(jié)點(diǎn)的地址,還保存該科室的預(yù)約病人的根本信息鏈表頭結(jié)點(diǎn)地址;預(yù)約病人信息存放在二重鏈表中相應(yīng)科室的預(yù)約病人鏈結(jié)點(diǎn)上,每個(gè)結(jié)點(diǎn)保存下一個(gè)預(yù)約病人根本信息結(jié)點(diǎn)的地址。圖3.4二重鏈表存儲(chǔ)構(gòu)造示意圖病人信息存放在單鏈表中,具體構(gòu)造如圖3.5所示。病人信息結(jié)點(diǎn)除了保存病人信息還保存下一個(gè)結(jié)點(diǎn)的地址。NULL病人信息PatInfHEADNULL病人信息PatInfHEAD圖3.5單鏈表存儲(chǔ)構(gòu)造示意圖3.2主要算法設(shè)計(jì)本系統(tǒng)在算法設(shè)計(jì)上采用“自頂向下,逐步求精〞的設(shè)計(jì)方法。由全局到局部、由整體到細(xì)節(jié)、由抽象到具體,逐步將系統(tǒng)的問題分解為相對(duì)簡(jiǎn)單的小規(guī)模問題。本系統(tǒng)依照使用功能分成幾個(gè)子模塊:預(yù)約模塊、查看預(yù)約信息模塊、刪除預(yù)約信息模塊、創(chuàng)立病人信息模塊、修改病人信息模塊、查看病人信息模塊、保存信息并退出模塊以及初始化模塊。系統(tǒng)的總控模塊的算法流程如圖3.1所示。系統(tǒng)運(yùn)行系統(tǒng)運(yùn)行文本菜單初始化界面加載文件中存儲(chǔ)的鏈表數(shù)據(jù)系統(tǒng)功能模塊的選擇和運(yùn)行保存數(shù)據(jù)鏈表關(guān)閉系統(tǒng)完畢圖3.1主程序運(yùn)行流程圖初始化模塊初始化模塊負(fù)責(zé)將文本文件轉(zhuǎn)換成內(nèi)存鏈表。在第2章的概要設(shè)計(jì)中,系統(tǒng)數(shù)據(jù)分為二種根底數(shù)據(jù),這二種系統(tǒng)數(shù)據(jù)要求儲(chǔ)存到數(shù)據(jù)文件中。為便于處理每個(gè)文件,本系統(tǒng)將三種數(shù)據(jù)分別存放在二個(gè)文本文件中。為了實(shí)現(xiàn)上述功能編輯了三個(gè)子函數(shù)與一個(gè)創(chuàng)立單鏈表語句:structhead*TreeListCreat(intn); voidPatInfToListRead(); voidAppointedInfToListRead();PatInfHEAD->ne*t=NULL;初始化的過程包括將預(yù)約信息文件、病人信息文件從數(shù)據(jù)文件中讀取并存放到所創(chuàng)立的鏈表中。算法流程如圖3.2所示。圖3.2初始化模塊運(yùn)行流程圖預(yù)約模塊預(yù)約模塊中包括找到對(duì)應(yīng)預(yù)約科室尾部結(jié)點(diǎn)并添加結(jié)點(diǎn)其中使用到四個(gè)函數(shù):structpat*mainListLocatedSearch(char*str);structpat*leafListTailSearch(structpat*head);patinf*PatInfNodeSearch(char*number);structpat*leafListnodeAdd(patient*previous);過程包括找到所預(yù)約科室頭結(jié)點(diǎn)然后根據(jù)頭結(jié)點(diǎn)找到添加鏈表的尾結(jié)點(diǎn)輸入信息在添加結(jié)點(diǎn)。算法流程如圖3.3所示。圖3.3預(yù)約模塊運(yùn)行流程圖查看預(yù)約模塊查看預(yù)約模塊中包括找到病人預(yù)約二重鏈表中所有的預(yù)約信息使用到兩個(gè)子函數(shù):voidAppointNumDisplay();voidPatAppointedSearch(char*str);過程包括遍歷分科室遍歷二級(jí)鏈表然后顯示預(yù)約信息。算法流程如圖3.4所示。圖3.4查看預(yù)約模塊運(yùn)行流程圖刪除預(yù)約模塊刪除預(yù)約模塊中包括找到結(jié)點(diǎn)位置,和找到結(jié)點(diǎn)前一個(gè)位置用到四個(gè)子函數(shù):structstructpat*leafListLocatedSearch(structpat*secondlist,char*num);structpat*mainListLocatedSearch(char*str);structpat*leafListLocatedSearchPrevious(structpat*secondlist,char*num);structpat*leafListLocatedSearch(structpat*secondlist,char*num);過程包括先找到要?jiǎng)h除結(jié)點(diǎn)的前一個(gè)結(jié)點(diǎn)位置和刪除結(jié)點(diǎn)位置然后刪除結(jié)點(diǎn)然后將前一個(gè)結(jié)點(diǎn)的位置指向下一個(gè)結(jié)點(diǎn)。算法流程如圖3.5所示。圖3.5刪除預(yù)約模塊運(yùn)行流程圖創(chuàng)立病人信息模塊創(chuàng)立病人信息模塊中包括找到病人信息鏈表的尾結(jié)點(diǎn)然后添加結(jié)點(diǎn)使用到兩個(gè)子函數(shù):patinf*PatInfListTailSearch()voidPatInfListnodeAdd(patinf*tail)過程包括找到病人結(jié)點(diǎn)尾部然后在病人結(jié)點(diǎn)尾部添加一個(gè)結(jié)點(diǎn)。算法流程如圖3.6所示。圖3.6創(chuàng)立病人信息模塊運(yùn)行流程圖修改病人信息模塊修改病人信息模塊中使用到一個(gè)子函數(shù):patinf*PatInfNodeSearch(char*number);過程包括找到結(jié)點(diǎn)然后修改內(nèi)容。算法流程如圖3.7所示。圖3.7修改病人信息模塊運(yùn)行流程圖查看病人信息模塊查看病人信息模塊中使用到一個(gè)子函數(shù):patinf*PatInfNodeSearch(char*number);過程包括找到結(jié)點(diǎn)然后顯示內(nèi)容。算法流程如圖3.8所示。圖3.8查看病人信息模塊運(yùn)行流程圖保存信息并退出模塊保存信息并退出模塊中使用到兩個(gè)子函數(shù):voidPatListInfSave();voidAppointListInfSave();過程包括保存格式化的病人信息到文件和保存格式化的預(yù)約信息到文件然后退出程序。算法流程如圖3.9所示。圖3.9保存信息并退出模塊運(yùn)行流程圖4系統(tǒng)測(cè)試軟件測(cè)試即使用人工或者自動(dòng)手段來運(yùn)行或測(cè)試*個(gè)系統(tǒng)的過程,其目的在于檢驗(yàn)它是否滿足規(guī)定的需求或弄清預(yù)期結(jié)果與實(shí)際結(jié)果之間的差異。隨著軟件測(cè)試技術(shù)的不斷開展,測(cè)試方法也越來越多樣化,針對(duì)性更強(qiáng);選擇適宜的軟件測(cè)試方法可以讓測(cè)試事半功倍。常用的軟件測(cè)試方法有:黑盒測(cè)試、白盒測(cè)試、靜態(tài)測(cè)試、動(dòng)態(tài)測(cè)試、自動(dòng)化測(cè)試、功能測(cè)試、集成測(cè)試、場(chǎng)景測(cè)試、系統(tǒng)測(cè)試等。本系統(tǒng)的測(cè)試針對(duì)系統(tǒng)的功能進(jìn)展檢查,以功能進(jìn)展分類,對(duì)幾個(gè)模塊進(jìn)展測(cè)試。4.1病人信息管理測(cè)試運(yùn)行程序首先創(chuàng)立病人信息如圖所示圖創(chuàng)立病人信息然后可選擇修改病人信息如圖所示圖修改病人信息可修改多項(xiàng)病人信息如圖所示圖修改多項(xiàng)病人信息也可查看病人信息如圖所示圖查看病人信息4.2病人預(yù)約信息管理測(cè)試創(chuàng)立病人信息后便可開場(chǎng)預(yù)約如圖所示圖預(yù)約科室也可查輸入病人**查看預(yù)約信息如圖所示圖查看預(yù)約信息還可刪除預(yù)約如圖所示圖刪除預(yù)約信息4.3文件信息存取測(cè)試初始化會(huì)翻開〞病人信息.t*t〞與〞科室信息.t*t〞讀取信息如果文件不存在則會(huì)創(chuàng)立,程序退出選擇〞7.保存信息并退出〞,鏈表中的信息會(huì)保存到文件中5總結(jié)與展望5.1全文總結(jié)本文使用C語言實(shí)現(xiàn)了?電子醫(yī)囑管理系統(tǒng)?,實(shí)現(xiàn)了課程設(shè)計(jì)的功能要求,能夠正確運(yùn)行。從實(shí)用和性能方面可以進(jìn)一步加以改善?!?〕完整性??赏ㄟ^增加科室表等方法,對(duì)輸入信息進(jìn)展完整性檢查。如果輸入科室名稱與表不符,則該信息視為無效。對(duì)年齡設(shè)置上下限,以保證數(shù)據(jù)的合理性?!?〕平安性。在系統(tǒng)中可以增加多種角色的登陸方式,提高系統(tǒng)的平安性。對(duì)于不同角色的用戶,給與不同的操作權(quán)限,從而保證系統(tǒng)內(nèi)部數(shù)據(jù)的平安性。在登陸時(shí)可參加口令認(rèn)證,確保用戶身份的正確性。〔3〕性能優(yōu)化。對(duì)內(nèi)部數(shù)據(jù)建立索引表,對(duì)索引表進(jìn)展二分查找,提高查詢速度。對(duì)鏈表可以采用雙向十字鏈表構(gòu)造存儲(chǔ),提高信息處理的速度。心得體會(huì)剛開場(chǎng)看到題目時(shí)一頭霧水,不知該從何處下手,,因?yàn)槠綍r(shí)只做過一些輸入輸出的普通小程序,根本沒有界面的概念。于是我就想如果先運(yùn)行一下書上提供的樣例程序,腦中大概也就有了一些概念和想法??墒前褧咸峁┑膸讉€(gè)代碼拿來一運(yùn)行編譯error就有幾十行,面對(duì)那上千行的代碼,我就不知該怎么下手了。后來實(shí)在沒方法,首先拿起那本?C語言實(shí)驗(yàn)與課程設(shè)計(jì)?看了三天,大概懂了一些函數(shù)的用法,就開場(chǎng)將書上的代碼一段一段的輸入進(jìn)去跑一跑,慢慢的就大概懂了怎么來實(shí)現(xiàn)那些界面。首先把那個(gè)任務(wù)說明看了幾遍,就將程序主要分成五大塊內(nèi)容:〔1〕文件處理功能:首先得有將數(shù)據(jù)信息保存的功能,這就得用到教師講的“文件〞那章的知識(shí),我又拿起課本看了幾遍。其次還得有數(shù)據(jù)備份的功能,以備在重大失誤后能找回一些數(shù)據(jù),將損失降低。有了備份,還得有恢復(fù)備份數(shù)據(jù)地功能。最后必須有平安退出系統(tǒng)的功能?!?〕數(shù)據(jù)處理功能:首先得讓系統(tǒng)能讀入操作者輸入的數(shù)據(jù)并將數(shù)據(jù)存儲(chǔ)在文件中。然后如果操作者輸入數(shù)據(jù)有誤那還得有對(duì)數(shù)據(jù)修改,局部數(shù)據(jù)刪除,以及數(shù)據(jù)添加的功能?!?〕查詢功能:第一可以按照科室編號(hào)來查詢,第二還可以按照病人**號(hào)查詢,第三還可以按照科室編號(hào),病人**及就診日期進(jìn)展多條件統(tǒng)計(jì)查詢。〔4〕統(tǒng)計(jì)信息功能:最重要的要有日就診人數(shù)統(tǒng)計(jì)功能,其次還可以有病人就診歷史,就診病人年齡分類的統(tǒng)計(jì)?!?〕系統(tǒng)幫助功能:第一得告訴操作者本系統(tǒng)的用途,然后告訴怎樣操作使用系統(tǒng)以及一些根本的操作快捷功能。最后,當(dāng)屏幕上顯示的信息過多時(shí)還得有清理屏幕的功能,以方便用戶觀看數(shù)據(jù)。接下來就是一一實(shí)現(xiàn)那些功能。通過運(yùn)用課堂上講過的數(shù)組,指針,文件等知識(shí),編寫了鏈表的創(chuàng)立,之后是將鏈表的內(nèi)容寫入到文件中保存,并將文件中寫入的內(nèi)容再次逐條讀取出來,顯示在屏幕上。這個(gè)主體寫完了,接下來就開場(chǎng)寫科室、病人等信息的查詢函數(shù),這個(gè)就比較容易點(diǎn)。還有就是我想寫一個(gè)能將同一病人在不同科室下的所有就診記錄全部顯示的功能,方便病人查詢自己就診歷史。最后就是調(diào)試程序了。這個(gè)應(yīng)該是整個(gè)課程設(shè)計(jì)中最為復(fù)雜和難搞的局部。首先是整個(gè)系統(tǒng),光是函數(shù)就有幾十個(gè),而且經(jīng)常是一個(gè)函數(shù)中又調(diào)用著假設(shè)干其它函數(shù),這樣調(diào)試起來就比較困難,因?yàn)榫退阋粋€(gè)函數(shù)里,一點(diǎn)小小的錯(cuò)誤就會(huì)引起連鎖反響導(dǎo)致其它函數(shù)都出錯(cuò),而且有些錯(cuò)誤時(shí)隱性的,就是可能在這個(gè)函數(shù)中運(yùn)行沒問題,可在哪個(gè)函數(shù)中運(yùn)行起來又有大問題。所以調(diào)試也是最耗時(shí)間和精力的一個(gè)環(huán)節(jié),有時(shí)候我為了測(cè)試一個(gè)函數(shù)的功能是否穩(wěn)定,我得將程序跑很屢次,一遍又一遍的運(yùn)行,看看有沒有一些缺乏的地方,有沒有一些隱藏的問題,然后又得靜下心來仔細(xì)分析問題原因所在并慢慢地糾正并再次調(diào)試運(yùn)行,直到滿意為止。差不多有連續(xù)十來天我有空就將程序跑一跑,看看有沒有大問題潛藏在其中,一經(jīng)發(fā)現(xiàn)立刻將它修正。這十來天我也體會(huì)調(diào)試員真還得過硬的根底知識(shí),能敏銳覺察出代碼中的錯(cuò)誤,而且還得有足夠的精力和耐力。盡管程序系統(tǒng)算是完成了,但是開場(chǎng)寫報(bào)告時(shí)才發(fā)現(xiàn)原來課程設(shè)計(jì)才剛完成了一半而已。還得將當(dāng)初的構(gòu)思、想法、到實(shí)現(xiàn)、再到最后的調(diào)試,這其中每個(gè)環(huán)節(jié)的步驟用文字的形式記錄下來,好讓其他人也能了解你當(dāng)初的想法。其實(shí)有些想法有你自己特異的思維方式,也許口頭說說還行,真得寫下來,并讓別人也看懂,并不則容易。在本次C課程設(shè)計(jì)構(gòu)思創(chuàng)作過程中,得到了教師的大力幫助和支持,在此表示衷心的感謝,感謝提供無私的幫助和支持的教師們!感謝他們默默無聞的奉獻(xiàn)!另外也要感謝熱心的同學(xué)們,他們?cè)谖业脑O(shè)計(jì)過程中給與了很多的建議與幫助。參考文獻(xiàn)[1]曹計(jì)昌,盧萍,李開.C語言程序設(shè)計(jì),:科學(xué),2021[2]*引.C程序設(shè)計(jì)根底課程設(shè)計(jì),**:**大學(xué),2007[3]黃明,梁旭,萬洪莉.C語言課程設(shè)計(jì),:電子工業(yè),2006[4]BrainWKernighan,DennisMRitchie.THECPROGRAMMINGLANGUAGE.:清華大學(xué)。PRENTICEHALL,2021.[5]ISO/IEC的C語言標(biāo)準(zhǔn)。ISO/IEC9899:2021[6]秦友淑,曹化工。C語言程序設(shè)計(jì)教程〔第二版〕。[7]田淑清.二級(jí)教程-C語言程序設(shè)計(jì)(2021年版)[8]*振安.C語言程序設(shè)計(jì)[M].機(jī)械工業(yè),2007*include<stdio.h>*include<malloc.h>*include<stdlib.h>*include<string.h>*include<time.h>*include<Windows.h>*defineN5/*科室數(shù)量*/time_t_Curtime=(time_t)0;structtm*_RetTime=NULL;/**功能:定義patient構(gòu)造體*輸入:*返回:**/typedefstructpatientinf{charnumber[19];charPassWord[5];charname[10];charage[10];charse*[10];chartel[20];charaddr[20];structpatientinf*ne*t;}patinf;/**功能:定義patient構(gòu)造體*輸入:*返回:**/typedefstructpat{charnumber[19];chartime[20];structhead*_ne*t;structpat*ne*t;}patient;/**功能:定義class_構(gòu)造體*輸入:*返回:**/typedefstructhead{char*name;structhead*ne*t;structpat*ne*t_;}class_;/*定義一個(gè)大頭*/class_*ALL=(structhead*)malloc(sizeof(structhead));/*定義病人信息鏈表頭*/patinf*PatInfHEAD=(patinf*)malloc(sizeof(patinf));charstrhead2[5]={"頭"};charSTR[N][12]={"內(nèi)科","外科","兒科","骨科","皮膚科"};charStrfilepat[17]="病人信息.t*t";charStrfileappointed[17]="預(yù)約信息.t*t";/**功能:從文件中讀入預(yù)約信息*輸入:*返回:**/voidAppointListInfSave();/**功能:從文件中讀入預(yù)約信息*輸入:*返回:**/voidAppointedInfToListRead();/**功能:顯示各個(gè)科室預(yù)約人數(shù)信息*輸入:*返回:**/voidAppointNumDisplay();/**功能:從文件中讀入科室信息*輸入:*返回:**/voidClassMessageDisplay(intnumber);/**功能:遍歷鏈表所有元素*輸入:鏈表頭結(jié)點(diǎn),匹配元素**返回:結(jié)點(diǎn)位置(結(jié)點(diǎn)地址)**/structpat*leafListLocatedSearch(structpat*secondlist,char*num);/**功能:遍歷鏈表所有元素*輸入:鏈表頭結(jié)點(diǎn),匹配元素**返回:結(jié)點(diǎn)位置的上一個(gè)位置**/structpat*leafListLocatedSearchPrevious(structpat*secondlist,char*num);/**功能:向結(jié)點(diǎn)尾部添加結(jié)點(diǎn)*輸入:葉子結(jié)點(diǎn)*返回:尾結(jié)點(diǎn)**/structpat*leafListnodeAdd(patient*previous);/**功能:向結(jié)點(diǎn)尾部添加結(jié)點(diǎn)*輸入:葉子結(jié)點(diǎn)*返回:尾結(jié)點(diǎn)**/structpat*leafListnodeandNumAdd(char*Num,patient*previous);/**功能:遍歷鏈表所有元素*輸入:鏈表頭結(jié)點(diǎn)**返回:結(jié)點(diǎn)個(gè)數(shù)**/charleafListnumSearch(structpat*secondlist);/**功能:找到樹枝尾部*輸入:樹枝頭部結(jié)點(diǎn)*返回:尾部位置(尾部地址)**/structpat*leafListTailSearch(structpat*head);/**功能:遍歷鏈表所有元素*輸入:鏈表頭結(jié)點(diǎn)(structhead*mainlist,char*str)**返回:副鏈表頭**/structpat*mainListLocatedSearch(char*str);/**功能:遍歷鏈表所有元素*輸入:鏈表頭結(jié)點(diǎn)(structhead*mainlist)**返回:結(jié)點(diǎn)位置(結(jié)點(diǎn)地址)**/charmainListnumSearch(structhead*mainlist);/**功能:從病人鏈表中遍歷病人信息*輸入:*返回:**/voidPatAppointedSearch(char*str);/**功能:改變病人信息*輸入:病人**號(hào)*返回:**/voidPatInfChange(char*number);/**功能:向病人信息鏈表末端添加元素*輸入:patinf*tail*返回:**/voidPatInfListnodeAdd(patinf*tail);/**功能:找到病人信息鏈表末端*輸入:*返回:末端結(jié)點(diǎn)地址**/patinf*PatInfListTailSearch();/**功能:遍歷病人信息鏈表找到病人結(jié)點(diǎn)的前一結(jié)點(diǎn)*輸入:病人**號(hào)*返回:病人節(jié)點(diǎn)的前一結(jié)點(diǎn)位置**/patinf*PatInfNodePreviousSearch(char*number);/**功能:遍歷病人信息鏈表找到病人結(jié)點(diǎn)*輸入:病人**號(hào)*返回:病人節(jié)點(diǎn)位置**/patinf*PatInfNodeSearch(char*number);/**功能:從文件中讀入病人信息*輸入:*返回:**/voidPatInfToListRead();/**功能:保存病人信息到鏈表*輸入:*返回:**/voidPatListInfSave();/**功能:創(chuàng)立主干鏈表與葉子連接結(jié)點(diǎn)*輸入:主干結(jié)點(diǎn)個(gè)數(shù)*返回:主干頭結(jié)點(diǎn)**/structhead*TreeListCreat(intn);/**功能:創(chuàng)立主干鏈表與葉子連接結(jié)點(diǎn)*輸入:主干結(jié)點(diǎn)個(gè)數(shù)*返回:主干頭結(jié)點(diǎn)**/structhead*TreeListCreat(intn){inti;structhead*h,*p1,*p2;structpat*pat[N];h=NULL;for(i=0;i<n;i++){p1=(structhead*)malloc(sizeof(structhead));/*動(dòng)態(tài)分配內(nèi)存空間,并數(shù)據(jù)轉(zhuǎn)換為(structhead)類型*/pat[i]=(structpat*)malloc(sizeof(structpat));/*為結(jié)點(diǎn)分配空間*/p1->name=*(STR+i);strcpy_s(pat[i]->number,5,strhead2);pat[i]->ne*t=NULL;/*尾結(jié)點(diǎn)的后繼指針為NULL(空)*/pat[i]->_ne*t=h;/*尾結(jié)點(diǎn)的后繼指針為h*/p1->ne*t_=pat[i];/*返回鏈表的頭指針*/if(h==NULL)/*指定鏈表的頭指針*/{h=p1;p2=p1;}else{p2->ne*t=p1;p2=p1;}p2->ne*t=NULL;/*尾結(jié)點(diǎn)的后繼指針為NULL(空)*/}returnh;/*返回鏈表的頭指針*/}/**功能:向結(jié)點(diǎn)尾部添加結(jié)點(diǎn)*輸入:葉子結(jié)點(diǎn)*返回:尾結(jié)點(diǎn)**/structpat*leafListnodeAdd(patient*previous){structpat*tail;tail=(structpat*)malloc(sizeof(structpat));/*動(dòng)態(tài)分配內(nèi)存空間,并數(shù)據(jù)轉(zhuǎn)換為(structpat)類型*/printf("請(qǐng)輸入**號(hào):");scanf_s("%s",tail->number,19);if(PatInfNodeSearch(tail->number)==0)return0;tail->ne*t=NULL;/*尾結(jié)點(diǎn)的后繼指針為NULL(空)*/tail->_ne*t=ALL;/*尾部結(jié)點(diǎn)_ne*t指向ALL大頭*/if(previous->ne*t==NULL)previous->ne*t=tail;returntail;/*返回尾結(jié)點(diǎn)*/}/**功能:向結(jié)點(diǎn)尾部添加結(jié)點(diǎn)*輸入:葉子結(jié)點(diǎn)*返回:尾結(jié)點(diǎn)**/structpat*leafListnodeandNumAdd(char*Num,patient*previous){structpat*tail;tail=(structpat*)malloc(sizeof(structpat));/*動(dòng)態(tài)分配內(nèi)存空間,并數(shù)據(jù)轉(zhuǎn)換為(structpat)類型*/strncpy_s(tail->number,Num,19);//tail->ne*t=NULL;/*尾結(jié)點(diǎn)的后繼指針為NULL(空)*/tail->_ne*t=ALL;/*尾部結(jié)點(diǎn)_ne*t指向ALL大頭*/if(previous->ne*t==NULL)previous->ne*t=tail;/*head指向創(chuàng)立的結(jié)點(diǎn)*/returntail;/*返回尾結(jié)點(diǎn)*/}/**功能:遍歷鏈表所有元素*輸入:鏈表頭結(jié)點(diǎn)(structhead*mainlist)**返回:結(jié)點(diǎn)位置(結(jié)點(diǎn)地址)**/charmainListnumSearch(structhead*mainlist){chara=0;/*創(chuàng)立臨時(shí)變量*/structhead*mainTemp=(structhead*)malloc(sizeof(structhead));{mainTemp=mainlist;printf("\n");while(1){a++;printf("%d.%s:\n",a,mainTemp->name);if(mainTemp->ne*t==NULL){printf("\n");}returna;mainTemp=mainTemp->ne*t;}}}/**功能:遍歷鏈表所有元素*輸入:鏈表頭結(jié)點(diǎn)(structhead*mainlist,char*str)**返回:副鏈表頭**/structpat*mainListLocatedSearch(char*str){inta=0;/*創(chuàng)立臨時(shí)變量*/structhead*p=(structhead*)malloc(sizeof(structhead));{p=ALL->ne*t;while(1){if(strcmp(p->name,str)==0){returnp->ne*t_;}a++;if(p->ne*t==NULL)break;p=p->ne*t;}}return0;}/**功能:遍歷鏈表所有元素*輸入:鏈表頭結(jié)點(diǎn),匹配元素**返回:結(jié)點(diǎn)位置(結(jié)點(diǎn)地址)**/structpat*leafListLocatedSearch(structpat*secondlist,char*num){/*創(chuàng)立臨時(shí)變量*/structpat*secTemp=(structpat*)malloc(sizeof(structpat));secTemp=secondlist;while(1){if(strcmp(secTemp->number,num)==0){printf("找到:%s\n",num);returnsecTemp;//???}if(secTemp->ne*t==NULL)break;secTemp=secTemp->ne*t;}printf("未找到:%s\n",num);return0;}/**功能:遍歷鏈表所有元素*輸入:鏈表頭結(jié)點(diǎn),匹配元素**返回:結(jié)點(diǎn)位置的上一個(gè)位置**/structpat*leafListLocatedSearchPrevious(structpat*secondlist,char*num){/*創(chuàng)立臨時(shí)變量*/structpat*Previous,*secTemp=(structpat*)malloc(sizeof(structpat));secTemp=secondlist;while(1){if(strcmp(secTemp->number,num)==0){printf("找到:%s\n",num);returnPrevious;}if(secTemp->ne*t==NULL)break;Previous=secTemp;secTemp=secTemp->ne*t;}printf("未找到:%s\n",num);return0;}/**功能:遍歷鏈表所有元素*輸入:鏈表頭結(jié)點(diǎn)**返回:結(jié)點(diǎn)個(gè)數(shù)**/charleafListnumSearch(structpat*secondlist){chara=0;/*創(chuàng)立臨時(shí)變量*/structpat*secTemp=(structpat*)malloc(sizeof(structpat));{secTemp=secondlist;while(1){if(strcmp(secTemp->number,strhead2)==0);elsea++;if(secTemp->ne*t==NULL)break;secTemp=secTemp->ne*t;}}returna;}/**功能:找到樹枝尾部*輸入:樹枝頭部結(jié)點(diǎn)*返回:尾部位置(尾部地址)**/structpat*leafListTailSearch(structpat*head){structpat*Temp;/*創(chuàng)立臨時(shí)變量*/Temp=head;while(Temp->ne*t!=NULL){Temp=Temp->ne*t;}returnTemp;}/**功能:顯示各個(gè)科室預(yù)約人數(shù)信息*輸入:*返回:**/voidAppointNumDisplay(){patient*p;class_*cp;cp=ALL->ne*t;printf("\n");for(inti=0;;i++){printf("%d.%s:",i,cp->name);p=cp->ne*t_;printf("%d人\n",leafListnumSearch(p));if(cp->ne*t==NULL)break;cp=cp->ne*t;}printf("\n");}/**功能:從病人鏈表中遍歷病人信息*輸入:*返回:**/voidPatAppointedSearch(char*str){patient*p;class_*cp;cp=ALL->ne*t;while(1){printf("%s\n",cp->name);p=leafListLocatedSearch(cp->ne*t_,str);if(cp->ne*t==NULL)break;cp=cp->ne*t;}}/**功能:找到病人信息鏈表末端*輸入:*返回:末端結(jié)點(diǎn)地址**/patinf*PatInfListTailSearch(){patinf*p=(patinf*)malloc(sizeof(patinf));p=PatInfHEAD;while(1){if(p->ne*t==NULL)break;elsep=p->ne*t;}returnp;}/**功能:向病人信息鏈表末端添加元素*輸入:patinf*tail*返回:**/voidPatInfListnodeAdd(patinf*tail){patinf*p=(patinf*)malloc(sizeof(patinf));tail->ne*t=p;printf("\n");printf("輸入病人信息:\n");printf("**號(hào):");scanf_s("%s",p->number,19);printf("**:");scanf_s("%s",p->name,10);printf("年齡:");scanf_s("%s",p->age,10);printf("性別:");scanf_s("%s",p->se*,10);printf("聯(lián)系:");scanf_s("%s",p->tel,20);printf("住址:");scanf_s("%s",p->addr,20);printf("密碼:");scanf_s("%s",p->PassWord,5);printf("\n");p->ne*t=NULL;}/**功能:遍歷病人信息鏈表找到病人結(jié)點(diǎn)*輸入:病人**號(hào)*返回:病人節(jié)點(diǎn)位置**/patinf*PatInfNodeSearch(char*number){patinf*p;p=PatInfHEAD;while(1){if(strcmp(p->number,number)==0)returnp;if(p->ne*t==NULL)break;elsep=p->ne*t;}return0;}/**功能:遍歷病人信息鏈表找到病人結(jié)點(diǎn)的前一結(jié)點(diǎn)*輸入:病人**號(hào)*返回:病人節(jié)點(diǎn)的前一結(jié)點(diǎn)位置**/patinf*PatInfNodePreviousSearch(char*number){patinf*p,*temp;p=PatInfHEAD;while(1){if(strcmp(p->number,number)==0)returntemp;if(p->ne*t==NULL)break;else{temp=p;p=p->ne*t;}}return0;}/**功能:改變病人信息*輸入:病人**號(hào)*返回:**/voidPatInfChange(char*number){patinf*p;charn;chartemp[50];p=PatInfNodeSearch(number);while(1){printf("\n");printf("病人信息:\n");printf("1.**號(hào):%s\n",p->number);printf("2.**:%s\n",p->name);printf("3.年齡:%s\n",p->age);printf("4.性別:%s\n",p->se*);printf("5.聯(lián)系:%s\n",p->tel);printf("6.住址:%s\n",p->addr);printf("7.密碼:%s\n",p->PassWord);printf("\n");printf("輸入:");scanf_s("%d",&n,1);switch(n){case1:{printf("1.**號(hào):%s\n",p->number);printf("請(qǐng)輸入要改成的內(nèi)容:\n");scanf_s("%s",temp,19);strncpy_s(p->number,temp,19);}break;case2:{printf("2.**:%s\n",p->name);printf("請(qǐng)輸入要改成的內(nèi)容:\n");scanf_s("%s",temp,10);strncpy_s(p->name,temp,10);}break;case3:{printf("3.年齡:%s\n",p->age);printf("請(qǐng)輸入要改成的內(nèi)容:\n");scanf_s("%s",temp,10);strncpy_s(p->age,temp,10);}break;case4:{printf("4.性別:%s\n",p->se*);printf("請(qǐng)輸入要改成的內(nèi)容:\n");scanf_s("%s",temp,10);strncpy_s(p->se*,temp,10);}break;case5:{printf("5.聯(lián)系:%s\n",p->tel);printf("請(qǐng)輸入要改成的內(nèi)容:\n");scanf_s("%s",temp,20);strncpy_s(p->tel,temp,20);}break;case6:{printf("6.住址:%s\n",p->addr);printf("請(qǐng)輸入要改成的內(nèi)容:\n");scanf_s("%s",temp,20);strncpy_s(p->addr,temp,20);}break;case7:{printf("7.密碼:%s\n",p->PassWord);printf("請(qǐng)輸入要改成的內(nèi)容:\n");scanf_s("%s",temp,5);strncpy_s(p->PassWord,temp,5);}break;}printf("\n");printf("病人信息:\n");printf("1.**號(hào):%s\n",p->number);printf("2.**:%s\n",p->name);printf("3.年齡:%s\n",p->age);printf("4.性別:%s\n",p->se*);printf("5.聯(lián)系:%s\n",p->tel);printf("6.住址:%s\n",p->addr);printf("7.密碼:%s\n",p->PassWord);printf("\n");printf("是否修改完成(是請(qǐng)按0)");printf("輸入:");scanf_s("%d",&n,1);if(n==0)return;}}/**功能:保存病人信息到鏈表*輸入:*返回:**/voidPatListInfSave(){patinf*p;FILE*fp=NULL;p=PatInfHEAD->ne*t;if((fp=fopen("病人信息.t*t","w+"))==NULL){printf("無法翻開文件\n");}fprintf(fp,"$病人信息:\n");for(inti=0;;i++){fprintf(fp,"\n");fprintf(fp,"$1$%s$\n",p->number);fprintf(fp,"$2$%s$\n",p->name);fprintf(fp,"$3$%s$\n",p->age);fprintf(fp,"$4$%s$\n",p->se*);fprintf(fp,"$5$%s$\n",p->tel);fprintf(fp,"$6$%s$\n",p->addr);fprintf(fp,"$7$%s$\n\n",p->PassWord);fprintf(fp,"\n");if(p->ne*t==NULL)break;elsep=p->ne*t;}time(&_Curtime);_RetTime=localtime(&_Curtime);fprintf(fp,"\n更新時(shí)間:%04d-%02d-%02d%02d:%02d%02d\n",_RetTime->tm_year+1900,_RetTime->tm_mon+1,_RetTime->tm_mday,_RetTime->tm_hour,_RetTime->tm_min,_RetTime->tm_sec);fclose(fp);}/**功能:從文件中讀入預(yù)約信息*輸入:*返回:**/voidAppointListInfSave(){class_*cp;FILE*fp=NULL;patient*secTemp;cp=ALL->ne*t;fp=fopen("預(yù)約信息.t*t","w+");while(1){secTemp=cp->ne*t_;for(inti=0;;i++){if(i!=0)fprintf(fp,"*%s*%s*%d*\n",cp->name,secTemp->number,i);if(secTemp->ne*t==NULL)break;secTemp=secTemp->ne*t;}fprintf(fp,"***\n");if(cp->ne*t==NULL)break;cp=cp->ne*t;}time(&_Curtime);_RetTime=localtime(&_Curtime);fprintf(fp,"\n更新時(shí)間:%04d-%02d-%02d%02d:%02d%02d\n",_RetTime->tm_year+1900,_RetTime->tm_mon+1,_RetTime->tm_mday,_RetTime->tm_hour,_RetTime->tm_min,_RetTime->tm_sec);fclose(fp);}/**功能:從文件中讀入病人信息*輸入:*返回:**/voidPatInfToListRead(){FILE*fp;charstrLine[1024];patinf*h,*p1,*p2;h=NULL;//讀取緩沖區(qū)if((fp=fopen("病人信息.t*t","w+"))==NULL)//判斷文件是否存在及可讀{printf("無病人信息\n");return;}while(!feof(fp))//循環(huán)讀取每一行,直到文件尾{fgets(strLine,1024,fp);//將fp所指向的文件一行內(nèi)容讀到strLine緩沖區(qū)//printf("%s",strLine);//輸出所讀到的內(nèi)容//DOSOMETHINGELSEif(strLine[0]=='$'&&strLine[2]=='$'){switch(strLine[1]){case'1':{p1=(patinf*)malloc(sizeof(patinf));for(inti=3;i<1024;i++){if(strLine[i]=='$'){*(p1->number+i-3)='\0';break;}*(p1->number+i-3)=strLine[i];}break;}case'2':for(inti=3;i<1024;i++){if(strLine[i]=='$'){*(p1->name+i-3)='\0';break;}*(p1->name+i-3)=strLine[i];}break;case'3':for(inti=3;i<1024;i++){if(strLine[i]=='$'){*(p1->age+i-3)='\0';break;}*(p1->age+i-3)=strLine[i];}break;case'4':for(inti=3;i<1024;i++){if(strLine[i]=='$'){*(p1->se*+i-3)='\0';break;}*(p1->se*+i-3)=strLine[i];}break;case'5':for(inti=3;i<1024;i++){if(strLine[i]=='$'){*(p1->tel+i-3)='\0';break;}*(p1->tel+i-3)=strLine[i];}break;case'6':for(inti=3;i<1024;i++){if(strLine[i]=='$'){*(p1->addr+i-3)='\0';break;}*(p1->addr+i-3)=strLine[i];}break;case'7':{for(inti=3;i<1024;i++){if(strLine[i]=='$'){*(p1->PassWord+i-3)='\0';break;}*(p1->PassWord+i-3)=strLine[i];}if(h==NULL)/*指定鏈表的頭指針*/h=p1;elsep1->ne*t=p2;p2=p1;p2->ne*t=NULL;}break;}}}PatInfHEAD->ne*t=h;/*將字符串寫入節(jié)點(diǎn)鏈表頭過繼到PatInfHEAD*/}/**功能:從文件中讀入預(yù)約信息*輸入:*返回:**/voidAppointedInfToListRead(){FILE*fp;charstrLine[1024];charTemp[1024];charTemp2[1024];inti,j;patient*h;structpat*pp;h=NULL;//讀取緩沖區(qū)if((fp=fopen("預(yù)約信息.t*t","w+"))==NULL)//判斷文件是否存在及可讀{printf("OpenFalied!");}while(!feof(fp))//循環(huán)讀取每一行,直到文件尾{fgets(strLine,1024,fp);//將fp所指向的文件一行內(nèi)容讀到strLine緩沖區(qū)//DOSOMETHINGELSEif(strLine[0]=='*'&&strLine[1]!='*'&&strLine[2]!='*')//if(strLine[0]=='*'){for(j=1;;j++){if(strLine[j]=='*'||strLine[j]==''){Temp[j-1]='\0';break;}Temp[j-1]=strLine[j];}for(i=j+1;;i++){if(strLine[i]=='*'||strLine[i]==''){Temp2[i-j-1]='\0';break;}Temp2[i-j-1]=strLine[i];}/*printf("%s",Temp);printf("%s",Temp2);*/pp=mainListLocatedSearch(Temp);if(pp!=0)leafListnodeandNumAdd(Temp2,leafListTailSearch(pp));}}}/**功能:從文件中讀入科室信息*輸入:*返回:**/voidClassMessageDisplay(intnumber){charch;FILE*fp=NULL;switch(number){//不到文件完畢就循環(huán)//輸出一個(gè)字符case0:{fp=fopen("內(nèi)科.t*t","r");while((ch=fgetc(fp))!=EOF)putchar(ch);fclose(fp);}break;case1:{fp=fopen("外科.t*t","r");while((ch=fgetc(fp))!=EOF)putchar(ch);fclose(fp);}break;case2:{fp=fopen("兒科.t*t","r");while((ch=fgetc(fp))!=EOF)putchar(ch);fclose(fp);}break;case3:{fp=fopen("骨科.t*t","r");while((ch=fgetc(fp))!=EOF)putchar(ch);fclose(fp);}break;case4:{fp=fopen("皮膚科.t*t","r");while((ch=fgetc(fp))!=EOF)putchar(ch);fclose(fp);}break;}}/**功能:主函數(shù)*輸入:*返回:**/voidmain(){charnumber[19];chara;charstr[5];patient*p;patient*Previous;class_*cp;patient*Temp;patinf*pp;PatInfHEAD->ne*t=NULL;ALL->ne*t=TreeListCreat(N);PatInfToListRead();AppointedInfToListRead();while(1){printf("電子醫(yī)囑錄入系統(tǒng)V2\n");printf("1.預(yù)約\n2.查看預(yù)約信息\n3.刪除預(yù)約信息\n4.創(chuàng)立病人信息\n5.修改病人信息\n6.查看病人信息\n7.保存信息退出\n");printf("\n");printf("輸入:");scanf_s("%d",&a,1);if(a==1){chara;printf("預(yù)約:\n");AppointNumDisplay();printf("輸入預(yù)約科室序號(hào):");scanf_s("%d",&a,1);// ClassMessageDisplay(a);Temp=leafListnodeAdd(leafListTailSearch(mainListLocatedSearch(*(STR+a))));if(Temp==0){printf("未找到病人\n請(qǐng)返回創(chuàng)立病人信息\n");}elseprintf("預(yù)約成功\n");system("pause");system("cls");}if(a==2){printf("查看預(yù)約信息:\n");AppointNumDisplay();printf("輸入病人**號(hào):");scanf_s("%s",str,5);printf("\n");PatAppointedSearch(str);printf("\n");printf("查找成功\n");system("pause");system("cls");}if(a==3){printf("輸入病人**號(hào):");scanf_s("%s",str,5);cp=ALL->ne*t;printf("\n");a=0;for(inti=0;;i++){printf("%d.%s\n",i,cp->name);p=leafListLocatedSearch(cp->ne*t_,str);if(p==0)a++;if(cp->ne*t==NULL)break;cp=cp->ne*t;}if(a==N){gotoEND;}printf("\n");printf("選擇刪除預(yù)約科室\n");printf(

溫馨提示

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

評(píng)論

0/150

提交評(píng)論