計算機專業 畢業論文 基於JSP的網上藥店系統(含原始檔)

切夢刀發表於2019-01-05


獲取專案原始檔,聯絡Q:1225467431,可指導畢設,課設


摘 要
隨著電子資訊科技的飛速發展,電子商務越來越趨於成熟並滲透到商業的各個領域。在藥品零售業,醫藥產品的銷售競爭日益激烈,整個格局出現了很大的變化。藥店的功能和經營重點也發生了根本性轉變,且越來越多的連鎖藥店、大型醫藥超市的出現,使得相對規模較小的藥店很容易在這樣的環境下喪失競爭力。
充分利用現有的網路軟硬體資源和java web開發技術,建立網上藥店系統,為藥品的銷售提供一種互動、開放、易用的平臺,從而降低藥店的經營成本,提高銷售效率,增加利潤。
基於JSP的網上藥店系統是一個整合了藥品的瀏覽,搜尋,購買,下單,使用者管理等功能模組的系統,資訊化的銷售流程可以大大提高藥店的銷售效率和管理效率。
本系統採用B/S開發模式,是在MyEclipse IDE開發環境下,結合MVC的分層架構的設計思想,利用Struts2、Hibernate等開源框架,以及JSP頁面技術、tomcat伺服器、mysql資料庫系統實現的。
關鍵詞:網上藥店JSP MySQL tomcat 框架
ABSTRACT
With the rapid development of electronic information technology, e-commerce become more and more mature and penetrate into all areas of business.In the retails of medicaments,pharmaceutical product sales havebecame increasingly competitive, the whole circumstances  has undergone great changes.The functions and business focus of drugstores have also undergone a fundamental change, and the growing number of chain pharmacies, large pharmaceutical emergence of supermarket pharmacies making relatively smalleasily lost in such a competitive environment.
Only by making full use of the existing network hardware,software resources and java web development technologies, build online Drugstores system for drug sales to provide an interactive, open, easily useful platform, can we reduce pharmacies operating costs,and improve sales efficiency and increase profits.
JSP-based onlineDrugstores is an integrated system which include pharmaceutical browse, search,buying, order, user managementand other functions.Information technology can greatly improve the pharmacy sales process and management effectively.
The system uses B / S development model, in MyEclipse IDE development environment, combined with the MVC layered architecture design ideas using Struts2, Hibernate and other open source frameworks and technologies jsp page, tomcat server, mysql database system implementation.
Key words: onlineDrugstores JSP MySQL tomcat frame
目 錄
1 緒論 1
1.1概述 1
1.2開發背景 1
1.3開發目的及意義 1
2 關鍵技術介紹 3
2.1 B/S架構 3
2.2 mvc設計思想 3
2.3 Struts2,Hibernate,JQuery框架 4
3 系統分析 6
3.1系統需求分析 6
3.2可行性分析 6
3.2.1技術可行性 6
3.2.2經濟可行性 6
3.2.3社會可行性 7
3.3 開發工具和執行環境 9
4 系統概要設計 10
4.1系統的功能模組設計 10
4.2資料庫設計 10
5 系統詳細設計與實現 19
5.1功能實現 19
5.2各部分功能的詳細設計 20
6 系統測試 37
結 論 42
參考文獻 43
附錄1 核心配置檔案web.xml程式碼 44
附錄2 Struts2業務配置檔案struts.xml程式碼 45
附錄3 Hibernate核心配置檔案hibernate.cfg.xml程式碼 47
致 謝 49
1 緒 論
1.1 概述
網上藥店是在電子商務高度發達的時代應運而生的,是醫藥電子商務發展的產物。
隨著電子資訊科技的飛速發展,電子商務越來越趨於成熟並滲透到商業的各個領域。在藥品零售業,醫藥產品的銷售競爭日益激烈,整個格局出現了很大的變化。藥店的功能和經營重點也發生了根本性轉變,且越來越多的連鎖藥店、大型醫藥超市的出現,使得相對規模較小的藥店很容易在這樣的環境下喪失競爭力。
充分利用現有的網路軟硬體資源和java web開發技術,建立網上藥店系統,為藥品的銷售提供一種互動、開放、易用的平臺,從而降低藥店的經營成本,提高銷售效率,增加利潤。
1.2 開發背景
據中國網上藥店理事會調查報告顯示:2011年,醫藥B2C的規模達到4億元,僅出現5家銷售額達5000萬元的網上藥店。而2011年醫藥行業的市場規模達到3718億,線上藥品的銷售額還不到網下藥店的一個零頭,該行業發展潛力巨大。
醫藥行業是老百姓眼裡的暴利行業,藥品昂貴中國人看病難、看病貴的原因之一。而電子商務的發展給醫藥行業發展帶來突破口,如果搞好了是可以降低老百姓的看病治病的成本的。而國家醫藥流通十二五”規劃也指出,要加快醫藥流通行業整合,實現醫藥流通精細化發展,並且鼓勵規範經營的零售連鎖企業發展網上藥店,希望醫藥電子商務企業成為推動國家醫改的有力工具。
2005年國家食品藥品監督管理局正式頒佈了《網際網路藥品交易服務審批暫行規定》,網上藥店業務也在2005年底開始實施。
  巨大的市場潛力誘使著各個實體藥店開始搶佔網際網路藥品銷售的份額。
1.3 開發目的及意義
在以上背景下建立的網上藥店系統,整合了藥品的瀏覽,搜尋,購買,下單,使用者管理等功能模組的系統,資訊化的銷售流程可以大大提高藥店的銷售效率和管理效率。為藥品的銷售提供一種互動、開放、易用的平臺,從而降低藥店的經營成本,提高銷售效率,增加利潤。
(1)提供了全面,詳細的藥品購物入口,輕鬆實現快捷購買。
(2)可以通過不同藥品分類進行導航,用最方便,最快捷的方式找到你需要的藥品。
網上賣藥有點主要是:覆蓋範圍廣、成本低、對客戶隱私保護較好。
  覆蓋面廣:相對於傳統藥店和醫藥賣藥,網上賣藥利用網際網路平臺,開展電子商務,突破了空間地域的限制,可以將業務擴充到實體店無法覆蓋的範圍去。據調查網上藥店的客戶有
