首頁 > 文章中心 > 正文

          藥品進銷存儲管理

          前言:本站為你精心整理了藥品進銷存儲管理范文,希望能為你的創作提供參考價值,我們的客服老師可以幫助你提供個性化的參考范文,歡迎咨詢。

          藥品進銷存儲管理

          1引言

          面向對象編程(OOP)具有多方面的吸引力。對管理人員,它實現了更快和更廉價的開發與維護過程。對分析與設計人員,建模處理變得更加簡單,能生成清晰、易于維護的設計方案。對程序員,對象模型顯得如此高雅和淺顯。此外,面向對象工具以及庫的巨大威力使編程成為一項更使人愉悅的任務。每個人都可從中獲益,至少表面如此。Java便是實現面向對象編程的一種優秀的語言。同人類任何語言一樣,Java為我們提供了一種表達思想的方式。如操作得當,同其他方式相比,隨著問題變得愈大和愈復雜,這種表達方式的方便性和靈活性會顯露無遺[1]。Java吸取了C++面向對象的概念,將數據封裝于類中,利用類的優點,實現了程序的簡潔性和便于維護性。類的封裝性,繼承性等有關對象的特性,使程序代碼只需一次編譯,然后通過上述特性反復利用。程序員只需把主要精力用在類和接口的設計和應用上。

          MVC模式作為現在軟件行業最為流行的一種設計模式,一旦和Java相結合,所產生的作用是無庸質疑的。面向對象的概念結合結構清晰的模型-視圖-控制器三層結構,使得軟件設計人員的思想得到進一步的解放,MVC模式的一個更大的優點在于清晰的結構能使得軟件開發完成之后的維護和拓展變的更加輕松。MVC的優點表現在以下幾個方面:(1)可以為一個模型在運行時同時建立和使用多個視圖。變化-傳播機制可以確保所有相關的視圖及時得到模型數據變化,從而使所有關聯的視圖和控制器做到行為同步。(2)視圖與控制器的可接插性,允許更換視圖和控制器對象,而且可以根據需求動態的打開或關閉、甚至在運行期間進行對象替換。(3)模型的可移植性。因為模型是獨立于視圖的,所以可以把一個模型獨立地移植到新的平臺工作。需要做的只是在新平臺上對視圖和控制器進行新的修改。(4)潛在的框架結構。可以基于此模型建立應用程序框架,不僅僅是用在設計界面的設計中。

          本文介紹了基于Java的MVC模式的網上日志備忘系統的設計與實現,主要包括系統需求分析和系統的功能設計、數據庫設計以及主要的Java類的設計和相關的XML文件的配置。本系統主要基于Java和MVC模式,采用struts框架實現主要功能模塊的設計,采用Mysql數據庫實現數據結構設計。重點闡述了用戶登錄模塊、用戶日志管理模塊和后臺管理模塊的設計。

          2基礎知識2.1JAVA程序語言

          Java是一種簡單的、面向對象的、分布式的、可解釋的、鍵壯的、安全的、結構中立的、可移植的、性能優異的、多線程的、動態的語言。Java的開發環境有不同的版本,如sun公司的JavaDevelopersKit,簡稱JDK。后來微軟公司推出了支持Java規范的MicrosoftVisualJ++Java開發環境,簡稱VJ++。現在流行的開發平臺有Eclipse和JBuilder等。主要具有平臺無關性、安全性、面向對象、分布式、健壯性等特點[1][2]。

          2.2MVC設計模式

          MVC英文即Model-View-Controller,即把一個應用的輸入、處理、輸出流程按照Model、View、Controller的方式進行分離,這樣一個應用被分成三個層——模型層、視圖層、控制層。

          視圖(View)代表用戶交互界面,對于Web應用來說,可以概括為HTML界面,但有可能為XHTML、XML和Applet[3]。隨著應用的復雜性和規模性,界面的處理也變得具有挑戰性。一個應用可能有很多不同的視圖,MVC設計模式對于視圖的處理僅限于視圖上數據的采集和處理,以及用戶的請求,而不包括在視圖上的業務流程的處理。業務流程的處理交予模型(Model)處理。比如一個訂單的視圖只接受來自模型的數據并顯示給用戶,以及將用戶界面的輸入數據和請求傳遞給控制和模型。

          模型(Model):就是業務流程、狀態的處理以及業務規則的制定。業務流程的處理過程對其它層來說是黑箱操作,模型接受視圖請求的數據,并返回最終的處理結果。業務模型的設計可以說是MVC最主要的核心。MVC設計模式告訴我們,把應用的模型按一定的規則抽取出來,抽取的層次很重要,這也是判斷開發人員是否優秀的設計依據。抽象與具體不能隔得太遠,也不能太近。MVC并沒有提供模型的設計方法,而只告訴你應該組織管理這些模型,以便于模型的重構和提高重用性。我們可以用對象編程來做比喻,MVC定義了一個頂級類,告訴它的子類你只能做這些,但沒法限制你能做這些。這點對編程的開發人員非常重要。

          業務模型還有一個很重要的模型那就是數據模型。數據模型主要指實體對象的數據保存(持續化)。比如將一張訂單保存到數據庫,從數據庫獲取訂單。我們可以將這個模型單獨列出,所有有關數據庫的操作只限制在該模型中。

          控制層(Controller)可以理解為從用戶接收請求,將模型與視圖匹配在一起,共同完成用戶的請求。劃分控制層的作用也很明顯,它清楚地告訴你,它就是一個分發器,選擇什么樣的模型,選擇什么樣的視圖,可以完成什么樣的用戶請求。控制層并不做任何的數據處理。例如,用戶點擊一個連接,控制層接受請求后,并不處理業務信息,它只把用戶的信息傳遞給模型,告訴模型做什么,選擇符合要求的視圖返回給用戶。因此,一個模型可能對應多個視圖,一個視圖可能對應多個模型。

          2.3JSP(JAVASERVERPAGE)

          基于文本的WEB組件,在HTML代碼中嵌入JAVA代碼來實現動態內容的輸出的一項技術。

          1)利于將創建內容和表示內容的代碼分離開來;

          2)標簽技術更容易使人理解和使用,組件重用;

          3)動態內容與靜態內容的分離;

          4)本質上還是servlet,在服務器端被轉換成servlet;

          5)適合多層WEB應用開發體系結構。

          2.4Struts框架

          Struts是采用JavaServlet/JavaServerPages技術,開發Web應用程序的開放源碼的framework。采用Struts能開發出基于MVC(Model-View-Controller)設計模式的應用構架[4]。

          Struts有如下的主要功能:包含一個controllerservlet,能將用戶的請求發送到相應的Action對象[5]。JSPtag庫,并且在controllerservlet中提供關聯支持,幫助開發員創建交互式表單應用。提供了一系列實用對象:XML處理、通過JavareflectionAPIs自動處理JavaBeans屬性、國際化的提示和消息[6]。

          Struts優點:

          1)集中式的、基于XML的配置方式,避免了Java硬編碼;

          2)提供了Formbean的方式封裝用戶請求的參數,使其在請求階段方便使用;

          3)自定義了很多有用的標簽,如Beantags可以方便操作Bean中的內容;HTMLtags可以讓你輕松初始化表單域等內容;

          4)增加了表單驗證功能。

          3系統設計3.1需求分析

          本系統的用戶可分為管理員,注冊用戶和普通用戶(即未注冊用戶)三類。考慮到系統的安全性,本系統共分成兩個界面:一個界面用于注冊登錄,主要進行基本資料的修改、日志分類和日志內容的管理以及查詢等,進入方式為主頁默認顯示;另外一個界面用于后臺管理員登錄,主要負責審核用戶權限、系統新聞維護、公告維護等。

          從總體上看,系統主要需要實現了下列功能:

          對管理員來說,包括用戶管理、新聞維護、公告維護。

          l用戶管理:管理員可以通過進入用戶管理模塊對用戶進行相關的操作。首先從查詢頁面輸入查詢條件,結果在查詢模塊下方分頁顯示,管理員可以在查詢結果中對用戶進行相關操作。主要包括用戶信息的瀏覽,注冊用戶的權限的審批和停用,用戶的刪除。

          l新聞維護:管理員可以對前臺首頁的本站新聞進行維護,包括新聞的添加,修改和刪除。

          l公告維護:管理員對首頁公告進行更新。

          對用戶來說,包括用戶注冊、用戶登陸、瀏覽新聞和共享文章,以及登陸后日志分類維護,日志內容維護等。

          l用戶注冊:非注冊用戶要取得系統的使用權必須先進行用戶注冊。用戶通過進入注冊對自己的基本信息進行填寫,提交后經過管理員審核完成,正式獲得系統的使用權。

          l用戶登陸:注冊完成并且經過審核的用戶須登陸后才能進入日志維護頁面。該模塊實現了用戶的登陸和錯誤驗證。

          l瀏覽新聞和共享文章:普通用戶(包括注冊和非注冊用戶)進入首頁都能對新聞和注冊用戶的公開權限的文章進行瀏覽,通過點擊標題能夠查看詳細內容。

          l日志分類維護:此模塊主要對日志分類進行維護。如果是第一次進入系統,寫日志之前必須先添加日志分類。本模塊主要實現了分類的即時添加和刪除。

          l日志內容維護:注冊用戶登陸后在日志維護主頁面點擊分類,頁面顯示出此分類下的所有日志,在日志標題右邊能對日志進行刪除和修改,點擊日志標題能瀏覽日志全文,在日志顯示模塊上方點擊日志,進入日志頁面。

          需求分析用例圖如圖3-1。

          圖3-1需求分析用例圖

          3.2功能劃分3.2.1前臺功能模塊劃分

          圖3-3后臺功能模塊圖

          3.2.2后臺功能模塊劃分

          3.3數據庫設計3.3.1數據庫需求分析

          根據系統的需求,主要數據項和數據結構如下。

          l管理員信息,包括的數據項有:用戶名、口令等。

          l用戶信息,包括的數據項有:用戶名、密碼、真實姓名、性別、聯系方式、E-mail地址、電話、用戶簡介等。

          l日志信息,包括的數據項有:日志編號、標題、內容、時間、更新時間、人、所屬分類等。

          l日志類別信息,包括的數據項有:類別編號、類別名、創建用戶名。

          l新聞信息,包括的數據項有:新聞編號、標題、內容、更新時間、轉載地址等。

          l公告信息,包括的數據項有:公告編號、標題、內容、更新時間等。

          為了從多方面來保障用戶個人信息和日志信息的安全性、可信性,本系統還應該建立一套機制,這套機制至少應該包括用戶和后臺管理的賬號的安全機制、后臺數據庫的安全機制、用戶使用過程的控制和驗證機制。

          3.3.2數據庫物理設計

          本系統數據庫主要使用POWERDESIGNER進行邏輯設計和物理設計。該軟件能很直觀將實體之間的關系清晰的表述出來。數據庫的物理設計如圖3-4。

          圖3-4數據庫的物理設計

          3.3.3數據庫邏輯設計

          由于本系統是為網上日志備忘系統而設計的,因此數據庫名稱定為diary。根據需求分析設計了如下圖所示的數據庫結構圖3-5。具體的用戶數據表詳細信息見附錄一。

          圖3-5數據庫結構

          3.4系統結構

          因為本系統的實現主要是基于Java的MVC設計模式,所以整個軟件在架構被分成了三部分,也就是MVC中的三個表現層:模型層,控制層和視圖層。下面分別就這三個表現層對系統結構進行說明。

          首先是視圖層。視圖層簡單的理解就是用戶的操作界面和程序在處理完用戶提交的請求之后返回給用戶的結果顯示界面。本系統的視圖層主要是用JSP頁面來實現的。JSP是JAVA的一個網絡應用組件,它通過動態JSP代碼和HTML語句的相互嵌套,經服務器編譯之后在瀏覽器上顯示處理結果[7][8]。本系統的JSP頁面可分為兩類:完整的JSP頁面和功能單一的JSP代碼段。完整的JSP頁面基本上規劃好了整個頁面的顯示格局,具有獨立顯示結果的功能;而功能單一的JSP代碼段是為了保證代碼的清晰性和可重用性而獨立出來的只具有單一功能的代碼段,它不能被獨立顯示出來,而只能通過在完整的JSP頁面中使用JSP動作語句INCLUDE使之成為JSP頁面的一個功能塊[9]。本系統的JSP頁面都放在webcontent文件夾下,并且根據各自功能而命名,如日記修改JSP文件叫editDiary.jsp、分類編輯JSP文件叫editKind.jsp。

          其次是控制層。由于主要使用Struts框架來實現MVC模式的設計,控制層主要是在webcontent下WEB-INF文件夾中的web.xml和struts-config.xml(見附錄)來實現整個系統的邏輯跳轉(具體內容見附錄)。當然在這之前必須把struts的外部jar包放到web-inf下的lib文件夾中,這樣在寫java類時直接繼承struts的相關類便可實現商業邏輯了。

          再次是模型層。一個好的項目必然有一個好的軟件結構,在建立JAVA類之前,根據項目不同的功能先建立各自的類包很關鍵,這樣能使在開發的時候不會因為找不到相關的類而暈頭轉向[10]。本系統一共建立了6個包,分別是my.bean,my.dao,my.action,my.form,my.util,my.base。下面分別對各個包里面類的作用進行簡單的介紹。

          My.bean:主要是存放Javabean類,主要包括和數據庫中數據表的字段相對應的屬性和賦值取值方法。為數據操作對象對數據進行操作時提供盛放數據的容器。

          My.dao:數據操作對象包。沒個類中都對應相關數據表的所有數據增刪查改操作方法。

          My.action:嚴格來說這個包里的類應該屬于控制層。和struts-config.xml文件聯合作用。該包的類全部繼承自struts包中的Action類。通過復寫execute()方法來實現業務邏輯。

          My.form:表單類,所有從頁面提交的表單,通過struts-config.xml文件關聯后都能和此包中的類進行自動匹配。本包中類的結果類似于bean,只不過所有屬性都是和表單中的參數名對應的。在創建相應的賦值取值方法之外,如果表單需要驗證的話,必須復寫父類的validate()方法實現表單的驗證。

          My.util:實用工具類。輔助類包,主要放一些重復使用次數較多的類文件。如數據庫連接類Conn。

          My.base:基本類。里面存放和struts驗證機制和國際化相關聯的properties文件和用來解決頁面顯示亂碼問題的過濾器CharacterEncodingFilter類文件。(struts-config.xml和web.xml文件見附錄三)

          系統需要的Mysql數據庫驅動類和struts外部包放在WebContent目錄下的WEB-INF中的lib文件夾下。

          源程序的文件結構視圖如圖3-6。

          圖3-6源程序的文件結構視圖

          4主要功能模塊概述

          4.1用戶注冊模塊4.1.1流程分析

          如果用戶要使用為系統提供的日志功能,那么在使用之前必須先注冊。注冊方式很簡單在首頁登陸模塊內點擊進入注冊頁面。頁面中的用戶信息用戶名和密碼為必填項。若此兩項信息未正確填寫將返回到注冊頁面并且顯示錯誤信息。執行入庫操作之前先查詢用戶名是否已經存在,若已存在則返回注冊頁面顯示錯誤提示。為保障系統的安全性,用戶在注冊成功之后,需等待管理員審批。在審批通過之后方能成為正式用戶,使用該系統相關功能。用戶注冊過程活動圖如圖4-1。

          圖4-1用戶注冊過程