【精品畢業(yè)設(shè)計】基于VB和MS SQL Server的HIS醫(yī)院管理信息系統(tǒng)設(shè)計_第1頁
【精品畢業(yè)設(shè)計】基于VB和MS SQL Server的HIS醫(yī)院管理信息系統(tǒng)設(shè)計_第2頁
【精品畢業(yè)設(shè)計】基于VB和MS SQL Server的HIS醫(yī)院管理信息系統(tǒng)設(shè)計_第3頁
【精品畢業(yè)設(shè)計】基于VB和MS SQL Server的HIS醫(yī)院管理信息系統(tǒng)設(shè)計_第4頁
【精品畢業(yè)設(shè)計】基于VB和MS SQL Server的HIS醫(yī)院管理信息系統(tǒng)設(shè)計_第5頁
已閱讀5頁,還剩24頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、引言11 醫(yī)院信息管理系統(tǒng)現(xiàn)狀近年來,隨著我國信息產(chǎn)業(yè)的飛速開展,計算機(jī)的開發(fā)應(yīng)用已滲透到各個領(lǐng)域,而且日趨普及。在醫(yī)學(xué)領(lǐng)域內(nèi),計算機(jī)的應(yīng)用已經(jīng)十分廣泛,各種智能診斷設(shè)備都與計算機(jī)緊密結(jié)合在一起,主要應(yīng)用于兩個方面:一是醫(yī)療設(shè)備智能化,以硬件為主,如彩色B超、CT等。另一種是醫(yī)院信息管理系統(tǒng)HIS的軟件建設(shè),不僅可以提高醫(yī)院的工作效率,同時,也提升了醫(yī)院的現(xiàn)代化管理形象。我國醫(yī)院信息管理系統(tǒng)的開展形勢十分令人鼓舞,無論是國家、醫(yī)院還是軟件公司,都投入了大量的人力、物力、財力。大中型醫(yī)院根本上都建設(shè)了自己的醫(yī)院信息管理系統(tǒng),這說明醫(yī)院本身在對HIS建設(shè)的認(rèn)識上都有了很大的提高。信息管理系統(tǒng)的建設(shè)

2、對醫(yī)院帶來的效率、效益以及管理水平的提高,使醫(yī)院管理層對信息管理系統(tǒng)建設(shè)的重要性和必要性有了更深一步的認(rèn)識。12 開發(fā)系統(tǒng)意義隨著我國醫(yī)療衛(wèi)生體制改革的逐步深入,國家將大力開展城市社區(qū)和農(nóng)村鄉(xiāng)鎮(zhèn)衛(wèi)生效勞事業(yè),但從目前的開展現(xiàn)狀看,這些小型醫(yī)院信息管理系統(tǒng)的建設(shè)還很薄弱。而從醫(yī)院的效勞質(zhì)量和經(jīng)濟(jì)效益上考慮,HIS系統(tǒng)的有效運(yùn)行,將全面提升醫(yī)院的信息化管理水平,提高醫(yī)院管理人員、醫(yī)務(wù)人員的工作效率,降低醫(yī)院的管理本錢,為患者就醫(yī)提供便利,為醫(yī)院創(chuàng)造更大的社會效益和經(jīng)濟(jì)效益。因此,一個適應(yīng)社會開展的醫(yī)院,不僅需要有一流的硬件設(shè)施,同樣也需要一個適合醫(yī)院開展的HIS系統(tǒng)。由此可以看出,隨著我國城鄉(xiāng)衛(wèi)生

3、事業(yè)的開展壯大,針對小型醫(yī)院特點(diǎn)和需求開發(fā)HIS系統(tǒng),有著十分廣闊的市場和開展前景。第二章 需求分析說明書21 開發(fā)系統(tǒng)背景從我國大中小醫(yī)院及其信息化建設(shè)的情況,我們可以看到目前我國HIS建設(shè)過程中,鄉(xiāng)鎮(zhèn)及社區(qū)小型醫(yī)院的信息化建設(shè)并沒有得到長足的開展,沒有得到HIS企業(yè)的根本重視和主動推動。目前小型醫(yī)院信息化具有:投資要求小,建設(shè)周期短的特點(diǎn)。由于內(nèi)部機(jī)構(gòu)不復(fù)雜,容易調(diào)整使用的習(xí)慣,適應(yīng)新建的應(yīng)用模式。有較多可參考的信息化建設(shè)成功經(jīng)驗。因此,在醫(yī)療衛(wèi)生機(jī)構(gòu)中占絕對數(shù)量優(yōu)勢的中小醫(yī)院的信息化建設(shè)將對大型醫(yī)院更能有效推動,這是一個被無視的HIS市場。針對我國HIS開展這一特點(diǎn),我研發(fā)了主要用于農(nóng)村

4、鄉(xiāng)鎮(zhèn)和城市社區(qū)的小型HIS系統(tǒng)。因為投資小,技術(shù)強(qiáng)度不大,開發(fā)周期短的等特點(diǎn),完全符合小型醫(yī)院的特點(diǎn),這樣勢必會使小型醫(yī)院的信息化建設(shè)邁上一個新的臺階。22 開發(fā)任務(wù)概述根據(jù)實際調(diào)研情況,鄉(xiāng)鎮(zhèn)小型醫(yī)院的機(jī)構(gòu)設(shè)置十分簡單,看病就醫(yī)的流程也大致相同。對病人看病,其流程簡單概括為:對于非住院病人來說,首先,病人看病要進(jìn)行掛號登記,登記后當(dāng)相應(yīng)的科室找醫(yī)生開處方,然后拿著處方到門診收費(fèi)處交費(fèi),接著根據(jù)交費(fèi)單到藥房抓藥進(jìn)行治療。對于住院的病人來說,首先要完成住院登記,接著找到醫(yī)生進(jìn)行治療開處方,然后到收費(fèi)處交住院押金,最后治療完畢后辦理出院手續(xù)。對醫(yī)院方面來說要完成的功能是查看藥房、藥庫的藥品詳細(xì)信息,