60%左右是出於實體店無法覆蓋的區域。
  成本低:網上賣藥與建立實體店相比成本大大降低,省去了店面費用,銷售人員費用和中間的渠道費用,使藥品成本急劇降低,尤其是現在藥品價格居高的情況下。網上賣的藥品一般都比藥店銷售價低10%以上。
  利於客戶隱私保護:客戶在網上下單,商家利用物流體系進行貨物配送,更好的保護了客戶的隱私,有部分商家還提供了平常化包裝,藥品外包裝和普通包裹一樣。
  網上賣藥相對與實體藥店其的弊端也是明顯的,主要體現在誠信體系和物流體系上。
  誠信體系:現在網上賣藥的網站很多,大多是沒正規牌照的黑點”,出售的藥品質量也參差不齊,據統計有90%的藥品屬於不合格藥品。在網際網路假藥氾濫的情況下如何開展網上賣藥業務的關鍵就是誠信體系的建立,如何讓消費者信任、滿意很關鍵。
  物流配送體系:網上賣藥的另一個瓶頸就是物流。中國現在的物流體系不完善,物流成本也高。如果商家自建物流那個成本是一般無法承受的,如何更好的利用目前的物流體系,提高物流質量,讓消費者更快、更好、更便捷的拿到自己貨物成了商家工作的重點之一。
隨著網際網路的發展,各種配套的完善,網上賣藥類的電子商務還是有很大市場前景的。
2 關鍵技術介紹
2.1 B/S架構
B/S結構(Browser/Server,瀏覽器/伺服器模式),是WEB興起後的一種網路結構模式,WEB瀏覽器是客戶端最主要的應用軟體。這種模式統一了客戶端,將系統功能實現的核心部分集中到伺服器上,簡化了系統的開發、維護和使用。客戶機上只要安裝一個瀏覽器(Browser),如Netscape Navigator或Internet Explorer,伺服器安裝Oracle、Sybase、Informix或 SQL Server等資料庫。瀏覽器通過Web Server同資料庫進行資料互動。這樣就大大簡化了客戶端電腦載荷,減輕了系統維護與升級的成本和工作量,降低了使用者的總體成本(TCO)。
2.2 mvc設計思想
MVC全名是Model View Controller,是模型(model)-檢視(view)-控制器(controller)的縮寫,一種軟體設計典範,用於組織程式碼用一種業務邏輯和資料顯示分離的方法,這個方法的假設前提是如果業務邏輯被聚集到一個部件裡面,而且介面和使用者圍繞資料的互動能被改進和個性化定製而不需要重新編寫業務邏輯MVC被獨特的發展起來用於對映傳統的輸入、處理和輸出功能在一個邏輯的圖形化使用者介面的結構中。
MVC是一個框架模式,它強制性的使應用程式的輸入、處理和輸出分開。使用MVC應用程式被分成三個核心部件:模型、檢視、控制器。它們各自處理自己的任務。最典型的MVC就是JSP + servlet + JavaBean的模式。圖解如下圖2-1所示:
圖2-1 mvc設計思想
2.3 Struts2,Hibernate,JQuery框架
2.3.1 Struts2
Struts是Apache軟體基金下Jakarta專案的一部分。Struts框架的主要架構設計和開發者是Craig R.McClanahan。Struts 是Java Web MVC框架中不爭的王者。經過長達五年的發展,Struts已經逐漸成長為一個穩定、成熟的框架,並且佔有了MVC框架中最大的市場份額。但是Struts某些技術特性上已經落後於新興的MVC框架。面對Spring MVC、Webwork2這些設計更精密,擴充套件性更強的框架,Struts受到了前所未有的挑戰。但站在產品開發的角度而言,Struts仍然是最穩妥的選擇。
Struts有一組相互協作的類(元件)、Servlet以及jsp tag lib組成。基於struts構架的web應用程式基本上符合JSP Model2的設計標準,可以說是MVC設計模式的一種變化型別。根據上面對framework的描述,很容易理解為什麼說Struts是一個web framework,而不僅僅是一些標記庫的組合。但 Struts 也包含了豐富的標記庫和獨立於該框架工作的實用程式類。Struts有其自己的控制器(Controller),同時整合了其他的一些技術去實現模型層(Model)和檢視層(View)。在模型層,Struts可以很容易的與資料訪問技術相結合,包括EJB,JDBC和Object Relation Bridge。在檢視層,Struts能夠與JSP, Velocity Templates,XSL等等這些表示層元件相結合。
2.3.2 Hibernate
Hibernate是一個開放原始碼的物件關係對映框架,它對JDBC進行了非常輕量級的物件封裝,使得Java程式設計師可以隨心所欲的使用物件程式設計思維來操縱資料庫。 Hibernate可以應用在任何使用JDBC的場合,既可以在Java的客戶端程式使用,也可以在Servlet/JSP的Web應用中使用,最具革命意義的是,Hibernate可以在應用EJB的J2EE架構中取代CMP,完成資料持久化的重任。
2.3.3 JQuery
JQuery是繼prototype之後又一個優秀的Javascript框架。它是輕量級的js庫 ,它相容CSS3,還相容各種瀏覽器(IE 6.0+, FF 1.5+, Safari 2.0+, Opera 9.0+),jQuery2.0及後續版本將不再支援IE6/7/8瀏覽器。jQuery使使用者能更方便地處理HTML documents、events、實現動畫效果,並且方便地為網站提供AJAX互動。jQuery還有一個比較大的優勢是,它的文件說明很全,而且各種應用也說得很詳細,同時還有許多成熟的外掛可供選擇。jQuery能夠使使用者的html頁面保持程式碼和html內容分離,也就是說,不用再在html裡面插入一堆js來呼叫命令了,只需定義id即可。
jQuery是一個相容多瀏覽器的javascript庫,核心理念是write less,do more(寫的更少,做的更多)。jQuery在2006年1月由美國人John Resig在紐約的barcamp釋出,吸引了來自世界各地的眾多JavaScript高手加入,現在由Dave Methvin率領團隊進行開發。如今,jQuery已經成為最流行的javascript庫,在世界前10000個訪問最多的網站中,有超過55%在使用jQuery。
jQuery是免費、開源的,使用MIT許可協議。jQuery的語法設計可以使開發者更加便捷,例如操作文件物件、選擇DOM元素、製作動畫效果、事件處理、使用Ajax以及其他功能。除此以外,jQuery提供API讓開發者編寫外掛。其模組化的使用方式使開發者可以很輕鬆的開發出功能強大的靜態或動態網頁。
3系統分析
3.1 系統需求分析
據中國網上藥店理事會調查報告顯示:2011年,醫藥B2C的規模達到4億元,僅出現5家銷售額達5000萬元的網上藥店。而2011年醫藥行業的市場規模達到3718億,線上藥品的銷售額還不到網下藥店的一個零頭,發展潛力巨大。
2005年國家食品藥品監督管理局正式頒佈了《網際網路藥品交易服務審批暫行規定》,網上藥店業務也在2005年底開始實施。
充分利用現有的網路軟硬體資源和java web開發技術,建立網上藥店系統,為藥品的銷售提供一種互動、開放、易用的平臺,從而降低藥店的經營成本,提高銷售效率,增加利潤。
  巨大的市場潛力誘使著各個實體藥店開始搶佔網際網路藥品銷售的份額。
