基于JSP的醫(yī)藥管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn) 計(jì)算機(jī)專業(yè)畢業(yè)論文_第1頁
基于JSP的醫(yī)藥管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn) 計(jì)算機(jī)專業(yè)畢業(yè)論文_第2頁
基于JSP的醫(yī)藥管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn) 計(jì)算機(jī)專業(yè)畢業(yè)論文_第3頁
基于JSP的醫(yī)藥管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn) 計(jì)算機(jī)專業(yè)畢業(yè)論文_第4頁
基于JSP的醫(yī)藥管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn) 計(jì)算機(jī)專業(yè)畢業(yè)論文_第5頁
已閱讀5頁,還剩42頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、XXXX大學(xué)畢業(yè)論文基于JSP的醫(yī)藥管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)專業(yè)名稱: 計(jì)算機(jī)科學(xué)與技術(shù) 班 級: 學(xué)生姓名: XXX 指導(dǎo)教師: XXX 完成時(shí)間: 2012年4月 摘要隨著科學(xué)技術(shù)的發(fā)展和人們生活水平的提高,人們對于醫(yī)藥產(chǎn)品的需求迅速增加,管理藥品信息成為制藥行業(yè)的各項(xiàng)工作中不可缺少的一部分。本醫(yī)藥管理系統(tǒng)是為了管理藥品信息而設(shè)計(jì)的。以前的數(shù)據(jù)處理要用手工操作,工作量大,出錯(cuò)率高,出錯(cuò)后也不易更改。而本醫(yī)藥管理系統(tǒng)使用起來,效率高,速度快,也方便使用和修改。根據(jù)實(shí)際需求,本醫(yī)藥管理系統(tǒng)是在Windows XP操作系統(tǒng)環(huán)境下,以MyEclipse 8.6為前臺開發(fā)工具,采用JSP技術(shù),用MySQL

2、 Server 5.0為后臺數(shù)據(jù)庫開發(fā)工具來實(shí)現(xiàn)的。主要實(shí)現(xiàn)醫(yī)藥管理、類別管理、購買藥品、銷售管理、進(jìn)貨/需求管理和系統(tǒng)管理等功能。本醫(yī)藥管理系統(tǒng)首先輸入和存儲一些基本的數(shù)據(jù)資料,例如本系統(tǒng)中的藥品信息和銷售信息、進(jìn)貨/需求信息,對于這些信息和數(shù)據(jù)能方便的進(jìn)行添加、修改、查詢和刪除。其次,為了方便管理者管理數(shù)據(jù),對各種數(shù)據(jù)進(jìn)行統(tǒng)計(jì),如統(tǒng)計(jì)庫存信息,銷售信息和進(jìn)貨/需求信息等。關(guān)鍵詞 醫(yī)藥管理系統(tǒng);藥品信息管理;JSP技術(shù)ABSTRACTWith the development of science and technology and peoples living standards impr

3、ove, the demand for pharmaceutical products increased rapidly, the management of drug information has become an indispensable part of the work of the pharmaceutical industry.The management system of the medicine is designed to manage drug information. The previous data processing to use manual opera

4、tion, a heavy workload, error rate, error is not easy to change. The use of the pharmaceutical management system, high efficiency, fast, easy to use and modify.According to the actual needs of the pharmaceutical management system is in the Windows XP operating system environment, the MyEclipse 8.6 d

5、evelopment tools for the front, using JSP technology, MySQL Server 5.0 back-end database development tools. Medical management, category management, buying drugs, sales management, purchase / demand management and system management functions.Management system of the medicine first enter and store so

6、me of the basic data, such as drug information and sales information in this system, purchase / demand for such information and data can easily add, modify, query and delete. Secondly, in order to facilitate management of data managers, a variety of data statistics, such as statistical inventory inf

7、ormation, sales information, and purchase / demand information.Keywords Pharmaceutical management system; information management; JSP technology目 錄1 緒論11.1 系統(tǒng)開發(fā)背景11.2 系統(tǒng)開發(fā)意義11.3 文章內(nèi)容安排12 系統(tǒng)開發(fā)環(huán)境和開發(fā)工具簡介32.1 系統(tǒng)開發(fā)環(huán)境32.2 系統(tǒng)開發(fā)工具簡介32.2.1 MySQL數(shù)據(jù)庫介紹32.2.2 JSP技術(shù)概述33 系統(tǒng)需求分析53.1 可行性分析53.1.1 技術(shù)可行性53.1.2 經(jīng)濟(jì)可行性53