5、對藥庫的藥品進(jìn)行盤點(diǎn)清查,從而減少損失,對收取的費(fèi)用生成單據(jù)等工作。因此,依據(jù)此業(yè)務(wù)流程,設(shè)置HIS的系統(tǒng)模塊如下列圖所示:醫(yī)院 藥庫住院部藥房門診藥品出庫藥庫盤點(diǎn)藥品入庫藥房發(fā)藥藥房管理門診收費(fèi)門診處方門診掛號出院登記費(fèi)用核算住院登記住院處方圖2-1 HIS的系統(tǒng)模塊圖對上這四個模塊根本可以完成小型醫(yī)院的信息化管理,從而提高醫(yī)院的信息化管理水平,提高醫(yī)院經(jīng)濟(jì)效益。23 工程開發(fā)技術(shù)本系統(tǒng)開發(fā)主要用到的技術(shù)是VusialBasic 6.0,Microsoft SQL Server 和ADO。VusialBasic 6.0簡介:Visual BasicVB是一種由微軟公司開發(fā)的包含協(xié)助開發(fā)環(huán)境的

6、事件驅(qū)動編程語言。從任何標(biāo)準(zhǔn)來說,VB都是世界上使用人數(shù)最多的語言。VB擁有圖形用戶界面GUI和快速應(yīng)用程序開發(fā)RAD系統(tǒng),可以輕易的使用 DAO、RDO、ADO 連接數(shù)據(jù)庫,或者輕松的創(chuàng)立 ActiveX 控件。程序員可以輕松的使用VB提供的組件快速建立一個應(yīng)用程序 。VB的中心思想就是要便于程序員使用,無論是新手或者專家。VB使用,可以簡單建立應(yīng)用程序的 GUI 系統(tǒng),但是又可以開發(fā)相當(dāng)復(fù)雜的應(yīng)用工程。VB的程序是一種基于可視化窗體組件的聯(lián)合,并且增加代碼來指定組件的屬性和方法。因為默認(rèn)的屬性和方法已經(jīng)有一局部定義在了組件內(nèi),所以程序員不用寫多少代碼就可以完成一個簡單的程序。窗體控件的增加

7、和改變可以用拖放技術(shù)實現(xiàn)。一個排列滿控件的工具箱來顯示可用控件,每個控件都有自己的屬性和事件。VB的程序可以包含一個或多個窗體,或者是一個主窗體和多個子窗體。因為越來越多組件的出現(xiàn),程序員可以選用自己需要的擴(kuò)展庫。VB使得大量的第三方控件有了自己的生存空間。因此,對于本系統(tǒng)的GUI設(shè)計來說,使用VB是不錯的選擇。Microsoft SQL Server簡介:數(shù)據(jù)庫系統(tǒng)本質(zhì)上是一個用計算機(jī)存儲記錄的系統(tǒng)。數(shù)據(jù)庫本身可被看作為一種收集計算機(jī)數(shù)據(jù)文件的倉庫或容器。系統(tǒng)用戶可以對這些文件執(zhí)行插入數(shù)據(jù)、檢索數(shù)據(jù)、更改數(shù)據(jù)、刪除數(shù)據(jù)等一系列操作。它是一個計算機(jī)系統(tǒng),該系統(tǒng)的目標(biāo)是存儲信息并支持用戶檢索和更

8、新所需要的信息。典型的數(shù)據(jù)庫系統(tǒng)有Oracle、 Sybase、 Microsoft SQL Server、 Access、 Foxpro等。絕大多數(shù)企業(yè)目前使用的關(guān)系型數(shù)據(jù)庫系統(tǒng)為Microsoft SQL Server。MS SQL Server是使用關(guān)系數(shù)據(jù)庫管理系統(tǒng)的標(biāo)準(zhǔn)語言SQL(Structured Query Language,結(jié)構(gòu)查詢語言)。SQL語言是所有關(guān)系數(shù)據(jù)庫的公共語言,因此,SQL語句是可以移植的。SQL語句通常用于完成一些數(shù)據(jù)庫的操作任務(wù),比方在數(shù)據(jù)庫中更新數(shù)據(jù),或者從數(shù)據(jù)庫中檢索數(shù)據(jù)等。SQL允許用戶在高層的數(shù)據(jù)結(jié)構(gòu)上工作,而不對單個記錄進(jìn)行操作,可操作記錄集,所

9、有SQL 語句接受集合作為輸入,返回集合作為輸出。企業(yè)級的系統(tǒng)開發(fā)更青睞MS SQL做為自己的數(shù)據(jù)庫系統(tǒng)。ADO技術(shù)簡介:ADO數(shù)據(jù)控件bfw黑色海岸線網(wǎng)絡(luò)平安資訊站ActiveX Data Objects (ADO) 是微軟最新的數(shù)據(jù)訪問技術(shù),它是Microsoft公司開發(fā)數(shù)據(jù)庫應(yīng)用程序面向?qū)ο蟮男陆涌凇K辉O(shè)計通過OLE DB實現(xiàn)對不同數(shù)據(jù)類型數(shù)據(jù)源的訪問。OLE DB包括三個主要的局部:數(shù)據(jù)提供者、數(shù)據(jù)消費(fèi)者和效勞組件。其關(guān)系如下圖:數(shù)據(jù)消費(fèi)者ADObfw黑色海岸線網(wǎng)絡(luò)平安資訊站數(shù)據(jù)提供者OLE DBORACLEMS SQL圖2-2 ADO技術(shù)圖ADO向我們提供了一個熟悉的,高層的對OL