3.2 系統的可行性分析
3.2.1技術可行性
資料庫方面,由於本系統的功能不是很強大,所以資料庫採用小型的關係型資料庫管理系統MySQL。MySQL資料庫開源、免費,並且功能強大、響應速度快,非常適用於開發小型的web的專案。
執行環境(伺服器)採用tomcat6.0版本伺服器,tomcat伺服器是Apache開源組織推出的一款開源免費的web伺服器,能夠同時部署多個web專案,通過8080埠進行訪問,功能強大,是web開發很常用的伺服器。
根據本系統的功能需求分析,利用JSP的頁面技術和開源的MySQL資料庫引擎進行開發,並且結合Struts2,Hibernate框架來開發專案。整個專案應用了MVC的程式設計思想,分為了模型層(M),檢視層(V),控制層(C)。模型層使用JavaBean、Hibernate、jdbc等技術,實現資料模型和資料庫的訪問;檢視層使用JSP,JavaScript,CSS,Struts標籤等技術來處理頁面的動態生成邏輯;控制層採用Servlet技術,結合Struts2來整合Action的配置,實現控制層配置的統一。
3.2.2 經濟可行性
本環節負責分析本系統的成本效益,其中包括開發成本,以及以後的執行、維護成本,和系統的收益。
開發成本:專案所採用的技術都是開源免費的,所以開發成本可忽略不計。實際開發中開發成本還是在所有成本中佔比例最高的,包括軟硬體的使用費用,需求、開發、除錯人員的薪酬等等。
執行和維護成本:執行、維護所需要的費用也是不低的,升級相當於二次開發,與開發成本類似。
系統的收益:據中國網上藥店理事會調查報告顯示:2011年,醫藥B2C的規模達到4億元,僅出現5家銷售額達5000萬元的網上藥店。而2011年醫藥行業的市場規模達到3718億,線上藥品的銷售額還不到網下藥店的一個零頭,發展潛力巨大。所以本系統的營收潛力還是很大的。
3.2.3 社會可行性
  《藥品電子商務試點監督管理辦法》第15條明確規定:在藥品電子商務試點網站從事藥品交易的零售企業只能在網上銷售國家藥品監督管理局(現為國家食品藥品監督管理局)公佈的非處方藥。這一規定是為了保障網上藥品零售的安全性,但也在很大程度上限制了網上藥店的經營範圍,影響了網上藥店的盈利能力。
  總的說來,我國藥品監督管理部門對網上藥店這種經營形式還沒有制訂出具體的、詳細的監管辦法,監管力度不大,法律環境較為寬鬆。
  網上藥店的優勢分析
  開辦網上藥店,無論是對藥品經營企業還是對普通消費者,都是大有益處的。
  對於藥品經營企業而言
  節約運營成本:網上藥店為企業帶來的成本節約有:(1)門店租金成本。儘管開辦網上藥店也需要租用網路空間,但相對於現實中租用門店而言要便宜許多;(2)庫存成本。大量的庫存會佔用企業資金,使資金週轉速度減慢,時間成本增加。網上藥店根據客戶訂單採購和傳送藥品,實現了零庫存,加快了資金週轉,同時省去了藥品倉儲、保養等諸多費用。
  擴大市場範圍:網路打破了地理的界限,使藥品零售的服務範圍在時間和空間上都得到了極大的擴充。網上藥店可以實現真正的24小時營業,市場可輻射至全國乃至全世界。蛋糕”做大了,即使市場份額小一點,企業也仍然能夠獲得可觀的收益。
  與顧客保持緊密聯絡:我國目前還沒有一家連鎖藥店能夠將分店開到全國每一個地方。網上藥店沒有營業時間和地理範圍的限制,使顧客無論在何時何地都能夠得到所需要的服務,藥店與顧客之間的聯絡更為緊密了,顧客滿意度也相應提高了。而這也有利於強化顧客對企業品牌的認知,培育顧客忠誠度。美國的一項研究表明,顧客忠誠度每提高5%,企業的利潤就能增加25%~80%。
  對於消費者而言
  降低藥品價格:美國網上藥品的價格通常比市場價低30%左右,這也是消費者願意選擇網上購藥的主要原因。藥品價格的降低除了得益於網上藥店的低成本運營外,還有以下幾方面原因:首先是藥品流通環節減少。我國藥品價格虛高的一個主要原因就是藥品利潤在流通環節的層層分攤導致流通成本過高。網上藥店直接將藥品傳送到全國各地的消費者手中,不需要經過藥品經銷商,流通環節減少了,消費者自然可以得到實惠;其次是網上藥店無需擁有符合GSP要求的倉儲設施,降低了行業進入壁壘,使得從事網上藥品零售的企業增多,競爭強度加大。而競爭的結果就是促使藥品的價格迴歸其本質——價值;最後,網路所帶來的大量資訊服務改變了消費者所處的資訊弱勢地位,消費者議價能力得到提高,可以通過比較藥品的質量、價格等資訊來做出合理的選擇,從而也使經營者利用資訊不對稱抬高藥品價格的行為受到一定程度的遏止。
  網上購藥方便、快捷、保護隱私:只需要一臺PC機、一條網線,消費者足不出戶就可以瞭解各種各樣的藥品資訊,節省了時間和精力,極為方便、快捷。此外,對於注重隱私的消費者而言,網上購藥更是一個很好的選擇。網上購藥採用的是一種基於客戶服務軟體系統的人機互動的模式,沒有第三方的參與,顧客的個人身份以及交易的內容都得到了很好的保密。
  網上藥店的劣勢分析
  儘管網上零售市場潛力巨大,但其在整個零售業中所佔的比重仍然很小。美國2002年秋季電子商務的收入只相當於零售業收入的13%。而我國最近1年在網上購買過產品或服務的人中只有37%購買的是醫療保健用品。筆者認為,當前我國網上藥店的發展主要受以下因素的制約。
  網路技術性問題
  目前,我國寬頻網的普及率還很低,6800萬網路使用者中只有980萬使用寬頻上網,僅佔14.4%。這就使得一些網上展示產品的手段無法得到有效應用,如背景音樂、Flash動畫、視訊等,宣傳效果大打折扣。對網上藥店而言,雖然可以提供線上藥師諮詢服務,但相比電話和麵談,在及時性、準確性上都受到一定程度的影響,服務的效果難以保證。此外,網路速度慢以及程式錯誤、中斷等都會給消費者網上購物帶來不愉快的體驗,從而影響消費者對網上購物這種新興購物方式的信心。
  網上交易的安全性問題
  中國網際網路資訊中心(CNNIC)的調查顯示,網上交易存在的主要問題中位居第一的是產品質量、售後服務及廠商信用得不到保障(佔40%);其次是網上支付的安全性得不到保障(佔25.1%)。前一個問題主要與目前我國法律對電子商務的監管還存在許多空白以及網路使用者身份不明有關。只有隨著國家法制的逐步完善和網路信用系統的全面建成,這一問題才可能得到解決。藥品作為一種特殊商品,質量保證尤為重要。我國藥品監督管理部門可以效仿美國的做法對網上藥店進行認證,讓消費者放心。時下網上購物最為便捷的費用支付方式是通過網上銀行付款,但網路的開放性使網上銀行隨時可能成為黑客攻擊的物件,網上支付的安全性也因此而受到考驗。
  費用問題
  美國有學者認為,網上商店對擴充套件市場份額的作用是肯定的,但在降低成本方面並不明顯。這是因為網上商店雖然可以節省門店租金和庫存投資,但在其它方面的花費並不少,特別是對於那些需要開闢獨立的網路空間而不是藉助網上交易平臺運營的商店。這些費用包括購買伺服器、域名、各類軟體,網路維護和更新,以及聘請專業的網路技術人才等。另外,網站的宣傳也需要較多的投資。
  不能到達目標顧客的問題
  目前,我國的網路使用者中低年齡人群佔的比重很大,而作為藥品消費群全體的老年人則幾乎不上網。他們通常無法獲知網上藥店的促銷資訊,不會通過網上藥店購買藥品,這對於網上藥店而言無疑是一個巨大的損失。雖然2003年的非典”危機使很多不同層次不同年齡的人瞭解了網路的優點,並開始嘗試網上購物,但其影響仍然是有限的、短暫的。網上購物成為主流的購物方式還需依賴網路技術的不斷進步和人們購物觀念的逐步更新。
  運輸中的質量問題
  目前,網上普遍採用的郵遞送貨方式並不適用於藥品。根據GSP的要求,藥品在運輸途中必須採取一定的保護措施,如保持一定的溫度和溼度等,而郵遞顯然無法滿足這些要求。這也在很大程度上限制了網上藥店業務的開展。只有當一些優秀的物流和快遞公司湧現時,網上藥品零售業務才可能得到蓬勃發展。
  監管問題