8、.2 系統(tǒng)功能需求53.3 數(shù)據(jù)流圖64 系統(tǒng)總體設(shè)計(jì)84.1 系統(tǒng)結(jié)構(gòu)設(shè)計(jì)84.1.1 邏輯分層結(jié)構(gòu)設(shè)計(jì)94.1.2 定義ActionForm94.1.3 持久層結(jié)構(gòu)設(shè)計(jì)104.1.4 業(yè)務(wù)層結(jié)構(gòu)設(shè)計(jì)114.1.5 頁面結(jié)構(gòu)設(shè)計(jì)114.2 數(shù)據(jù)庫設(shè)計(jì)124.2.1 實(shí)體對象設(shè)計(jì)124.2.2 數(shù)據(jù)庫表結(jié)構(gòu)124.2.3 數(shù)據(jù)庫E-R圖145 系統(tǒng)詳細(xì)設(shè)計(jì)175.1 公共類設(shè)計(jì)185.1.1 Hibernate過濾器185.1.2 SuperDao類195.1.3 BaseAction類205.1.4 DeleteAction類215.1.5 字符串工具類225.2 系統(tǒng)登陸模塊設(shè)計(jì)235.3

9、 醫(yī)藥管理模塊設(shè)計(jì)245.3.1 藥品對象持久層設(shè)計(jì)265.3.2 藥品信息的添加與修改265.3.3 分頁查看所有藥品275.3.4 查看藥品詳細(xì)信息275.3.5 查詢藥品285.3.6 高級查詢285.3.7 查看庫存295.4 類別管理模塊設(shè)計(jì)305.4.1 藥品類別持久層設(shè)計(jì)305.4.2 藥品類別的添加305.4.3 分頁查看類別信息315.4.4 類別的修改與刪除315.4.5 藥品類別統(tǒng)計(jì)315.5 購買藥品模塊設(shè)計(jì)325.5.1 購買藥品335.5.2 查看選購335.6 銷售管理模塊設(shè)計(jì)345.6.1 查看明細(xì)和今日明細(xì)355.6.2 日期查詢355.6.3 銷售排行355

10、.7 進(jìn)貨/需求管理模塊設(shè)計(jì)365.8 系統(tǒng)管理模塊設(shè)計(jì)37結(jié) 論40致 謝41參考文獻(xiàn)42基于JSP的醫(yī)藥管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)1 緒論1.1 系統(tǒng)開發(fā)背景當(dāng)今時(shí)代是飛速發(fā)展的信息時(shí)代。在各行各業(yè)中都離不開信息的處理,這正是計(jì)算機(jī)被廣泛用于信息管理系統(tǒng)的原因。計(jì)算機(jī)的最大好處在于利用它能夠進(jìn)行信息管理。使用計(jì)算機(jī)進(jìn)行信息控制,不僅提高了工作效率,而且大大的提高了其安全性。尤其對于復(fù)雜的信息管理,計(jì)算機(jī)能夠充分的發(fā)揮它的優(yōu)越性。計(jì)算機(jī)進(jìn)行信息管理與信息管理系統(tǒng)的開發(fā)密切相關(guān),系統(tǒng)的開發(fā)是系統(tǒng)管理的前提。隨著我國市場經(jīng)濟(jì)的蓬勃發(fā)展和人們對醫(yī)藥產(chǎn)品需求的迅速增加,醫(yī)藥行業(yè)正處于一個(gè)高速發(fā)展的時(shí)期。行業(yè)

11、的快速發(fā)展必然導(dǎo)致競爭的加劇,想要在激烈的市場競爭中謀求發(fā)展,客觀上要求企業(yè)必須加強(qiáng)內(nèi)部管理,提高運(yùn)營效率。另外,由于醫(yī)藥產(chǎn)品種類繁多,銷售模式特殊,業(yè)務(wù)量大,單憑手工管理已很難適應(yīng)工作的需要。醫(yī)藥作為一個(gè)關(guān)系人們健康的特殊行業(yè),國家對醫(yī)藥行業(yè)又有一些不同于其他行業(yè)的管理政策,這些都加大了管理的難度。如何盡快建立和完善現(xiàn)代企業(yè)的信息管理機(jī)制問題,已成為醫(yī)藥企業(yè)發(fā)展的關(guān)鍵所在。1.2 系統(tǒng)開發(fā)意義根據(jù)實(shí)際情況和系統(tǒng)的開發(fā)背景來看,開發(fā)本醫(yī)藥管理系統(tǒng)的意義在于:能夠集中處理藥品的進(jìn)銷存業(yè)務(wù),提供快速的藥品查詢功能、快速的統(tǒng)計(jì)藥品信息、銷量信息,對藥品進(jìn)行高效的管理以滿足管理者和消費(fèi)者的需求。1.3