10、E DB的Automation封裝接口。如同RDO對象是ODBC驅(qū)動程序接口一樣,ADO對象是OLE DB的接口;就像不同的數(shù)據(jù)庫系統(tǒng)都需要它們自己的ODBC驅(qū)動程序一樣,不同的數(shù)據(jù)源同樣要求有它們自己的OLE DB提供者OLE DB provider。目前,雖然OLE DB提供者比擬少,但微軟正積極推廣該技術(shù),并打算用OLE DB取代ODBC。 ADO向VB程序員提供了很多好處。包括易于使用,熟悉的界面,高速度以及較低的內(nèi)存占用已實現(xiàn)ADO2.0的Msado15.dll需要占用342K內(nèi)存,比RDO的Msrdo20.dll的368K略小,大約是DAO3.5的Dao350.dll所占內(nèi)存的60

11、。同傳統(tǒng)的數(shù)據(jù)對象層次DAO和RDO不同,ADO可以獨(dú)立創(chuàng)立。因此你可以只創(chuàng)立一個Connection對象,但是可以有多個,獨(dú)立的Recordset對象來使用它。ADO是DAO/RDO的后繼產(chǎn)物,它擴(kuò)展了DAO和RDO所使用的對象模型,具有更加簡單,更加靈活的操作性能。ADO在前端和數(shù)據(jù)源之間使用最少的層數(shù),提供了輕量、高性能的數(shù)據(jù)訪問接口,可通過ADO Data控件非編程和利用ADO對象編程來訪問各種數(shù)據(jù)庫。第三章 可行性分析可行性分析是系統(tǒng)分析階段的重要活動,是對系統(tǒng)進(jìn)行全面、客觀、概要的分析。它的任務(wù)是確定工程開發(fā)始否必要和可行。簡單來說,可行性分析是要決定“做還是不做 。它的主要任務(wù)是

12、根據(jù)需求分析的初步方案,從多方面分析系統(tǒng)實施的必要性,并對相關(guān)的各種因素進(jìn)行論證,從而對系統(tǒng)的決策提供科學(xué)的依據(jù)。針對本系統(tǒng),主要從經(jīng)濟(jì)可行可行性和技術(shù)可行性兩方面來分析。31 經(jīng)濟(jì)可行性對于小型醫(yī)院,因其結(jié)構(gòu)簡單,所需功能較少,因此在制作軟件的費(fèi)用方面也比大中型醫(yī)院的管理系統(tǒng)要廉價許多。因為系統(tǒng)便于維護(hù),因此,在軟件實施、運(yùn)行、維護(hù)的費(fèi)用上,也不會有太大的開銷,但其所帶來的經(jīng)濟(jì)效益卻相當(dāng)可觀。HIS系統(tǒng)將會填補(bǔ)管理上的漏洞,有效的防止藥品喪失、過期等問題所帶來的經(jīng)濟(jì)損失。改善了患者的就醫(yī)環(huán)境,提高了醫(yī)院的工作效率和效勞質(zhì)量。因此,對HIS投入的本錢遠(yuǎn)小于系統(tǒng)本身的價值。32 技術(shù)可行性在伴隨

13、著信息化時代前進(jìn)的步伐,信息化應(yīng)用于各個領(lǐng)域的今天,不管是從硬件還是從軟件上,醫(yī)院信息管理系統(tǒng)的開發(fā)中都可以實現(xiàn),可以滿足醫(yī)院管理的各個環(huán)節(jié)。不管是C/S 、B/S或者是三層模型的開發(fā)模式,都可以根據(jù)需求來做出相應(yīng)的模式。這些技術(shù)已在各種信息管理系統(tǒng)中廣泛應(yīng)用,通過實踐證明,這些技術(shù)也同樣適用于小型醫(yī)院信息管理系統(tǒng)的開發(fā)。第四章 系統(tǒng)設(shè)計說明書本系統(tǒng)的設(shè)計分為用VB搭建的前臺界面的設(shè)計和用MS SQL搭建后臺數(shù)據(jù)庫的設(shè)計,利用ADO技術(shù)實現(xiàn)前臺界面和后臺數(shù)據(jù)庫的連接。整個系統(tǒng)采用灰色為主色調(diào),界面友好,操作簡單。41用戶登錄窗體的設(shè)計411 功能分析用戶登錄是進(jìn)入系統(tǒng)的必要條件,用戶只有提供正

14、確的登錄信息,才可以啟動系統(tǒng)主窗體。412 設(shè)計原理首先使用ADO技術(shù),使VB與數(shù)據(jù)庫建立連接,然后在登錄窗體中,輸入登錄者的用戶名和密碼,會在數(shù)據(jù)庫里檢索,如果信息正確那么登錄成功,如果信息錯誤,那么提示錯誤。為了防止密碼的喪失,特設(shè)置密碼嘗試只能為三次,大于三次的嘗試,系統(tǒng)將會自動退出。413 界面設(shè)計在已翻開個“標(biāo)準(zhǔn)EXE工程里添加一個名為frmlogin的“登錄對話框窗體。其界面和控件屬性如下所示:圖4-1 界面設(shè)計圖窗體和控件主要屬性如下表所示:控件屬性屬性設(shè)置frmLogincapation登錄Label1capation醫(yī)院信息管理系統(tǒng)Text1nametxtusernameTe