對於政府監管部門而言,網上業務涉及範圍廣、隱蔽性強,一旦發生違法行為,控制難,取證難,因此監管難度極大。美國聯邦藥品管理協會(NABP)雖然對網上藥店進行了VIPPS認證,但該項認證並不是強制性的,有很多網上藥店並沒有通過該項認證。網上售藥違法行為多種多樣,如銷售假、劣藥品,銷售處方藥,無執業藥師提供諮詢服務等。出現這些情況時,消費者用藥的安全性將無法保證。因此,藥品監督管理部門除了應對網上藥店進行認證,加強監管外,還應向消費者進行廣泛的宣傳,使他們能夠區分合法與非法的網上藥店以及合法與非法的網上售藥行為。
3.3 開發工具和執行環境
開發語言:java
開發架構:B/S
設計模式:結合MVC的分層架構的設計思想
整合開發環境:MyEclipse10.0
資料庫:mysql5.5
伺服器:tomcat6.0
4 系統概要設計
4.1 系統的功能模組設計
能模組劃分描述系統結構,需要將需求分析中的感性描述進行抽象,提取出要實現的功能,這是整個系統開發的一個關鍵過程。在系統分析的基礎上,確定了系統的功能結構圖,如圖4-1-1所示。
圖4-1-1 系統功能結構圖
4.2資料庫設計
本系統共設計了10張表,以下是各資料表的詳細設計:
表4-1-1 使用者表(user)
欄位名 型別 可否為空 預設值 含義
id int(10) no auto_increment 使用者id,主鍵
user_name char(50) no 使用者名稱
user_pwd char(24) no 密碼
user_birthday bigint(19) yes 生日
user_gender char(1) yes m(男) 性別
user_phone varchar(50) yes 電話
user_email char(50) no 使用者電子郵箱
user_address text(65535) yes 使用者常用地址
register_date bigint(19) yes 註冊日期
email_verify_code varchar(50) yes 郵箱驗證碼
last_login_ip varchar(15) yes 最後登入IP地址
user_grade int(10) no 1(普通使用者) 使用者級別
表4-1-2 分類表(category)
欄位名 型別 可否空 預設值 含義
id int(10) no auto_increment 分類id,主鍵
cate_name char(50) no 分類名稱
description char(200) yes 分類的功能描述
parent_id int(20) yes 父分類的id
表4-1-3 產品表(product)
欄位名 型別 可否空 預設值 含義
id int(20) no auto_increment 產品id,主鍵
pro_name char(50) no 產品名稱
init_price double yes 原價
Price double yes 售價
add_date bigint yes 上架時間
pro_picture char(50) yes 商品圖片的路徑
remain int(20) no 餘量
sum int(20) yes 0 累計銷量
is_down char(10) no N(未下架) 是否已下架
表4-1-4 藥品表(drug)
欄位名 型別 可否空 預設值 含義
id int(20) no 藥品id,主鍵
drug_name char(50) no 藥品名
package_style char(20) yes 包裝方式
weight int(10) yes 單位淨重
num char(20) yes 數量
init_date bigint yes 出廠日期
save_month int(10) yes 有效期
direction char(200) yes 說明書
productor char(20) yes 生產廠家
表4-1-5 產品-分類表(category_product)
欄位名 型別 可否空 預設值 含義
id int(12) no auto_increment 主鍵
product_id int(10) no 產品id
cate_id int(10) no 分類id
表4-1-6 訂單表(form)
欄位名 型別 可否空 預設值 含義
id int no auto_increment id,主鍵
user_id int(20) no 使用者id
receive_name char(20) no 接收人姓名
full_address char(100) no 接收詳細地址
postal_code varchar(20) yes 郵編
phone char(20) yes 接收人電話
mobile char(20) yes 手機號碼
order_date bigint yes 訂單日期
status int(1) no 0(已提交未處理) 訂單狀態
total double no 0.0 總金額
表4-1-7 評論表(review)
欄位名 型別 可否空 預設值 含義
id int(10) no auto_increment id,主鍵
user_id int(20) no 使用者id
pro_id int(20) no 產品id
review_date bigint yes 評論日期
review_grade Int(2) no 5(1-5) 評價級別
review_text text yes 評論內容
表4-1-8 回覆表(reply)
欄位名 型別 可否空 預設值 含義
id int(10) no auto_increment id,主鍵
user_id int(20) no 使用者id
review_id int(20) no 對應的評論id
reply_date bigint yes 回覆日期
reply_text text yes 回覆內容
表4-1-9 商品條目表(item)
欄位名 型別 可否空 預設值 含義
id int(12) no auto_increment id,主鍵
order_id int(10) no 對應的訂單的id
product_id int(10) no 對應的產品的id
product_name varchar(100) yes 產品名稱
price double yes 單價
product_num int(10) yes 1 購買的數量
amount double yes 0.0 本條目的總價
表4-1-10 收貨地址表(receive_address)
欄位名 型別 可否空 預設值 含義
id int(12) no auto_increment id,主鍵
user_id int(11) no 對應的使用者的id
receive_name varchar(50) yes 收貨人姓名
full_address varchar(200) yes 收貨人詳細地址
postal_code varchar(20) yes 郵編
mobile varchar(15) yes 手機號碼
phone varchar(20) yes 固定電話