12、 文章內(nèi)容安排本文主要闡述了本醫(yī)藥管理系統(tǒng)的整體開發(fā)過程。介紹了系統(tǒng)的開發(fā)環(huán)境以及開發(fā)工具,對于設(shè)計(jì)思想和設(shè)計(jì)流程也做出了全面的敘述,在數(shù)據(jù)庫各個(gè)數(shù)據(jù)表之間的具體關(guān)聯(lián)方面也做出了詳細(xì)說明,并且具體剖析了系統(tǒng)各個(gè)功能的實(shí)現(xiàn)過程以及詳細(xì)設(shè)計(jì)過程。具體內(nèi)容安排如下:第一章:介紹系統(tǒng)的開發(fā)背景和開發(fā)意義,以及文章的內(nèi)容安排;第二章:介紹系統(tǒng)開發(fā)的硬件環(huán)境和軟件環(huán)境,以及開發(fā)工具和核心技術(shù);第三章:對系統(tǒng)進(jìn)行需求分析,主要對系統(tǒng)進(jìn)行可行性分析,明確系統(tǒng)要實(shí)現(xiàn)的目標(biāo)和所完成的功能;第四章:完成系統(tǒng)的詳細(xì)設(shè)計(jì),包括系統(tǒng)功能結(jié)構(gòu)圖,業(yè)務(wù)流程圖以及數(shù)據(jù)庫的E-R圖;第五章:完成系統(tǒng)的詳細(xì)實(shí)現(xiàn),包括公共類的設(shè)計(jì)和

13、各個(gè)模塊的設(shè)計(jì)。2 系統(tǒng)開發(fā)環(huán)境和開發(fā)工具簡介2.1 系統(tǒng)開發(fā)環(huán)境硬件平臺:CPU:2.00GHz內(nèi)存:2G軟件平臺:操作系統(tǒng):Windows XP數(shù)據(jù)庫:MySQL Server 5.0開發(fā)工具:MyEclipse 8.6開發(fā)工具包:JDK 1.6JSP服務(wù)器:Tomcat 7.0瀏覽器:IE 82.2 系統(tǒng)開發(fā)工具簡介2.2.1 MySQL數(shù)據(jù)庫介紹MySQL是一個(gè)小型關(guān)系型數(shù)據(jù)庫管理系統(tǒng),開發(fā)者為瑞典MySQL AB公司。在2008年1月16號被Sun公司收購。而2009年,SUN又被Oracle收購。MySQL是一種關(guān)聯(lián)數(shù)據(jù)庫管理系統(tǒng),關(guān)聯(lián)數(shù)據(jù)庫將數(shù)據(jù)保存在不同的表中,而不是將所有數(shù)據(jù)

14、放在一個(gè)大倉庫內(nèi)。這樣就增加了速度并提高了靈活性。SQL是用于訪問數(shù)據(jù)庫的最常用標(biāo)準(zhǔn)化語言。MySQL軟件采用了GPL(GNU通用公共許可證)。由于其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點(diǎn),許多中小型網(wǎng)站為了降低網(wǎng)站總體擁有成本而選擇了MySQL作為網(wǎng)站數(shù)據(jù)庫。2.2.2 JSP技術(shù)概述JSP技術(shù)使用Java編程語言編寫XML的tags和scriptlets,來封裝產(chǎn)生動(dòng)態(tài)網(wǎng)頁的處理邏輯。網(wǎng)頁還通過tags和scriptlets訪問存在于服務(wù)端的資源的應(yīng)用邏輯。JSP將網(wǎng)頁邏輯與網(wǎng)頁設(shè)計(jì)和顯示分離,支持可重用的基于組件的設(shè)計(jì),使基于Web的應(yīng)用程序的開發(fā)變得迅速和容易。Web服

15、務(wù)器在遇到訪問JSP網(wǎng)頁的請求時(shí),首先執(zhí)行其中的程序段,然后將執(zhí)行結(jié)果連同JSP文件中的HTML代碼一起返回給客戶。插入的Java程序段可以操作數(shù)據(jù)庫、重新定向網(wǎng)頁等,以實(shí)現(xiàn)建立動(dòng)態(tài)網(wǎng)頁所需要的功能。JSP與JavaServlet一樣,是在服務(wù)器端執(zhí)行的,通常返回給客戶端的就是一個(gè)HTML文本,因此客戶端只要有瀏覽器就能瀏覽。JSP頁面由HTML代碼和嵌入其中的Java代碼所組成。服務(wù)器在頁面被客戶端請求以后對這些Java代碼進(jìn)行處理,然后將生成的HTML頁面返回給客戶端的瀏覽器。Java Servlet是JSP的技術(shù)基礎(chǔ),而且大型的Web應(yīng)用程序的開發(fā)需要Java Servlet和JSP配合

16、才能完成。JSP具備了Java技術(shù)的簡單易用,完全的面向?qū)ο?,具有平臺無關(guān)性且安全可靠,主要面向因特網(wǎng)的所有特點(diǎn)。自JSP推出后,眾多大公司都支持JSP技術(shù)的服務(wù)器,如IBM、Oracle、Bea公司等,所以JSP迅速成為商業(yè)應(yīng)用的服務(wù)器端語言。3 系統(tǒng)需求分析3.1 可行性分析可行性分析是在進(jìn)行初步調(diào)查后所進(jìn)行的對系統(tǒng)開發(fā)的必要性和可能性的研究,所以也稱為可行性研究。所謂可行性應(yīng)該包括必要性和可能性兩個(gè)方面。沒有必要性的項(xiàng)目是不應(yīng)該進(jìn)行的。一般地,軟件領(lǐng)域的可行性分析主要考慮兩個(gè)因素:技術(shù)可行性和經(jīng)濟(jì)可行性。3.1.1 技術(shù)可行性根據(jù)系統(tǒng)目標(biāo)來衡量所需的技術(shù)是否具備,本醫(yī)藥管理系統(tǒng)是一個(gè)數(shù)據(jù)