15、xt2NametxtpwdCommand1namecmdokcapation確定Command2nameCmdcancelcapation取消注:txtusername代表名為txtusername的文本框; cmdOK代表名為cmdOK的按鈕414 數(shù)據(jù)庫設(shè)計與實現(xiàn)在數(shù)據(jù)庫his_test里插入t_loginuser作為存儲登錄用戶信息的表,并把其字段設(shè)計如下圖:圖4-2 登錄用戶信息圖向表中插入數(shù)據(jù),如username=admin ,pwd=111。在當(dāng)前工程下添加模塊并利用ADO技術(shù)實現(xiàn)數(shù)據(jù)庫與VB控件的連接。代碼如下:Public objcn As New ADODB.Connecti

16、onPublic objrs As ADODB.RecordsetPublic Sub Main()objcn.Provider = SQLOLEDBobjcn.ConnectionString = User ID=sa;Initial Catalog=his_test;Data Source=icebeanobjcn.Open If Not objcn.State = adStateOpen Then MsgBox 數(shù)據(jù)庫異常或連接錯誤, vbAbortRetryIgnore, 出錯 End Else MsgBox 歡送您進(jìn)入HIS系統(tǒng), , 連接數(shù)據(jù)庫成功 frmLogin.Show En

17、d IfEnd Sub在窗體frmlogin中完成當(dāng)用戶點(diǎn)擊確定時,在數(shù)據(jù)庫t_loginuser表中進(jìn)行檢索,假設(shè)成功那么進(jìn)入,假設(shè)失敗那么報錯。連接三次不成功,自動退出系統(tǒng)。其實現(xiàn)代碼如下: Dim Account As IntegerPrivate Sub cmdcancel_Click()Dim Str As StringStr = MsgBox(您好,您確定退出該系統(tǒng)管理嗎?, vbQuestion + vbYesNo, 確認(rèn)退出?)If Str = vbYes ThenEndEnd IfEnd SubPrivate Sub cmdOK_Click()Account = Accoun

18、t + 1 If Trim(txtUserName.Text = ) Then MsgBox 沒有輸入用戶名稱,請重新輸入!, vbOKOnly + vbExclamation, 警告 txtUserName.SetFocus Else Set objrs = New ADODB.Recordset objrs.Open select * from t_loginuser where username= & txtUserName.Text & and pwd= & txtpwd.Text & , objcn, adOpenDynamic, adLockOptimistic, adCmdTex

19、t If Not objrs.EOF Then Framain.Show Me.Hide ElseIf Account = 3 Then MsgBox 三次錯誤退出系統(tǒng)!, vbInformation, 輸入錯誤 End Else MsgBox 帳號或密碼錯誤!, vbInformation, 輸入錯誤 End IfEnd IfEnd SubPrivate Sub Form_Load()Account = 0txtUserName.Text = txtpwd.Text = End Sub42 主窗體的設(shè)計421 功能分析 主窗體是系統(tǒng)中不可或缺的一局部,它可以完成與指定窗體進(jìn)行鏈接,快速的進(jìn)入

20、所需模塊的任務(wù)。422 設(shè)計原理利用VB知識,使指定的菜單項選擇項與指定模塊建立連接。423 界面設(shè)計 在當(dāng)前工程中,添加MDI窗體,MDI窗體為多文檔界面,且一個工程中只能有一個MDI窗體。利用“菜單編輯器對該窗體進(jìn)行編輯所需模塊,并設(shè)置相應(yīng)模塊的名稱。圖4-3 菜單編輯器最后生成Framain主窗體,如圖:圖4-4 主窗體424 主窗體的實現(xiàn)主窗體的任務(wù)只是與各個子模塊進(jìn)行鏈接,不需要在數(shù)據(jù)庫中進(jìn)行處理。因此,在主窗體中設(shè)計以下代碼即可:Private Sub 單擊對象_Click() 獲取鼠標(biāo)單擊事件 窗體名.Show 顯示指定窗體 窗體名. ZOrder 0End Sub例如:Priv

21、ate Sub mChangeEmp_Click() frmLogin.ShowfrmLogin.ZOrder 0 End Sub 即只需單擊菜單欄中名為mChangeEmp的菜單,那么顯示名為frmlogin的窗體。4.3 系統(tǒng)設(shè)置模塊設(shè)計431 功能分析 系統(tǒng)設(shè)置主要完成更換操作員、修改密碼和退出系統(tǒng)的操作,方便用戶的更換以及保證用戶使用系統(tǒng)的平安性。432 設(shè)計原理 更換操作員與已建立好的frmlogin窗體進(jìn)行鏈接,無需建立新的窗體。當(dāng)用戶修改自身密碼時,首先輸入遠(yuǎn)密碼,先在數(shù)據(jù)庫中判斷原密碼是否一致,再輸入新的密碼,并經(jīng)過確認(rèn)。兩次輸入新密碼不一樣那么報錯。當(dāng)新密碼被修改并存入數(shù)據(jù)庫

22、后,那么系統(tǒng)提示修改成功。433界面設(shè)計 在當(dāng)前工程中建立名為changepwd的窗體,其界面和控件屬性如下所示: 圖4-5 界面設(shè)計窗體和控件主要屬性如下表所示:控件屬性屬性設(shè)置changepwdcapation修改密碼Text1nametxtpwdText2nametxtnewpwdText3nameconfirmpwdCommand1namecmdokcapation確定Command2nameCmdcancelcapation取消4.4 醫(yī)院管理模塊設(shè)計441 功能分析門診管理系統(tǒng):門診管理系統(tǒng)是醫(yī)院信息流的起點(diǎn),主要完成病人身份登記、門診掛號、門診劃價收費(fèi)并生成費(fèi)用清單等功能,以便用