結構圖如下所示:
圖4-2-1 使用者表 圖4-2-2 產品表 圖4-2-3 藥品表
圖4-2-4 分類表 圖4-2-5 產品-分類表 圖4-2-6 訂單表

圖4-2-7 接收地址表 圖4-2-8 評論表
圖4-2-9 回覆表 圖4-2-10 商品條目表
建表的SQL語句如下:
drop database if exists drug;
create database drug default character set utf8;
use drug;
使用者表:
create table user(
id int(20) auto_increment,
user_name char(50) unique not null,
user_pwd char(24) not null,
user_birthday bigint,
user_gender char(1),
user_phone varchar(50),
user_email char(50) unique,
user_address text(100),
register_date bigint,

email_verify_code varchar(50) default NULL,
is_email_verify char(3),
last_login_time bigint default NULL,
last_login_ip varchar(15) default NULL,

user_grade int(1) not null default 0,
primary key(id)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
分類表:
create table category(
id int(20) primary key auto_increment,
cate_name char(50),
description char(200),
parent_id int(20)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
產品表:
create table product(
id int(20) auto_increment,
pro_name char(50),
init_price double,
price double,
add_date bigint,
pro_picture char(50),
remain int(20),
sum int(20) default 0,
is_down char(10) default N,
primary key(id)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
產品表:
create table drug(
id int(20),
drug_name char(50),
package_style char(20),
weight int(10),
num char(20),
init_date bigint,
save_month int(10),
direction char(200),
productor char(50),
primary key(id)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
產品分類表:
CREATE TABLE category_product (
id int(12) NOT NULL auto_increment,
product_id int(10) NOT NULL,
cate_id int(10) NOT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
訂單表:
create table form(
id int primary key auto_increment,
user_id int(20),
receive_name char(20),
full_address char(100),
postal_code varchar(20),
phone char(20),
mobile char(20),
order_date bigint,
status int(1) default 0,
total double
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
評論表:
create table review(
id int(20) primary key auto_increment,
user_id int(20),
pro_id int(20),
review_date bigint,
review_grade int(2),
review_text text
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
回覆表:
create table reply(
id int(20) primary key auto_increment,
review_id int(20),
user_id int(20),
reply_text text,
reply_date bigint
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
商品條目表:
CREATE TABLE item (
id int(12) auto_increment,
order_id int(10) NOT NULL,
product_id int(10) NOT NULL,
product_name varchar(100) NOT NULL,
price double NOT NULL,
product_num int(10) NOT NULL,
amount double NOT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
接受地址表:
CREATE TABLE receive_address(
id int(12) auto_increment,
user_id int(11) NOT NULL,
receive_name varchar(50) NOT NULL,
full_address varchar(200) NOT NULL,
postal_code varchar(20) NOT NULL,
mobile varchar(15) default NULL,
phone varchar(20) default NULL,
PRIMARY KEY(id)
) ENGINE=InnoDB;
5 系統詳細設計
5.1 功能實現
表5-1 主頁模組功能說明
檔名 功能
main/main.jsp 網站主頁”,歡迎頁
main/category.jsp 主頁左側分類”頁面
main/recommend.jsp 主頁中欄上側編輯推薦頁面”
main/hot.jsp 主頁中欄中間熱銷商品”頁面
main/new.jsp 主頁中欄下側最新上架”頁面
main/monthHot.jsp 主頁右欄月銷量排行榜”頁面
common/top.jsp 網站頂部jsp片段
common/footer.jsp 網站頁面的底部jsp片段
表5-2 使用者模組功能說明
檔名 功能
user/login.jsp 使用者登入頁面
user/register.jsp 使用者註冊頁面
user/userAccept.jsp 使用者協議頁面
user/rverify_form.jsp 使用者註冊,郵箱驗證頁面
user/register_ok.jsp 使用者註冊成功頁面
表5-3 使用者個人資訊模組功能說明
檔名 功能
self/myIndex.jsp 使用者個人主頁頁面
self/default.jsp 使用者個人資訊操作結果頁面
self/showUser.jsp 使用者個人資訊顯示頁面
self/changePwd.jsp 使用者修改密碼頁面
self/update.jsp 使用者更改個人資訊介面
self/un_commit_order.jsp 使用者檢視個人未完成訂單頁面
self/complete_order 使用者完成未完成訂單頁面
self/commit_order.jsp 使用者提交訂單頁面
表5-4 商品瀏覽模組功能說明
檔名 功能
main/book_list.jsp 分類瀏覽產品資訊頁面
main/product.jsp 產品詳細資訊頁面
表5-5 購物車模組功能說明
檔名 功能
cart/cart_list.jsp 購物車列表頁面
cart/cart_num.jsp main/top.jsp中的購物車模組
cart/cartInfo.jsp 購物車資訊頁面,用於滑鼠指向購物車,下拉出購物車資訊頁面
表5-6 訂單模組功能說明
檔名 功能
order/order_info.jsp 訂單資訊頁面
order/address_from.jsp 下單的收貨人資訊頁面
order/address_ok.jsp 下單成功頁面
表5-7 管理員模組功能說明
檔名 功能
admin/login.jsp 管理員登入頁面
admin/manage.jsp 管理員主頁
admin/head.jsp 管理員介面頭部jsp片段
admin/footer.jsp 管理員介面腳部jsp片段
admin/category/* 管理員對分類的管理
admin/user/* 管理員對使用者的管理
admin/product/* 管理員對產品的管理
admin/order/* 管理員對訂單的管理
5.2 功能詳細設計與實現
5.2.1 使用者登入模組
使用者名稱:該模組的功能是使用者根據自己的使用者名稱(或郵箱)和密碼來登入本系統,其中使用者名稱和郵箱在註冊時就已經限定為唯一的,因此不會重複。
密碼:通過MD5摘要加密對密碼進行加密,保證了密碼的安全。該加密方法的原理是對給定的一個字串通過一系列的複雜的數學演算法,可以得到一個不重複不可逆的24位字串。這樣做是很安全的,因為資料庫中儲存的是加密以後的字串,即使密碼洩露,盜取密碼者也不能夠通過加密後的字串逆向推匯出密碼。而使用者每次登入時,後臺的處理時先將使用者輸入的密碼按照同樣的MD5加密演算法加密之後與資料庫中的資料進行比較,如果相等,則登入成功;否則,請使用者重新登入。
圖5-2-1 使用者登入頁面
驗證碼:四位隨機驗證碼,由數字,大小寫字母隨機生成;如果看不清,點選可重新整理。
本模組實現js驗證,如果使用者名稱,密碼,驗證碼中有一個是空,則不允許登入。
如果尚未註冊,點選註冊連結可立即免費註冊。
5.2.2 使用者註冊
使用者名稱,電子郵箱必須唯一,使用者滑鼠離開這倆個文字框時,onblur事件觸發,利用JQuery呼叫ajax向後臺非同步的傳送請求,判斷在資料庫中是否存在該使用者名稱和郵箱,如果存在,不允許表單提交,提示使用者進行更改。
密碼和確認密碼,必須一致,保證使用者輸入的和記住的密碼相同。
出生日期,使用JQuery框架彈出日曆介面,等待使用者選擇。
常用地址,實現級聯下拉。選擇不同的省市,第二個下拉選單出現對應的市/區。
整個表單實現表單驗證,有不符合條件的情況時,不允許使用者提交註冊資訊。
圖5-2-2 使用者註冊
5.2.3 郵箱驗證
系統會自動向郵箱傳送電子郵件,其中包含本次註冊的郵箱驗證碼,只有正確登入註冊郵箱,檢視其中的郵箱驗證碼,方能通過這步郵箱驗證。

圖5-2-3 郵箱驗證
正確通過郵箱驗證後,會進入註冊成功頁面。而後就可以的進行瀏覽,搜尋,購買,下單,個人資訊管理等等操作。
圖5-2-4 註冊成功
特殊的,如果使用者未驗證就進行登入,就將使用者跳轉到郵箱驗證頁面,並且提示使用者進行郵箱驗證。
圖5-2-5 郵箱驗證
5.2.4 商品瀏覽
主頁:也就是程式的歡迎頁,不登入也可以訪問。頂端為logo,搜尋框,登入/註冊連結,導航欄。最左邊為分類視窗”,中間依次是編輯推薦”,熱銷產品”,最新上架,右邊欄是月熱銷排行榜。
點選logo可進入主頁;點選導航欄,可進入相關頁面;點選分類,可進入分類瀏覽頁面;點選任一產品,可進入產品詳細資訊頁面;點選搜尋,可按名稱進行藥品搜尋。
圖5-2-6 主頁
分類瀏覽:
點選任一分類,進入分類瀏覽視窗。該頁面實現分頁,排序,購買等功能。其中的購買功能需要首先登入系統,否則,則將使用者導向登陸頁面,登入完成後進入購物車頁面。
圖5-2-7 分類瀏覽
商品詳細資訊:
點選任一商品連結,可進入商品詳細資訊頁面,可進行購買操作。
圖5-2-8 商品詳細資訊
降價促銷
點選導航欄降價促銷”,檢視降價促銷產品。
商品搜尋
利用導航欄進行搜尋功能。
5.2.5 購物車
購物車為空時:
圖5-2-9 購物車為空
購物車不為空時:
圖5-2-10 購物車不為空
購物車中的條目可檢視資訊,可變更數量,可刪除到回收區,可徹底刪除,也可恢復到購物車。
圖5-2-11 刪除、徹底刪除與恢復
5.2.6 訂單結算
訂單資訊頁面:可彙總檢視要結算的訂單資訊。
圖5-2-12 訂單資訊頁面
填寫送貨地址頁面:填寫詳細的送貨地址,如果以前填寫過,則可在下拉選單中直接填充。
圖5-2-13 填寫送貨地址頁面
下單成功頁面:下單成功後可看到剛剛的訂單資訊。
圖5-2-14 下單成功頁面
5.2.7 個人資訊管理模組
檢視個人資訊
圖5-2-15 檢視個人資訊
修改個人資訊:
圖5-2-16 修改個人資訊
修改密碼:如果兩次輸入新密碼不一致,不允許表單提交;如果原密碼輸入不正確,則不對資料庫進行更新操作;新密碼也會被進行MD5摘要加密後儲存進資料庫。
圖5-2-17 修改密碼
未完成訂單:點選去完成訂單”,可以跳轉到訂單完成頁面。
圖5-2-18 未完成訂單
已提交訂單:可以檢視使用者已經提交的管理員未處理的訂單資訊
圖5-2-19 已提交訂單
購買記錄: 對自己的購買記錄進行管理。
收貨地址管理:對自己用過的購買地址進行管理。
5.2.8 登入攔截
個人中心,購物車,購買等操作需要使用者登入,如果使用者未登入,不允許進行這些操作,將使用者跳轉到登入頁面,提示使用者登入後再進行這項操作。如圖5-2-20,不登入而點選個人中心連結:
圖5-2-20 登入攔截
5.2.9 JS特效
主頁右欄月銷量排行,滑鼠指向某個商品,該商品突出。
圖5-2-21 JS特效1
個人中心中,左邊欄點選一級選單,可伸展和收縮二級選單,如圖正在收縮選單管理”。
圖5-2-22 JS特效2
5.2.10 購物車的Cookie實現
使用cookie技術儲存使用者的購買資訊,如果使用者將商品新增到購物車中後離開了,那麼我們使用cookie技術可以將使用者的購買資訊儲存到客戶端的瀏覽器中,時間為一個月。一個月內,該使用者”再次登入後可以看到自己上次未完成的購買;一個月後,該cookie會被瀏覽器自動刪除。
由於使用者可能隨時停止操作,所以每次使用者對購物車的內容做更改時,我們都需要更新對應的cookie資訊,保證一致性。
如圖5-2-23,未購買商品時瀏覽器中的cookie資訊。

圖5-2-23 未購買商品時cookie
如圖5-2-24,購買商品後的cookie資訊。

圖5-2-24 購買商品後的cookie
其中的內容中的2:1:false,3:1:false”是購物車資訊的特定字串,,”用於分割購物車中的不同條目資訊;每個條目資訊中,第一個數字,如2,表示本條目中的產品的id;第二個數字表示本條目中購買的商品數量;第三個引數false/true,false表示未刪除,true表示已經刪除到回收區。可以看到過期時間為一個月以後(本系統的時間不正確)。
如圖5-2-25,表示修改商品2的購買數量為5個,對應的cookie資訊。

圖5-2-25 商品2購買5個
如圖5-2-26,表示刪除商品3到回收區,對應的cookie資訊。

圖5-2-26 刪除商品3到回收區
如圖5-2-26,從回收區徹底刪除商品3,對應的cookie資訊。

圖5-2-26 徹底刪除商品3
訂單正確提交後,刪除cookie。如圖5-2-27

圖5-2-27 訂單提交後,刪除cookie
再次購買3種商品,不提交訂單,退出系統。此時,cookie仍然存在,如圖5-2-28
圖5-2-28 不提交訂單,退出系統
該使用者再次登入系統後,會從購物車中還原購物車資訊。
圖5-2-28 再次登入,還原購物車資訊
不同使用者的不同購物車,cookie不衝突

圖5-2-29 兩個使用者之間的cookie不衝突
6 系統測試
6.1 登入測試
利用JavaScript框架JQuery,使用者名稱為空,密碼為空,驗證碼為空時均不能進行登入。

圖6-1-1 使用者名稱為空不能提交
圖6-1-2 密碼為空不能提交
圖6-1-3 驗證碼為空不能提交
6.2 註冊測試
圖6-2-1 使用者名稱佔用不能提交
圖6-2-2 不接受使用者使用協議不能提交
圖6-2-3 郵箱驗證碼不足36位不能提交
6.3 購買
圖6-2-4 商品不能重複購買
6.3 購物車
購買商品的數量不能修改為0和負。如圖6-3-1,
圖6-3-1 數量不能為負,0
6.4 訂單
訂單資訊不完整,不符合要求,不能提交。
圖6-4-1 訂單資訊不完整不能提交
6.5 個人資訊
圖6-5-1 個人資訊不完整不能提交
圖6-6-1 兩次密碼輸入不一致不能提交
結 論
獨立的完成一個專案,可以使一個人成長很多,學習很多。從需求分析,系統分析,資料庫設計,頁面設計,功能設計,系統整合,系統測試等等,每一步都需要很大的精力和耐心,這對即將要踏入工作崗位的我們來說也是一次很好的鍛鍊。
整個專案歷時將近半年,其作用也是很明顯的。一方面,我複習了很多的專業知識,同時為了系統的功能的強大和安全等也臨時學習了很多的新知識,這培養了我的分析和解決問題的能力,以及自我學習的能力;另一方面,使我瞭解了web專案的開發流程和主要技術,對自己是一個很好的鍛鍊,只有對專案有了一個很好的把握,才能快速,正確的寫出程式碼;
最後,整個專案的開發使我意識到了團隊協作的重要性,要想開發一個大的專案,僅靠一個人的力量是很難得,我們需要有很強的團隊協作能力,來一起高效的工作。
技術方面,在整個系統的開發過程中,充分的借鑑了開源社群的優秀程式碼和設計思想,使用物件導向的程式設計方式與JSP頁面技術相結合,完成的實現了系統的需求。使用MVC的設計思想將系統分層設計,不僅結構清晰,而且開發效率高。
然而,系統也是存在一些問題的。由於個人的能力有限,系統的需求也有些龐雜,導致工作量過大,在有限的時間內有些功能尚未實現,整個系統也存在一些漏洞和bug存在,從這個方面來說,本系統還有待進一步完善和除錯,做到更加完美。
參考文獻
[1] 楊樹林,胡潔萍.Java Web應用技術與案例教程[M]. 人民郵電出版社,2011:1-250
[2] 曾令明,索望,甘剛,宋波.Java程式設計教程[M]. 西安:西安電子科技大學出版社;2007:204-2115.
[3] 劉曉華.JSP應用開發詳解(第三版)[M]. 北京:電子工業出版社,2007:286-287.
[4] 張銘澤.JavaScript權威指南(第四版)[M]. 北京:機械工業出版社,2003:259-284.
[5] 朱末霞.基於JSP開發的網上調查系統[J]. 大學圖書情報學刊,2007,25(1):45-48.
[6] 孫曉菲,張亞莉.基於JSP的網路問卷自動生成系統的設計與實現[J]. 計算機與現代化,2006(4):91-94.
[7] 汪孝宜.JSP資料庫開發例項精粹[M]. 北京:電子工業出版社,2005:89.
[8] 馮燕奎,趙德奎.JSP實用案例教程[M]. 北京:清華大學出版社,2004:142.
[9] 範新民.基於JSP、JDBC技術動態訪問Web資料庫的實現方案[J]. 福建師範大學學報:自然科學版2002,18(2):28-33.
[10] 吳晨清,榮震華.用JSP/Servlet技術構建Web應用[J]. 計算機工程,2001,27(1):170-172.
[11] 彭巧珍,姚力文,段隆振,袁萍.基於JSP技術的網上選課系統的設計與實現[J]. 計算機與現代化,2004(8):122~124.
[12] 萬華.基於JSP的網上購物系統的實現[J]. 現代計算機,2002(10):60~63.
附錄1 核心配置檔案web.xml程式碼

xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance
xsi:schemaLocation=http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd>

struts2

org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter



struts2
/*


/main/main.jsp


附錄2 Struts2業務配置檔案struts.xml程式碼












class=com.bigc.drug.interceptor.TransactionInterceptor>




=logininterceptor>






/user/login_form.jsp

/error.jsp







附錄3 Hibernate核心配置檔案hibernate.cfg.xml程式碼



org.hibernate.dialect.MySQLDialect


jdbc:mysql://localhost:3306/drug?useUnicode=true&characterEncoding=utf8

root
root

com.mysql.jdbc.Driver


false
false












致 謝
感謝XX老師一年來在畢業設計中給予的耐心指導與幫助,在這次畢業設計中我學到許多書本上學不到的東西。在系統製作過程中,遇到很多問題,剛開始覺得無從下手,不知從哪裡找資料,在任老師的指導下我學會了如何解決問題,鍛鍊了自己的動手能力,做到學以致用”。在完成畢業論文之時,我的大學生活也將結束,在這四年的學習生活中,感謝所有幫助和支援過我的人,這一切將永遠留在我記憶的最深處!
基於JSP的網上藥店系統
使用者登入
使用者註冊
瀏覽藥品資訊
藥品購買
分類瀏覽
搜尋瀏覽
購物車
管理
訂單
模組
個人資訊
管理
評論模組
降價排行
編輯推薦
降價排行
登陸驗證
增刪改
回收
郵箱驗證
PAGE
獲取專案原始檔,聯絡Q:1225467431,可指導其它畢設,課設

相關文章