17、庫管理和查詢的系統(tǒng),軟件技術(shù)方面采用的是 Microsoft Windows XP Professional版的操作系統(tǒng),MySQL Server 5.0為后臺數(shù)據(jù)庫開發(fā)工具, MyEclipse 8.6集成開發(fā)工具。JDK 1.6開發(fā)工具包,Tomcat 7.0服務(wù)器,IE 8瀏覽器以及JSP技術(shù),能夠?qū)崿F(xiàn)本醫(yī)藥管理系統(tǒng),以滿足用戶需求。3.1.2 經(jīng)濟(jì)可行性醫(yī)藥進(jìn)銷存管理已成為醫(yī)藥管理工作中不可缺少的部分,開發(fā)一個(gè)醫(yī)藥管理系統(tǒng)具有很強(qiáng)的經(jīng)濟(jì)價(jià)值。本醫(yī)藥管理系統(tǒng)提供快速的藥品查詢功能、快速的統(tǒng)計(jì)藥品信息、銷售信息等,對藥品進(jìn)行高效的管理以滿足管理者的需求。所以,本醫(yī)藥管理系統(tǒng)在經(jīng)濟(jì)型上有很強(qiáng)

18、的實(shí)際價(jià)值。3.2 系統(tǒng)功能需求根據(jù)實(shí)際情況分析,本醫(yī)藥管理系統(tǒng)的應(yīng)具有主要功能包括:(1) 醫(yī)藥管理:添加藥品、查看藥品、高級查詢、查看庫存;(2) 類別管理:添加類別、查看類別、類別統(tǒng)計(jì);(3) 購買藥品:選購藥品、查看選購;(4) 銷售管理:查看明細(xì)、今日明細(xì)、日期查詢、銷售排行;(5) 進(jìn)貨/需求管理:添加進(jìn)貨、查看進(jìn)貨;(6) 系統(tǒng)管理:添加管理員、查看所有管理員、修改密碼、系統(tǒng)初始化、退出系統(tǒng)。3.3 數(shù)據(jù)流圖數(shù)據(jù)流程圖(Data Flow Diagram,簡稱DFD)是數(shù)據(jù)流程分析所使用的主要工具之一,是組織中信息運(yùn)動(dòng)的抽象,是管理信息系統(tǒng)邏輯模型的主要形式。這個(gè)模型不涉及硬件、

19、軟件、數(shù)據(jù)結(jié)構(gòu)與文件組織,它與對系統(tǒng)的物理描述無關(guān),只是用一種圖形及與此相關(guān)的注釋來表示系統(tǒng)的邏輯模型,即所開發(fā)的系統(tǒng)在管理信息處理方面要做什么。醫(yī)藥管理系統(tǒng)零層數(shù)據(jù)流圖如圖3-1所示。P醫(yī)藥管理系統(tǒng)F1藥品信息F2藥品類別信息F3藥品銷售信息F4用戶信息D1 藥品信息表D2 藥品類別信息表D3 銷售明細(xì)信息表D4 用戶信息表圖3-1 醫(yī)藥管理系統(tǒng)零層數(shù)據(jù)流圖F1.1藥品信息添加F1.2藥品信息刪除 F1.3藥品信息修改 醫(yī)藥管理P1F1.4藥品信息查詢 D1 藥品信息表醫(yī)藥管理系統(tǒng)一層數(shù)據(jù)流圖如圖3-2、圖3-3、圖3-4、圖3-5所示。圖3-2 醫(yī)藥管理系統(tǒng)一層數(shù)據(jù)流圖F2.1藥品類別信息

20、添加F2.2藥品類別信息刪除 F2.3藥品類別信息修改 類別管理P2F2.4藥品類別信息統(tǒng)計(jì) D2 藥品類別信息表2 藥品類別信息表D1 P醫(yī)藥管理系統(tǒng)信息F3.1購買藥品信息添加F3.2購買藥品信息刪除 F3.3藥品銷售信息查詢 銷售管理P3F3.4藥品銷售信息統(tǒng)計(jì) D3 銷售明細(xì)信息表2 藥品類別信息表D1 P醫(yī)藥管理系統(tǒng)信息圖3-3 醫(yī)藥管理系統(tǒng)一層數(shù)據(jù)流圖F4.1用戶信息添加F4.2用戶信息刪除 F4.3用戶信息修改 系統(tǒng)管理P4D4 用戶信息表2 藥品類別信息表D1 P醫(yī)藥管理系統(tǒng)信息圖3-4 醫(yī)藥管理系統(tǒng)一層數(shù)據(jù)流圖圖3-5 醫(yī)藥管理系統(tǒng)一層數(shù)據(jù)流圖4 系統(tǒng)總體設(shè)計(jì)4.1 系統(tǒng)結(jié)構(gòu)

