版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 課程設(shè)計(jì)報(bào)告題目電子醫(yī)囑錄入系統(tǒng)系別年級(jí)專業(yè)班級(jí)學(xué)號(hào)學(xué)生指導(dǎo)教師職稱講師設(shè)計(jì)時(shí)間目錄1 緒論11.1課題背景和意義11.2主要研究容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ù)表的存儲(chǔ)組織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.3查看預(yù)約模塊103.2.4刪除預(yù)約模
2、塊113.2.5創(chuàng)建病人信息模塊123.2.6修改病人信息模塊133.2.7查看病人信息模塊143.2.8保存信息并退出模塊154系統(tǒng)測(cè)試164.1病人信息管理測(cè)試174.2病人預(yù)約信息管理測(cè)試214.3文件信息存取測(cè)試245 總結(jié)與展望245.1 全文總結(jié)24心 得 體 會(huì)25參 考 文 獻(xiàn)2660 / 631 緒論1.1課題背景和意義隨著社會(huì)的信息化,各個(gè)行業(yè)的管理與運(yùn)營(yíng)都逐漸開始使用電子系統(tǒng)來取代傳統(tǒng)的管理模式。使用電子醫(yī)囑管理可以幫助醫(yī)院更為便捷的管理醫(yī)囑,通過計(jì)算機(jī)技術(shù)給醫(yī)院的管理人員和就診病人在病歷創(chuàng)建、預(yù)約查詢以與記錄統(tǒng)計(jì)等方面帶來便利,為醫(yī)院在管理醫(yī)囑方面提供一種更好的方式。1
3、.2主要研究容本系統(tǒng)使用C語言編寫了電子醫(yī)囑管理系統(tǒng),主要實(shí)現(xiàn)醫(yī)院中醫(yī)生醫(yī)囑的電子管理。通過此系統(tǒng)可對(duì)醫(yī)囑進(jìn)行管理和維護(hù)操作,實(shí)現(xiàn)電子醫(yī)囑管理的一般功能。主要容包括:(1) 電子醫(yī)囑查詢。提供按照科室信息、病人信息查詢;(2) 電子醫(yī)囑創(chuàng)建。提供病人信息、預(yù)約記錄的錄入功能;(3) 電子醫(yī)囑編輯。提供對(duì)系統(tǒng)數(shù)據(jù)的修改、刪除等功能;(4) 電子醫(yī)囑維護(hù)。提供對(duì)系統(tǒng)數(shù)據(jù)的保存、讀取等功能。系統(tǒng)采用菜單方式作為人機(jī)交互界面,為用戶提供便捷的使用方式。用戶根據(jù)菜單提示,選擇所需要的服務(wù),系統(tǒng)自動(dòng)做出相應(yīng)的響應(yīng)。醫(yī)囑信息包含病人、號(hào)、科室名稱、就診科室等??剖倚畔?、病人信息的讀取和保存要求有一定的格式規(guī)
4、,錄入的信息以文件的形式保存并可以對(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)建鏈表并將文件中的格式化信息讀取到存鏈表中。2.2預(yù)約模塊預(yù)約模塊的操作流程包括選擇預(yù)約科室,輸入預(yù)約人員號(hào),若存在病人則預(yù)約,若不存在則返回主界面。2.3查看預(yù)約信息模塊查看預(yù)約信息模塊的操作流程包括輸入預(yù)
5、約人員得到相關(guān)預(yù)約科室信息,若存在病人則預(yù)約,若不存在則返回主界面。2.4刪除預(yù)約信息模塊刪除預(yù)約信息模塊的操作流程包括輸入預(yù)約人員得到相關(guān)預(yù)約科室信息,選擇刪除預(yù)約科室刪除成功返回主界面。2.5創(chuàng)建病人信息模塊創(chuàng)建病人信息模塊的操作流程依次輸入、年齡、性別、聯(lián)系、住址、密碼并回車添加病人信息。2.6修改病人信息模塊修改病人信息模塊的操作流程輸入病人號(hào)顯示病人信息輸入修改項(xiàng)并輸入修改的容,若退出則按0返回主界面。2.7查看病人信息模塊查看病人信息模塊的操作流程輸入病人顯示病人信息按回車返回主界面。2.8保存信息并退出模塊保存信息并退出模塊的操作流程直接退出程序?qū)㈡湵碇械男畔⒈4娴轿募? 系統(tǒng)
6、詳細(xì)設(shè)計(jì)3.1數(shù)據(jù)表的存儲(chǔ)組織根據(jù)2.3節(jié)中設(shè)計(jì),系統(tǒng)建立病人基本信息和病人預(yù)約信息表。在系統(tǒng)實(shí)現(xiàn)中,采用存鏈表和磁盤文件二級(jí)的數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)來存放這些數(shù)據(jù)信息。系統(tǒng)將文件信息轉(zhuǎn)換為存鏈表,再將鏈表轉(zhuǎn)換成磁盤文件形式。系統(tǒng)首先將磁盤文件數(shù)據(jù)轉(zhuǎn)入存鏈表,在通過對(duì)鏈表數(shù)據(jù)的處理,對(duì)用戶請(qǐng)求作出響應(yīng)。本系統(tǒng)以病人信息文件以與預(yù)約信息二份文本文件作為表單對(duì)應(yīng)的磁盤存儲(chǔ),在存中以結(jié)構(gòu)變量的方式分別存放基本信息,并以鏈表的形式將所有的數(shù)據(jù)組織起來。3.1.1病人信息數(shù)據(jù)結(jié)構(gòu)病人信息在存中采用結(jié)構(gòu)類型進(jìn)行描述。病人結(jié)構(gòu)成員包括:病人、號(hào)、性別、年齡、聯(lián)系方式、家庭住址、密碼。病人、號(hào)、性別、年齡、聯(lián)系方式、家
7、庭住址、密碼均以字符數(shù)組的形式存儲(chǔ)。在病人結(jié)構(gòu)中有一個(gè)個(gè)結(jié)構(gòu)指針,指向下一個(gè)病人結(jié)構(gòu),通過這個(gè)指針可以組成病人鏈表。該結(jié)構(gòu)變量實(shí)現(xiàn)病人信息表在計(jì)算機(jī)上的存儲(chǔ),其結(jié)構(gòu)聲明如圖3.1所示。typedef struct patientinfchar name10;char number19;char sex10;char age10;char tel20;char addr20;char PassWord5;struct patientinf *next;patinf;圖3.1病人結(jié)構(gòu)3.1.2科室信息數(shù)據(jù)結(jié)構(gòu)科室信息在存中采用結(jié)構(gòu)類型進(jìn)行描述。科室結(jié)構(gòu)成員包括:科室名稱??剖颐Q以指針數(shù)組的形式存
8、儲(chǔ)。在科室結(jié)構(gòu)中有二個(gè)結(jié)構(gòu)指針,一個(gè)指向下一個(gè)科室結(jié)構(gòu),通過這個(gè)指針可以組成科室信息鏈表,一個(gè)指向下一個(gè)病人結(jié)構(gòu),通過這個(gè)指針可以組成病人鏈表。該結(jié)構(gòu)變量實(shí)現(xiàn)病人信息表在計(jì)算機(jī)上的存儲(chǔ),其結(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ù)約信息在存中采用結(jié)構(gòu)類型進(jìn)行描述。預(yù)約結(jié)構(gòu)成員包括:病人號(hào)。病人號(hào)以字符數(shù)組的形式存儲(chǔ)。在預(yù)約結(jié)構(gòu)中有一個(gè)結(jié)構(gòu)指針,指向下一個(gè)預(yù)約結(jié)構(gòu)通過該指針可以將某一科室的所有預(yù)約病人起來,組成就診鏈表
9、。該結(jié)構(gòu)變量實(shí)現(xiàn)病人預(yù)約信息表在計(jì)算機(jī)上的存儲(chǔ),其結(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)中各類對(duì)象。系統(tǒng)中,科室結(jié)構(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)系,為了在存中較好的體現(xiàn)這種層次關(guān)系,本系統(tǒng)采用二重鏈表的方式組織信息之間的關(guān)聯(lián)關(guān)系。具體結(jié)構(gòu)如圖3.4所示??剖倚畔⒋娣旁诙劓湵淼闹麈溄Y(jié)點(diǎn)上,每個(gè)
10、主鏈結(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ǔ)結(jié)構(gòu)示意圖病人信息存放在單鏈表中,具體結(jié)構(gòu)如圖3.5所示。病人信息結(jié)點(diǎn)除了保存病人信息還保存下一個(gè)結(jié)點(diǎn)的地址。NULL病人信息PatInfHEAD圖3.5單鏈表存儲(chǔ)結(jié)構(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ù)約信息模塊
11、、刪除預(yù)約信息模塊、創(chuàng)建病人信息模塊、修改病人信息模塊、查看病人信息模塊、保存信息并退出模塊以與初始化模塊。系統(tǒng)的總控模塊的算法流程如圖3.1所示。系統(tǒng)運(yùn)行文本菜單初始化界面加載文件中存儲(chǔ)的鏈表數(shù)據(jù)系統(tǒng)功能模塊的選擇和運(yùn)行保存數(shù)據(jù)鏈表關(guān)閉系統(tǒng)結(jié)束圖3.1主程序運(yùn)行流程圖3.2.1初始化模塊初始化模塊負(fù)責(zé)將文本文件轉(zhuǎn)換成存鏈表。在第2章的概要設(shè)計(jì)中,系統(tǒng)數(shù)據(jù)分為二種基礎(chǔ)數(shù)據(jù),這二種系統(tǒng)數(shù)據(jù)要求儲(chǔ)存到數(shù)據(jù)文件中。為便于處理每個(gè)文件,本系統(tǒng)將三種數(shù)據(jù)分別存放在二個(gè)文本文件中。為了實(shí)現(xiàn)上述功能編輯了三個(gè)子函數(shù)與一個(gè)創(chuàng)建單鏈表語句 :struct head *TreeListCreat(intn);vo
12、idPatInfToListRead();voidAppointedInfToListRead();PatInfHEAD->next=NULL; 初始化的過程包括將預(yù)約信息文件、病人信息文件從數(shù)據(jù)文件中讀取并存放到所創(chuàng)建的鏈表中。算法流程如圖3.2所示。圖3.2初始化模塊運(yùn)行流程圖3.2.2預(yù)約模塊預(yù)約模塊中包括找到對(duì)應(yīng)預(yù)約科室尾部結(jié)點(diǎn)并添加結(jié)點(diǎn)其中使用到四個(gè)函數(shù):struct pat * mainListLocatedSearch(char *str);struct pat* leafListTailSearch(struct pat* head);patinf *PatInfNode
13、Search(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ù)約信息使用到兩個(gè)子函數(shù):void AppointNumDisplay();void PatAppointedSearch(char *str);過程包括遍歷分科室遍歷二級(jí)鏈表然后顯示預(yù)約信息。算法流程如圖3.4所示。圖3.4查看預(yù)約模塊運(yùn)行流程圖3.2.4刪除預(yù)
14、約模塊刪除預(yù)約模塊中包括找到結(jié)點(diǎn)位置,和找到結(jié)點(diǎn)前一個(gè)位置用到四個(gè)子函數(shù):struct pat * leafListLocatedSearch(struct pat *secondlist,char *num);struct pat * mainListLocatedSearch(char *str);struct pat * leafListLocatedSearchPrevious(struct pat *secondlist,char *num);struct pat * leafListLocatedSearch(struct pat *secondlist,char *num);過程
15、包括先找到要?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)行流程圖3.2.5創(chuàng)建病人信息模塊創(chuàng)建病人信息模塊中包括找到病人信息鏈表的尾結(jié)點(diǎn)然后添加結(jié)點(diǎn)使用到兩個(gè)子函數(shù):patinf * PatInfListTailSearch()void PatInfListnodeAdd(patinf *tail)過程包括找到病人結(jié)點(diǎn)尾部然后在病人結(jié)點(diǎn)尾部添加一個(gè)結(jié)點(diǎn)。算法流程如圖3.6所示。圖3.6創(chuàng)建病人信息模塊運(yùn)行流程圖3.2.6修改病人信息模塊修改病人信息模塊中使用到一個(gè)子函數(shù):patinf *PatInfNod
16、eSearch(char *number);過程包括找到結(jié)點(diǎn)然后修改容。算法流程如圖3.7所示。圖3.7修改病人信息模塊運(yùn)行流程圖3.2.7查看病人信息模塊查看病人信息模塊中使用到一個(gè)子函數(shù):patinf *PatInfNodeSearch(char *number);過程包括找到結(jié)點(diǎn)然后顯示容。算法流程如圖3.8所示。圖3.8查看病人信息模塊運(yùn)行流程圖3.2.8保存信息并退出模塊保存信息并退出模塊中使用到兩個(gè)子函數(shù):void PatListInfSave();void AppointListInfSave();過程包括保存格式化的病人信息到文件和保存格式化的預(yù)約信息到文件然后退出程序。算法流
17、程如圖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ù)的不斷發(fā)展,測(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)建病人信息如圖4.1.1所示圖4.1.1創(chuàng)建病人信息然后可選擇修改病人信息如圖
18、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ù)約信息管理測(cè)試創(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文件信息存取測(cè)試初始化會(huì)打開”病人信息.txt”與”科室信息.txt”讀取信息如果文件不存在則會(huì)創(chuàng)建,程序退出選擇”7.保存信息并退出”,鏈表中的信息會(huì)保存到文件中5 總結(jié)與展望5.1 全文總結(jié)本文使用C語言實(shí)現(xiàn)了電子醫(yī)囑
19、管理系統(tǒng),實(shí)現(xiàn)了課程設(shè)計(jì)的功能要求,能夠正確運(yùn)行。從實(shí)用和性能方面可以進(jìn)一步加以改善。(1)完整性??赏ㄟ^增加科室表等方法,對(duì)輸入信息進(jìn)行完整性檢查。如果輸入科室名稱與表不符,則該信息視為無效。對(duì)年齡設(shè)置上下限,以保證數(shù)據(jù)的合理性。(2)安全性。在系統(tǒng)中可以增加多種角色的登陸方式,提高系統(tǒng)的安全性。對(duì)于不同角色的用戶,給與不同的操作權(quán)限,從而保證系統(tǒng)部數(shù)據(jù)的安全性。在登陸時(shí)可加入口令認(rèn)證,確保用戶身份的正確性。(3)性能優(yōu)化。對(duì)部數(shù)據(jù)建立索引表,對(duì)索引表進(jìn)行二分查找,提高查詢速度。對(duì)鏈表可以采用雙向十字鏈表結(jié)構(gòu)存儲(chǔ),提高信息處理的速度。心得體會(huì)剛開始看到題目時(shí)一頭霧水,不知該從何處下手,因?yàn)槠?/p>
20、時(shí)只做過一些輸入輸出的普通小程序,根本沒有界面的概念。于是我就想如果先運(yùn)行一下書上提供的樣例程序,腦概也就有了一些概念和想法??墒前褧咸峁┑膸讉€(gè)代碼拿來一運(yùn)行編譯error就有幾十行,面對(duì)那上千行的代碼,我就不知該怎么下手了。后來實(shí)在沒辦法,首先拿起那本C語言實(shí)驗(yàn)與課程設(shè)計(jì)看了三天,大概懂了一些函數(shù)的用法,就開始將書上的代碼一段一段的輸入進(jìn)去跑一跑,慢慢的就大概懂了怎么來實(shí)現(xiàn)那些界面。首先把那個(gè)任務(wù)說明看了幾遍,就將程序主要分成五大塊容:(1)文件處理功能:首先得有將數(shù)據(jù)信息保存的功能,這就得用到老師講的“文件”那章的知識(shí),我又拿起課本看了幾遍。其次還得有數(shù)據(jù)備份的功能,以備在重大失誤后能找
21、回一些數(shù)據(jù),將損失降低。有了備份,還得有恢復(fù)備份數(shù)據(jù)地功能。最后必須有安全退出系統(tǒng)的功能。(2)數(shù)據(jù)處理功能:首先得讓系統(tǒng)能讀入操作者輸入的數(shù)據(jù)并將數(shù)據(jù)存儲(chǔ)在文件中。然后如果操作者 輸入數(shù)據(jù)有誤那還得有對(duì)數(shù)據(jù)修改,部分?jǐn)?shù)據(jù)刪除,以與數(shù)據(jù)添加的功能。(3)查詢功能:第一可以按照科室編號(hào)來查詢,第二還可以按照病人號(hào)查詢,第三還可以按照科室編號(hào),病人與就診日期進(jìn)行多條件統(tǒng)計(jì)查詢。(4)統(tǒng)計(jì)信息功能:最重要的要有日就診人數(shù)統(tǒng)計(jì)功能,其次還可以有病人就診歷史,就診病人年齡分類的統(tǒng)計(jì)。(5)系統(tǒng)幫助功能:第一得告訴操作者本系統(tǒng)的用途,然后告訴怎樣操作使用系統(tǒng)以與一些基本的操作快捷功能。最后,當(dāng)屏幕上顯示的
22、信息過多時(shí)還得有清理屏幕的功能,以方便用戶觀看數(shù)據(jù)。接下來就是一一實(shí)現(xiàn)那些功能。通過運(yùn)用課堂上講過的數(shù)組,指針,文件等知識(shí),編寫了鏈表的創(chuàng)建,之后是將鏈表的容寫入到文件中保存,并將文件中寫入的容再次逐條讀取出來,顯示在屏幕上。這個(gè)主體寫完了,接下來就開始寫科室、病人等信息的查詢函數(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ù),這樣調(diào)試起來就比較困難,因?yàn)榫退阋粋€(gè)函數(shù)里,一點(diǎn)小小的錯(cuò)
23、誤就會(huì)引起連鎖反應(yīng)導(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)試員真還得過硬的基礎(chǔ)知識(shí),能敏銳覺察出代碼中的錯(cuò)誤,而且還得有足夠的精力和耐力。盡管程序系統(tǒng)算是完成了,但是開始寫報(bào)告時(shí)才發(fā)
24、現(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é),20082引. C程序設(shè)計(jì)基礎(chǔ)課程設(shè)計(jì), : 大學(xué),20073黃明,梁旭,萬洪莉. C語言課程設(shè)
25、計(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友淑,化工。C語言程序設(shè)計(jì)教程(第二版)。7田淑清.二級(jí)教程-C語言程序設(shè)計(jì)(2008 年版)8振安.C語言程序設(shè)計(jì)M.機(jī)械工業(yè),2007#include<stdio.h>#include<malloc.h>#include<stdlib.h>#include<string.h>
26、;#include<time.h>#include<Windows.h>#defineN 5/*科室數(shù)量*/time_t_Curtime=(time_t)0;structtm*_RetTime=NULL;/*功能:定義patient結(jié)構(gòu)體*輸入:*返回:*/typedefstructpatientinfcharnumber19;charPassWord5;charname10;charage10;charsex10;chartel20;charaddr20;structpatientinf*next;patinf;/*功能:定義patient結(jié)構(gòu)體*輸入:*返回:*/t
27、ypedefstructpatcharnumber19;chartime20;structhead*_next;structpat*next;patient;/*功能:定義class_結(jié)構(gòu)體*輸入:*返回:*/typedefstructheadchar*name;structhead*next;structpat*next_;class_;/*定義一個(gè)大頭*/class_*ALL=(structhead*)malloc(sizeof(structhead);/*定義病人信息鏈表頭*/patinf*PatInfHEAD=(patinf*)malloc(sizeof(patinf);charstr
28、head25="頭"charSTRN12="科","外科","兒科","骨科","皮膚科"charStrfilepat17="病人信息.txt"charStrfileappointed17="預(yù)約信息.txt"/*功能:從文件中讀入預(yù)約信息*輸入:*返回:*/voidAppointListInfSave();/*功能:從文件中讀入預(yù)約信息*輸入:*返回:*/voidAppointedInfToListRead();/*功能:顯示各個(gè)科室
29、預(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*s
30、econdlist,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)*返回:尾部位置(尾部地址)*/st
31、ructpat*leafListTailSearch(structpat*head);/*功能:遍歷鏈表所有元素*輸入:鏈表頭結(jié)點(diǎn)(struct head *mainlist,char *str)*返回:副鏈表頭*/structpat*mainListLocatedSearch(char*str);/*功能:遍歷鏈表所有元素*輸入:鏈表頭結(jié)點(diǎn)(struct head *mainlist)*返回:結(jié)點(diǎn)位置(結(jié)點(diǎn)地址)*/charmainListnumSearch(structhead*mainlist);/*功能:從病人鏈表中遍歷病人信息*輸入:*返回:*/voidPatAppointedSea
32、rch(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);/*功
33、能:遍歷病人信息鏈表找到病人結(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(i
34、ntn)inti;structhead*h,*p1,*p2;structpat*patN;h=NULL;for(i=0;i<n;i+)p1=(structhead*)malloc(sizeof(structhead);/*動(dòng)態(tài)分配存空間,并數(shù)據(jù)轉(zhuǎn)換為(struct head)類型*/pati=(structpat*)malloc(sizeof(structpat);/*為結(jié)點(diǎn)分配空間*/p1->name=*(STR+i);strcpy_s(pati->number,5,strhead2);pati->next=NULL;/*尾結(jié)點(diǎn)的后繼指針為NULL(空)*/pati-
35、>_next=h;/*尾結(jié)點(diǎn)的后繼指針為h*/p1->next_=pati;/*返回鏈表的頭指針*/if(h=NULL)/*指定鏈表的頭指針*/h=p1;p2=p1;elsep2->next=p1;p2=p1;p2->next=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)
36、;/*動(dòng)態(tài)分配存空間,并數(shù)據(jù)轉(zhuǎn)換為(struct pat)類型*/printf("請(qǐng)輸入號(hào):");scanf_s("%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;returntail;/*返回尾結(jié)點(diǎn)*/*功能
37、:向結(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)分配存空間,并數(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-&
38、gt;next=NULL)previous->next=tail;/*head指向創(chuàng)建的結(jié)點(diǎn)*/returntail;/*返回尾結(jié)點(diǎn)*/*功能:遍歷鏈表所有元素*輸入:鏈表頭結(jié)點(diǎn)(struct head *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
39、+;printf("%d.%s:n",a,mainTemp->name);if(mainTemp->next=NULL)printf("-n");returna;mainTemp=mainTemp->next;/*功能:遍歷鏈表所有元素*輸入:鏈表頭結(jié)點(diǎn)(struct head *mainlist,char *str)*返回:副鏈表頭*/structpat*mainListLocatedSearch(char*str)inta=0;/*創(chuàng)建臨時(shí)變量*/structhead*p=(structhead*)malloc(sizeof(str
40、ucthead);p=ALL->next;while(1)if(strcmp(p->name,str)=0)returnp->next_;a+;if(p->next=NULL)break;p=p->next;return 0;/*功能:遍歷鏈表所有元素*輸入:鏈表頭結(jié)點(diǎn),匹配元素*返回:結(jié)點(diǎn)位置(結(jié)點(diǎn)地址)*/structpat*leafListLocatedSearch(structpat*secondlist,char*num)/*創(chuàng)建臨時(shí)變量*/structpat*secTemp=(structpat*)malloc(sizeof(structpat);se
41、cTemp=secondlist;while(1)if(strcmp(secTemp->number,num)=0)printf("找到:%sn",num);returnsecTemp;/?if(secTemp->next=NULL)break;secTemp=secTemp->next;printf("未找到:%sn",num);return 0;/*功能:遍歷鏈表所有元素*輸入:鏈表頭結(jié)點(diǎn),匹配元素*返回:結(jié)點(diǎn)位置的上一個(gè)位置*/structpat*leafListLocatedSearchPrevious(structpat*se
42、condlist,char*num)/*創(chuàng)建臨時(shí)變量*/structpat*Previous,*secTemp=(structpat*)malloc(sizeof(structpat);secTemp=secondlist;while(1)if(strcmp(secTemp->number,num)=0)printf("找到:%sn",num);returnPrevious;if(secTemp->next=NULL)break;Previous=secTemp;secTemp=secTemp->next;printf("未找到:%sn"
43、;,num);return 0;/*功能:遍歷鏈表所有元素*輸入:鏈表頭結(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->next=NULL)break;secTemp=secTemp->next;retu
44、rna;/*功能:找到樹枝尾部*輸入:樹枝頭部結(jié)點(diǎn)*返回:尾部位置(尾部地址)*/structpat*leafListTailSearch(structpat*head)structpat*Temp;/*創(chuàng)建臨時(shí)變量*/Temp=head;while(Temp->next!=NULL)Temp=Temp->next;returnTemp;/*功能:顯示各個(gè)科室預(yù)約人數(shù)信息*輸入:*返回:*/voidAppointNumDisplay()patient*p;class_*cp;cp=ALL->next;printf("-n");for(inti=0;i+)p
45、rintf("%d.%s:",i,cp->name);p=cp->next_;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->nam
46、e);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;returnp;/*功能:向病人信息鏈表末端添加元素*輸入:patinf *tail*返回:*/voi
47、dPatInfListnodeAdd(patinf*tail)patinf*p=(patinf*)malloc(sizeof(patinf);tail->next=p;printf("-n");printf("輸入病人信息:n");printf(" 號(hào):");scanf_s("%s",p->number,19);printf(" :");scanf_s("%s",p->name,10);printf(" 年齡:");scanf_s(&qu
48、ot;%s",p->age,10);printf(" 性別:");scanf_s("%s",p->sex,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"
49、);p->next=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->next=NULL)break;elsep=p->next;return 0;/*功能:遍歷病人信息鏈表找到病人結(jié)點(diǎn)的前一結(jié)點(diǎn)*輸入:病人號(hào)*返回:病人節(jié)點(diǎn)的前一結(jié)點(diǎn)位置*/patinf*PatInfNodePreviousSearch(char*n
50、umber)patinf*p,*temp;p=PatInfHEAD;while(1)if(strcmp(p->number,number)=0)returntemp;if(p->next=NULL)break;elsetemp=p;p=p->next;return 0;/*功能:改變病人信息*輸入:病人號(hào)*返回:*/voidPatInfChange(char*number)patinf*p;charn;chartemp50;p=PatInfNodeSearch(number);while(1)printf("-n");printf(" 病人信息:
51、n");printf("1. 號(hào):%sn",p->number);printf("2. :%sn",p->name);printf("3. 年齡:%sn",p->age);printf("4. 性別:%sn",p->sex);printf("5. 聯(lián)系:%sn",p->tel);printf("6. 住址:%sn",p->addr);printf("7. 密碼:%sn",p->PassWord);prin
52、tf("-n");printf("輸入:");scanf_s("%d",&n,1);switch(n)case 1:printf("1. 號(hào):%sn",p->number);printf("請(qǐng)輸入要改成的容:n");scanf_s("%s",temp,19);strncpy_s(p->number,temp,19);break;case 2:printf("2. :%sn",p->name);printf("請(qǐng)輸入要改成的容:n");scanf_s("%s",temp,10);strncpy_s(p->name,temp,10);break;case 3:printf("3. 年齡:%sn",p->age);printf("請(qǐng)輸入要改成的容:n");scanf_s("%s&qu
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版果林租賃與農(nóng)村金融服務(wù)合作合同范本3篇
- 2025年度環(huán)保產(chǎn)業(yè)融資服務(wù)合同范本(含排放)3篇
- 二零二五年度房地產(chǎn)廣告發(fā)布合同:廣告投放合作協(xié)議3篇
- 2025版西瓜品牌授權(quán)及品牌管理合同3篇
- 二零二五年度戶口遷移安置補(bǔ)償協(xié)議3篇
- 二零二五年度文化旅游景區(qū)開店合作合同3篇
- 二零二五年度國(guó)際房產(chǎn)二手房買賣合同范本2篇
- 2025年度社區(qū)便利店租賃合同模板(含加盟服務(wù)條款)3篇
- 二零二五年度新材料合伙人退伙技術(shù)合作與退伙協(xié)議3篇
- 二零二五年度建筑垃圾資源化利用項(xiàng)目招投標(biāo)合同3篇
- 2024年股東股權(quán)繼承轉(zhuǎn)讓協(xié)議3篇
- 2024-2025學(xué)年江蘇省南京市高二上冊(cè)期末數(shù)學(xué)檢測(cè)試卷(含解析)
- 2025年中央歌劇院畢業(yè)生公開招聘11人歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 北京市高校課件 開天辟地的大事變 中國(guó)近代史綱要 教學(xué)課件
- 監(jiān)事會(huì)年度工作計(jì)劃
- 2024中國(guó)近海生態(tài)分區(qū)
- 山東省濟(jì)南市2023-2024學(xué)年高一上學(xué)期1月期末考試化學(xué)試題(解析版)
- 北師大版五年級(jí)數(shù)學(xué)下冊(cè)第3單元第1課時(shí)分?jǐn)?shù)乘法(一)課件
- 2024-2030年中國(guó)汽車保險(xiǎn)杠行業(yè)市場(chǎng)發(fā)展現(xiàn)狀及前景趨勢(shì)分析報(bào)告
- 智研咨詢發(fā)布:中國(guó)種豬行業(yè)市場(chǎng)現(xiàn)狀、發(fā)展概況、未來前景分析報(bào)告
- 六年級(jí)上冊(cè)分?jǐn)?shù)四則混合運(yùn)算100題及答案
評(píng)論
0/150
提交評(píng)論