23、戶進(jìn)行核查。藥房管理系統(tǒng):藥房管理系統(tǒng)應(yīng)用于門診藥房、住院處各病區(qū)藥房,主要完成窗口發(fā)藥和各藥房藥品盤點(diǎn)、清查等工作。方便醫(yī)院工作者對藥品進(jìn)行無重復(fù)勞動力的管理和藥品的準(zhǔn)確發(fā)放。藥庫管理系統(tǒng):通過對藥品的根本信息、入庫、銷售出庫、盤點(diǎn)等信息的處理,完成對藥品藥庫出入庫明細(xì)、藥品庫存的綜合管理。提高再次盤點(diǎn)藥品的工作效率,減少藥品過期、損耗所帶來的經(jīng)濟(jì)損失。住院管理系統(tǒng):通過對住院登記、住院劃價收費(fèi)、出院結(jié)算等信息的處理實現(xiàn)對住院病人的全面管理。并生成住院費(fèi)用清單,方便用戶核查。442 設(shè)計原理門診管理系統(tǒng):操作員對前來掛號的病人進(jìn)行身份登記、掛號辦理以及收費(fèi)等工作,并把其信息存儲至相應(yīng)的數(shù)據(jù)庫

24、表中。對門診收費(fèi)工程要生成報表,產(chǎn)生收費(fèi)明細(xì)單。藥房管理系統(tǒng):操作員主要完成應(yīng)用于門診藥房、住院處各病區(qū)藥房窗口發(fā)藥和各藥房藥品盤點(diǎn)、清查等工作,把其信息存儲至相應(yīng)的數(shù)據(jù)庫表中,并生成藥房藥品的信息明細(xì)報表和藥房發(fā)藥的處方明細(xì)單。藥庫管理系統(tǒng):操作員完成對藥庫藥品出入庫的信息處理的工作,把其信息存儲至相應(yīng)的數(shù)據(jù)庫表中,并生成相應(yīng)的報說明細(xì)單。住院管理系統(tǒng):操作員可以完成對住院病人在住院期間的信息處理工作,把其信息存儲至相應(yīng)的數(shù)據(jù)庫表中,產(chǎn)生住院間費(fèi)用明細(xì)單,對住院病人進(jìn)行全面管理。443界面設(shè)計:(以門診掛號為例)門診管理系統(tǒng):門診管理系統(tǒng)分為三個子模塊:門診掛號ClinicRegiseter

25、、門診處方(ClinicList)、門診收費(fèi)(ClinicFee)。其界面如下所示: 圖4-6 門診管理系統(tǒng)控件屬性屬性設(shè)置ClinicListcapation門診處方Text1nametxtpatientnumText2nametxtpatientnameComboBox1namecmbgendarText3nametxtmedicinenameComboBox2namecmbspecText4nametxtqualityComboBox3namecmbnumunitComboBox4namecmbdeptnameText5nametxtempnameCommand1namecmdsavec

26、apation確定Command2nameCmdcancelcapation取消Command3nameCmdexitcapation退出窗體和控件主要屬性如下表所示: 444 數(shù)據(jù)庫設(shè)計與實現(xiàn):(以門診掛號為例)在數(shù)據(jù)庫his_test中新建表t_ClinicRegister,并設(shè)計為掛號信息所存儲的字段,如下:圖4-7 掛號信息 在當(dāng)前工程的模塊下建立兩個過程TransactSQL(ByVal SQL As String)和Function Testtxt(txt As String)。第一個過程是為了實現(xiàn)將利用所定義的SQL語句將所有信息寫入數(shù)據(jù)庫;第二個函數(shù)是為了實現(xiàn)判斷輸入信息內(nèi)容是

27、否為空,假設(shè)為空的話,那么提示錯誤。具體代碼如下:定義Transactsql子過程:Public Sub TransactSQL(ByVal SQL As String)Dim objcn As ADODB.ConnectionDim strArray() As StringSet objcn = New ADODB.Connection 創(chuàng)立連接On Error GoTo TransactSQL_Error objcn.Provider = SQLOLEDB objcn.ConnectionString = User ID=sa;Initial Catalog=his_test;Data S

28、ource=icebean strArray = Split(SQL) objcn.Open 翻開連接 objcn.Execute SQL 執(zhí)行命令TransactSQL_Exit: Set objcn = Nothing Exit SubTransactSQL_Error: MsgBox 查詢錯誤: & Err.Description Resume TransactSQL_ExitEnd Sub定義Testtxt函數(shù)Public Function Testtxt(txt As String) As Boolean If Trim(txt) = Then Testtxt = False Els

29、e Testtxt = True End IfEnd Function當(dāng)用戶在“門診掛號窗體中單擊“保存按鈕時,要求把所輸入的信息保存到t_ClincRegister表中。單擊“取消按鈕時,去除所輸入的所有內(nèi)容,單擊“退出按鈕時,退出子系統(tǒng)。實現(xiàn)代碼如下:Private Sub cmdcancel_Click()txtpatientnum.Text = txtname = txtage = txtempname = txtyear = End SubPrivate Sub cmdexit_Click()Unload MeEnd SubPrivate Sub cmdsave_Click() Di

30、m txtSQL$If Not Testtxt(txtpatientnum.Text) Then MsgBox 請輸入病人編號!, vbOKOnly + vbExclamation, 警告 txtpatientnum.SetFocus Exit SubEnd IfIf Not Testtxt(txtname.Text) Then MsgBox 請輸入病人姓名!, vbOKOnly + vbExclamation, 警告 txtname.SetFocusExit SubEnd IfIf Not Testtxt(cmbgendar.Text) Then MsgBox 請選擇性別!, vbOKOnl

31、y + vbExclamation, 警告 cmbgendar.SetFocus Exit SubEnd IfIf Not Testtxt(txtage.Text) Then MsgBox 請輸入年齡!, vbOKOnly + vbExclamation, 警告 txtage.SetFocus Exit SubEnd IfIf Not Testtxt(cmbfeecategory.Text) Then MsgBox 請選擇費(fèi)用類型!, vbOKOnly + vbExclamation, 警告 cmbfeecategory.SetFocus Exit SubEnd IfIf Not Testtx

