版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
太原理工大學畢業(yè)設計(論文)用紙.緒論1.1本課題的研究背景網購越來越成為當代人們所熱衷的一種購物形式。在近幾年內,淘寶、58同城這類的網站迅速崛起,也就意味著網購必將成為一種風尚。但是目前為止,大部分新興起來的購物網站都是基于服飾、化妝品一類的,在醫(yī)藥品一類還處于劣勢。究其根本,人們對醫(yī)藥管理的安全性以及有效性還有一部分的顧慮之情,畢竟藥品的安全性與我們的身體健康有著極其緊密的聯(lián)系。所以,一個高效的、安全的醫(yī)藥管理系統(tǒng),將會推動醫(yī)藥網站達到一個新的高度。對于患者而言:一方面,隨著現(xiàn)代生活越來越信息化,人們患了一些常見的疾病往往不會再選擇去醫(yī)院排長長的隊伍去掛號看病、買藥,而是選擇上網搜索有無大礙,若無嚴重癥狀就自己買一些像阿莫西林一類的非處方藥物來治療。另一方面,網購既方便又實惠,同時可以直接查看詳細的藥品詳情。對于銷售方而言:一方面,可以簡化一直以來繁瑣的人工管理記錄的方式,使管理工作更加有條不紊的進行。另一方面,可以隨時查看藥品的銷售狀況以及各大廠家的供應貨物情況。如今人們大多還是比較信賴在藥店購買藥品,認為藥店的藥品更加安全,信譽更加可靠,這就加大了我們推崇網購藥品的難度。于是,我們必須使其管理條理化、規(guī)范化,增強我們的可信度,排除買家的顧慮。隨著科技信息的步步發(fā)展,管理系統(tǒng)必將滲透于各個領域,如果不想被時代淘汰就必須緊跟科技發(fā)展的腳步,這也就意味著一套高效、可靠的管理機制必將深受消費者以及管理者的喜愛與推崇。1.2國內外研究現(xiàn)狀在信息飛速發(fā)展的當代,人們從日常生活到工作都在利用網絡進行一些信息查詢和信息管理。國內外各大企業(yè)更是越來越重視信息的管理,這為他們帶來了成本的極大節(jié)約,以及管理的進一步規(guī)范化、系統(tǒng)化,使得管理更加的具有高效性、靈活性。這不僅提高了流程的可視化,更加提高了工作效率。隨著網絡的一步步普及以及其迅猛的發(fā)展,如今,信息技術在國際管理市場上占據(jù)了越來越重要的位置,逐步演變成了對各國經濟、科技和社會發(fā)展情況的直觀體現(xiàn)。正如一九八八年九月五日,鄧小平提出的“科學技術是第一生產力”,就反映了在中國越來越重視科技的現(xiàn)狀。管理模式越來越信息化將成為一種必然趨勢,但是由于我國在信息化道路上起步較晚,信息管理系統(tǒng)技術相對落后,使用范圍有所局限,功能不夠完善等原因,研究并開發(fā)出一套相對較完善的管理系統(tǒng),就成了當務之急。1.3本課題的主要工作人們除了關注藥品的藥理反應外,最注重的就是藥品的保質期,這種現(xiàn)象同樣出現(xiàn)在銷售方,不合理的信息管理會導致藥品的浪費。由于其較一般商品而言,具有時效性強、規(guī)律性差、容易損耗等特點。各個銷售方為了保證適應所有季節(jié)性的、常見的疾病下,很難避免出現(xiàn)相應產品供應不足或一些藥品供遠大于求的情況,究其根本,就是信息管理不合理,沒有在適當時候做出調整。綜上所述,本課題擬設計一個藥品進銷存管理系統(tǒng),用以將一些變動直觀的展示給管理者,同時也方便其對信息進行簡單的控制以及調整,節(jié)約人力,是管理系統(tǒng)化,信息化。主要實現(xiàn)的功能包括以下幾點:1.訂單管理:根據(jù)用戶對藥品的購買情況對后臺數(shù)據(jù)進行自動更新庫存信息的操作;2.用戶信息管理:管理用戶的姓名、性別、密碼等基本信息;3.入庫信息管理:根據(jù)具體情況藥品進貨情況,對庫存中的藥品信息進行添加,并生成入庫信息單;4.供應廠家信息管理:可以查看相應廠家的地址、聯(lián)系人等詳情;5.藥品信息管理:管理庫存中現(xiàn)存藥品的類別等藥品信息的管理。1.4目的和意義隨著藥品經濟與技術的發(fā)展,人們對藥品的需求也進一步擴大,醫(yī)藥行業(yè)從古至今在社會各領域中一直處于一個相對穩(wěn)定且必不可少的重要地位。這就導致新醫(yī)院和藥店的迅速增加,要想在競爭激烈的時代里獲得一席之地,就要與時俱進,在原有傳統(tǒng)的管理模式下進行改革,即使管理信息化,以達到管理規(guī)范化、系統(tǒng)化等。提高運營效率、信息處理速度、信息處理精準度等,最大限度的減少人為因素造成的信息缺失、不準確等錯誤。2.開發(fā)工具及技術2.1開發(fā)工具頁面設計初期使用Dreamweaver進行的設計,后期轉換格式為Jsp。后臺設計主要使用MyEclipse以及其所包含的后臺服務器Tomcat完成。數(shù)據(jù)庫使用Mysql數(shù)據(jù)庫進行表的創(chuàng)建以及數(shù)據(jù)的添加等。下面對上述內容進行簡要說明。MyEclipseMyEclipse企業(yè)級工作平臺(MyEclipseEnterpriseWorkbench,簡稱MyEclipse)是一個非常優(yōu)質的用于開發(fā)Java、J2EE等的Eclipse插件的集合,是對EclipseIDE的一個擴展。它是功能非常豐富的JavaEE集成開發(fā)環(huán)境,包含了完備的編碼、調試、測試和發(fā)布功能。同時MyEclipse具有完善的功能,廣泛的支持平臺(完整支持HTML,JSP,CSS,Javascript,SQL)。在對于數(shù)據(jù)庫和JavaEE的開發(fā)以及對應用程序服務器的開發(fā)上面都提高了我們的工作效率。TomcatTomcat是一個應用服務器,與其他服務器相比它具有小型輕量級的特點。在對其進行運行時,它實際上是作為一個獨立的進程而運行的??梢赃@樣認為,當在一臺機器上配置好Apahce服務器,可利用它來對HTML頁面的訪問請求進行響應。實際上它是對Apache服務器的擴展,但與之不同的是它是可以獨立運行的。它在一些中小型的系統(tǒng)中和并發(fā)訪問用戶不多的場合下被廣泛的使用,是開發(fā)和調試JSP程序的首選工具。MysqlMysql是使用C語言和C++語言編寫的關系型數(shù)據(jù)庫管理系統(tǒng),并且使用了多種編譯器進行測試,從而保證了源代碼的可移植性;第二它的具有很廣泛的支持平臺,比如:支持Linux、MacOS、OpenBSD、Solaris、Windows等多種操作系統(tǒng);第三它為多種編程語言提供了API;第四支持多線程,可以充分利用CPU資源;第五提供TCP/IP、ODBC和JDBC等多種數(shù)據(jù)庫連接的途徑;第六可以處理擁有上千萬條記錄的大型數(shù)據(jù)庫。對于一般的使用者,它所具備的功能已經很完善了。所以,我們在此選用MySql來操作數(shù)據(jù)庫。開發(fā)技術2.2.1JSP JSP技術使用Java編程語言編寫類XML的tags和scriptlets,來封裝產生動態(tài)網頁的處理邏輯。實現(xiàn)網頁邏輯與網頁設計的顯示分離,支持可重用的基于組件的設計,使基于Web的應用程序的開發(fā)變得迅速和容易。JSP頁面由HTML代碼和嵌入其中的Java代碼所組成。JSP具備了Java技術的簡單易用,完全的面向對象,具有平臺無關性且安全可靠,主要面向因特網,多樣化和功能強大的開發(fā)工具支持以及支持服務器端組件等的特點。2.2.2MyBatisMyBatis是一個支持一般的SQL查詢、存儲過程和高級映射的優(yōu)秀持久層框架。MyBatis幾乎取消了所有繁瑣的JDBC代碼、直接手工設置的參數(shù)和對于結果集的檢索。MyBatis使用簡單的XML或注解用于配置和原始映射,將接口和普通的Java對象映射成數(shù)據(jù)庫中的一條一條的記錄。其最大的優(yōu)勢就是它的動態(tài)語句功能,它免除了使用JDBC對SQL語句嚴謹?shù)母袷揭?guī)范(如何處加空格,何處加逗號等),從而方便程序設計人員對數(shù)據(jù)庫繁瑣的操作。2.2.3JavaScriptJavaScript是一種基于對象和事件驅動并且具有相對安全性的客戶端腳本語言。同時也是一個廣泛用于客戶端Web開發(fā)的客戶端腳本語言。在HTML網頁中經常會添加JavaScript腳本語言來實現(xiàn)頁面的動態(tài)效果。比如對用戶的鼠標點擊、鼠標移動等操作進行響應。JavaScript有一個十分重要特性就是面向對象,通過基于對象的程序設計,可以用更直觀、模塊化和可重復使用的方式進行程序開發(fā)。在HTML基礎上,使用Javascript可以開發(fā)交互式Web網頁。Javascript的出現(xiàn)使得網頁和用戶之間建立了一種實時性的、動態(tài)的、交互性的關系,使網頁包含更多活躍的元素和更加精彩的內容。在本系統(tǒng)中很多地方使用了javascript技術,比如說,檢驗用戶輸入的信息是否有效,賬號信息是否重復,是否為空等等。2.2.4jQuery以及jQueryEasyUIjQuery是一套跨瀏覽器的JavaScript庫,簡化HTML與JavaScript之間的操作。目前已有將近59%使用了jQuery,是目前最受歡迎的JavaScript庫。
jQueryEasyUI是一組基于jQuery的UI插件集合體。開發(fā)人員在對css以及html沒有很深入了解的前提下,只需要知道一些簡單的html常用標簽,就可以輕松的寫出一個界面美觀、功能豐富的UI界面,避免了編寫復雜的javascript代碼,使工作更便捷高效。軟硬件需求1.硬件需求:CPU:Pentium以上計算機內存:512M以上2.軟件需求:操作系統(tǒng)版本:WindowsXP/vista/Win7開發(fā)工具:MyEclipse2013后臺服務器:ApacheTomcat7.0開發(fā)語言:Java數(shù)據(jù)庫:MySQL3.需求分析需求調研由于信息管理中,難免有一些人為錯誤的出現(xiàn),為了最大限度的減少人為錯誤,提高工作效率,而設計一套完整的藥品進銷存管理系統(tǒng),實現(xiàn)對藥品信息的錄入、更改的規(guī)范化、系統(tǒng)化以及對相應藥品的供應商的信息進行嚴格的錄入,避免在藥品進出庫問題上產生不必要的糾紛等??尚行苑治鰹榱吮苊庖驗橐恍┟篮玫磺袑嶋H的想法,而造成時間上面的以及資源上面的浪費,在統(tǒng)籌去做一個項目之前,需要進行可行性分析報告。下面主要從以下四個方面來進行論述。3.2.1技術的可行性藥品進銷存管理系統(tǒng)針對于普通用戶的前臺界面可以通過Dreamweaver來實現(xiàn),用Jsp進行完善并實現(xiàn)靜態(tài)頁面以及一部分的動態(tài)。針對于管理員以及超級管理員的管理頁面,用jQueryEasyUI來實現(xiàn)。后臺的制作可以使用MyEclipse和Mysql數(shù)據(jù)庫。開發(fā)語言使用Java語言。利用MyEclipse可是實現(xiàn)前臺和后臺的交互,Mysql可以存儲我們所需要的藥品數(shù)據(jù)、用戶數(shù)據(jù)、廠家數(shù)據(jù)、訂單數(shù)據(jù)、入庫單數(shù)據(jù)等??傮w設計難度不大。在大學期間,學習過相應的Java、UML、Web等基礎課程,并在以前做過一些類似的項目,具備相應的系統(tǒng)分析、設計以及測試的能力。就此看來,完成該項目在技術上具有可行性。經濟的可行性藥品進銷存管理系統(tǒng),需要的隱私數(shù)據(jù)并不多,并且由于是面向大多數(shù)對計算機并不熟悉的人群,必然要求操作簡單,以可以提高數(shù)據(jù)的管理難度和速度,從而不需要太高的軟硬件配置。綜上所述,項目難度系數(shù)不高,要求并不復雜,故其成本本身就不會很高。再從長遠的角度分析,它所帶來的利益、便捷遠遠超過其所需成本。就此看來,完成該項目在經濟上具有可行性。3.2.3操作可行性藥品進銷存管理系統(tǒng),主要針對無相應技術的工作者(只需要具備電腦的一般操作能力),功能一目了然,操作技術含量低,簡單容易操作。在使用之前,只需要花一小部分時間熟悉界面以及了解大致功能,便可以運用自如。就此來看,完成該項目在操作上具有可行性。3.2.4法律的可行性藥品進銷存管理系統(tǒng),存儲的主要信息是面對藥品的。從存儲的數(shù)據(jù)來講,由于均是藥品信息的一些名稱、市場價格等,并不會存在法律侵權的問題,故具有法律可行性。從開發(fā)的角度來講,本系統(tǒng)主要使用的MyEclipse軟件開發(fā)環(huán)境進行開發(fā),是開源代碼,Mysql數(shù)據(jù)庫也是開源代碼,所以不存在法律上的侵權問題。就此來看,完成該項目在法律上具有可行性。綜上所述,設計一個藥品進銷存管理系統(tǒng)是必要可行的。系統(tǒng)用戶用例圖1.普通用戶用例圖如圖3-1所示:圖3-1普通用戶用例圖2.管理員用例圖如圖3-2所示:圖3-2管理員用例圖3.超級管理員用例圖如圖3-3所示:圖3-3超級管理員用例圖功能需求本系統(tǒng)將實現(xiàn)以下基本功能:1.整潔簡單的頁面,操作簡單便捷;2.普通用戶具有查看藥品詳情、購買、查看購物車、查看訂單、登陸、注冊、修改個人信息除了個人權限等功能;3.管理員用戶具有藥品信息管理、入庫信息管理、廠家信息管理、查看用戶信息和訂單信息、修改個人信息除了個人權限等功能;4.超級管理員用戶具有藥品信息管理、入庫信息管理、廠家信息管理、用戶信息管理和訂單信息管理等功能;5.安全性較強,可以避免用戶的惡意操作,并作出相應的提醒。3.4.1用戶功能模塊圖說明1.用戶信息修改模塊:普通用戶通過前臺主頁的用戶信息修改按鈕,可以對用戶名、密碼、性別、年齡等個人信息的進行更改,但不包括個人權限;2.注冊模塊:在該模塊中定義了要錄入用戶信息的各種框架,其功能是讓用戶完成個人信息填寫,以錄入數(shù)據(jù)庫;3.登陸模塊:普通用戶通過登錄頁面可以直接跳轉到系統(tǒng)主頁面,從而具有對藥品查看以及購買等的權限;4.管理購物車模塊:在該模塊中定義了用戶需要購買的藥品信息,其功能是記錄用戶需要購買的藥品信息,并對其進行增加藥品或者刪除藥品的操作;5.購買藥品模塊:在該模塊中定義了要購買藥品的價格、名稱等,其功能是完成購買藥品并且生成訂單操作;6.查看藥品信息模塊:在該模塊中定義了藥品的編號、名稱等基本信息,其功能是方便用戶對藥品的了解。普通用戶功能模塊圖如圖3-4所示:用戶信息修改用戶信息修改注冊登陸管理購物車購買藥品查看藥品信息增加藥品刪除藥品普通用戶圖3-4普通用戶功能模塊圖3.4.2管理員功能模塊圖說明1.管理員信息修改模塊:普通管理員通過前臺主頁的用戶信息修改按鈕,可以對用戶名、密碼、性別、年齡等個人信息的進行更改,但不包括個人權限;2.登陸模塊:普通管理員通過登錄頁面可以直接跳轉到系統(tǒng)管理頁面,從而具有對廠家信息、藥品信息以及入庫信息的可讀可寫權限,對用戶信息和訂單信息只有可讀權限;3.用戶信息查看模塊:該模塊中定義了注冊用戶的基本信息,普通管理員對用戶信息只有查看的權限;4.訂單信息查看模塊:該模塊中定義了用戶下單后的信息,普通管理員對用戶的訂單信息也只有查看的權限;5.廠家信息管理模塊:該模塊中定義了供應廠家的基本信息,其功能方便管理員是對廠家的名稱、地址、聯(lián)系人等進行相應的增刪改查操作;6.藥品信息管理模塊:該模塊中定義了庫存藥品的基本信息,其功能方便管理員是對庫存中藥品信息進行增刪改查操作;7.入庫信息管理模塊:該模塊中定義了藥品以及相應供應商的基本信息,其功能是對進貨的信息進行增刪改查操作。管理員功能模塊圖如圖3-5所示:管理員用戶用戶信息查看訂單信息查看藥品信息管理修改藥品信息管理員用戶用戶信息查看訂單信息查看藥品信息管理修改藥品信息查看藥品信息增加藥品信息刪除藥品信息藥品廠家管理修改廠家信息查看廠家信息增加廠家信息刪除廠家信息入庫信息管理修改入庫信息查看入庫信息增加入庫信息刪除入庫信息管理員信息修改登陸管理員用戶用戶信息查看訂單信息查看藥品信息管理修改藥品信息查看藥品信息增加藥品信息刪除藥品信息藥品廠家管理修改廠家信息查看廠家信息增加廠家信息刪除廠家信息入庫信息管理修改入庫信息查看入庫信息增加入庫信息刪除入庫信息管理員信息修改登陸管理員用戶用戶信息查看訂單信息查看藥品信息管理修改藥品信息查看藥品信息增加藥品信息刪除藥品信息藥品廠家管理修改廠家信息查看廠家信息增加廠家信息刪除廠家信息入庫信息管理修改入庫信息查看入庫信息增加入庫信息刪除入庫信息管理員信息修改登陸管理員用戶用戶信息查看訂單信息查看藥品信息管理修改藥品信息查看藥品信息增加藥品信息刪除藥品信息藥品廠家管理修改廠家信息查看廠家信息增加廠家信息刪除廠家信息入庫信息管理修改入庫信息查看入庫信息增加入庫信息刪除入庫信息管理員信息修改登陸管理員用戶用戶信息查看訂單信息查看藥品信息管理修改藥品信息查看藥品信息增加藥品信息刪除藥品信息藥品廠家管理修改廠家信息查看廠家信息增加廠家信息刪除廠家信息入庫信息管理修改入庫信息查看入庫信息增加入庫信息刪除入庫信息管理員信息修改登陸圖3-5管理員功能模塊圖3.4.3超級管理員功能模塊圖說明1.超級管理員信息修改模塊:超級管理員通過前臺主頁的用戶信息修改按鈕,可以對用戶名、密碼、性別、年齡以及個人權限等個人信息的進行更改;2.登陸模塊:超級管理員通過登錄頁面可以直接跳轉到系統(tǒng)管理頁面,從而具有對廠家信息、藥品信息、用戶信息、訂單信息以及入庫信息的可讀可寫權限;3.用戶信息管理模塊:該模塊中定義了注冊用戶的基本信息,其功能是對用戶信息進行增刪改查等操作;4.訂單信息管理模塊:該模塊中定義了用戶下單后的信息,其功能是方便超級管理員對用戶的訂單的信息進行增刪改查等操作;5.廠家信息管理模塊:該模塊中定義了供應廠家的基本信息,其功能方便管理員是對廠家的名稱、地址、聯(lián)系人等進行相應的增刪改查操作;6.藥品信息管理模塊:該模塊中定義了庫存藥品的基本信息,其功能方便管理員是對庫存中藥品信息進行增刪改查操作;7.入庫信息管理模塊:該模塊中定義了藥品以及相應供應商的基本信息,其功能是對進貨的信息進行增刪改查操作。超級管理員功能模塊圖如圖3-6所示:超級管理員超級管理員藥品信息管理增刪改查藥品信息入庫信息管理增刪改查入庫信 用戶信息管理增刪改查用戶信 訂單信息管理增刪改查訂單信 修改超級管理員信息廠家信息管理增刪改查廠家信息登陸圖3-6超級管理員功能模塊圖設計的基本思想1.采用B/S模式(即瀏覽器/服務器模式)進行系統(tǒng)的開發(fā)。由于它是和瀏覽器相關的,故再系統(tǒng)開發(fā)、維護和升級方面對十分方便,只要有瀏覽器的用戶都可以訪問(開放性強)。由于現(xiàn)今用戶均使用瀏覽器進行日常操作,對其操作也比較了解,在一定程度上方便了用戶的操作。2.采用面向對象的開發(fā)與設計理念。將具有一定規(guī)律的對象封裝為一個類,即對整體系統(tǒng)進行抽象,從而保證較強的易用性、可維護性以及穩(wěn)定性。并且在一定程度上提高了開發(fā)的效率。3.采用模塊化設計。模塊化設計要求將整個系統(tǒng)劃分成基于小的模塊,有利于代碼的重載,簡化設計和實現(xiàn)過程。4.簡單方便的系統(tǒng)界面。設計簡單友好的系統(tǒng)界面,方便用戶較快的適應系統(tǒng)的操作。5.設計既要突出重點,又要細致周到。要符合設計需求,在有可能改進的地方進行擴充,使系統(tǒng)更適應用戶的需要。性能需求為了保證藥品進銷存管理系統(tǒng)可以長期、穩(wěn)定、高效的運行,應該盡可能滿足一下幾點要求:1.準確性系統(tǒng)需要對接收到的信息進行準確的處理。數(shù)據(jù)之間的聯(lián)系必須準確無誤,這決定了該系統(tǒng)的可用性、高效性。從而應該在采用一定的方法來盡可能保證系統(tǒng)數(shù)據(jù)的準確性。2.及時性一個好的系統(tǒng),必然運行順暢。當用戶提交某種請求時,系統(tǒng)需要及時對用戶的需求做出合理的響應,以免耽誤用戶的時間,消耗用戶的耐心。最終造成系統(tǒng)的用戶量流失,系統(tǒng)的高效性受到質疑。3.易用性藥品管理系統(tǒng)主要針對沒有很好專業(yè)技能的用戶,故易用性是不可或缺的重要特性。這就要求我們的系統(tǒng)給用戶提供一個良好的接口,用于實現(xiàn)人機交互。權限需求藥品進銷存管理系統(tǒng)需要在各用戶權限上進行嚴格的劃分。只有在該系統(tǒng)注冊的用戶才能進入網頁中進行購買等的操作。對于沒有注冊的用戶,權限只能局限于對藥品信息的瀏覽操作。已經注冊的用戶,可以在該系統(tǒng)下進行查看藥品信息,購買等的操作。普通管理員可以管理廠家的信息、藥品的信息、入庫的信息,修改管理員個人信息,但是只能夠查看訂單信息和用戶信息。超級管理員可以進行以上所以用戶的操作并且可以管理用戶信息以及訂單信息,即對其的增刪改查操作。數(shù)據(jù)需求1.各種信息的完整性,藥品編號、賬號等重要信息不能為空;2.在各個表中,數(shù)據(jù)關聯(lián)的準確性;3.數(shù)據(jù)類型的準確性。界面需求在一個優(yōu)秀的系統(tǒng)中,除了后臺程序的完備,從用戶的角度來講,界面的美觀遠比程序的完備更加具有說服力。因而,界面的設計慢慢的變成了評估一個軟件是否優(yōu)秀的重要的評測標準。首先,界面的設計必須條理,不適合太復雜,而影響用戶的操作;其次,界面的設計必須和諧,動靜結合,從而使用戶賞心悅目;最后,對于系統(tǒng)開發(fā)人員來講,界面的布局必須條理,各個標簽的命名必須遵循一定的規(guī)范進行編寫。從而使系統(tǒng)的開發(fā)更加條理,提高后臺開發(fā)人員的工作效率。為了更好的實現(xiàn)頁面的功能,我們在此使用Jsp腳本語言進行編寫。它給整個服務器端的JAVA庫單元提供了一個接口來服務于HTTP的應用程序??梢詷O大的提高開發(fā)效率,實現(xiàn)動態(tài)的可交互的頁面。用戶界面是指軟件系統(tǒng)與用戶交互的接口,通常包括輸出、輸入以及人-機對話的界面格式等。4.數(shù)據(jù)庫的分析與設計在進行了可行性研究報告和需求分析以后,為了具體的實現(xiàn)本系統(tǒng)最初想要實現(xiàn)的功能,我們需要進行總體設計,對系統(tǒng)的各部分進行詳細的分析與設計,最終完成一個完整的系統(tǒng)。在數(shù)據(jù)庫中存儲著大量的重要信息,包括在頁面上需要顯示的藥品信息等,以及在頁面上不顯示的用戶信息等。在數(shù)據(jù)庫系統(tǒng)的支持下,信息的整理、檢索、更新等操作才得以實現(xiàn)。可以看出,數(shù)據(jù)庫是信息系統(tǒng)中的核心,也就是關鍵所在。它的完備與否直接決定這系統(tǒng)的成敗。對于系統(tǒng)數(shù)據(jù)庫的設計一般分為概念設計、邏輯設計以及物理設計3個步驟。一下是對其進行的簡要介紹。數(shù)據(jù)庫的概念結構設計概念結構設計是采用結構化分析方自底向上的建立整個系統(tǒng)的結構。首先從用戶使用的視角設計視圖,之后將其歸類集成,最后進行優(yōu)化,得到最終結果。概念模式是與數(shù)據(jù)庫邏輯結構相互獨立的。目的是產生概念模式。實體—聯(lián)系(E-R)模型設計方法能過準確直觀的顯示系統(tǒng)中各種實體與其所涉及的屬性或者所關聯(lián)的實體屬性,E-R模型的構成成分是實體集、屬性和聯(lián)系集。是在數(shù)據(jù)庫概念結構設計中常用的設計方法。1.用戶信息E-R圖如圖4-1所示:圖4-1用戶實體E-R圖2.藥品信息實體E-R圖如圖4-2所示:圖4-2藥品信息實體E-R圖3.廠家信息實體E-R圖如圖4-3所示:圖4-3廠家信息實體E-R圖4.訂單信息實體E-R圖如圖4-4所示:圖4-4訂單信息實體E-R圖5.入庫信息實體E-R圖如圖4-5所示:圖4-5入庫信息實體E-R圖數(shù)據(jù)庫的邏輯結構設計我們都知道,數(shù)據(jù)庫概念模型獨立于任何特定的數(shù)據(jù)庫管理系統(tǒng)。因此,需要根據(jù)具體使用的數(shù)據(jù)庫管理系統(tǒng)的特點進行轉換。即轉化為按計算機觀點處理的邏輯關系模型。E-R模型向關系數(shù)據(jù)庫模型轉換應遵循下列原則:1.每一個實體要轉換成一個關系,實體的屬性就是關系的屬性。實體的碼就是關系的碼;2.所有的主鍵必須定義非空(NOTNULL);3.具有相同碼的關系模式可合并;4.同一實體集的實體間的聯(lián)系,即自聯(lián)系,也可按下述1:1、1:n和m:n三種情況分別處理;5.一個聯(lián)系轉化為一個關系模式,與該聯(lián)系相連的各實體的碼以及聯(lián)系的屬性轉化為關系的屬性,該關系的碼則有三種情況:1)若聯(lián)系為1:1,則每個實體的碼均是該關系的后選碼;2)若聯(lián)系為1:n,則關系的碼為n端實體的碼;3)若聯(lián)系為m:n,則關系的碼為諸實體碼的組合。根據(jù)E-R模型,藥品進銷存管理系統(tǒng)建立了以下邏輯數(shù)據(jù)結構,下面是對各數(shù)據(jù)表的詳細說明。1.用戶信息表主要用于記錄用戶的基本信息以及各信息的數(shù)據(jù)類型、是否為主鍵、是否允許為空、相應說明等信息。表結構如表4-1所示:表4-1用戶信息表(USER)列名數(shù)據(jù)類型長度是否允許為空是否主鍵說明USER_IDVARCHAR32否是賬號USER_NAMEVARCHAR100是否姓名USER_PASSWORDVARCHAR128否否密碼USER_SEXVARCHAR2是否性別USER_AGEINT4是否年齡USER_TELVARCHAR30是否聯(lián)系方式USER_EMAILVARCHAR128是否郵箱USER_ADDRESSVARCHAR128是否地址USER_IDENTITYVARCHAR32是否身份2.藥品信息表主要是記錄了藥品的基本信息以及各信息的數(shù)據(jù)類型、是否為主鍵、是否允許為空、相應說明等信息。表結構如表4-2所示:表4-2藥品信息表(MEDICINEINFO)列名數(shù)據(jù)類型長度是否允許為空是否主鍵說明MED_NOVARCHAR32否是產品編號MED_NAMEVARCHAR128否否通用名稱APP_NOVARCHAR128是否批準文號MARK_PRICEDECIMAL10,2否否市場價格IHEALTH_PRICEDECIMAL10,2否否i健康價格FAC_NAMEVARCHAR128否否生產廠家MED_DATEVARCHAR128否否生產日期MED_NUMINT10否否藥品數(shù)量MED_CLASSVARCHAR128否否藥品類別3.廠家信息表主要是記錄了廠家基本信息以及各信息的數(shù)據(jù)類型、是否為主鍵等信息。表結構如表4-3所示:表4-3廠家信息表(FACTORYINFO)列名數(shù)據(jù)類型長度是否允許為空是否主鍵說明FAC_NAMEVARCHAR128否是廠家名稱FAC_ADDRESSVARCHAR256是否廠家地址CONN_NAMEVARCHAR100是否聯(lián)系人FAC_TELVARCHAR30是否聯(lián)系電話FAC_EMAILVARCHAR128是否聯(lián)系郵箱4.訂單信息表主要是記錄了藥品銷售的基本信息以及各信息的數(shù)據(jù)類型、是否為主鍵等信息。表結構如表4-4所示:表4-4訂單信息表(ORDERFORMINFO)列名數(shù)據(jù)類型長度允許空是否主鍵說明ORDER_NOVARCHAR32否是訂單編號USER_IDVARCHAR32否否用戶賬號CONSIGNEE_NAMEVARCHAR100否否收件人CONSIGNEE_TELVARCHAR30否否聯(lián)系電話CONSIGNEE_ADDRESSVARCHAR128否否收件地址MED_NOVARCHAR32否否藥品編號MED_NAMEVARCHAR128否否藥品名稱IHEALTH_PRICEDECIMAL10,2否否i健康價格BUY_NUMINT10否否購買數(shù)量TOTAL_PRICEDECIMAL10,2否否總價格DELIVERYVARCHAR100否否配送方式ORDER_STATEVARCHAR10否否訂單狀態(tài)5.入庫信息表主要是記錄了入庫銷售的基本信息以及各信息的數(shù)據(jù)類型、是否為主鍵等信息。表結構如表4-5所示:表4-5入庫信息表(STOCKINFO)列名數(shù)據(jù)類型長度允許空是否主鍵說明STO_NOVARCHAR128否是入庫編號FAC_NAMEVARCHAR128否否廠家名稱MED_NOVARCHAR32否否藥品編號MED_NAMEVARCHAR128否否藥品名稱OPERATOR_NAMEVARCHAR100是否操作人FAC_TELVARCHAR30是否聯(lián)系電話STO_NUMINT10否否數(shù)量STO_PRICEDECIMAL10,2否否價格數(shù)據(jù)庫的連接原理4.3.1JDBC采用JDBC的方式進行數(shù)據(jù)庫的連接,首先在工程的相應文件夾里導入對應數(shù)據(jù)庫的jar包。然后在DBHelp.java中用Class.forName()方法來加載驅動程序,之后用DriverManager的getConnection()方法創(chuàng)建數(shù)據(jù)庫的連接。程序采用的是DAO模式來操作數(shù)據(jù)庫,DAO(DataAccessObject,數(shù)據(jù)訪問對象),是Java編程中的一種經典模式。DAO模式的主要思想就是從抽象數(shù)據(jù)源獲取與操縱數(shù)據(jù)的方法。抽象數(shù)據(jù)的含義就是編寫應用程序的程序員不必關心數(shù)據(jù)庫的物理位置,已經是何種數(shù)據(jù)庫,只需使用封裝數(shù)據(jù)庫中表示記錄的數(shù)據(jù)對象即可。其思想如圖4-6所示:使用使用創(chuàng)建/使用封裝獲取/修改BusinessObjectDataAccessObjectDataSourceDataTransferObject圖4-6DAO模式類圖圖中BussinessObject是業(yè)務對象,是使用DAO模式的客戶端;DataTransferObject數(shù)據(jù)傳輸對象,用來在應用程序不同層次之間傳輸對象。在一個分布式應用程序中,通常可以提高整體的性能;DataObjectAcces數(shù)據(jù)輸入/輸出對象封裝了對數(shù)據(jù)源的一些基本操作;DataSource指的是數(shù)據(jù)源??梢詮膱D中看出,DAO模式分離了業(yè)務邏輯和數(shù)據(jù)邏輯,是的編寫的軟件具有良好的層次式體系結構。本系統(tǒng)為了方便數(shù)據(jù)庫的操作,主要使用DBContent的對象連接一個數(shù)據(jù)庫(建立一個類DBHelp),主要代碼如下:1.獲取數(shù)據(jù)庫驅動,連接數(shù)據(jù)庫,并設置數(shù)據(jù)庫登錄名以及密碼;Class.forName("com.mysql.jdbc.Driver");Connectionconn=DriverManager.getConnection("jdbc:mysql://localhost:3306/medicinemanager","root","liang");2.通過定義exeSQL類(返回類型為boolean)和一個queryMsg類(返回類型為ResultSet)來對數(shù)據(jù)庫中的數(shù)據(jù)進行增刪改查;PreparedStatementpst=getConnection().prepareStatement(sql);intnum=pst.executeUpdate();ResultSetrs=pst.executeQuery();這樣在程序需要連接數(shù)據(jù)庫的地方,只需要生成一個DBHelp的對象,就可以對數(shù)據(jù)庫進行連接并操作。4.3.2MyBatis1.在創(chuàng)建好表、實體類、定義好數(shù)據(jù)訪問接口后,創(chuàng)建Mybatis映射文件UserDao.xml。核心映射文件:通過配置mapper標簽中的namespace屬性來指定命名空間。通過設置resultMap結果映射標簽來描述如何從數(shù)據(jù)庫結果集中加載對象。通過設置insert標簽、update標簽、delete標簽、select標簽來對數(shù)據(jù)庫中的數(shù)據(jù)進行增刪改查的操作;2.創(chuàng)建Mybatis配置文件configuration.xml。引入perties來設置name、dataSource.driverClassName(獲取驅動)、dataSource.url(獲取路徑)、dataSource.username(設置數(shù)據(jù)庫登陸名)、dataSource.password(設置數(shù)據(jù)庫密碼)。3.SqlSession接口。首先在mybatis-config.xml中通過配置properties屬性里面的resource值來引用外部屬性文件。通過environments配置適應多種環(huán)境,有助于應用多種數(shù)據(jù)庫配置,來配置環(huán)境參數(shù)。通過配置mappers中的package標簽中的name參數(shù)來映射文件查找策略。5.系統(tǒng)功能實現(xiàn)繼需求分析以及系統(tǒng)設計等階段后,就著手開始系統(tǒng)功能實現(xiàn)階段。將系統(tǒng)從技術層面提升到物理層面上,使用戶能夠直接通過一個直觀的界面操縱數(shù)據(jù)。是之前各個階段的結合。5.1登陸頁面實現(xiàn)1.描述:為了保證各用戶可以分別管理自己的信息,并保證系統(tǒng)以及用戶信息的安全性,在使用該系統(tǒng)之前,需要對用戶身份以及賬戶信息進行驗證。(即驗證用戶的賬號及密碼)。2.程序運行效果圖如圖5-1所示:圖5-1系統(tǒng)登陸頁面設計3.實現(xiàn)過程在登陸頁面輸入賬號和密碼后,點擊登陸按鈕,通過jQuery對賬號和密碼是否為空進行驗證。之后跳轉到登陸的serviceLoginServlet.java中,它將前臺數(shù)據(jù)與數(shù)據(jù)庫中數(shù)據(jù)進行匹配,驗證信息正確性并確定用戶權限,使用AJAX驗證輸出結果,或登錄成功則獲取用戶權限轉而進入index.jsp中。由于doGet方法的安全性不如doPost方法的安全性高,故將這里的doPost方法寫入doGet方法。在doPost方法中寫入我們的主要操作。1)在登錄頁面中,使用的是MyBatis框架,故需要在一開始通過resource來加載配置文件和映射文件(mybatis-config.xml);2)構造讀取xml文件的方式。需要創(chuàng)建SqlSessionFactory類的實例(相當于是產生連接池),通過調用SqlSessionFactoryBuilder類的實例的build方法來完成。正如它名字暗示那樣;3)通過SqlSessionFactory來創(chuàng)建一個SqlSession實例。SqlSession包含了所有執(zhí)行數(shù)據(jù)庫SQL語句的方法,然后可以通過SqlSession實例執(zhí)行映射SQL語句;4)通過session中的getMapper方法從會話中獲取mapper,從而得到相應數(shù)據(jù)庫中的userid和password,并寫if語句對userid和password的正確性進行驗證;5)最后,通過關閉會話。LoginService.java關鍵代碼如下:SqlSessionsession=sqlSessionFactory.openSession(true);UserDaouserDao=session.getMapper(UserDao.class);Useruser=newUser();user=userDao.getUserById(userid);if(user!=null&&user.getPassword().equals(password)){pw.print(true);}else{ pw.print(false);}finally{ session.close();}5.2注冊頁面實現(xiàn)1.描述:主要用于實現(xiàn)新用戶的注冊功能。在用戶沒有i健康賬號的時候,如果需要進行購買、查看訂單等操作時,需要注冊一個用戶。其中包括:賬號、密碼、姓名、年齡、聯(lián)系方式、性別等用戶的基本信息。驗證注冊用戶信息的正確性,使其具有進入系統(tǒng)的權限以及購買等的權限。2.程序運行效果圖如圖5-2所示:圖5-2系統(tǒng)注冊頁面設計3.實現(xiàn)過程在注冊頁面的第一個標簽頁:設置登錄名中,輸入賬號和密碼,點擊下一步按鈕,通過jQuery對用戶輸入信息是否為空進行驗證。之后跳轉到注冊的service中,通過UserJudgementServlet.java將前臺數(shù)據(jù)與數(shù)據(jù)庫中數(shù)據(jù)進行匹配,驗證賬號信息是否重復。驗證通過進入下一個標簽頁:填寫賬戶信息,輸入姓名、性別、年齡、電話、郵箱、所在地區(qū)等,點擊注冊按鈕,跳轉到注冊的service中,通過UserAddServlet.java將前臺上傳的用戶數(shù)據(jù)添加到數(shù)據(jù)庫的用戶信息表中。其中標簽頁的切換以及錯誤信息提醒通過AJAX實現(xiàn)。1)在注冊頁面中,使用的是MyBatis框架,通過resource來加載配置文件和映射文件(mybatis-config.xml);2)通過調用SqlSessionFactoryBuilder類的實例的build方法來構造讀取xml文件的方式SqlSessionFactory;3)通過SqlSessionFactory創(chuàng)建SqlSession實例來執(zhí)行映射SQL語句;4)通過session中的getMapper方法從會話中獲取mapper,從而得到相應數(shù)據(jù)庫中的userid以及用戶的其他重要信息,并通過UserJudgementServlet.java中的條件判斷語句user==null來驗證輸入用戶是否已經存在,如果不為空則該用戶已經存在,提示錯誤信息;如果不存在則跳轉到UserAddServlet.java中,獲取各個字段的值、創(chuàng)建新用戶設置各個字段的值、增加該用戶信息到數(shù)據(jù)庫中;5.最后,關閉會話。UserAddServlet.java關鍵代碼如下: Stringuserid=req.getParameter("userid"); users.setUserId(userid);userDao.addUser(users);5.3用戶信息管理在后臺管理界面中,在左側欄中選擇用戶信息,進入用戶信息管理界面。上面主要顯示了各用戶的基本信息(包括賬號、姓名、密碼、性別、年齡、聯(lián)系方式、郵箱、住址等內容)??梢赃M行用戶信息的增刪改查操作。界面設計主要通過jQueryEasyUi實現(xiàn)數(shù)據(jù)以表格的形式顯示并添加相關的樣式以及對數(shù)據(jù)的編輯等功能。其中實現(xiàn)如下:1)通過Userinfodel.java將管理員選中行信息進行刪除;2)通過UserinfoAdd.java將新添加信息添加到數(shù)據(jù)庫中;3)通過Userinfoupd.java將數(shù)據(jù)修改部分在數(shù)據(jù)庫中更新;4)通過UserinfoOperate.java對新增加數(shù)據(jù)以及已修改數(shù)據(jù)進行保存;5)通過UserinfoQuery.java實現(xiàn)對數(shù)據(jù)的查詢功能。程序運行效果圖如圖5-3所示:圖5-3用戶信息管理頁面設計5.3.1用戶信息錄入1.描述:管理員登陸到用戶管理界面后,鼠標右擊選擇添加或者直接選擇添加按鈕,均可彈出添加用戶信息窗口,在該窗口中進行用戶信息添加即可。如果信息輸入有誤,則彈出出錯提示。否則,添加成功,并在該頁面中顯示出剛添加用戶的信息。2.程序效果圖如下圖5-4所示(兩種方式):圖5-4用戶信息添加頁面設計3.實現(xiàn)過程1)有關doGet和doPost方法與之前的用戶登錄與注冊頁面基本相同,故再之后的描述中均不再贅述,如需要,可以轉到之前的登錄和注冊描述中查看;2)有關于中文亂碼的解決。通過對req和resp的setCharacterEncoding屬性為UTF-8來解決在代碼及數(shù)據(jù)庫中出現(xiàn)的中文亂碼問題;3)通過jdbc連接到數(shù)據(jù)庫。創(chuàng)建一個DBHelp對象來將錄入的信息插入數(shù)據(jù)庫中。UserinfoAdd.java主要代碼如下:Stringsql="insertintouservalues(?,?,?,?,?,?,?,?)";booleanboo=newDBHelp().exeSQL(sql,userid,username,password,sex,age,tel,email,address);5.3.2用戶信息修改1.描述:管理員登陸到用戶管理界面后,單擊選中要修改用戶信息的行,鼠標右擊選擇修改,方可彈出修改窗口,在該窗口中進行該用戶信息的修改即可。如果信息輸入有誤,則彈出出錯提示。否則,修改成功,并在該頁面中顯示出剛添加用戶的信息。2.程序效果圖如下圖5-5所示: 圖5-5用戶信息修改頁面設計3.實現(xiàn)過程1)先通過request.getParameter()方法得到通過Post方法提交過來的數(shù)據(jù);2)然后通過以下語句對數(shù)據(jù)庫中的相應信息進行修改。Userinfoupd.java主要代碼如下:Stringsql="updateusersetUSER_NAME=?,USER_PASSWORD=?,USER_SEX=?,USER_AGE=?,USER_TEL=?,USER_EMAIL=?,USER_ADDRESS=?whereUSER_ID=?";5.3.3用戶信息刪除1.描述:管理員登陸到用戶管理界面后,單擊選中要修改用戶信息的行,鼠標右擊選擇刪除或者直接選擇刪除按鈕,均可彈出刪除窗口,之后選擇確定即可刪除該行信息。刪除后,該信息將不在用戶信息界面中出現(xiàn)。2.程序效果圖如下圖5-6所示:圖5-6用戶信息刪除頁面設計3.實現(xiàn)過程1)先通過request.getParameter()方法得到通過Post方法提交過來的數(shù)據(jù)。即該條信息的主鍵信息;2)然后通過以下語句對數(shù)據(jù)庫中的相應信息進行刪除。Userinfodel.java主要代碼如下:Stringsql="deletefromuserwhereUSER_ID=?";5.3.4用戶信息查詢1.描述:管理員登陸到用戶管理界面后,鼠標右擊選擇查詢或者直接選擇查詢按鈕,在窗口的最右邊會顯出一個查詢框,在下拉列表框中可以選擇你想要依靠什么關鍵字來查詢,選擇關鍵字,在框中輸入你要查詢的內容,點擊查詢。就會在用戶信息管理界面中顯示出你所查詢的內容。2.程序效果圖如下圖5-7所示:圖5-7用戶信息查找頁面設計3.實現(xiàn)過程1)由于頁面中使用了分頁,所以在查詢數(shù)據(jù)的時候,需要使用page變量和rows變量進行操控。相應代碼在文下已有;2)創(chuàng)建類queryUserinfoMsg(Stringsql,intpage,introws)用來獲取查詢到的信息的所有數(shù)據(jù),并存放在數(shù)組中;3)然后通過StringBufferstringBuffer=newStringBuffer();創(chuàng)建一個字符串緩存區(qū)來存放查詢出來的數(shù)據(jù)并用stringBuffer.append給界面中追加信息。UserinfoQuery.java主要代碼如下:sql="select*fromuserwhere"+usernameKey+"like'%"+usernameValue+"%'limit"+(1)*rows+","+rows;sqlCount="selectcount(*)fromuserwhere"+usernameKey+"like'%"+usernameValue+"%'";5.4藥品信息管理在后臺管理界面中,在左側欄中選擇藥品信息,進入藥品信息管理界面。上面主要顯示了藥品的基本信息(包括藥品編號、藥品名稱、生產編號、市場價格、i健康價格、生產廠家、生產日期、藥品數(shù)量、藥品類別等信息)。可以進行藥品信息的增刪改查操作。其中實現(xiàn)如下:1)通過MedicineDel.java將管理員選中行信息進行刪除;2)通過MedicineAdd.java將新添加信息添加到數(shù)據(jù)庫中;3)通過MedicineUpd.java將數(shù)據(jù)修改部分在數(shù)據(jù)庫中更新;4)通過MedicineOperate.java對新增加數(shù)據(jù)以及已修改數(shù)據(jù)進行保存;5)通過MedicineQuery.java實現(xiàn)對數(shù)據(jù)的查詢功能。程序運行效果圖如圖5-8所示:圖5-8藥品信息管理頁面設計5.4.1藥品信息錄入1.描述:管理員登陸到藥品管理界面后,鼠標右擊選擇添加則彈出添加藥品信息窗口,在該窗口中進行藥品信息添加即可?;蛘咧苯舆x擇添加按鈕,在所有信息的最后一行之后會添加一條新的空白行,在空白行的輸入框內輸入數(shù)據(jù),點擊保存按鈕,添加信息無誤,彈出保存成功信息。如果信息輸入有誤,則彈出出錯提示。否則,添加成功,并在該頁面中顯示出剛添加藥品的信息。2.程序效果圖如下圖5-9所示:圖5-9用戶信息添加頁面設計3.實現(xiàn)過程通過jdbc連接到數(shù)據(jù)庫。創(chuàng)建一個DBHelp對象來將錄入的信息插入數(shù)據(jù)庫中。MedicineAdd.java主要代碼如下:Stringsql="insertintomedicineinfovalues(?,?,?,?,?,?,?,?,?)";5.4.2藥品信息修改1.描述:管理員登陸到藥品管理界面后,單擊選中要修改藥品信息的行,鼠標右擊選擇修改,方可彈出修改窗口,在該窗口中進行該藥品信息的修改即可。如果信息輸入有誤,則彈出出錯提示。否則,修改成功,并在該頁面中顯示出剛修改藥品的信息。2.程序效果圖如下圖5-10所示:圖5-10藥品信息修改頁面設計3.實現(xiàn)過程1)先通過request.getParameter()方法得到通過Post方法提交過來的數(shù)據(jù);即該條信息的主鍵以及其他信息;2)然后通過以下語句對數(shù)據(jù)庫中的相應信息進行修改。Medicineupd.java主要代碼如下:Stringsql="updatemedicineinfosetMED_NAME=?,APP_NO=?,MARK_PRICE=?,IHEALTH_PRICE=?,FAC_NAME=?,MED_DATE=?,MED_NUM=?,MED_CLASS=?whereMED_NO=?";5.4.3藥品信息刪除1.描述:管理員登陸到藥品管理界面后,單擊選中要修改藥品信息的行,鼠標右擊選擇刪除或者直接選擇刪除按鈕,均可彈出刪除窗口,在顯示信息中顯示具體刪除幾個數(shù)據(jù),在核對無誤后,選擇確定(即ok)即可刪除該行信息。刪除后,該信息將不在藥品信息界面中出現(xiàn)。2.程序效果圖如下圖5-11所示:圖5-11藥品信息刪除頁面設計3.實現(xiàn)過程1)先通過request.getParameter()方法得到通過Post方法提交過來的數(shù)據(jù)。即該條信息的主鍵信息;2)然后通過以下語句對數(shù)據(jù)庫中的相應信息進行刪除。Medicinedel.java主要代碼如下:Stringsql="deletefrommedicineinfowhereMED_NO=?";5.4.4藥品信息查詢1.描述:管理員登陸到藥品管理界面后,鼠標右擊選擇查詢或者直接選擇查詢按鈕,在窗口的最右邊會顯出出一個查詢框,在下拉列表框中可以選擇你想要依靠什么關鍵字來查詢,選擇關鍵字,在框中輸入你要查詢的內容,點擊查詢。就會在藥品信息管理界面中顯示出你所查詢的內容。2.程序效果圖如下圖5-12所示:圖5-12藥品信息查詢頁面設計3.實現(xiàn)過程1)頁面中使用了分頁管理,在數(shù)據(jù)庫中查詢需要查詢的數(shù)據(jù)時,使用page變量和rows變量進行操控;2)創(chuàng)建類queryUserinfoMsg(Stringsql,intpage,introws)用來獲取查詢到的信息的所有數(shù)據(jù),并存放在數(shù)組中;3)然后通過StringBufferstringBuffer=newStringBuffer();創(chuàng)建一個字符串緩存區(qū)來存放查詢出來的數(shù)據(jù)并用stringBuffer.append給界面中追加信息。5.5廠家信息管理在后臺管理界面中,在左側欄中選擇廠家信息,進入廠家信息管理界面。上面主要顯示了廠家的基本信息(包括廠家名稱、廠家地址、聯(lián)系人、聯(lián)系電話、聯(lián)系郵箱等內容)??梢赃M行廠家信息的增刪改查操作。其中實現(xiàn)如下:1)通過FactoryDel.java將管理員選中行信息進行刪除;2)通過FactoryAdd.java將新添加信息添加到數(shù)據(jù)庫中;3)通過FactoryUpd.java將數(shù)據(jù)修改部分在數(shù)據(jù)庫中更新;4)通過FactoryOperate.java對新增加數(shù)據(jù)以及已修改數(shù)據(jù)進行保存;5)通過FactoryQuery.java實現(xiàn)對數(shù)據(jù)的查詢功能。程序運行效果圖如圖5-13所示:圖5-13廠家信息管理頁面設計5.5.1廠家信息錄入1.描述:登陸到廠家信息管理界面后,鼠標右擊選擇添加或者直接選擇添加按鈕,均可彈出添加廠家信息窗口,在該窗口中進行廠家信息添加即可。如果信息輸入有誤,則彈出出錯提示。否則,添加成功,并在該頁面中顯示出剛添加廠家的信息。2.程序效果圖如下圖5-14所示:圖5-14藥品信息添加頁面設計3.實現(xiàn)過程通過jdbc連接到數(shù)據(jù)庫。創(chuàng)建一個DBHelp對象來將錄入的信息插入數(shù)據(jù)庫中。FactoryAdd.java主要代碼如下:Stringsql="insertintofactoryinfovalues(?,?,?,?,?)";5.5.2廠家信息修改1.描述:管理員登陸到廠家管理界面后,單擊選中要修改廠家信息的行,鼠標右擊選擇修改,方可彈出修改窗口,在該窗口中進行該廠家信息的修改即可。如果信息輸入有誤,則彈出出錯提示。否則,修改成功,并在該頁面中顯示出剛修改廠家的信息。2.程序效果圖如下圖5-15所示:圖5-15廠家信息修改頁面設計3.實現(xiàn)過程1)先通過request.getParameter()方法得到通過Post方法提交過來的數(shù)據(jù);2)然后通過以下語句對數(shù)據(jù)庫中的相應信息進行修改。Factoryupd.java主要代碼如下:Stringsql="updatefactoryinfosetFAC_ADDRESS=?,CONN_NAME=?,FAC_TEL=?,FAC_EMAIL=?whereFAC_NAME=?";5.5.3廠家信息刪除1.描述:管理員登陸到廠家管理界面后,單擊選中要修改廠家信息的行,鼠標右擊選擇刪除或者直接選擇刪除按鈕,均可彈出刪除窗口,之后選擇確定即可刪除該行信息。刪除后,該信息將不在廠家信息界面中出現(xiàn)。2.程序效果圖如下圖5-16所示:圖5-16廠家信息刪除頁面設計3.實現(xiàn)過程1)先通過request.getParameter()方法得到通過Post方法提交過來的數(shù)據(jù);2)然后通過以下語句對數(shù)據(jù)庫中的相應信息進行刪除。Factorydel.java主要代碼如下:Stringsql="deletefromfactoryinfowhereFAC_NAME=?";5.5.4廠家信息查詢1.描述:管理員登陸到廠家管理界面后,鼠標右擊在彈出框中選擇查詢或者直接選擇查詢按鈕,在窗口的最右邊會顯出出一個查詢框,在下拉列表框中可以選擇你想要依靠什么關鍵字來查詢,選擇關鍵字,之后在搜索框中輸入你要查詢的具體內容(如輸入北京,則出現(xiàn)廠家地址包含北京的所有信息),點擊查詢或者按下回車鍵。就會在廠家信息管理界面中顯示出你所查詢的內容。2.程序效果圖如下圖5-17所示:圖5-17廠家信息查找頁面設計3.實現(xiàn)過程1)由于頁面中使用了分頁,所以在查詢數(shù)據(jù)的時候,需要使用page變量和rows變量進行操控;2)創(chuàng)建類queryUserinfoMsg(Stringsql,intpage,introws)用來獲取查詢到的信息的所有數(shù)據(jù),并存放在數(shù)組中;3)然后通過StringBufferstringBuffer=newStringBuffer();創(chuàng)建一個字符串緩存區(qū)來存放查詢出來的數(shù)據(jù)并用stringBuffer.append給界面中追加信息。5.6訂單信息管理在后臺管理界面中,在左側欄中選擇訂單信息,進入訂單信息管理界面。上面主要顯示了訂單的基本信息(包括廠家名稱、廠家地址、聯(lián)系人、聯(lián)系電話、聯(lián)系郵箱等內容)。可以進行訂單信息的增刪改查操作。其中實現(xiàn)如下:1)通過OrderformDel.java將管理員選中行信息進行刪除;2)通過OrderformAdd.java將新添加信息添加到數(shù)據(jù)庫中;3)通過OrderformUpd.java將數(shù)據(jù)修改部分在數(shù)據(jù)庫中更新;4)通過OrderformOperate.java對新增加數(shù)據(jù)以及已修改數(shù)據(jù)進行保存;5)通過OrderformQuery.java實現(xiàn)對數(shù)據(jù)的查詢功能。程序運行效果圖如圖5-18所示:圖5-18訂單信息管理頁面設計5.6.1訂單信息錄入1.描述:管理員登陸到訂單信息管理界面后,鼠標右擊選擇添加或者直接選擇添加按鈕,在彈出的添加訂單信息窗口中進行訂單信息添加即可。之后會顯示在列表中。2.程序效果圖如下圖5-19所示:圖5-19訂單信息添加頁面設計3.實現(xiàn)過程通過jdbc連接到數(shù)據(jù)庫。創(chuàng)建一個DBHelp對象來將錄入的信息插入數(shù)據(jù)庫中。OrderformAdd.java主要代碼如下:Stringsql="insertintoorderforminfovalues(?,?,?,?,?,?,?,?,?,?,?,?)";5.6.2訂單信息修改1.描述:管理員登陸到訂單管理界面后,單擊選中要修改訂單信息的行,鼠標右擊選擇修改,方可彈出修改窗口,在該窗口中進行該訂單信息的修改即可。如果信息輸入有誤,則彈出出錯提示。否則,修改成功,并在該頁面中顯示出剛修改訂單的信息。2.程序效果圖如下圖5-20所示:圖5-20訂單信息修改頁面設計3.實現(xiàn)過程1)先通過request.getParameter()方法得到通過Post方法提交過來的數(shù)據(jù);2)然后通過以下語句對數(shù)據(jù)庫中的相應信息進行修改。Orderformupd.java主要代碼如下:Stringsql="updateorderforminfosetUSER_ID=?,CONSIGNEE_NAME=?,CONSIGNEE_TEL=?,CONSIGNEE_ADDRESS=?,MED_NO=?,MED_NAME=?,"+"IHEALTH_PRICE=?,BUY_NUM=?,TOTAL_PRICE=?,DELIVERY=?,ORDER_STATE=?whereORDER_NO=?";5.6.3訂單信息刪除1.描述:管理員登陸到訂單管理界面后,單擊選中要修改訂單信息的行,鼠標右擊選擇刪除或者直接選擇刪除按鈕,均可彈出刪除窗口,之后檢查上面輸出的刪除數(shù)量是否正確,如果確定正確則選擇確定即可刪除該行信息。刪除后,該信息將不在訂單信息界面中出現(xiàn)。2.程序效果圖如下圖5-21所示:圖5-21訂單信息刪除頁面設計3.實現(xiàn)過程1)先通過request.getParameter()方法得到Post方法提交的數(shù)據(jù)。即主鍵信息;2)然后通過以下語句對數(shù)據(jù)庫中的相應信息進行刪除。Orderformdel.java主要代碼如下:Stringsql="deletefromorderforminfowhereORDER_NO=?";5.6.4訂單信息查詢1.描述:管理員登陸到訂單管理界面后,鼠標右擊選擇查詢或者直接選擇查詢按鈕,在窗口的最右邊會顯出出一個查詢框,在下拉列表框中可以選擇你想要依靠什么關鍵字來查詢,選擇關鍵字,在框中輸入你要查詢的內容,點擊查詢。就會在訂單信息管理界面中顯示出你所查詢的內容。2.程序效果圖如下圖5-22所示:圖5-22訂單信息查詢頁面設計3.實現(xiàn)過程1)由于頁面中使用了分頁,所以在查詢數(shù)據(jù)的時候,需要使用page變量和rows變量進行操控;2)創(chuàng)建類queryUserinfoMsg(Stringsql,intpage,introws)用來獲取查詢到的信息的所有數(shù)據(jù),并存放在數(shù)組中;3)然后通過StringBufferstringBuffer=newStringBuffer();創(chuàng)建一個字符串緩存區(qū)來存放查詢出來的數(shù)據(jù)并用stringBuffer.append給界面中追加信息。5.7入庫信息管理在后臺管理界面中,在左側欄中選擇入庫信息,進入入庫信息管理界面。上面主要顯示了入庫的基本信息(包括入庫編號、廠家名稱、藥品編號、藥品名稱、操作人、聯(lián)系電話、數(shù)量、價格等內容)。可以進行入庫信息的增刪改查操作。其中實現(xiàn)如下:1)通過StockDel.java將管理員選中行信息進行刪除;2)通過StockAdd.java將新添加信息添加到數(shù)據(jù)庫中;3)通過StockUpd.java將數(shù)據(jù)修改部分在數(shù)據(jù)庫中更新;4)通過StockOperate.java對新增加數(shù)據(jù)以及已修改數(shù)據(jù)進行保存;5)通過StockQuery.java實現(xiàn)對數(shù)據(jù)的查詢功能。程序運行效果圖如圖5-23所示:圖5-23入庫信息管理頁面設計5.7.1入庫信息錄入1.描述:管理員登陸到入庫信息管理界面后,鼠標右擊選擇添加或者直接選擇添加按鈕,均可彈出添加入庫信息窗口,在該窗口中進行訂單信息添加即可。如果信息輸入有誤,則彈出出錯提示。否則,添加成功,并在該頁面中顯示出剛添加入庫的信息2.程序效果圖如下圖5-24所示:圖5-24入庫信息添加頁面設計3.實現(xiàn)過程通過jdbc連接到數(shù)據(jù)庫。創(chuàng)建一個DBHelp對象來將錄入的信息插入數(shù)據(jù)庫中。StockAdd.java主要代碼如下:Stringsql="insertintostockinfovalues(?,?,?,?,?,?,?,?)";5.7.2入庫信息修改1.描述:管理員登陸到入庫管理界面后,單擊選中要修改入庫信息的行,鼠標右擊選擇修改,方可彈出修改窗口,在該窗口中進行該入庫信息的修改即可。如果信息輸入有誤,則彈出出錯提示。否則,修改成功,并在該頁面中顯示出剛修改入庫的信息。2.程序效果圖如下圖5-25所示:圖5-25入庫信息修改頁面設計3.實現(xiàn)過程1)先通過request.getParameter()方法得到通過Post方法提交過來的數(shù)據(jù);2)然后通過以下語句對數(shù)據(jù)庫中的相應信息進行修改。Stockupd.java主要代碼如下:Stringsql="updatestockinfosetFAC_NAME=?,MED_NO=?,MED_NAME=?,OPERATOR_NAME=?,FAC_TEL=?,STO_NUM=?,STO_PRICE=?whereSTO_NO=?";5.7.3入庫信息刪除1.描述:管理員登陸到入庫管理界面后,單擊選中要修改入庫信息的行,鼠標右擊選擇刪除或者直接選擇刪除按鈕,均可彈出刪除窗口,之后檢查上面輸出的刪除數(shù)量是否正確,如果確定正確則選擇確定即可刪除該行信息。刪除后,該信息將不在訂單信息界面中出現(xiàn)。2.程序效果圖如下圖5-26所示:圖5-26入庫信息刪除頁面設計3.實現(xiàn)過程1)先通過request.getParameter()方法得到通過Post方法提交過來的數(shù)據(jù)。即該條信息的主鍵信息;2)然后通過以下語句對數(shù)據(jù)庫中的相應信息進行刪除。Stockdel.java主要代碼如下:Stringsql="deletefromstockinfowhereSTO_NO=?";5.7.4入庫信息查詢1.描述:管理員登陸到入庫管理界面后,鼠標右擊選擇查詢或者直接選擇查詢按鈕,在窗口的最右邊會顯出出一個查詢框,在下拉列表框中可以選擇你想要依靠什么關鍵字來查詢,選擇關鍵字,在框中輸入你要查詢的內容,點擊查詢。就會在入庫信息管理界面中顯示出你所查詢的內容。2.程序效果圖如下圖5-27所示:圖5-27入庫信息查詢頁面設計3.實現(xiàn)過程1)由于頁面中使用了分頁,所以在查詢數(shù)據(jù)的時候,需要使用page變量和rows變量進行操控;2)創(chuàng)建類queryUserinfoMsg(Stringsql,intpage,introws)用來獲取查詢到的信息的所有數(shù)據(jù),并存放在數(shù)組中;3)然后通過StringBufferstringBuffer=newStringBuffer();創(chuàng)建一個字符串緩存區(qū)來存放查詢出來的數(shù)據(jù)并用stringBuffer.append給界面中追加信息。5.8藥品頁面實現(xiàn)1.描述:所有用戶登錄到index.jsp頁面后(即主頁面),在搜索框中輸入數(shù)據(jù)庫中已有藥品或者在頁面的側邊欄等地方點擊某藥品都可以跳轉到所選擇或者查找的藥品詳細信息頁面。該頁面主要顯示藥品的通用名稱、產品編號、批準文號、市場價格、i健康價格、生產廠家、購買數(shù)量等詳細信息。并且添加了加入購物車和立即購買按鈕,方便用戶對藥品進行購買操作。2.程序效果圖如下圖5-28所示:圖5-28藥品信息頁面設計3.實現(xiàn)過程1)在com.data中創(chuàng)建MedicineInfo.java類在封裝有關于藥品的詳細信息;2)在com.dao包中創(chuàng)建MedicineDao.java和MedicineDaoImpl.java類里面封裝了三個接口,一個是findAllMedicineinfo,主要是通過藥品編號來查找藥品信息。用于單擊某個藥品名稱時使用。另一個是findOneMedicine,主要是通過藥品名稱來查找藥品信息。用于主頁面和其他頁面在搜索框中輸入某個藥品名稱時使用。第三個是AddOrderform,用戶增加訂單信息;3)在product.jsp頁面中通過${medicineinfo.medNo}的方式來或缺來自數(shù)據(jù)庫中的數(shù)據(jù)并顯示在頁面上;4)頁面中的購買數(shù)量的+、-通過js來實現(xiàn);5)給立即購買按鈕加入立即購買按鈕事件,點擊后直接提交訂單并打開購物車頁面。通過OrderformAddServlet.java中的findOrderform在已有的訂單中查 找訂單來判斷購物車中是否存在相同的藥品如果沒有,則通過AddOrderform將信息訂單信息添加到未完成訂單中,否則通過updateOrderformMedicineNum來更新已有信息。添加成功則轉到OrderformQueryServlet.java中通過判 斷訂單的orderState的值(當前為null),進而通過findAllOrderforms獲取所有訂單狀態(tài)為0的藥品,并將頁面跳轉到購物車頁面;6)給加入購物車按鈕加入購物車按鈕事件,只是提交訂單,不打開購物車頁面,通過設置href到orderformAddServlet.java中進行相應操作,添加成功后,顯示添加成功提示。5.9購買功能實現(xiàn)5.9.1購物車頁面1.描述:當用戶在藥品頁面點擊立即購買,或者先進行加入購物車之后點擊頁面特定位置上的購物車標識的時候,頁面將跳轉到shoppingcart.jsp頁面中。在該頁面中主要顯示用戶需要購買藥品的信息(藥品、單價、數(shù)量、小計、操作、總價等信息)。同時可以對藥品信息進行數(shù)量的增減以及對藥品進行刪除等操作。2.程序效果圖如下圖5-29所示:圖5-29購物車頁面設計3.實現(xiàn)過程1)在com.data中創(chuàng)建OrderformInfo.java類在封裝有關于藥品的詳細信息;2)在com.dao包中創(chuàng)建OrderformDao.java和OrderformDaoImpl.java類。OrderformDao.java中創(chuàng)建了:updateOrderformMedicineNum,用來修改訂單中數(shù)量和計算后的總價格;3)在shoppingcart.jsp頁面中通過${orderforminfo.totalPrice}的方式來或缺來自數(shù)據(jù)庫中的數(shù)據(jù)并顯示在頁面上;4)頁面中的購買數(shù)量的+、-等通過js來實現(xiàn);5)給結算按鈕加上事件,點擊后直接提交訂單并打開訂單確定。通過js的ajax來實現(xiàn),設置url到OrderformUpdateNumServlet.java將前臺數(shù)據(jù)與數(shù)據(jù)庫中數(shù)據(jù)進行同步,確定最終需購買的藥品信息(其中所使用的方法updateOrderformMedicineNum),如果成功則設置href到order.jsp頁面中進行相應的操作。確定訂單頁面1.描述:當用戶在購物車頁面點擊結算按鈕時,頁面將跳轉到訂單確定頁面。該頁面主要顯示用戶及收件人的基本信息(姓名、聯(lián)系電話、地址、配送方式)。以及剛才所提交的需要購買藥品的基本信息。2.程序效果圖如下圖5-30所示:圖5-30確定訂單頁面設計3.實現(xiàn)過程1)在com.dao包中創(chuàng)建OrderformDao.java和OrderformDaoImpl.java類。OrderformDao.java中創(chuàng)建了:一updateOrderformConsignee,修改訂單中收件人信息;二updateOrderformState,用來修改訂單狀態(tài)(支付狀態(tài)“1”與未支付狀態(tài)“0”);2)在order.jsp頁面中通過${user.userName}的方式來或缺來自數(shù)據(jù)庫中的數(shù)據(jù)并顯示在頁面上;3)頁面中的修改收件人、提交訂單等動態(tài)效果通過js來實現(xiàn);4)在com.servlet包中另外創(chuàng)建了兩個類,分別為:OrderformUpdateConsignee.java和OrderformUpdateStateServlet.java類。通過OrderformUpdateConsignee.java將前臺用戶輸入的需更改信息傳入后臺,并更新數(shù)據(jù)庫中有關收件人的信息(其中所使用的方法updateOrderformConsignee);通過OrderformUpdateStateServlet.java在提交后更改訂單狀態(tài)(其中所使用的方法updateOrderformState)。5.9.3訂單頁面1.描述:實現(xiàn)用戶對已購買藥品信息的瀏覽。當用戶完成訂單確認操作后,將自動跳轉到訂單頁面。該頁面主要顯示了訂單編號、藥品、單價、數(shù)量、小計、收件人、物流等基本信息。2.程序效果圖如下圖5-31所示:圖5-31訂單頁面設計3.實現(xiàn)過程1)主要的數(shù)據(jù)交互在上面已經詳細描述過,故不再重復;2)頁面中信息的獲取通過${order.orderNo}來實現(xiàn);3)通過jQuery獲取當前用戶的id以及其他藥品信息。5.10用戶信息管理頁面實現(xiàn)1.描述:實現(xiàn)用戶對自己信息管理。2.程序效果圖如下圖5-32所示:圖5-32用戶信息管理頁面設計3.實現(xiàn)過程1)通過jQuery獲取當前用戶的id等信息;2)通過UserUpdateServlet.java來實現(xiàn)對用戶信息的更改。5.11主頁面實現(xiàn)1.描述:實現(xiàn)用戶對系統(tǒng)信息的總體瀏覽。對所需藥品進行查詢、各頁面的入口以及退出登錄等操作。2.程序效果圖如下圖5-33所示:圖5-33主頁面設計3.實現(xiàn)過程1)通過jQuery獲取當前用戶的id;2)通過MedicineQueryServlet.java將前臺數(shù)據(jù)與數(shù)據(jù)庫中數(shù)據(jù)進行匹配,查找相應藥品,此處使用模糊查找;3)通過AJAX進行頁面的跳轉以及錯誤信息提醒;4)通過LogoutServlet.java來結束本次會話從而退出登錄;5)通過js實現(xiàn)頁面的動態(tài)效果。6.系統(tǒng)測試6.1系統(tǒng)測試目的與意義系統(tǒng)測試是管理信息系統(tǒng)開發(fā)周期中一個十分重要而漫長的的階段。其重要性體現(xiàn)在它是保證系統(tǒng)質量與可靠性的最后關口,同時也是對整個系統(tǒng)開發(fā)過程(系統(tǒng)的分析、系統(tǒng)的設計以及系統(tǒng)的實現(xiàn))的最終審查。系統(tǒng)測試的
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年北師大版九年級歷史下冊階段測試試卷含答案
- 2025年新科版八年級地理上冊月考試卷
- 2025年華師大新版一年級語文下冊階段測試試卷含答案
- 2025年人教A新版九年級歷史下冊月考試卷含答案
- 2025年粵教新版高三英語上冊月考試卷含答案
- 2025年北師大版選擇性必修3歷史下冊階段測試試卷含答案
- 公民教育理論與實踐知到智慧樹章節(jié)測試課后答案2024年秋西華大學
- 2025年度定制衣柜設計制作合同樣本4篇
- 技術部合同范本(2篇)
- 房建工程監(jiān)理合同(2篇)
- 定額〔2025〕1號文-關于發(fā)布2018版電力建設工程概預算定額2024年度價格水平調整的通知
- 2024年城市軌道交通設備維保及安全檢查合同3篇
- 【教案】+同一直線上二力的合成(教學設計)(人教版2024)八年級物理下冊
- 湖北省武漢市青山區(qū)2023-2024學年七年級上學期期末質量檢測數(shù)學試卷(含解析)
- 單位往個人轉賬的合同(2篇)
- 電梯操作證及電梯維修人員資格(特種作業(yè))考試題及答案
- 科研倫理審查與違規(guī)處理考核試卷
- GB/T 44101-2024中國式摔跤課程學生運動能力測評規(guī)范
- 鍋爐本體安裝單位工程驗收表格
- 高危妊娠的評估和護理
- 2024年山東鐵投集團招聘筆試參考題庫含答案解析
評論
0/150
提交評論