21、設(shè)計(jì)在開發(fā)項(xiàng)目之前,首先要對軟件的結(jié)構(gòu)進(jìn)行設(shè)計(jì),也稱之為軟件架構(gòu),此過程是對軟件的整體結(jié)構(gòu)的設(shè)計(jì)。如軟件的邏輯分層結(jié)構(gòu)、結(jié)構(gòu)的實(shí)現(xiàn)、數(shù)據(jù)庫等等,特別是在Java的大型項(xiàng)目中,還需要設(shè)計(jì)出程序中包結(jié)構(gòu)及接口等,非常復(fù)雜,需要程序員進(jìn)行全面的考慮。對于醫(yī)藥管理系統(tǒng)的整體設(shè)計(jì):邏輯分層結(jié)構(gòu)設(shè)計(jì)、定義ActionForm、持久層結(jié)構(gòu)設(shè)計(jì)、業(yè)務(wù)層結(jié)構(gòu)設(shè)計(jì)、頁面結(jié)構(gòu)設(shè)計(jì)以及數(shù)據(jù)庫設(shè)計(jì)。系統(tǒng)功能結(jié)構(gòu)圖如圖4-1所示。醫(yī)藥管理系統(tǒng)醫(yī)藥管理類別管理購買藥品銷售管理進(jìn)貨/需求管理系統(tǒng)管理添加藥品查看藥品高級查詢查看庫存添加類別查看類別類別統(tǒng)計(jì)選購藥品查看選購查看明細(xì)今日明細(xì)日期查詢銷售排行添加進(jìn)貨查看進(jìn)貨添加管理

22、員查看管理員修改密碼系統(tǒng)初始化退出系統(tǒng)圖4-1 系統(tǒng)功能結(jié)構(gòu)圖4.1.1 邏輯分層結(jié)構(gòu)設(shè)計(jì)遵循MVC結(jié)構(gòu)進(jìn)行分析,醫(yī)藥管理系統(tǒng)可分為四層結(jié)構(gòu),分別為表示層、業(yè)務(wù)邏輯層、持久層與數(shù)據(jù)庫層,四層結(jié)構(gòu)圖如圖4-2所示。醫(yī)藥管理系統(tǒng)表示層(Struts框架)業(yè)務(wù)邏輯層(Struts框架)持久層(Hibernate框架)數(shù)據(jù)庫層(MySQL數(shù)據(jù)庫)圖4-2 四層結(jié)構(gòu)圖對于四層結(jié)構(gòu)的具體實(shí)現(xiàn)如圖4-3所示。視圖JSP/ActionFormStruts標(biāo)簽控制器Actionstruts-config.xml持久化Hibernate APIhibernate.cfg.xml醫(yī)藥管理系統(tǒng)MySQL數(shù)據(jù)庫圖4-3

23、 四層結(jié)構(gòu)實(shí)現(xiàn)圖4.1.2 定義ActionFormActionForm是簡單的JavaBean,它主要用來保存用戶所輸入的表單數(shù)據(jù),ActionForm要獲取這些數(shù)據(jù)需要通過ActionForm對象進(jìn)行傳遞。AcitonFomr對表單數(shù)據(jù)進(jìn)行了封裝,在Jsp頁面與Action對象中提供了交互訪問的方法。在使用過程中,可通過繼承org.apache.struts.ActionForm對象來創(chuàng)建需要的ActionForm對象,項(xiàng)目中所涉及到的ActionForm對象如圖4-4所示。ActionFormcom.lyq.struts.formUserFormSellDetailFormCategor

24、yFormMedicienForm用戶銷售明細(xì)類別藥品圖4-4 ActionForm對象圖4.1.3 持久層結(jié)構(gòu)設(shè)計(jì)持久層結(jié)構(gòu)通過Hibernate框架進(jìn)行設(shè)計(jì),由于Hibernate對不同對象的增、刪、改、查操作都具有一定的共性,如添加數(shù)據(jù)使用sava()方法、刪除數(shù)據(jù)使用delete()方法等,項(xiàng)目中將這些具有共性的操作抽取出來,封裝成一個(gè)類,其他數(shù)據(jù)庫操作對象可繼承此類來擁有這些方法,從而減少程序中的多余代碼,持久層結(jié)構(gòu)設(shè)計(jì)圖如圖4-5所示。com.lyq.daoSupperDaosave(in obj:Object):voidsaveOrUpdate(in obj:Object):vo