32、t(cmbregcategroy.Text) Then MsgBox 請選擇掛號類別!, vbOKOnly + vbExclamation, 警告 cmbregcategroy.SetFocus Exit SubEnd IfIf Not Testtxt(cmbdeptname.Text) Then MsgBox 請選擇科室名稱!, vbOKOnly + vbExclamation, 警告 cmbdeptname.SetFocus Exit SubEnd IfIf Not Testtxt(txtempname.Text) Then MsgBox 請輸入醫(yī)生姓名!, vbOKOnly + vbEx

33、clamation, 警告 txtempname.SetFocus Exit SubEnd IfIf Not Testtxt(cmbempprof.Text) Then MsgBox 請選擇醫(yī)生職稱!, vbOKOnly + vbExclamation, 警告 cmbempprof.SetFocus Exit SubEnd IfIf Not Testtxt(txtclinicemp.Text) Then MsgBox 請輸入掛號員姓名!, vbOKOnly + vbExclamation, 警告 txtclinicemp.SetFocus Exit SubEnd IfIf Not Testtx

34、t(cmbclinicfee.Text) Then MsgBox 請選擇門診費(fèi)用!, vbOKOnly + vbExclamation, 警告 cmbclinicfee.SetFocus Exit SubEnd IfIf Not Testtxt(txtyear.Text) Then MsgBox 請輸入掛號日期!, vbOKOnly + vbExclamation, 警告 txtyear.SetFocus Exit SubEnd IfIf Not IsNumeric(Trim(txtpatientnum.Text) Then MsgBox 病人編號請輸入數(shù)字!, vbOKOnly + vbEx

35、clamation, 警告 Exit Sub txtpatientnum.SetFocusEnd IfIf Not IsDate(txtyear.Text) Then MsgBox 日期應(yīng)輸入日期格式y(tǒng)yyy-mm-dd!, vbOKOnly + vbExclamation, 警告 txtyear.SetFocusElse txtyear = Format(txtyear, yyyy-mm-dd)txtSQL = insert into t_clinicregister values( & Trim(txtpatientnum) & , & Trim(txtname) & , & Trim(c

36、mbgendar) & , & Trim(txtage) & , & Trim(cmbfeecategory) & , & Trim(cmbregcategroy) & , & Trim(cmbdeptname) & , & Trim(txtempname) & , & Trim(cmbempprof) & , & Trim(txtclinicemp) & , & Trim(cmbclinicfee) & , & Trim(txtyear) & ) Call TransactSQL(txtSQL) MsgBox 保存成功!, vbOKOnly + vbExclamation, 警告 txtpa

37、tientnum.Text = txtname = txtage = txtempname = txtyear = txtpatientnum.SetFocus Me.HideEnd IfEnd Sub第五章 系統(tǒng)測試5.1 系統(tǒng)開發(fā)環(huán)境開發(fā)與運(yùn)行環(huán)境會影響到數(shù)據(jù)庫的運(yùn)行,本系統(tǒng)的開發(fā)環(huán)境選擇如下:開發(fā)環(huán)境:Windows XP Professional SP2開發(fā)工具:Micosoft Visual Basic 6.0 中文版數(shù)據(jù)庫管理系統(tǒng):SQL Server 2000數(shù)據(jù)訪問技術(shù):ActiveX Data Objects5.2 系統(tǒng)測試系統(tǒng)測試環(huán)境:測試環(huán)境:Windows XP Pro

38、fessional 運(yùn)行工具:SQL Server 2000 系統(tǒng)功能測試:功能測試是開發(fā)軟件不可缺少的一步,對功能測試的結(jié)果將直接可以得出軟件性能的優(yōu)劣以及對軟件以后運(yùn)行中的維護(hù)。這里,我主要從系統(tǒng)登錄、具體函數(shù)測試和后臺的跟蹤這三個方面,以圖示的方式來說明,具體如下: 注:前臺已和數(shù)據(jù)庫連接成功 注:密碼三次錯誤,退出系統(tǒng)注:當(dāng)輸入日期格式不正確時,提示錯誤 注:門診掛號保存成功在SQL Server2000查詢分析器里輸入use his_testgo select * from t_clinicregister 第六章 結(jié)束語由于這是我第一次開發(fā)軟件,而且是管理系統(tǒng)中最為復(fù)雜的HIS軟件

39、。通過這一次的開發(fā),我徹底認(rèn)清了我在經(jīng)驗、知識方面都存在著嚴(yán)重的匱乏。由于時間的倉促,技術(shù)的缺陷,在本系統(tǒng)中,我沒有完成生成明細(xì)的報表。另外,在建立數(shù)據(jù)庫和設(shè)計表的能力關(guān)聯(lián)方面上,也需要進(jìn)一步的加強(qiáng)。而在開發(fā)過程中,我不僅學(xué)到了關(guān)于技術(shù)和軟件開發(fā)流程等方面的知識,更學(xué)到了學(xué)習(xí)新知識快速的學(xué)習(xí)方法,這將對我受益終身。本系統(tǒng)雖存在著經(jīng)驗和技術(shù)方面的缺乏,但它操作簡單、界面友好、數(shù)據(jù)庫管理容易、平安性高等不少優(yōu)點(diǎn)也是不容無視的,更重要的是它帶給人的一種自信,是彌足珍貴的。參考文獻(xiàn)1 夏邦貴 劉凡馨等,?SQL Server數(shù)據(jù)庫開發(fā)經(jīng)典實例精解?,機(jī)械工業(yè)出版社,2006年2 劉萌 周學(xué)明 郭安源,

40、?VisualBasic企業(yè)辦公系統(tǒng)開發(fā)實例導(dǎo)航?,人民郵電出版社,2003年3 王成強(qiáng) 馬軻,?新概念VisualBasic6.0教程?,科學(xué)出版社,2003年4 李香敏,?SQL Server2000編程員指南?,北京希望電子出版社,2000年5 汪作文,?軟件工程?,重慶大學(xué)出版社,2004年6 張鳳琴,?數(shù)據(jù)庫原理及應(yīng)用?,北方交通大學(xué)出版社,2005年7 趙瓊?Visual Basic程序設(shè)計?,中國勞動社會保障出版社 2003.068 周繼良,?圖書分類學(xué)?,武漢大學(xué)出版社,1992.069 申莉莉,?數(shù)據(jù)庫系統(tǒng)與Access教程?清華大學(xué)出版社,2003.1210求是科技,?Vi

41、sualBasic教育信息化系統(tǒng)開發(fā)實例導(dǎo)航?,人民郵電出版社,2003.06相關(guān)代碼Option Explicit 注冊表關(guān)鍵字平安選項.Const READ_CONTROL = &H20000Const KEY_QUERY_VALUE = &H1Const KEY_SET_VALUE = &H2Const KEY_CREATE_SUB_KEY = &H4Const KEY_ENUMERATE_SUB_KEYS = &H8Const KEY_NOTIFY = &H10Const KEY_CREATE_LINK = &H20Const KEY_ALL_ACCESS = KEY_QUERY_VA

42、LUE + KEY_SET_VALUE + _ KEY_CREATE_SUB_KEY + KEY_ENUMERATE_SUB_KEYS + _ KEY_NOTIFY + KEY_CREATE_LINK + READ_CONTROL 注冊表關(guān)鍵字 ROOT 類型.Const HKEY_LOCAL_MACHINE = &H80000002Const ERROR_SUCCESS = 0Const REG_SZ = 1 獨(dú)立的空的終結(jié)字符串Const REG_DWORD = 4 32位數(shù)字Const gREGKEYSYSINFOLOC = SOFTWAREMicrosoftShared Tools L

43、ocationConst gREGVALSYSINFOLOC = MSINFOConst gREGKEYSYSINFO = SOFTWAREMicrosoftShared ToolsMSINFOConst gREGVALSYSINFO = PATHPrivate Declare Function RegOpenKeyEx Lib advapi32 Alias RegOpenKeyExA (ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, ByVal samDesired As Long, ByRef p

44、hkResult As Long) As LongPrivate Declare Function RegQueryValueEx Lib advapi32 Alias RegQueryValueExA (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, ByRef lpType As Long, ByVal lpData As String, ByRef lpcbData As Long) As LongPrivate Declare Function RegCloseKey Lib adva

45、pi32 (ByVal hKey As Long) As LongPrivate Sub cmdSysInfo_Click() Call StartSysInfoEnd SubPrivate Sub cmdOK_Click() Unload MeEnd SubPrivate Sub Form_Load() Me.Caption = 關(guān)于 & App.Title lblVersion.Caption = 版本 & App.Major & . & App.Minor & . & App.Revision lblTitle.Caption = App.TitleEnd SubPublic Sub S

46、tartSysInfo() On Error GoTo SysInfoErr Dim rc As Long Dim SysInfoPath As String 試圖從注冊表中獲得系統(tǒng)信息程序的路徑及名稱. If GetKeyValue(HKEY_LOCAL_MACHINE, gREGKEYSYSINFO, gREGVALSYSINFO, SysInfoPath) Then 試圖僅從注冊表中獲得系統(tǒng)信息程序的路徑. ElseIf GetKeyValue(HKEY_LOCAL_MACHINE, gREGKEYSYSINFOLOC, gREGVALSYSINFOLOC, SysInfoPath) T

47、hen 32位文件版本的有效位置 If (Dir(SysInfoPath & MSINFO32.EXE) ) Then SysInfoPath = SysInfoPath & MSINFO32.EXE 錯誤 - 文件不能被找到. Else GoTo SysInfoErr End If 錯誤 - 注冊表相應(yīng)條目不能被找到. Else GoTo SysInfoErr End If Call Shell(SysInfoPath, vbNormalFocus) Exit SubSysInfoErr: MsgBox 此時系統(tǒng)信息不可用, vbOKOnlyEnd SubPublic Function Ge

48、tKeyValue(KeyRoot As Long, KeyName As String, SubKeyRef As String, ByRef KeyVal As String) As Boolean Dim i As Long 循環(huán)計數(shù)器 Dim rc As Long 返回代碼 Dim hKey As Long 翻開的注冊表關(guān)鍵字句柄 Dim hDepth As Long Dim KeyValType As Long 注冊表關(guān)鍵字?jǐn)?shù)據(jù)類型 Dim tmpVal As String 注冊表關(guān)鍵字值的臨時存儲器 Dim KeyValSize As Long 注冊表關(guān)鍵自變量的尺寸 - 翻開 H

