【《基于Java的藥品管理系統(tǒng)設(shè)計(jì)》10000字】_第1頁(yè)
【《基于Java的藥品管理系統(tǒng)設(shè)計(jì)》10000字】_第2頁(yè)
【《基于Java的藥品管理系統(tǒng)設(shè)計(jì)》10000字】_第3頁(yè)
【《基于Java的藥品管理系統(tǒng)設(shè)計(jì)》10000字】_第4頁(yè)
【《基于Java的藥品管理系統(tǒng)設(shè)計(jì)》10000字】_第5頁(yè)
已閱讀5頁(yè),還剩28頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

目錄-第1章項(xiàng)目概述1.1問(wèn)題描述可以讓醫(yī)院能夠更加簡(jiǎn)便的管理藥品信息以及藥品的一些使用情況還有藥品的儲(chǔ)備情況。能夠讓醫(yī)護(hù)人員能夠更加快捷的把病人所需要的藥品盡快找出送到病人手里,減少了醫(yī)護(hù)人員的工作負(fù)擔(dān)以及病人的等待時(shí)間。藥品管理系統(tǒng)功能包括:醫(yī)護(hù)人員可以對(duì)庫(kù)存藥品進(jìn)行管理(增、刪、改、查),對(duì)病人信息進(jìn)行管理包括授權(quán)管理以及病人取藥停藥等操作。病人可以通過(guò)系統(tǒng)快速了解清楚藥品信息,選擇用藥(當(dāng)然是在醫(yī)護(hù)人員同意授權(quán)用藥的情況下)或者選擇停藥。目前很多醫(yī)院(包括大小醫(yī)院)基本還處在醫(yī)護(hù)人員人工進(jìn)行藥品管理的階段。本產(chǎn)品可以有效減少醫(yī)護(hù)人員的工作量,以及代替部分人力勞動(dòng)。1.2藥品管理的項(xiàng)目目標(biāo)藥品管理系統(tǒng)的開(kāi)發(fā)目的是一方面:解決傳統(tǒng)醫(yī)院手工作業(yè)帶來(lái)的各種難題,還能使得工作人員更直觀的快速準(zhǔn)確的把藥給病人,更準(zhǔn)確地快速地查詢(xún)到藥品的管理記錄,從而方便工作人員對(duì)藥品進(jìn)行分揀補(bǔ)充,以避免在找尋藥品時(shí)浪費(fèi)時(shí)間,以此來(lái)減輕工作人員的工作負(fù)擔(dān)。另一方面:解決了病人拿藥時(shí)候的排隊(duì)環(huán)節(jié)可以節(jié)省病人的很多時(shí)間,能夠很快速的拿到自己需要的藥(處方藥還得經(jīng)過(guò)醫(yī)護(hù)人員),可以查找到自己所需要的藥物以及看到藥物信息。1.3項(xiàng)目適用范圍醫(yī)院,藥店等需要藥品管理的場(chǎng)合。1.4項(xiàng)目應(yīng)遵守的規(guī)范與標(biāo)準(zhǔn)行業(yè)標(biāo)準(zhǔn):1.藥典:藥品的生產(chǎn),使用和檢測(cè)符合法定標(biāo)準(zhǔn)2.局頒。3.注冊(cè)。4.其他:質(zhì)量符合規(guī)范。法律法規(guī):符合《中華人民共和國(guó)藥品管理法》1.5涉眾組織機(jī)構(gòu):醫(yī)院以及藥典等。普通用戶(hù)(病人):可以查找到自己所需要的藥物以及看到藥物信息。管理員(醫(yī)護(hù)人員):可以管理普通用戶(hù)(病人)的信息,還能很快知道藥品的相信息(庫(kù)存等)并作出及時(shí)的改動(dòng)。