25、iddelete(in obj:Object):voidfindByHQL(in hql:String):ListdeleteByHQL(in hql:String):voiduniqueResult(in hql:String,in where:Object):ObjectfindPaging(in hql:String,in offset:int,in length:int,in where:Object):ListCategoryDaoMedicineDaoSellDaoUserDao圖4-5 持久層結(jié)構(gòu)設(shè)計(jì)圖4.1.4 業(yè)務(wù)層結(jié)構(gòu)設(shè)計(jì)業(yè)務(wù)層結(jié)構(gòu)主要通過Stuts框架進(jìn)行設(shè)計(jì),由Stru

26、ts的中央控制器對各種請求操作進(jìn)行控制,并通過相應(yīng)的Action對其進(jìn)行業(yè)務(wù)處理,項(xiàng)目中所用到的Action對象及關(guān)系如圖4-6所示。ActionDispatchActioncom.lyq.struts.actionLoginActionRequireActionSellActionBaseActionLookupDispatchActionCategoryActionSystemActionMedicineActionDeleteActionDeleteReqMedActionDeleteMedicineAction圖4-6 Action對象關(guān)系圖4.1.5 頁面結(jié)構(gòu)設(shè)計(jì)醫(yī)藥管理系統(tǒng)的頁面結(jié)

27、構(gòu)采用框架進(jìn)行設(shè)計(jì),通過HTML語言中的呃標(biāo)簽及標(biāo)簽將頁面分成三個(gè)部分,分別為頁面頭部、頁面導(dǎo)航及內(nèi)容頁面,頁面結(jié)構(gòu)圖如圖4-7所示。頁面頭部頁面導(dǎo)航頁面內(nèi)容圖4-7 頁面結(jié)構(gòu)圖4.2 數(shù)據(jù)庫設(shè)計(jì)數(shù)據(jù)庫設(shè)計(jì)的內(nèi)容是:對于一個(gè)確定的環(huán)境,進(jìn)行符合應(yīng)用語義的邏輯設(shè)計(jì),以及提供一個(gè)確定存貯結(jié)構(gòu)和物理設(shè)計(jì),建立實(shí)現(xiàn)系統(tǒng)目標(biāo),并能有效存取數(shù)據(jù)和數(shù)據(jù)模型。其主要任務(wù)是設(shè)計(jì)出能滿足各種應(yīng)用要求的數(shù)據(jù)模型。4.2.1 實(shí)體對象設(shè)計(jì)在使用Hibernate框架的項(xiàng)目中,實(shí)體對象的確立是項(xiàng)目中的關(guān)鍵,實(shí)體對象與數(shù)據(jù)庫中的數(shù)據(jù)表相對應(yīng),并通過O/R映射建立實(shí)體與數(shù)據(jù)庫的聯(lián)系,Hibernate完全通過操作實(shí)體來操作

28、數(shù)據(jù)庫,所以首先要確定項(xiàng)目中的實(shí)體對象。在醫(yī)藥管理系統(tǒng)中,實(shí)體對象及其關(guān)系如圖4-8所示。com.lyq.persistence銷售明細(xì)藥品信息藥品類別用戶CategoryMedicineSellDetail多對一一對多多對一UserSellDetail.hbm.xmlUser.hbm.xmlMedicine.hbm.xmlCategory.hbm.xml圖4-8 實(shí)體對象關(guān)系圖4.2.2 數(shù)據(jù)庫表結(jié)構(gòu)本系統(tǒng)的數(shù)據(jù)庫表設(shè)計(jì)主要包括:用戶信息表、藥品信息表、藥品類別信息表、銷售明細(xì)信息表。(1) 用戶信息表(tb_user),如表4.1所示。表4.1 用戶信息表字段名數(shù)據(jù)類型長度是否主鍵允許空描

29、述idinteger是否自動(dòng)編號usernamevarchar50否否用戶名passwordvarchar50否否密碼createTimedatetime否是創(chuàng)建時(shí)間(2) 藥品信息表(tb_medicine),如表4.2所示。表4.2 藥品信息表字段名數(shù)據(jù)類型長度是否主鍵允許空描述idinteger是否自動(dòng)編號medNovarchar100否否藥品編碼Namevarchar200否否藥品名稱factoryAddvarchar200否是出廠地址descriptionmediumtext否是藥品描述pricedouble否否藥品單價(jià)medCountinteger否是藥品數(shù)量reqCountint

30、eger否是需求數(shù)量photoPathvarchar255否是藥品圖片categoryIddatetime否是類別編號(3) 藥品類別信息表(tb_category),如表4.3所示。表4.3 藥品類別信息表字段名數(shù)據(jù)類型長度是否主鍵允許空描述idinteger是否自動(dòng)編號namevarchar100否否類別名稱descriptiontext否是類別描述createTimedatetime否是創(chuàng)建時(shí)間(4) 銷售明細(xì)信息表(tb_selldetail),如表4.4所示。表4.4 藥品銷售信息表字段名數(shù)據(jù)類型長度是否主鍵允許空描述idinteger是否自動(dòng)編號sellNamevarchar200

