基于java的网上药店系统(含源文件)


获取项目源文件,学习交流联系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

发布了24 篇原创文章 · 获赞 13 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_17669865/article/details/104235767