第2章需求分析2.1藥品管理系統(tǒng)的業(yè)務(wù)需求2.1.1藥品管理系統(tǒng)的業(yè)務(wù)流程醫(yī)生登錄進(jìn)入藥品管理系統(tǒng)通過(guò)對(duì)藥品進(jìn)行增加、刪除、修改、更新的操作,普通用戶(hù)可以登錄系統(tǒng)對(duì)已經(jīng)在用的要進(jìn)行操作如圖2.1所示。圖2.1總體業(yè)務(wù)流程圖2.1.2業(yè)務(wù)對(duì)象在業(yè)務(wù)設(shè)計(jì)階段管理員(醫(yī)生)有唯一身份標(biāo)識(shí)id數(shù)據(jù)類(lèi)型定義為INT類(lèi)型,同時(shí)也應(yīng)該有能易于區(qū)分管理員(醫(yī)生)的姓名即name。同樣的普通用戶(hù)(病人)也應(yīng)該有相應(yīng)的id,name,藥品也有屬于各種藥品的id編號(hào),藥品名稱(chēng)。詳細(xì)的藥品管理設(shè)計(jì)如圖2.2所示。圖2.2藥品管理系統(tǒng)的領(lǐng)域設(shè)計(jì)2.2藥品管理系統(tǒng)的功能性需求2.2.1管理藥品的用例概述藥品管理系統(tǒng)中用戶(hù)分為管理員(醫(yī)護(hù)人員)和普通用戶(hù)(病人)其中管理員可以對(duì)藥品進(jìn)行增、刪、改和查操作并且可以對(duì)普通用戶(hù)進(jìn)行管理操作。涉及到的詳細(xì)高層用例圖如圖2.3所示:圖2.3藥品管理系統(tǒng)的高層用例圖下面的涉及到的登錄用例、藥品的CURD用例、處理藥方的用例、和管理用戶(hù)的用例。如表2.1-2.2所示。表2.1病人對(duì)操作系統(tǒng)的用例描述標(biāo)號(hào)用例操作名稱(chēng)操作說(shuō)明Sign_in登錄首頁(yè)操作病人進(jìn)入藥品管理系統(tǒng)之前必須的身份檢測(cè)。See_drugs查看藥品信息病人對(duì)藥品信息的查看。See_user查看個(gè)人信息病人對(duì)自己身份信息的查看。Up_user修改個(gè)人信息病人對(duì)自己的基礎(chǔ)信息(例如:姓名)等進(jìn)行修改(不可修改病史等重要信息)。TD_prescription處理藥方病人請(qǐng)求拿藥。表2.2醫(yī)護(hù)人對(duì)系統(tǒng)操作的用例描述標(biāo)號(hào)用例操作名稱(chēng)操作說(shuō)明Sign_in登錄操作醫(yī)護(hù)人員進(jìn)入藥品管理系統(tǒng)前的身份檢測(cè)。Admi_user管理登陸者自己的信息醫(yī)護(hù)人員對(duì)自己的信息進(jìn)行CURD。Admi_drugs管理藥品醫(yī)護(hù)人員對(duì)藥品進(jìn)行增加、刪除、更新、查看等操作。See_user查看病人信息醫(yī)護(hù)人員查看拿藥的病人信息。Admi_user管理病人信息醫(yī)護(hù)人員對(duì)病人信息增加、刪除、更新、查看等。TD_prescription處理藥單醫(yī)護(hù)人員對(duì)病人的藥單進(jìn)行處理。2.2.2藥品管理用例描述醫(yī)護(hù)人員在管理藥品信息類(lèi)里面對(duì)藥品的信息進(jìn)行CURD。管理藥品信息的簡(jiǎn)單用例圖如圖2.4所示。圖2.4管理藥品的CURD操作用例圖基本的藥品CURD操作用例描述如表2.3-2.6所示。表2.3ADD藥品信息標(biāo)識(shí)Add_drugs名稱(chēng)管理添加藥品。操作者醫(yī)生。前置條件醫(yī)生已經(jīng)用自己的身份通過(guò)系統(tǒng)的檢測(cè)進(jìn)入到系統(tǒng)當(dāng)中。后置條件藥品信息符合添加條件。用例概述醫(yī)生進(jìn)行簡(jiǎn)單的藥品信息添加?;臼录?.醫(yī)務(wù)人員或管理人員選擇并將藥品相關(guān)信息工具添加到藥品管理主界面。2.系統(tǒng)彈跳出輸入藥品基本信息的界面。3.醫(yī)生在彈跳出的界面里的輸入框里輸入藥品的編號(hào)、名稱(chēng)、生產(chǎn)廠家和藥品類(lèi)別,并提交進(jìn)一步申請(qǐng)。4.系統(tǒng)檢查輸入數(shù)據(jù)是否正確。5.系統(tǒng)確認(rèn)無(wú)重復(fù)藥品ID的藥,并且把剛剛添加的藥品信息動(dòng)態(tài)的儲(chǔ)存到數(shù)據(jù)庫(kù)當(dāng)中。6.系統(tǒng)彈跳出一個(gè)顯示框顯示藥品添加成功。其他事件流1a理員可以使用“導(dǎo)入藥品”案例輕松導(dǎo)入現(xiàn)有藥品數(shù)據(jù),進(jìn)入藥品導(dǎo)入案例并在執(zhí)行后進(jìn)入第五階段。如果2A系統(tǒng)得知存在雙重藥物,藥物管理員只需添加藥物的數(shù)量。備注管理員或者醫(yī)護(hù)人員都得喲對(duì)應(yīng)的權(quán)限。表2.4See查看藥品信息用例標(biāo)識(shí)See_drugs名稱(chēng)管理查看藥品信息。操作者醫(yī)生前置條件醫(yī)生用自己的身份成功通過(guò)系統(tǒng)檢測(cè)進(jìn)入系統(tǒng)當(dāng)中。后置條件數(shù)據(jù)庫(kù)當(dāng)中藥存在查看的藥品。用例概述醫(yī)生能夠通過(guò)搜索查看到想要看到的藥品基本信息?;臼录?.醫(yī)生在藥品管理界面里的搜索框中輸入完整的藥品名稱(chēng)。2.系統(tǒng)通過(guò)精準(zhǔn)查詢(xún)找到醫(yī)生所要查看的藥品并顯示在藥品管理界面上(此時(shí)只顯示查看的藥品)。其他事件流1a醫(yī)生可以使用“批量查看藥品”的方法對(duì)現(xiàn)有藥品信息進(jìn)行適當(dāng)修改,執(zhí)行完畢后進(jìn)入修改用藥案例第一步。備注管理員或者醫(yī)護(hù)人員都得有對(duì)應(yīng)的權(quán)限。表2.5Del藥品信息用例標(biāo)識(shí)Del_drugs名稱(chēng)管理刪除藥品信息。操作者醫(yī)生。前置條件醫(yī)生已經(jīng)用自己的身份通過(guò)系統(tǒng)的檢測(cè)進(jìn)如到系統(tǒng)之中。后置條件所要?jiǎng)h除的藥品沒(méi)有正在被病人使用。用例概述醫(yī)生對(duì)藥品進(jìn)行刪除操作。續(xù)表2.5Del藥品信息用例基本事件流1.醫(yī)生在藥品管理頁(yè)面選擇想要?jiǎng)h除的藥品點(diǎn)擊藥品信息后方的刪除按鈕。2.系統(tǒng)彈跳出是否確認(rèn)刪除的對(duì)話(huà)框。3.管理員點(diǎn)擊確認(rèn)按鈕確認(rèn)刪除所選中的藥品。4.系統(tǒng)顯示藥品刪除成功。其他事件流1a管理員可以使用“查看藥物”用例輕松刪除現(xiàn)有藥物信息,轉(zhuǎn)到“刪除藥物用例”,然后在運(yùn)行后繼續(xù)執(zhí)行步驟1。2a管理員可以使用“批量刪除”輕松的刪除現(xiàn)在選擇的藥品信息。備注管理員或者醫(yī)護(hù)人員都得喲對(duì)應(yīng)的權(quán)限。表2.6Updata藥品信息用例用例標(biāo)識(shí)Up_drugs用例名稱(chēng)管理修改藥品信息。參與者醫(yī)生。前置條件醫(yī)生已經(jīng)用自己的身份通過(guò)系統(tǒng)的檢測(cè)進(jìn)如到系統(tǒng)之中。后置條件所要更新的藥品不能被病人在使用,信息藥符合系統(tǒng)要求。用例概述醫(yī)生可以對(duì)藥品信息進(jìn)行修改。基本事件流1.醫(yī)生在藥品信息頁(yè)面選中藥修改的藥品點(diǎn)擊編輯按鈕。2.系統(tǒng)彈跳出編輯藥品信息的對(duì)話(huà)框。3.醫(yī)生在對(duì)話(huà)框中輸入所要修改的藥品對(duì)應(yīng)的信息。4.系統(tǒng)顯示修改藥品成功。其他事件流1a管理員可以使用“查看藥品”案例方便地修改現(xiàn)有藥品信息,更改藥品使用案例,執(zhí)行步驟1。2a理員可以使用“修改藥品”申請(qǐng)案例方便地更改現(xiàn)有藥品信息。備注管理員或者醫(yī)護(hù)人員都得喲對(duì)應(yīng)的權(quán)限。2.3非功能性需求一方面因?yàn)樗幤饭芾硐到y(tǒng)涉及到病人用藥所以就會(huì)涉及到病人的病因等敏感信息,所以非功能需求需要對(duì)病人的信息進(jìn)行加密保護(hù)。另一方面每天醫(yī)院都要接待很多病人所以需要系統(tǒng)能夠在多個(gè)用戶(hù)登錄的時(shí)候還能夠正常運(yùn)行,同時(shí)也要兼容不同醫(yī)院的不同電腦使用。第3章系統(tǒng)設(shè)計(jì)3.1技術(shù)路線關(guān)鍵技術(shù):本次系統(tǒng)開(kāi)發(fā)主要采用了Hibernate封裝JDBC,以及使用了B/S架構(gòu)。開(kāi)發(fā)環(huán)境:主要采用的是Eclipse開(kāi)發(fā)工具。Eclipse平臺(tái)能夠讓編寫(xiě)者很方便的在其中進(jìn)行java代碼的編寫(xiě)xml代碼的編寫(xiě)以及JSP代碼編寫(xiě)很方便的進(jìn)行代碼連接修改。服務(wù)器連接采用了Tomcat9.0。Tomcat9.0可以讓我能夠免費(fèi)使用以及能夠很穩(wěn)定的連接服務(wù)器。數(shù)據(jù)庫(kù)的創(chuàng)建主要采用了MySQL,同時(shí)也采用了Navicat工具對(duì)數(shù)據(jù)庫(kù)進(jìn)行很快捷方便的管理與創(chuàng)建。同時(shí)連接數(shù)據(jù)庫(kù)使用的是SpringJDBC但是使用了Hibernate對(duì)JDBC進(jìn)行封裝讓我能夠很便捷的生成簡(jiǎn)單的SQL數(shù)據(jù)庫(kù)操作語(yǔ)句然后到數(shù)據(jù)庫(kù)進(jìn)行執(zhí)行。3.2藥品管理軟件體系結(jié)構(gòu)設(shè)計(jì)3.2.1藥品管理系統(tǒng)功能結(jié)構(gòu)我這個(gè)最簡(jiǎn)單的藥品管理系統(tǒng)主要包括一個(gè)最厲害的管理員和普通管理員(醫(yī)護(hù)人員)和普通用戶(hù)(病人),管理員可以管理藥品信息和普通用戶(hù)信息,藥品管理中包括添加藥品、刪除藥品、更新修改藥品、查看藥品。用戶(hù)管理包括添加用戶(hù)、刪除用戶(hù)、更新修改用戶(hù)、查看用戶(hù)(同時(shí)進(jìn)行最簡(jiǎn)單的權(quán)限賦予的管理)。藥品管理系統(tǒng)的簡(jiǎn)單功能結(jié)構(gòu)如圖3.1所示。圖3.1系統(tǒng)功能結(jié)構(gòu)圖醫(yī)護(hù)人員主要工作是為病人分配賬號(hào),修改密碼功能以及括藥品的添加、刪除、更新、查看等功能。此模塊只能由系統(tǒng)管理員(admin或者被管理員分配了權(quán)限的醫(yī)護(hù)人員)一起分配,病人不能夠自己注冊(cè)進(jìn)入系統(tǒng)更不能修改的自己的權(quán)限,為了保障安全性能,病人以及醫(yī)護(hù)人員的密碼進(jìn)行加密處理才能存入數(shù)據(jù)庫(kù)。支持excel病人數(shù)據(jù)的導(dǎo)入。3.2.2藥品管理的簡(jiǎn)單系統(tǒng)架構(gòu)系統(tǒng)的前端主要使用了ShortCut架構(gòu)來(lái)實(shí)現(xiàn)展現(xiàn)在用戶(hù)面前的,然后后端主要使用了Hibernate封裝的JDBC來(lái)連接數(shù)據(jù)庫(kù),通過(guò)Tomcat9.0來(lái)連接服務(wù)器。其中涉及到的藥品分類(lèi)統(tǒng)計(jì)使用了JQuery里面的Hichart圖形表庫(kù)來(lái)映射到前端顯示的,最后動(dòng)態(tài)的數(shù)據(jù)獲取使用了Ajax。3.3藥品管理系統(tǒng)的簡(jiǎn)單數(shù)據(jù)庫(kù)設(shè)計(jì)3.3.1藥品管理系統(tǒng)的簡(jiǎn)單概念結(jié)構(gòu)設(shè)計(jì)藥品管理系統(tǒng)的最簡(jiǎn)單的概念模型(ER圖),其中藥品包含最簡(jiǎn)單的藥品id信息、藥品名稱(chēng)、以及數(shù)量狀態(tài),普通用戶(hù)也和藥品管理系統(tǒng)一樣擁有自己最簡(jiǎn)單的基礎(chǔ)信息。兩者之間通過(guò)藥方進(jìn)行聯(lián)立。如圖3.2所示。圖3.2藥品管理系統(tǒng)的最簡(jiǎn)單ER圖3.3.2系統(tǒng)涉及到的表的詳細(xì)設(shè)計(jì)通過(guò)上述中的ER圖我設(shè)計(jì)了管理員信息表、病人信息表、藥品信息表然后因?yàn)闄?quán)限的原因我把病人信息表和管理員信息表融合做為一張表及用戶(hù)表然后通過(guò)用戶(hù)表設(shè)計(jì)了角色表和權(quán)限關(guān)聯(lián)表,如表3.1-表3.8所示。數(shù)據(jù)庫(kù)的設(shè)計(jì)使用了MySQL5.0。通過(guò)Navicat直接對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作省去了編寫(xiě)SQL語(yǔ)句的時(shí)間很簡(jiǎn)單快捷。(1)管理員基礎(chǔ)的信息表(administrators)管理員信息表主要用于保存基礎(chǔ)的系統(tǒng)管理員的基本信息,主要的信息包括:管理員ID、登錄賬號(hào)、登錄密碼。表結(jié)構(gòu)如表3.1所示。表3.1管理員信息表(administrators)列名數(shù)據(jù)類(lèi)型長(zhǎng)度允許空是否主鍵說(shuō)明administratorsIdINTNY管理員ID及登錄賬號(hào)administratorsNameCHAR24NN管理員姓名administratorsPwCHAR32NN登錄密碼RealnameCHAR100NN真實(shí)姓名StatusINT12NN狀態(tài)BrowserCHAR40YN瀏覽器SignatureBlobYN標(biāo)志附件UserkeyCHAR100YN密鑰碼DepartidCHAR40YN所屬部分(2)普通用戶(hù)(病人)表(patient)病人信息表主要用于保存病人的基礎(chǔ)信息,主要信息包括:病人ID、病人的登錄賬號(hào)、病人的登錄密碼等。最簡(jiǎn)單病人表結(jié)構(gòu)如表3.2所示。表3.2病人信息表(patient)列名數(shù)據(jù)類(lèi)型長(zhǎng)度允許空是否主鍵說(shuō)明patientIdINTNY用戶(hù)ID以及登錄賬號(hào)patientNameCHAR24NN用戶(hù)姓名patientPwCHAR32NN登錄密碼(3)藥品信息表(drugs)藥品信息表主要用于保存藥品的基礎(chǔ)信息,主要信息包括:藥品ID、藥品名稱(chēng)、藥品數(shù)量、藥品產(chǎn)商。表結(jié)構(gòu)如表3.3所示。表3.3藥品信息表(drugs)列名數(shù)據(jù)類(lèi)型長(zhǎng)度允許空是否主鍵說(shuō)明DRUGS_IDINTNY藥品編號(hào)DRUGSNameCHAR40NN藥品名稱(chēng)DRUGSNumberINTNN藥品數(shù)量PressnameCHAR60NN藥品廠商DRUGStypeCHAR4NN藥品分類(lèi)MarkaCHAR40NN品牌續(xù)表3.3藥品信息表(drugs)StatusCHAR20NN狀態(tài)(4)出產(chǎn)商表(producer):出產(chǎn)商信息表主要用于保存涉及到的存在于數(shù)據(jù)庫(kù)里的藥品的出產(chǎn)商的基本信息,主要信息包括:出產(chǎn)商的ID、出產(chǎn)商的名稱(chēng)。表結(jié)構(gòu)如表3.4所示。表3.4出產(chǎn)商信息表(producer)列名數(shù)據(jù)類(lèi)型長(zhǎng)度允許空是否主鍵說(shuō)明ManufacturIdCHAR36NY編號(hào)ManufacturnameufacturerCHAR30NN出產(chǎn)商名稱(chēng)addressCHAR40NN出產(chǎn)商地址TelephoneCHAR15NN出產(chǎn)商電話(huà)(5)部門(mén)表(department):部門(mén)信息表主要作用是保存醫(yī)院里面涉及到的對(duì)于系統(tǒng)使用的角色相對(duì)應(yīng)的部門(mén)的基本信息,表的主要信息包括:醫(yī)院部門(mén)的ID、醫(yī)院部門(mén)的名稱(chēng)。表結(jié)構(gòu)如表3.5所示。表3.5部門(mén)信息表(department)列名數(shù)據(jù)類(lèi)型長(zhǎng)度允許空是否主鍵說(shuō)明DpartmentIdCHAR40NY部門(mén)編號(hào)DepartmentnameCHAR200YN部門(mén)名稱(chēng)OtherTextYN描述3.4對(duì)藥品和用戶(hù)的用例實(shí)現(xiàn)3.4.1創(chuàng)建管理藥品用例實(shí)現(xiàn)創(chuàng)建管理藥品用例的實(shí)現(xiàn)管理員輸入正確身份信息輸入正確驗(yàn)證碼后登錄進(jìn)入系統(tǒng)在系統(tǒng)首頁(yè)選擇進(jìn)入藥品管理頁(yè)面在藥品管理界面點(diǎn)擊錄入按鈕對(duì)藥品進(jìn)行添加操作,藥品管理頁(yè)面點(diǎn)擊選中藥品接著點(diǎn)擊編輯按鈕進(jìn)行修改操作,點(diǎn)擊刪除按鈕進(jìn)行刪除操作,在搜索框中選擇藥品的編號(hào)或者在輸入框中輸入完整藥品名稱(chēng)點(diǎn)擊搜索按鈕進(jìn)行所搜想要查看的藥品。最后系統(tǒng)反饋操作結(jié)果。如圖3.3所示。圖3.3創(chuàng)建藥品的CURD用例順序圖3.4.2創(chuàng)建病人取藥用例實(shí)現(xiàn)病人在進(jìn)行身份驗(yàn)證之后進(jìn)入系統(tǒng)首頁(yè)然后點(diǎn)擊進(jìn)入取藥管理頁(yè)面在里面可以查看藥品的基本信息然后選擇藥品進(jìn)行取藥系統(tǒng)將取藥結(jié)果反饋給病人如圖3.4所示。圖3.4創(chuàng)建取藥用例順序圖3.5管理藥品的對(duì)象設(shè)計(jì)3.5.1涉及的藥品管理模塊設(shè)計(jì)為了能夠很好的管理藥品、病人、醫(yī)護(hù)人員之間的信息本系統(tǒng)主要按照角色分為了三個(gè)大的模塊及病人模塊、藥品模塊、醫(yī)護(hù)人員模塊,因?yàn)闉榱藵M(mǎn)足藥品上的行業(yè)規(guī)定所以最重要的功能集中在了醫(yī)護(hù)人員這邊。如下圖3.5所示。圖3.5藥品、病人和醫(yī)護(hù)人員模塊依賴(lài)關(guān)系圖3.5.2醫(yī)護(hù)人員與病人的業(yè)務(wù)實(shí)體類(lèi)設(shè)計(jì)系統(tǒng)之中主要涉及到的業(yè)務(wù)有醫(yī)護(hù)人員對(duì)藥品進(jìn)行CURD,醫(yī)護(hù)人員對(duì)病人信息進(jìn)行錄入和最厲害管理員對(duì)病人和醫(yī)護(hù)人員的權(quán)限賦予等。如下圖3.6所示。圖3.6醫(yī)護(hù)人員和病人之間的業(yè)務(wù)實(shí)體類(lèi)設(shè)計(jì)3.5.3醫(yī)護(hù)人員和病人的業(yè)務(wù)處理類(lèi)設(shè)計(jì)管理員即為醫(yī)院醫(yī)護(hù)人員,對(duì)藥品等對(duì)象進(jìn)行維護(hù)管理,對(duì)病人(普通用戶(hù))信息進(jìn)行維護(hù)管理如圖3.7業(yè)務(wù)處理類(lèi)設(shè)計(jì)。圖3.7業(yè)務(wù)處理類(lèi)設(shè)計(jì)3.5.4管理藥品涉及的類(lèi)的描述admin包中主要定義的是所涉及到的管理員的基本信息例如姓名等等,然后是管理員能夠?qū)ο到y(tǒng)做出的操作的一些方法例如對(duì)藥品進(jìn)行CURD操作。如表3.6所示。表3.6admin包中類(lèi)的描述管理員類(lèi)的名稱(chēng)管理員類(lèi)中的屬性和方法管理員類(lèi)屬性描述SdminINTid最厲害管理員編號(hào)Charname最厲害管理員姓名getDrugs(drugs_Id:INT):drugs獲取藥品信息addDrugs(session:HttpSession,entity:drugs):Map添加藥品信息delDrugs(indrugsId:INT):Map刪除藥品信息updateDrugs(session:HttpSession,entity:drugs):Map修改藥品信息getUser(user_Id:INT):user獲取病人信息addUser(session:HttpSession,entity:user):Map添加病人信息delUser(inuserId:INT):Map刪除病人信息updateUser(session:HttpSession,entity:user):Map修改病人信息用戶(hù)包中的用戶(hù)類(lèi)主要包括定義用戶(hù)的一些基本信息例如姓名等,其次是用戶(hù)能夠?qū)ο到y(tǒng)做出的操作方法等。如表3.7所示。表3.7user包中類(lèi)的簡(jiǎn)單描述用戶(hù)類(lèi)的名稱(chēng)用戶(hù)類(lèi)中的屬性和方法用戶(hù)類(lèi)中的屬性描述UserINTid病人編號(hào)VARCHRname病人姓名getDrugs(drugs_Id:INT):drugs獲取藥品信息getUser(user_Id:INT):user獲取病人信息updateUser(session:HttpSession,entity:user):Map修改病人用戶(hù)基本的信息藥品包中的藥品類(lèi)和用戶(hù)類(lèi)也是一樣的定義這藥品的基本信息。如表3.8所示。表3.8drugs包中類(lèi)的簡(jiǎn)單描述藥品類(lèi)的名稱(chēng)藥品類(lèi)中的屬性和方法藥品類(lèi)中屬性描述DrugsINTid藥品編號(hào)VARCHRname藥品名稱(chēng)VARCHRmanufacturers藥品產(chǎn)商名稱(chēng)VARCHRcategory藥品類(lèi)別第4章系統(tǒng)實(shí)現(xiàn)4.1核心功能實(shí)現(xiàn)(1)登錄功能主要登錄界面實(shí)現(xiàn)如圖4.1所示,本系統(tǒng)的UI設(shè)計(jì)主要采用easyUI,使得界面更加大氣美觀。用戶(hù)選擇登錄輸入正確的用戶(hù)名、密碼和驗(yàn)證碼后進(jìn)行登錄。圖4.1登錄界面登錄功能核心代碼如下所示。$(document).ready(function(){ getCookie(); onfocus(); $(".on_off_checkbox").iphoneStyle(); $('.tipa').tipsy({ gravity:'sw' }); $('#login').show().animate({ opacity:1 },2000); $('.logo').show().animate({ opacity:1, top:'32%' },800,function(){ $('.logo').show().delay(1200).animate({ opacity:1, top:'1%' },300,function(){ $('.formLogin').animate({ opacity:1, left:'0' },300); $('.userbox').animate({ opacity:0 },200).hide(); }); });});$('.userload').click(function(e){ $('.formLogin').animate({ opacity:1, left:'0' },300); $('.userbox').animate({ opacity:0 },200,function(){ $('.userbox').hide(); });});//重置$('#forgetpass').click(function(e){ $(":input").each(function(){ $('#'+).val(""); });});//點(diǎn)擊登錄$('#but_login').click(function(e){ submit();});//表單提交functionsubmit(){ varsubmit=true; $("input[nullmsg]").each(function(){ if($("#"+).val()==""){ showError($("#"+).attr("nullmsg"),500); jrumble(); setTimeout('hideTop()',1000); submit=false; returnfalse; } }); if(submit){ hideTop(); loading('核實(shí)中..',1); setTimeout("unloading()",1000); setTimeout("Login()",1000); }} if(d.success){ loginsuccess(); if(d.msg=="a"){ $.dialog.confirm("數(shù)據(jù)庫(kù)無(wú)數(shù)據(jù),是否初始化數(shù)據(jù)?",function(){ window.location="init.jsp"; },function(){ // }); }else showError(d.msg); } } });}(2)用戶(hù)添加刪除操作用戶(hù)管理操作:管理員選擇用戶(hù)錄入,進(jìn)入錄入窗口進(jìn)行用戶(hù)名(即為系統(tǒng)登錄賬號(hào))部門(mén)的選擇,真實(shí)姓名等。如圖4.2-4.3用戶(hù)錄入操作。圖4.2錄入用戶(hù)操作圖4.3用戶(hù)錄入操作在每個(gè)用戶(hù)后方都有一個(gè)刪除按鈕,管理員點(diǎn)擊刪除按鈕之后會(huì)彈出一個(gè)是否確認(rèn)刪除用戶(hù)的小窗口點(diǎn)擊確認(rèn)按鈕確認(rèn)刪除用戶(hù)此時(shí)用戶(hù)被成功刪除并反饋到數(shù)據(jù)庫(kù)把相對(duì)應(yīng)的表里的數(shù)據(jù)進(jìn)行刪除。但是在刪除用戶(hù)的時(shí)候需要把用戶(hù)涉及到的角色先解除掉并且該用戶(hù)還不能是正在用藥的病人否則會(huì)提示該用戶(hù)還在用藥。系統(tǒng)的超級(jí)管理員admin是不能夠進(jìn)行刪除的。圖4.4-4.5刪除用戶(hù)操作用戶(hù)添加刪除操作核心代如下。 @Excel(exportName="用戶(hù)名",orderNum="1") privateStringuserName;//用戶(hù)名 @Excel(exportName="密碼",orderNum="3") privateBigDecimaldebit; @RequestMapping(params="saveUser") @ResponseBody publicAjaxJsonsaveUser(HttpServletRequestreq,TSUseruser){ AjaxJsonj=newAjaxJson(); Stringroleid=oConvertUtils.getString(req.getParameter("roleid")); Stringpassword=oConvertUtils.getString(req.getParameter("password")); if(StringUtil.isNotEmpty(user.getId())){ if((user.getDebit().add(users.getDebit())).compareTo(BigDecimal.ZERO)!=-1){ users.setStatus(Globals.User_Normal); } users.setActivitiSync(user.getActivitiSync()); systemService.updateEntitie(users); List<TSRoleUser>ru=systemService.findByProperty(TSRoleUser.class,"TSUser.id",user.getId()); systemService.deleteAllEntitie(ru); message="用戶(hù):"+users.getUserName()+"更新成功"; if(StringUtil.isNotEmpty(roleid)){ saveRoleUser(users,roleid); } systemService.addLog(message,Globals.Log_Type_UPDATE,Globals.Log_Leavel_INFO); }else{ saveUser(user,password,roleid); } j.setMsg(message); returnj; } privatevoidsaveUser(TSUseruser,Stringpassword,Stringroleid){ TSUserusers=systemService.findUniqueByProperty(TSUser.class,"userName",user.getUserName()); if(users!=null){ message="用戶(hù):"+users.getUserName()+"已經(jīng)存在"; }else{ user.setPassword(PasswordUtil.encrypt(user.getUserName(),password,PasswordUtil.getStaticSalt())); if(user.getTSDepart().equals("")){ user.setTSDepart(null); } user.setStatus(Globals.User_Normal); systemService.save(user); message="用戶(hù):"+user.getUserName()+"添加成功"; if(StringUtil.isNotEmpty(roleid)){ saveRoleUser(user,roleid); } systemService.addLog(message,Globals.Log_Type_INSERT,Globals.Log_Leavel_INFO); } } protectedvoidsaveRoleUser(TSUseruser,Stringroleidstr){ String[]roleids=roleidstr.split(","); for(INTi=0;i<roleids.length;i++){ TSRoleUserrUser=newTSRoleUser(); TSRolerole=systemService.getEntity(TSRole.class,roleids[i]); rUser.setTSRole(role); rUser.setTSUser(user); systemService.save(rUser); } }user=systemService.getEntity(TSUser.class,user.getId()); List<TSRoleUser>roleUser=systemService.findByProperty(TSRoleUser.class,"TSUser.id",user.getId()); if(!user.getStatus().equals(Globals.User_ADMIN)){ if(roleUser.size()>0){ //刪除用戶(hù)時(shí)先刪除用戶(hù)和角色關(guān)系表 delRoleUser(user); userService.delete(user); message="用戶(hù):"+user.getUserName()+"刪除成功"; systemService.addLog(message,Globals.Log_Type_DEL,Globals.Log_Leavel_INFO); }else{ userService.delete(user); message="用戶(hù):"+user.getUserName()+"刪除成功"; }(3)取藥表的CURD操作管理員先選擇錄入取藥信息,選擇病人,進(jìn)行藥品發(fā)給,而后數(shù)據(jù)記錄在取藥表里面,其中可以看到病人編號(hào),取藥時(shí)間,用藥次數(shù),以及現(xiàn)在用藥狀態(tài)。同時(shí)可以對(duì)取藥表進(jìn)行刪除操作。如圖4.4取藥操作。圖4.4取藥操作取藥操作核心代碼如下所示。 ("buss/department/user"); } /** *刪除取藥表 * publicAjaxJsondoDel(TDDepartmentEntityTDDepartment,HttpServletRequestrequest){ AjaxJsonj=newAjaxJson(); TDDepartment=systemService.getEntity(TDDepartmentEntity.class,TDDepartment.getId()); Stringmessage="取藥表刪除成功"; if(Globals.DRUGS_RETURN.equals(TDDepartment.getStatus())){ try{ TDDepartmentService.delete(TDDepartment); thrownewBusinessException(e.getMessage()); } }else{ message="請(qǐng)先停藥之后再進(jìn)行刪除操作"; } j.setMsg(message); returnj; } publicAjaxJsondoAdd(TDDepartmentEntityTDDepartment,HttpServletRequestrequest){ AjaxJsonj=newAjaxJson(); Stringmessage="取藥表添加成功"; INTdepartmentCount=TDDepartmentService.findDepartmentCount(TDDepartment); if(departmentCount>1){ message="該用戶(hù)超過(guò)最大用藥量,每個(gè)用戶(hù)最多只能用兩種藥"; }else{ try{ TDDepartment.setDebit(BigDecimal.ZERO); TDDepartment.setDepartmentdate(DataUtils.getDate()); TDDepartment.setStatus(Globals.DRUGS_DEPARTMENT); TDDepartment.setTotalcount("1"); TDDrugsEntityt=TDDepartmentService.get(TDDrugsEntity.class,TDDepartment.getDrugsid()); t.setStatus(Globals.DRUGS_DEPARTMENT); systemService.saveOrUpdate(t); TDDepartmentService.save(TDDepartment);publicAjaxJsondoUpdate(TDDepartmentEntityTDDepartment,HttpServletRequestrequest){ AjaxJsonj=newAjaxJson(); Stringmessage="取藥表更新成功"; TDDepartmentEntityt=TDDepartmentService.get(TDDepartmentEntity.class,TDDepartment.getId()); try{ MyBeanUtils.copyBeanNotNull2Bean(TDDepartment,t); TDDepartmentService.saveOrUpdate(t); systemService.addLog(message,Globals.Log_Type_UPDATE,Globals.Log_Leavel_INFO); }catch(Exceptione){ e.prINTStackTrace(); message="取藥表更新失敗"; thrownewBusinessException(e.getMessage()); } j.setMsg(message); returnj;4.2關(guān)鍵技術(shù)難點(diǎn)與解決方案我自己對(duì)于系統(tǒng)中的數(shù)據(jù)庫(kù)與系統(tǒng)的連接部分不熟悉所以技術(shù)的難點(diǎn)就在于數(shù)據(jù)庫(kù)能否與系統(tǒng)能夠成功連接上并且連接要牢固可靠不能在后續(xù)的運(yùn)行中出現(xiàn)差錯(cuò)并且醫(yī)院之中每天對(duì)藥品的管理很頻繁例如藥品的新增、藥品的刪除、藥品的更新、藥品的查看等都涉及到數(shù)據(jù)庫(kù)的連接所以得對(duì)數(shù)據(jù)庫(kù)的各種操作進(jìn)行配置增強(qiáng)。同時(shí)因?yàn)橐蠂?guó)家對(duì)藥品管理的相關(guān)法律法規(guī)本系統(tǒng)設(shè)定了權(quán)限設(shè)置,所以技術(shù)的難點(diǎn)在于如何讓管理員對(duì)不同角色賦予不同的權(quán)限。而后我學(xué)習(xí)了多表聯(lián)立創(chuàng)建了一個(gè)角色表用來(lái)儲(chǔ)存系統(tǒng)所涉及到的相應(yīng)的角色,然后用戶(hù)表和角色表連接,同時(shí)也有應(yīng)用表和菜單表,這幾個(gè)表之間進(jìn)行多表連接進(jìn)行權(quán)限的賦予以及儲(chǔ)存,這樣在不同用戶(hù)登錄系統(tǒng)的時(shí)候就能使用自己角色所對(duì)應(yīng)的權(quán)限。核心代碼如下所示。publicclassFunctionControllerextendsBaseController{ publicvoidsetSystemService(SystemServicesystemService){ this.systemService=systemService; } publicUserServicegetUserService(){ returnuserService; } publicvoidsetUserService(UserServiceuserService){ this.userService=userService; } publicAjaxJsondel(TSFunctionfunction,HttpServletRequestrequest){ AjaxJsonj=newAjaxJson(); function=systemService.getEntity(TSFunction.class,function.getId()); message="權(quán)限:"+function.getFunctionName()+"被刪除成功"; systemService .updateBySqlString("deletefromt_s_role_functionwherefunctionid='" +function.getId()+"'"); systemService.delete(function); systemService.addLog(message,Globals.Log_Type_DEL, Globals.Log_Leavel_INFO); List<TSRoleFunction>roleFunctions= systemService.findByProperty(TSRoleFunction.class,"TSFunction.id", function.getId()); if(roleFunctions.size()>0){ } else{ userService.delete(function); systemService.addLog(message,Globals.Log_Type_DEL, Globals.Log_Leavel_INFO); } returnj; } publicAjaxJsonsaveFunction(TSFunctionfunction,HttpServletRequestrequest){ AjaxJsonj=newAjaxJson(); StringfunctionOrder=function.getFunctionOrder(); if(StringUtils.isEmpty(functionOrder)){ function.setFunctionOrder("0"); } if(function.getTSFunction().getId().equals("")){ function.setTSFunction(null); }else{ TSFunctionparent=systemService.getEntity(TSFunction.class,4.3關(guān)鍵算法藥品管理系統(tǒng)著重點(diǎn)在于對(duì)藥品的管理其中就包含了藥品的添加、刪除、修改更新、查看。所以系統(tǒng)的開(kāi)發(fā)關(guān)鍵也就在于對(duì)藥品的管理上同時(shí)藥品的相關(guān)信息如出廠商等信息也需。上面的核心功能也提到過(guò),所以這里另外提一下我系統(tǒng)當(dāng)中的日志管理功能,畢竟是藥品的管理所以工作人員管理員之間還是要能清晰掌握著系統(tǒng)被什么用戶(hù)做了什么樣的修改或者對(duì)藥品,取藥進(jìn)行的一系列操作等有著監(jiān)控。 publicAjaxJsondoAdd(TDDrugsEntityTDDrugs,HttpServletRequestrequest){ AjaxJsonj=newAjaxJson(); Stringmessage="藥品表添加成功"; try{ TDDrugs.setStatus(Globals.DRUGS_RETURN); TDDrugsService.save(TDDrugs); (TDDrugsEntityTDDrugs,HttpServletRequestrequest){ AjaxJsonj=newAjaxJson(); Stringmessage="藥品表更新成功"; TDDrugsEntityt=TDDrugsService.get(TDDrugsEntity.class,TDDrugs.getId()); try{ MyBeanUtils.copyBeanNotNull2Bean(TDDrugs,t); }因?yàn)闉榱四軌虮O(jiān)控系統(tǒng)的一些操作所以基本上只要是用戶(hù)登錄進(jìn)入系統(tǒng)那么系統(tǒng)的日志功能就已經(jīng)開(kāi)始運(yùn)行了包括什么人在什么時(shí)間進(jìn)入的系統(tǒng)都能夠進(jìn)行監(jiān)控。同時(shí)為了能夠更好的顯示出數(shù)據(jù)庫(kù)里所存在的藥品分類(lèi)我在系統(tǒng)開(kāi)發(fā)的時(shí)候添加開(kāi)了一點(diǎn)點(diǎn)的小創(chuàng)意在藥品管理里面增加了一個(gè)統(tǒng)計(jì)管理能夠動(dòng)態(tài)的獲取到數(shù)據(jù)庫(kù)里的數(shù)據(jù)我所使用的方法是Ajax動(dòng)態(tài)獲取數(shù)據(jù)庫(kù)數(shù)據(jù)映射到通過(guò)JQuery里的Hichart圖表庫(kù)插件添加的餅圖插件里面能夠讓病人和醫(yī)護(hù)人員直觀的看到現(xiàn)存數(shù)據(jù)庫(kù)里的藥品分類(lèi)都有哪些,下面所示的是日志處理核心代碼。publicclassLogControllerextendsBaseController{ /** *Loggerforthisclass */ privatestaticfinalLoggerlogger=Logger.getLogger(LogController.class); privateSystemServicesystemService; @Autowired publicvoidsetSystemService(SystemServicesystemService){ this.systemService=systemService; } @RequestMapping(params="datagrid") publicvoiddatagrid(HttpServletRequestrequest,HttpServletResponseresponse,DataGriddataGrid){ CriteriaQuerycq=newCriteriaQuery(TSLog.class,dataGrid); Stringloglevel=request.getParameter("loglevel"); if(loglevel==null||loglevel.equals("0")){ }else{ cq.eq("loglevel",oConvertUtils.getShort(loglevel)); cq.add(); } this.systemService.getDataGridReturn(cq,true); TagUtil.datagrid(response,dataGrid); } /** *統(tǒng)計(jì)集合頁(yè)面 * *@return */ @RequestMapping(params="statisticTabs") publicModelAndViewstatisticTabs(HttpServletRequestrequest){ returnnewModelAndView("system/log/statisticTabs"); } Listlt=newArrayList(); hc=newHighCHARt(); 第5章系統(tǒng)測(cè)試在本次測(cè)試當(dāng)中主要對(duì)系統(tǒng)進(jìn)行功能性測(cè)試,例如用戶(hù)的登錄功能,藥品的增加、刪除、修改、查看。以及藥品的分類(lèi)功能進(jìn)行測(cè)試。同時(shí)對(duì)系統(tǒng)的并發(fā)性進(jìn)行測(cè)試,最后對(duì)系統(tǒng)進(jìn)行不同瀏覽器,不同瀏覽器版本進(jìn)行兼容測(cè)試。5.1功能測(cè)試本系統(tǒng)對(duì)分組模塊、問(wèn)卷模塊兩個(gè)核心模塊進(jìn)行了功能測(cè)試,測(cè)試設(shè)計(jì)如下所示。分組模塊功能測(cè)試分組模塊測(cè)試包括登錄,新增病人(用戶(hù)),添加藥品人到藥品表。分組模塊測(cè)試用例如表5.1-5.3所示。表5.1添加聯(lián)系人功能測(cè)試用例用例編號(hào)測(cè)試用例描述操作過(guò)程及數(shù)據(jù)預(yù)期結(jié)果Sign_01正確填寫(xiě)登錄用戶(hù)名信息按照系統(tǒng)要求填寫(xiě)用戶(hù)名、密碼、驗(yàn)證碼等信息點(diǎn)擊“登錄”系統(tǒng)提示登錄成功Sign_02用戶(hù)名錯(cuò)誤填寫(xiě)輸入的用戶(hù)

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論