31、否否藥品名稱sellPricedouble否否藥品單價(jià)sellCountinteger否否銷售數(shù)量sellTimedatetime否否銷售時(shí)間medidinteger否是藥品編號useridinteger否是用戶編號4.2.3 數(shù)據(jù)庫E-R圖(1) 根據(jù)實(shí)際需求和設(shè)計(jì)規(guī)劃得出的實(shí)體有:用戶實(shí)體、藥品實(shí)體、類別實(shí)體、銷售明細(xì)實(shí)體,各實(shí)體的屬性圖如圖4-9、圖4-10、圖4-11、圖4-12所示。用戶用戶名密碼創(chuàng)建時(shí)間圖4-9 用戶實(shí)體屬性圖藥品藥品編碼藥品名稱藥品數(shù)量藥品單價(jià)出廠地址藥品描述藥品類別藥品圖片需求數(shù)量圖4-10 藥品實(shí)體屬性圖類別類別名創(chuàng)建時(shí)間類別描述圖4-11 類別實(shí)體屬性圖銷售

32、明細(xì)藥品編碼藥品名稱藥品單價(jià)銷售數(shù)量銷售時(shí)間操作員銷售金額圖4-12 銷售明細(xì)實(shí)體屬性圖(2) 各實(shí)體之間的關(guān)系E-R圖如圖4-13所示。N藥品類別用戶銷售明細(xì)管理MNM1NN添加銷售管理管理MMN圖4-13 各實(shí)體關(guān)系E-R圖5 系統(tǒng)詳細(xì)設(shè)計(jì)在編寫代碼之前,需要對項(xiàng)目做出一些準(zhǔn)備工作,如項(xiàng)目環(huán)境的搭建、項(xiàng)目所涉及到的第三方類庫的支持、web.xml的配置等。在醫(yī)藥進(jìn)銷存管理系統(tǒng)中,主要涉及到Struts框架Hibernate框架及JFreeChart組件的應(yīng)用,因此在開發(fā)項(xiàng)目之前,需要添加他們的類庫支持。(1) 配置web.xml,主要代碼如下:actionorg.apache.struts

33、.action.ActionServletaction*.do(2) 配置struts-config.xml,主要代碼如下:(3) 配置hibernate.cfg.xml,主要代碼如下:org.hibernate.dialect.MySQLDialectjdbc:mysql:/localhost:3306/db_database25rootrootcom.mysql.jdbc.Driverupdatetrue5.1 公共類設(shè)計(jì)在Java程序開發(fā)中,如果一個(gè)功能反復(fù)被調(diào)用,可以將這個(gè)功能抽取出來封裝為一個(gè)類做為公共類,在需要此功能的地方通過繼承此類進(jìn)行實(shí)現(xiàn)。公共類實(shí)質(zhì)是代碼的重用的一種方式,在面

34、向?qū)ο蟮拈_發(fā)模式中,經(jīng)常被使用,它可以簡化程序中的代碼提高程序的可讀性,醫(yī)藥管理系統(tǒng)中的公共類設(shè)計(jì)如下。5.1.1 Hibernate過濾器在Web項(xiàng)目中,以普通方式使用Hibernate將無法解決Hibernate延遲加載,如下圖所示。當(dāng)有一個(gè)業(yè)務(wù)請求查詢數(shù)據(jù)時(shí),首先要開啟Session對象,然后Hibernate對數(shù)據(jù)進(jìn)行查詢,再關(guān)閉Session對象,然后通過Jsp頁面來顯示數(shù)據(jù)。在這一過程中,如果查詢數(shù)據(jù)時(shí)使用了延遲加載,當(dāng)Jsp頁面顯示數(shù)據(jù)信息時(shí),Hibernate將拋出異常信息,因此此時(shí)Session已經(jīng)關(guān)閉,Hibernate不再對數(shù)據(jù)進(jìn)行操作。通過過濾器管理Hibernate的