49、KEY_LOCAL_MACHINE. 下的 RegKey - rc = RegOpenKeyEx(KeyRoot, KeyName, 0, KEY_ALL_ACCESS, hKey) 翻開注冊表關(guān)鍵字 If (rc ERROR_SUCCESS) Then GoTo GetKeyError 處理錯誤. tmpVal = String$(1024, 0) 分配變量空間 KeyValSize = 1024 標(biāo)記變量尺寸 - 檢索注冊表關(guān)鍵字的值. - rc = RegQueryValueEx(hKey, SubKeyRef, 0, _ KeyValType, tmpVal, KeyValSize)

50、獲得/創(chuàng)立關(guān)鍵字值 If (rc ERROR_SUCCESS) Then GoTo GetKeyError 處理錯誤 If (Asc(Mid(tmpVal, KeyValSize, 1) = 0) Then Win95 外接程序空終結(jié)字符串. tmpVal = Left(tmpVal, KeyValSize - 1) Null 被找到,從字符串中別離出來 Else WinNT 沒有空終結(jié)字符串. tmpVal = Left(tmpVal, KeyValSize) Null 沒有被找到, 別離字符串 End If - 決定轉(zhuǎn)換的關(guān)鍵字的值類型. - Select Case KeyValType

51、搜索數(shù)據(jù)類型. Case REG_SZ 字符串注冊關(guān)鍵字?jǐn)?shù)據(jù)類型 KeyVal = tmpVal 復(fù)制字符串的值 Case REG_DWORD 四字節(jié)的注冊表關(guān)鍵字?jǐn)?shù)據(jù)類型 For i = Len(tmpVal) To 1 Step -1 將每位進(jìn)行轉(zhuǎn)換 KeyVal = KeyVal + Hex(Asc(Mid(tmpVal, i, 1) 生成值字符。 By Char。 Next KeyVal = Format$(&h + KeyVal) 轉(zhuǎn)換四字節(jié)的字符為字符串 End Select GetKeyValue = True 返回成功 rc = RegCloseKey(hKey) 關(guān)閉注冊表關(guān)

52、鍵字 Exit Function 退出 GetKeyError: 錯誤發(fā)生后將其去除. KeyVal = 設(shè)置返回值到空字符串 GetKeyValue = False 返回失敗 rc = RegCloseKey(hKey) 關(guān)閉注冊表關(guān)鍵字End FunctionPrivate Sub lblTitle_Click()End SubPrivate Sub lblVersion_Click()End SubPrivate Sub Data1_Validate(Action As Integer, save As Integer)End SubPrivate Sub TreeView1_Befor

53、eLabelEdit(cancel As Integer)End SubCLINICFEE代碼:Private Sub cmdcancel_Click() txtpatientname.Text = txtempname.Text = txtmedecinename.Text = txtquility.Text = txtprice.Text = txtmoney.Text = txtinvoicenum.Text = End SubPrivate Sub cmdexit_Click()Unload MeEnd SubPrivate Sub cmdsave_Click() Dim txtSQL

54、 As String If Not Testtxt(txtpatientname.Text) Then MsgBox 請輸入病人姓名!, vbOKOnly + vbExclamation, 警告 txtpatientname.SetFocus Exit Sub End If If Not Testtxt(cmbdeptname.Text) Then MsgBox 請選擇執(zhí)行科室!, vbOKOnly + vbExclamation, 警告 cmbdeptname.SetFocus Exit Sub End If If Not Testtxt(txtempname.Text) Then MsgB

55、ox 請輸入醫(yī)生姓名!, vbOKOnly + vbExclamation, 警告 txtempname.SetFocus Exit Sub End If If Not Testtxt(cmbfeecategory.Text) Then MsgBox 請選擇費(fèi)用類別!, vbOKOnly + vbExclamation, 警告 cmbfeecategory.SetFocus Exit Sub End If If Not Testtxt(txtmedecinename.Text) Then MsgBox 請輸入藥品名稱!, vbOKOnly + vbExclamation, 警告 txtmede

56、cinename.SetFocus Exit Sub End If If Not Testtxt(cmbspec.Text) Then MsgBox 請選擇藥品規(guī)格!, vbOKOnly + vbExclamation, 警告 cmbspec.SetFocus Exit Sub End If If Not Testtxt(txtquility.Text) Then MsgBox 請輸入藥品數(shù)量!, vbOKOnly + vbExclamation, 警告 txtquility.SetFocus Exit Sub End If If Not Testtxt(cmbnumunit.Text) Th

57、en MsgBox 請選擇計量單位!, vbOKOnly + vbExclamation, 警告 cmbnumunit.SetFocus Exit Sub End If If Not Testtxt(txtprice.Text) Then MsgBox 請輸入藥品單價!, vbOKOnly + vbExclamation, 警告 txtprice.SetFocus Exit Sub End If If Not Testtxt(txtmoney.Text) Then MsgBox 請輸入應(yīng)收金額!, vbOKOnly + vbExclamation, 警告 txtmoney.SetFocus E

58、xit Sub End If If Not Testtxt(txtinvoicenum.Text) Then MsgBox 請輸入收據(jù)編號!, vbOKOnly + vbExclamation, 警告 txtinvoicenum.SetFocus Exit Sub End If txtSQL = insert into t_clinicfee values( & Trim(txtpatientname) & , & Trim(cmbdeptname) & , & Trim(txtempname) & , & Trim(cmbfeecategory) & , & Trim(txtmedecine

59、name) & , & Trim(cmbspec) & , & Trim(txtquility) & , & Trim(cmbnumunit) & , & Trim(txtprice) & , & Trim(txtmoney) & , & Trim(txtinvoicenum) & ) Call TransactSQL(txtSQL) MsgBox 保存成功!, vbOKOnly + vbExclamation, 警告 txtpatientname.Text = txtempname.Text = txtmedecinename.Text = txtquility.Text = txtpric

60、e.Text = txtmoney.Text = txtinvoicenum.Text = txtpatientname.SetFocus End SubPrivate Sub Form_Load()End SubCLINICLIST代碼Private Sub cmdcancel_Click()txtpatientnum.Text = txtpatientname.Text = txtmedicinename.Text = txtquality.Text = txtempname.Text = End SubPrivate Sub cmdexit_Click()Unload MeEnd Sub

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論