35、Session對象則可以避免此問題。主要代碼如下:public void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException try chain.doFilter(request, response); finallySession session = (Session)threadLocal.get();if(session != null)if(session.isOpen()session.close();thre

36、adLocal.remove();public static Session getSession() Session session = (Session)threadLocal.get();if (session = null) session = factory.openSession();threadLocal.set(session);return session;5.1.2 SuperDao類SuperDao類為項(xiàng)目中所有數(shù)據(jù)庫操作的父類,此類中封裝了數(shù)據(jù)庫操作的常用方法。在此類中,由于Hibernate對數(shù)據(jù)的操作都需要用到Session接口,此類中定義了一個(gè)protected類

37、型的Session對象,為其子類提供方便。主要代碼如下:public class SupperDao protected Session session = null;public void save(Object obj)try session = HibernateFilter.getSession();session.beginTransaction();session.save(obj);session.getTransaction().commit(); catch (Exception e) e.printStackTrace();session.getTransaction().

38、rollback();public void delete(Object obj)try session = HibernateFilter.getSession();session.beginTransaction();session.delete(obj);session.getTransaction().commit(); catch (Exception e) e.printStackTrace();session.getTransaction().rollback();5.1.3 BaseAction類BaseAction類是業(yè)務(wù)層有一個(gè)超類對象,它繼承了Struts的Dispatc

39、hAction類,同時(shí)還為子類對象提供公用方法。Struts的DispatchAction類繼承Action類,此類在處理請求時(shí)首先要執(zhí)行execute()方法,然后通過控制器再轉(zhuǎn)發(fā)到相應(yīng)的方法進(jìn)行業(yè)務(wù)處理,如果對系統(tǒng) 中涉及到的Action都編寫一個(gè)驗(yàn)證方法,程序代碼的重負(fù)性太高,則不能體現(xiàn)出面向?qū)ο蟮脑O(shè)計(jì)模式,所以將其單獨(dú)封裝BaseAction類中,此類通過重寫Action類的execute()方法對用戶身份進(jìn)行驗(yàn)證。主要代碼如下:public class BaseAction extends DispatchAction protected int recPerPage = 3;pro

40、tected Locale locale = null; protected MessageResources message = null; public ActionForward execute(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response)throws Exception this.locale = this.getLocale(request);this.message = this.getResources(request);if (re

41、quest.getSession().getAttribute(user) = null) return mapping.findForward(login);return super.execute(mapping, form, request, response);5.1.4 DeleteAction類公共類DeleteAction主要用于項(xiàng)目中LookupDispatchAction的請求進(jìn)行處理,它繼承LookupDispatchAction類,此類中同樣重寫了execute()方法對用戶身份做出驗(yàn)證,當(dāng)用戶身份不失敗時(shí),將進(jìn)行錯(cuò)誤處理。同時(shí),此類還重寫了LookupDispatchA

42、ction類中的getKeyMethodMap()方法,添加了兩個(gè)按鈕對象的Key。主要代碼如下:public class DeleteAction extends LookupDispatchActionpublic ActionForward execute(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response)throws Exception if(request.getSession().getAttribute(user) = null)retur

43、n mapping.findForward(login);return super.execute(mapping, form, request, response);protected Map getKeyMethodMap() Map map = new HashMap();map.put(button.delete.selected, selected);map.put(button.delete.all, all);return map;5.1.5 字符串工具類在一個(gè)Web項(xiàng)目中,字符串是經(jīng)常被操作的對象,為簡化程序的代碼及提高程序的可讀性,對經(jīng)常用到的字符串處理方法,可以封裝一個(gè)字符

44、串工具類對其進(jìn)行操作。比如Jsp頁面的多選框,它提交的參數(shù)值為數(shù)組類型,在數(shù)據(jù)庫的操作過程中需要將其轉(zhuǎn)換為字符串類型;在超鏈接中,如果加入中文參數(shù)將不能被瀏覽器解析,需要對其進(jìn)行一定的處理才可以使用。類似于這種操作,在程序中使用的非常頻繁,將其封裝為一個(gè)公共類中,是一種良好的決解方案。在醫(yī)藥管理系統(tǒng)中,封裝了一個(gè)名稱為StringUtil的字符串工具類,用于對字符的特殊處理,此類中均為靜態(tài)方法。主要代碼如下:public class StringUtil public static String encodeURL(String s)try s = URLEncoder.encode(s,GB

45、K); catch (Exception e) e.printStackTrace();return s;public static String encodeZh(String s)try s = new String(s.getBytes(iso-8859-1),GBK); catch (Exception e) e.printStackTrace();return s;5.2 系統(tǒng)登陸模塊設(shè)計(jì)系統(tǒng)登錄是一個(gè)對用戶身份驗(yàn)證的過程,只有登錄成功的用戶才可以對系統(tǒng)進(jìn)行操作,否則不能對系統(tǒng)進(jìn)行管理維護(hù),它是系統(tǒng)的一道安全門。(1) 用戶登錄頁面如圖5-1所示。圖5-1 登錄頁面圖(2) 用戶登錄

46、時(shí)查詢用戶登錄信息,主要代碼如下:public User login(String userName,String password)User user = null;try session = HibernateFilter.getSession();session.beginTransaction();String hql = from User u where u.username=? and u.password=?;Query query =session.createQuery(hql).setParameter(0,userName).setParameter(1, passwo

47、rd);user = (User)query.uniqueResult();session.getTransaction().commit(); catch (Exception e) e.printStackTrace();session.getTransaction().rollback();return user;(3) 處理用戶登錄請求的主要代碼如下:public class LoginAction extends Action public ActionForward execute(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response)throws Exception UserForm uf = (UserForm) form;String userName = uf.getUsername();String password = uf.getPassword();User user = null;if (userName != null & password != null) UserDao userDao = new UserDao();user = userDao.login(userName, password);if

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論