网上商城的设计与实现毕业论文

重庆科技学院

毕业设计(论文)

题 目 网上商城的设计与实现

学 院 电气与信息工程学院

专业班级 计科2010-03

学生姓名 刘拉锁 学号 2010444415

指导教师 刘海玲 职称 讲 师

评阅教师 职称

2014年 5 月 25 日

学生毕业设计(论文)原创性声明

本人以信誉声明:所呈交的毕业设计(论文)是在导师的指导下进行的设计(研究)工作及取得的成果,设计(论文)中引用他(她)人的文献、数据、图件、资料均已明确标注出,论文中的结论和结果为本人独立完成,不包含他人成果及为获得重庆科技学院或其它教育机构的学位或证书而使用其材料。与我一同工作的同志对本设计(研究)所做的任何贡献均已在论文中作了明确的说明并表示了谢意。

毕业设计(论文)作者(签字):

年 月 日

摘要

近年来,随着Internet的迅速崛起,互联网技术得到前所未有的发展,日益成为收集、提供信息的最佳渠道,并逐步进入传统的流通领域。无店商铺也悄然兴起,它的出现及发展,不仅是市场经济以及相应技术发展到一定阶段的产物,而且符合当今社会的发展及人们的需求更新,替代了以往死板的购物模式,节省了人们的精力和时间。

本毕业设计——基于Java语言等相关技术开发、实现的网上购物系统,为一些小规模经营的网上商铺提供了极大的便利,例如,获得授权的店主(卖方)通过相关的身份验证之后,在管理模块中,可以对在售的商品进行各种管理操作,除此之外,还可以对会员信息、物流信息进行管理。普通用户(买方)登录后,在网上可以进行商品的查询、浏览及选购等操作。

该系统的实现,主要依靠Java的开源框架SSH来进行环境的搭建,利用MVC的设计思想完成系统的设计与开发。数据库采用的是MySQL数据库,在链接上采用DBCP连接池,在事物的管理上采用spring的声明式事物来管理。这样架构有利用系统后期的维护,极大的降低了系统的耦合性。

关键字:网上购物系统 、Java Web 、连接池 、SSH、MySql数据库、MVC

ABSTRACT

In recent years, with the rapid rise of the Internet, the Internet technology has been an unprecedented development, becoming collected to provide the best information channels, and gradually into the traditional circulation. No shops have sprung up shop, its emergence and development of not only a market economy and the corresponding technology development to a certain stage of the product, and in line with today's social development and people's needs updating, replacing the previous rigid shopping patterns, saving people energy and time.

The graduation project - the development of related technologies such as Java language-based online shopping system implemented for a number of small-scale online store provides a great convenience, for example, authorized the owner (seller) by the associated authentication after in the management module, the product can be sold in a variety of management operations, in addition, can also membership information, logistics and information management. After a normal user (buyer) login, you can check in online goods, browse and buy other operations.

Implementation of the system, mainly rely on SSH Java open source framework for

building environments, using MVC design ideas to complete the system design and development. Database using the MySQL database, using DBCP connection pool on the link, using spring declarative things on management to manage things. Such systems have a post-maintenance architecture using the system, greatly reducing the coupling of the system.

Keyword: Online shopping system、Java Web、Connection pooling、SSH、MySql databases、 MVC

目录

1 绪 论 ................................................................... 1

1.1研究的目的和意义 .................................................... 1

1.2国内外研究现状分析 .................................................. 1

1.3课题研究方法 ........................................................ 2

1.4研究设想及预期结果 .................................................. 3

2 相关技术介绍 ............................................................ 4

2.1关于Java Web的介绍 ................................................. 4

2.2关于Struts2的介绍 .................................................. 4

2.3关于SSH的介绍 ...................................................... 5

2.4关于JavaScript和Jquery的介绍 ...................................... 5

2.5关于数据库连接池的介绍 .............................................. 6

2.6关于MySQL的介绍 .................................................... 6

3 系统需求分析 ............................................................ 8

3.1系统目标功能分析 .................................................... 8

3.2系统可行性分析 ...................................................... 9

3.3系统开发设备需求 .................................................... 9

3.4项目实现途径 ....................................................... 10

3.5数据存储的实现 ..................................................... 10

4 数据库设计 ............................................................. 11

4.1数据库整体设计 ..................................................... 11

4.2数据库表设计 ....................................................... 11

5 系统设计 ............................................................... 15

5.1系统整体设计流程图 ................................................. 15

6 系统实现 ............................................................... 17

6.1 三层架构设计 ....................................................... 17

6.2创建与数据库的连接 ................................................. 17

6.3 事物管理 ........................................................... 18

6.4系统部分主要功能模块的界面与编程实现 ............................... 21

7 系统测试 ............................................................... 33

7.1系统部分功能测试 ................................................... 33

8 总结 ................................................................... 36

参考文献 ................................................................. 37

致谢 ..................................................................... 38

1 绪 论

1.1研究的目的和意义

网上商城的悄然兴起,是商业经济发展到一定阶段的产物,也是顺应新的消费需求和技术进步的必然结果。上海市商业经济研究中心副主任齐晓斋分析说,与传统的百货商店、连锁超市、大卖场、便利店等有形商铺相比,网上商城业具有一定的先天优势。一是地段。对于以往的实体店铺来讲,商店的位置,地段的优势,几乎可以决定未来经营的成功与失败,但在城市的商业网络资源,特别是优质的商业网络资源已是十分稀缺,而网上商城是没有限制的地段;二是经营成本。借助快速发展的科学技术,网上商城通常能够节省从生产到销售过程当中的许多步骤,从而极大地降低经营成本与交易成本,给消费者、商家待来双赢的局面;三是风险。对于个人来说,由于网上商店等网上商城投入的资金相对较低,经营和管理比较灵活,即使遇到商业危机,也能及时改变自己的经营和管理方式来规避风险。随着社会经济的发展及消费水平的提高,人们希望得到更加方便、更加快捷的购物方式,同时也乐于尝试各种新的购物方式。在这一市场需求的推动下,企业将会对商品零售的方式进行创新,而先进的技术为其创新提供了重要的支撑与平台。

通过对互联网的特点以及对国内外相关电子商务网站的现状进行研究与分析,本毕业设计以基于Web的电子购物网站的开发与实现作为主题。目的在于设计并实现一个在网络环境下能够运行的集商品上架、商品信息管理、货品浏览及查询、订单、购物车和配送等功能于一体的网上商城,为一些打算网上开设店铺的商家提供服务。

1.2国内外研究现状分析

在我国,网上购物从无到有也不过短短几年时间。我国第一家网上购物发生在1996年,燕莎友谊商场首次通过网上商城售出一个景泰蓝,虽然货款的支付不是在网上进行的,但这毕竟为我国零售业奏出了网上购物的先声。现在,在北京,上海,深圳市等,200多家商场开设网上商店,旗舰店等,还有一些城市处于观望阶段。网上购物的真正意义上的,即在网上付款,我们目前可以随处可见,比如天猫、京东等。深圳某家虹商城去年5月开设了第一家实施计划和网上支付的网店,在线消费者可以凭借中国招商银行“一卡通”,可以很方便地购物,并且商家会在24小时内送货上门。商家通过投资经营网上商店的目的是赚钱,但从网上商店目前的运营情况来看,上网

者大多数并不是去网上购物而是消遣时间、对于真正需求购物的人们却不愿意在网上进行购物,他们对网上购物这种方式处于怀疑的态度,所以网上商店生意渗淡目前俨然成为各大网上商店共同的困惑。比如:上海的第一个网上商店购物中心——上海亿样购物中心,由于管理不善,经营不到一半的关闭,一些大型零售商场在北京,其网上商店也“门庭冷落”。

结算方式的原始落后是网上购物致命的弱点。在国外,计算机一般都与银行的帐户相联,消费者与网上商城只需通过网上银行打交道,不必当面进行现金的交易。在我国目前,除了淘宝拍拍网上购物结算的几个网上商店外,大部分商家业务结算只能以 “送货上门、到货付款”或“邮寄上门、贷款邮资先付”的方式。这样不仅浪费了人们的时间和精力,而且限制了人们对某些商品的需求和地域的限制。因此,安全、快捷、方便的电子支付手段将是今后网上商店健康发展的主要决定性要素。以下是CNNIC(中国互联网络信息中心)发布的B2C电子商务发展报告,进一步分析了目前我国网上购物的现状。

90%选择网上购物的人都认为网上购物可以节约时间和精力,这说明随着生活节奏的加快,人们越来越希望拥有简单快捷的购物方式。随着消费者对消费者的需求增加,使网上购物商城必须经过精心的打算,提供专业的产品和服务,差异化的市场。以卓越网和铛铛网为例,最近根据不同的消费者和消费者的需求,开通了计算机、外语、文学和艺术四个专业商城,这不仅体现了卓越网“以客户为中心”的经营理念,相信这也是中国在线购物中心的未来发展趋势。

尽管网络版权、阅读习惯仍是制约未来网络出版、网上商城发展的障碍,但网络环境给出版业带来了深刻的革命,已成大势所趋。网上购物与传统商店都在努力保持商品发布新的利润空间。目前的情况是,大部分商城对网上商城的了解是不足够的,只是初步参与电子商务和网站建设,网络上的其他产品,一对一,跨越时间,空间和其他特性,并没有充分利用,可以预计,随着网络深入到人们的生活中,以及网络技术的快速发展,相信以技术、服务为品牌支撑的网上商城在不远的未来会成为市场的宠儿和业态创新的引领者。

1.3课题研究方法

通过在网上查找相关资料,了解了设计的思路,熟悉了开发的环境之后,通过分析网上商城的开发流程与具体业务,为本次毕业设计打下了坚实的基础。结合自身对Java语言的掌握情况,本设计决定采用Java语言进行编程实现。在决定了使用何种语言进行开发后,我想通过这次的设计与开发提高自身的水平和能力,在架构体系上就大胆的尝试了SSH框架,并结合MVC的思想进行本次系统的开发。而网页的部分布

局,是从网上下载的成熟模版,并结合本毕业设计的需求,进行了部分UI界面的设计及实现。

1.4研究设想及预期结果

本系统预期实现的功能及结果主要包括:

1) 管理员可以进行对商品信息的添加,修改,删除;

2) 管理员可以进行的商品目录添加,修改,删除,再对商品信息的添加时,

动态加载目前存在数据库中的目录,在删除的时候,如果此目录下存在商品

将不能删除此目录,在修改的时候,如果目录名称发生变化,在商品表中的

目录也必须变;

5) 管理员实现对会员信息的管理。

6) 管理员可以同过商品的销量,以及商品的数量来设置商品的下架,是否热

卖。

7) 管理员要对物流信息进行管理;

8) 管理员可以对订单进行查看,会员也可以看到自身的订单;

9) 管理员可以对首页的广告进行管理,实现广告的添加,修改,删除等;

10) 管理员在后台可以对帖子进行审核,删除;

11) 会员可以进行对商品信息的搜索

12)会员可以进行商品的购买,添加到购物车,购物车查看;

13)会员登陆到后台可以对自己的订单进行查看

14)用户可以进行会员的注册以及会员自身的信息修改;

15)会员登录后可以进行有关本系统的帖子的一个发布供能,但发布后,需

通过管理员的审核,同时也可以对已审核通过的帖子进行回复,可以查看帖

子的回复内容;

2 相关技术介绍

2.1关于Java Web的介绍

Java Web,是用Java技术来解决相关web互联网领域的技术总和。Java web开发的web项目通常包括两个部分:Web服务器和客户端。Java在客户端的应用有java applet不过在Java Applet现在已很少使用在客户端应用程序,Java客户端在服务器中的应用是非常丰富的,如servlert,JSP和第三方架等。Java web发展目前俨然成为一个强大的驱动力,推动着Web领域的快速发展。

2.2关于Struts2的介绍

Struts 2是Struts1的下一代产品,是在 struts 1和WebWork的技术基础上进行了合并的全新的Struts 2框架。其全新的Struts 2的体系结构与Struts 1的体系结构差别巨大。Struts1 结构简单、小巧,是由Apache推出。但其与Jsp/Servlet耦合紧密,制约了发展。而Struts 2以WebWork为核心,采用拦截器的机制来处理客户端发的请求,这样的设计来自于WebWork的开发理念,使业务逻辑控制器能够与ServlertAPI完全分离出来,所以在某种程度上可以认为Struts 2为WebWork的升级版本。尽管从Struts 1到Struts 2有着很多的变化,然而相对WebWork,Struts 2的变化很小。

当Web服务器收到 客户端的请求(HttpServletRequest),这就意味客户端初始化了一个指向servlert容器的请求,servlert容器将请求进过一些过滤链,包括(ActionContextCleanUp)过滤器,然后经过Other filters(SiteMesh ,etc),接下来需要调用FilterDispatcher核心控制器,然后它询问ActionMapper来决定这个请求是否调用某个Action,如果要调用Action,此时 ActionMapper返回一个收集Action详细信息的ActionMaping对象,来决定调用哪个Action。在决定调用那个Action后,接下来FilterDispatcher将请求委派给ActionProxy,ActionProxy调用配置管 理器(ConfigurationManager) 从配置文件中读取配置信息(struts.xml),然后创建ActionInvocation实例,ActionInvocation实例使用命名模式来调用,在调用 Action之前会依次的调用所用配置拦截器(Interceptor N), 一旦执行结果返回结果字符串,ActionInvocation负责查找结果字符串对应的(Result),然后执行这个Result,

Result会调用一些模版(JSP)来呈现页面,之后通过递归的做法,前面的拦截器(Interceptor N)会再被执行(顺序和Action执行之前相反),最后响应(HttpServletResponse)被返回在web.xml中配置的那些过滤器和核心控制器(FilterDispatcher)。

2.3关于SSH的介绍

集成SSH框架的系统,从架构上分为四层:展现层、业务逻辑处理层、数据持久层和实体模型层,可以使开发人员在短期内搭建结构清晰、可复用性好、维护方便的Web应用程序。其中使用Struts作为系统的整体基础架构,负责MVC的分离,在Struts框架的模型部分,控制业务跳转,利用Hibernate框架对持久层提供支持,Spring做管理,管理struts和hibernate。具体做法是:用面向对象的分析方法,根据业务需求提出一些模型,将这些模型实现为基本的Java对象,然后编写基本的DAO(Data Access Objects)接口,并给出Hibernate的DAO实现,采用Hibernate架构实现的DAO类来实现Java类与数据库之间的转换和访问,最 后由Spring做管理,管理struts和hibernate。

系统的基本业务流程是: 在表示层中,首先通过JSP页面实现交互界面, 负责接收请求(Request)和传送响应(Response),然后Struts根据配置文件(struts-config.xml)将 ActionServlet接收到的Request委派给相应的Action处理。在业务层中,管理服务组件的Spring IoC容器负责向Action提供业务模型(Model)组件和该组件的协作对象数据处理(DAO)组件完成业务逻辑,并提供事务处理、缓冲池等容器组件 以提升系统性能和保证数据的完整性。而在持久层中,则依赖于Hibernate的对象化映射和数据库交互,处理DAO组件请求的数据,并返回处理结果。 采用上述开发模型,不仅实现了视图、控制器与模型的彻底分离,而且还实现了业务逻辑层与持久层的分离。这样无论前端如何变化,模型层只需做很少的改动,并且数据库的变化也不会对前端有所影响,大大提高了系统的可复用性。而且由于不同层之间耦合度小,有利于团队成员并行工作,大大提高开发效率。

2.4关于JavaScript和Jquery的介绍

JavaScript :Javascript是一种网页编程技术,用来向HTML页面添加交互的行

为,是一种基于事件驱动的解释性脚本语言。它是由Netscape的LiveScript发展而来的原型化继承的基于对象的动态类型的区分大小写的客户端脚本语言,主要目的是为了解决服务器端语言,比如Perl,遗留的速度问题,为客户提供更流畅的浏览效果。

当服务器需要验证数据,由于网络速度很慢,只有28.8Kbps,太多的验证步骤,浪费时间对服务器高效工作造成了一定的干扰。因而Netscape的浏览器Navigator加入了Javascript,提供了数据验证的基本功能。

Jquery :Jquery是继prototype以后又一个优良的Javascript框架。它是轻量级的js库 ,它兼容CSS3,还兼容各类浏览器。Jquery的设计思想是将原始的dom对象封装成一个Jquery对象,通过调用Jquery对象的方法来实现对原始的dom对象的操作。jQuery使用户能更方便地处理HTML、events、实现动画效果,并且方便地为网站提供AJAX交互。jQuery还有一个比较大的优势是,它的文档说明很全,而且各种应用也说得很详细,同时随着客户端技术的发展,Jquery提供很多成熟的插件来供我们选择,比如本系统使用的Jquery.msgbox.js等。jQuery能够使用户的html页面保持代码和html内容分离,有利用代码的重用性。其操作也很简洁,不用再在html里面插入一堆js来调用命令了,只需定义id便能实现以往JS所实现的功能。

2.5关于数据库连接池的介绍

在Java Web中,数据库连接是一种很耗时、有限的资源,这一点在并发高的网

页应用程序中体现得尤为突出。在高并发的情况下,如果没有采用连接池技术,就意味着每个用户的操作,程序本身就要对这个用户提供一条数据库的连接。如此的话,数据库的链接的个数将是无法统计的,同时对于一个数据库它的链接数是有限制的。如果超过这个临界点就会导致数据库的奔溃,从而导致程序本身运行不下去。所以对数据库连接的管理显著影响到整个应用程序的伸缩性和健壮性,影响到程序的性能指标。数据库连接池正是为了解决这个问题而提出来的。数据库连接池负责分配、管理和释放数据库连接,它可以使应用程序重复使用一个现有的数据库连接,而再不是重新建立一个;释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏。这项技术能明显提高对数据库操作的性能,提高了程序本身的伸缩性和健壮性。

2.6关于MySQL的介绍 MySQL

是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于

Oracle公司。Mysql是最流行的关系型数据库管理系统,在WEB应用方面MySQL是最好的RDBMS(Relational Database Management System:关系数据库管理系统)应用软件之一。MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。MySQL所

使用的SQL语言是用于访问数据库的最常用标准化语言。MySQL软件采用了双授权政策,它分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择MySQL作为网站数据库。由于其社区版的性能卓越,搭配PHP和Apache可组成良好的开发环境。

3 系统需求分析

3.1系统目标功能分析

信息化飞速发展的时代,由于网络技术的发展及相关硬件设施性能的提高,秉承“时间就是金钱的理念”,为了满足人们在网上能够方便、快捷的进行购物,以及当前无店零售模式的兴起,导致越来越多的商家打算将自己的商品进行在线销售的计划,因此,拟设计并实现本系统。该系统的目标在于,帮助一些小规模的商铺进行商品的在线销售及管理功能。

通过对京东商城,天猫等网上购物网站的了解,再对小规模商铺商品在线销售功能的分析,本系统需实现的基本功能主要包括:

1)会员的注册:能对会员的用户名以及密码,邮箱进行简单的验证。在填写用户名的同时验证是否存在相同的用户名,如果存在则提示用户名已存在,取消注册。反之注册成功

2)会员的管理:能够对会员的信息的进行修改,删除功能。

3)商品的浏览:能进行商品的模糊搜索,在未登录的情况下也可以进行此操作。 4)商品的购买:如果用户没用登录则提示用户没有登录,并提示用户去登录。此时用户可以选择不登录,或者去登录。只用用户在进行登录后,才能进行商品的购买。在用户登录后,分为两种购买方式:直接购买和加入购物车。直接购买:则直接进入订单的编辑页面;加入购物车:可以将某个商品加入到用户自己的购物车。 5)购物车:在购物车中用户可以对自己所有添加到购物车的中商品进行编辑。例如:商品的数量的编辑,以及对购物车的商品进行删除。在提交到订单的时候,可以进行选择性的购买。

6) 订单编辑页面:此时,用户可以对自已所要购买的商品的数量进行修改。注意,在修改商品的数量的时候,交易金额的总计要随着商品的数量发生相应的变化。在订单编辑完成后提交时要对一些信息进行验证,比如 收货人,联系电话是否填写等。 7) 会员后台:会员能够对自身的某些信息进行修改,比如密码等。 能够对自己交易的订单进行查询。

8)论坛:用户登录后,可以对商铺以及某些商品的信息的评论,可以发帖。但发贴后需要管理员后台的审核。通过管理员审核后,会员可以通过帖子主题的搜索看到自己的帖子,同时用户也可以对他人的帖子进行回复。

9)商品信息的添加:管理员可以进行商品的信息的添加,商品图片的上传等。

在添加商品的时候,要根据商品的目录以及品牌来验证是否已存在此商品。如果存在则提示管理员无需重复添加;

10)商品信息的管理:管理员可以对所有的商品进行查询,可以利用商品的名称,目录,品牌等信息进行商品的查询。同时也可以商品信息进行上架下架操作,是否热卖以及删除的操作。

11)商品目录管理:管理员可以对商品的目录进行添加和删除以及修改,在修改的时候,其所有在目录下的所有的商品也必须进行修改。在删除时,如果此目录下有商品则不能进行目录的删除。

12)物流的管理:管理员可以新增物流,修改物流的名称,删除物流等功能。在添加的时候,要根据物流名称验证是否存在相同的物流,如果有则无需再添加。在订单编辑页面,填写物流时,都需要从物流表中动态获取。

13) 广告管理:管理员可以进行广告的添加,删除,修改广告的链接。管理可以设置其优先显示某个广告。

14)帖子的审核:管理员可以在后台进行帖子的审核,删除。

3.2技术可行性分析

JSP(JavaServer Pages)是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。JSP技术有点类似ASP技术,它是在传统的网页HTML文件 (*.htm,*.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件(*.jsp)。用JSP开发的Web应用是跨平台的,即能在Linux下运行,也能在其他操作系统上运行。JSP技术使用Java编程语言编写类XML的tags和scriptlets,来封装产生动态网页的处理逻辑。网页还能通过tags和 scriptlets访问存在于服务端的资源的应用逻辑。JSP将网页逻辑与网页设计和显示分离,支持可重用的基于组件的设计,使基于Web的应用程序的开发变得迅速和容易。

Web服务器在遇到访问JSP网页的请求时,首先执行其中的程序段,然后将执行结果连同JSP文件中的HTML代码一起返回给客户。插入的Java程序段可以操作数据库、重新定向网页等,以实现建立动态网页所需要的功能。

3.3系统开发设备需求

1.硬件环境:

1)一台安装了windowXP或者window7的电脑; 2.软件环境:

1)Myeclipse软件; 2)JDK1.6; 3)chrom浏览器; 4) MySQL数据库;

3.4项目实现途径

1.前期调研,了解相关技术及实现方案; 2.明确设计目标,了解设计要求;

3.比较分析并确定实现方案,并进行可行性分析;

采用Java语言等相关技术进行设计、实现,在体系架构上以MVC为指导思想,利用SSH框架进来开发,数据库采用MySQL数据库。

4.搭建开发环境;

5.根据设计思想及方案进行开发与实现; 6.系统排错及调优; 7.总结。

3.5数据存储的实现

本系统采用了MySQL数据库,数据库名称为:netshop。在建立表时,没有采用主外键的联系来建立表,因为本系统中用到最多的操作是查询,为了提高查询的效率,本系统在建表的时候采用了冗余数据来提高系统的查询效率。

4 数据库设计

4.1数据库整体设计

本系统数据库采用MySql数据库,系统数据库名称为netshop,共包含9张表,其中包括:用户信息表、广告管理表、购物车、商品目录表、帖子管理表、物流表、商品表、回复表、订单表等。

4.2数据库表设计

1)tb_user(用户信息表)用户信息表中保存会员的信息以及管理员的信息如表

4.1所示:

表 4.1 用户信息表

2)tb_advertisement(广告管理表)广告管理表中保存管理员增加的广告。如表4.2所示:

表 4.2 广告管理表

3)tb_cart(购物车)购物车中保存用户的在购物车中保存的商品,为了使系统的性能得到提高,采用了冗余数据,如表4.3所示:

表 4.3 购物车表

4)tb_drectory(商品目录表)商品目录表中保存着店铺的所有商品目录,如表4.4所示:

表 4.4 商品目录表

5)tb_forum(帖子管理表)在帖子管理表中保存着用户发表的帖子, 如表:4.5所示:

表 4.5 帖子管理表

6)tb_logistics(物流表)在物流表中保存新增的物流信息,如表4.6所示: 表 4.6 物流表

7)tb_order(订单表)在订单表中保存订单信息,如表:4.7所示: 表 4.7 订单表

8)tb_product(商品表)商品表中保存商品的信息,如表:4.8所示: 表 4.8 商品表

9)tb_replay(回复表)回复贴保存帖子回复的内容,如表4.9所示: 表 4.9 帖子回复表

5 系统设计

5.1系统整体设计流程图

1.普通会员(买方)购物流程图,如下图5.1所示:

图5.1 会员购物流程图

2.管理员功能模块图,如下图5.2所示:

图 5.2 管理员功能图

3.会员信息的注册流程图,如下图5.3 所示:

图 5.3 注册流程图

4.论坛发帖如下图 5.4所示:

图5.4 论坛发帖流程图

5.管理员审核帖子如下图 5.5 所示:

图 5.5 管理员审核帖子流程图

6.会员订单查看业务流程图,如图 5.6 所示:

图:5.6会员订单查看业务流程图

6 系统实现

本系统采用的Java语言开发,MVC设计思想,三层架构的B/S模式,采用SSH开源框架与Mysql数据库技术实现,同时利用了JavaScript、Jquery、数据库连接池等技术。下面对系统的开发过程进行详细说明。

6.1 三层架构设计

本系统采用了三层架构的B/S模式,所谓的三层架构就是将整个业务应用划分为:表现层(UI)、业务逻辑层(BLL)、数据持久层层(DAL)。这样设计架构的目的即为了“高内聚,低耦合”。表现层(UI):通俗讲就是展现给用户的界面,即用户在使用系统的时候他能看见的所有界面;业务逻辑层(BLL):针对具体模块的操作,也可以说是对数据持久层的操作,对业务逻辑的处理;数据持久层(DAL):该层所做事务直接操作数据库,针对数据的增添、删除、修改、查找等。在本系统三层架构具体为:XXX.jsp(UI),XXXAction.java(业务逻辑层),XXXDAO.java(数据访问层)

6.2创建与数据库的连接

本系统的数据持久层用的是hibernate,利用Spring来管理并且采用数据库连接池技术(DBCP).采用数据库Spring管理数据库的连接是为了方便以后系统的二次开发。而采用数据库连接池技术是为了提高系统的性能,因为数据库的连接是一个非常耗时的操作,不断获取的新的连接会给系统增加很大的性能开销。不能保证系统在多用户的操作下,而不是数据库当掉。而连接池就很好解决了这个问题,我们可以设置连接的初始化获取连接的个数,当某个用户操作本系统向数据库获取了一条连接,在获取这个连接的后,这条连接便被放入到了连接池中,不会因用户的操作终止而关闭,这样连接池中就有了一条数据库的连接,当下一个用户访问数据库时,便不再获取新的连接。这样就极大的提高了系统的性能。源代码如下:

value="jdbc:mysql://localhost:3306/netshop">

6.3 事物管理

本系统对于事物的管理采用了Spring的声明式的事物管理。在DAO中不再进行事物的开启与管理,Spring声明式事务管理是利用面向切面的编程思想,在本系统,作用与每个Action上,并指定需要开启事物管理的Method和事物的传播特性。这样可以让编程更加的简洁,不用在去事物何时开启,何时关闭,极大的简化了编程。源码如下:

isolation="READ_COMMITTED"/>

isolation="READ_COMMITTED"/>

isolation="READ_COMMITTED"/> isolation="READ_COMMITTED"/> isolation="READ_COMMITTED"/> isolation="READ_COMMITTED"/> isolation="READ_COMMITTED"/>

"marketOrder""REQUIRED" isolation="READ_COMMITTED"/> isolation="READ_COMMITTED"/> isolation="READ_COMMITTED"/> isolation="READ_COMMITTED"/> isolation="READ_COMMITTED"/>

com.netshop.adertisement.action.*.*(..))" id="adertisement"/>

pointcut-ref="adertisement"/> com.netshop.buy.action.*.*(..))" id="buy"/> com.netshop.admin.action.*.*(..))" id="admin"/>

com.netshop.forum.action.*.*(..))" id="forum"/>

"idAdvice""forum" com.netshop.index.action.*.*(..))" id="index"/> com.netshop.logic.action.*.*(..))" id="logic"/> com.netshop.login.action.*.*(..))" id="login"/> com.netshop.order.action.*.*(..))" id="order"/> com.netshop.product.action.*.*(..))" id="product"/> com.netshop.rigister.action.*.*(..))" id="rigister"/>

6.4系统部分主要功能模块的界面与编程实现

1)登录模块的实现

用户在首页的右上方点击登录按钮,就可以跳转到登录的页面,此时用户可以输入正确的用户名以及密码便可以成功登录,成功登录之后系统自动跳转到首页。在这里利用ajax提交表单来访问后台的LoginAction中的方法,先根据用户输入的用户名和密码,查询数据库中的 表,看是否存在此用户,如果存在,将用户信息存入session中并返回“0”,否则返回“1”。在客户端判断Ajax返回的数据。如果为“0”则跳转到首页,否则提示用户用户名或密码错误(本系统在提示上,使用了JqueryMsgbox.js插件)如图6.1,图6.2所示:

图:6.1 首页登录按钮

图:6.2 登陆页面

源代码如下:

public void Login(){

if(user==null){ AjaxString.resultAjax("1"); Map session = user = loginDao.isExistUser(user); if(user==null){ AjaxString.resultAjax("1"); }else{ ServletActionContext.getContext().getSession();

} }else{ } if(session.get("user")!=null){ } AjaxString.resultAjax("2"); session.put("user", user); AjaxString.resultAjax("0"); }else{ }

//ajax提交后台判断是否登陆

$.ajax({type :"post",

url : "login/login!Login.action", data : $("#form1").serialize(), async : false, success: function(data){ if(data=="1"){ $.msgbox("您输入的用户名或者密码不正确,请重新输入!", ); $.msgbox("你以登录无须重复登录!!", {type:"info", ); window.location.href="login/login!toMain.action"; window.location.href="login/login!toMain.action";

{type:"error", buttons : [ { type : "cancel", value : "确定" } ] } }else if(data=="2"){ buttons : [ { type : "cancel", value : "确定" } ] } }else{

} } }); });

2)会员注册模块的实现

在会员注册页面,使用了一个开源的form表单验证框架(formValidator)。它自带的样式会使界面看起来更加的友好。这个框架可以使表单的验证更加简单。在表单提交的时候,它会自动调用Js来验证我们输入的内容是否合法。当用户输入的验证信息正确后,便将数据提交到后台,保存到数据库中。如图6.3所示:

图:6.3注册页面

源代码如下:

//注册页面验证

$.formValidator.initConfig({

formID : "form1", theme:"Default",//ArrowSolidBox submitOnce : true,onSuccess:function(){return submit();} }); var titles1="请输入用户名称由2-10个汉字!"; $("#fname").formValidator({onShow:titles1,oncorrect:"1",onFocus:titles1, .inputValidator({min:2, onError:titles1}) .inputValidator({max:25, onError:titles1}) .functionValidator({ fun: function (val, elem) { oncorrect:'OK'})

var pattern =/[\u4e00-\u9fa5_]{2,10}/;

if (!pattern.test(val)) {

return "用户名格式不正确,请检查!";

}

if(val.indexOf(" ") != -1){

return "用户名格式不正确,不能存在空格!";

}

if(val.length>8){

$(this).attr("readonly", true);

}

return true; }});

3)首页的实现

在首页,显示了商铺的所有商品目录和目录下的部分商品,以及热卖商品、广告。通过访问后台IndexAction中的Menthod来获取这些数据并动态加载出来。其在JSP上利用Struts2标签迭代出来。效果如图6.4所示:

图:6.4 首页页面设计

源代码如下:

IndexAction:

public String toIndex() {

//获取所有的目录

drectories = productDao.getDrectories();

//获取右广告

}

right = advertisementDao.getRight(); left = advertisementDao.getLeft(); products = indexDao.getProducts(); session.put("stockNames", drectories); productsList = indexDao.getMapOfProducts(); return "success";

//获取做广告 //获取所有商品 //将目录放入session中

4)商品搜索模块的实现

用户可以通过页面的搜索功能模块,输入商品的名称进行商品的搜索。其实现原来为通过获取输入的内容“华为”,再通过对商品表的模糊查询来获取所有符合条件的商品。如图6.5、6.6所示:

图:6.4.4.1 商品搜索设计

图:6.5 商品搜索结构显示

源代码如下:

public String getListProducts() throws UnsupportedEncodingException{ ){

brandName = new

String(product.getPbrandName().getBytes("ISO-8859-1"), "utf-8");

if(product!=null && page>1

&&product.getPbrandName()!=null&&!"".equals(product.getPbrandName().trim())

}

outproduct.setPbrandName(brandName);

if(product!=null&&

page>1&&product.getPdirectory()!=null&&!"".equals(product.getPdirectory().trim())){

product.setSalTotal( Integer.parseInt(productDao.getSaleTotal(product.ge }

public List getProducts(final Product product,final int page , final int pageSize) {

}

stockName = new

System.out.println(stockName); product.setPdirectory(stockName);

String(product.getPdirectory().getBytes("ISO-8859-1"), "utf-8");

if(product!=null&& }

totalpage = productDao.getTotalPage(product, pageSize); products = productDao.getProducts(product, page, pageSize); for(Product product : products){

String name = new String(product.getPname().getBytes("ISO-8859-1"), System.out.println(name); product.setPname(name);

page>1&&product.getPname()!=null&&!"".equals(product.getPname().trim())){ "utf-8");

drectories = productDao.getDrectories();

tId())) > 0 ? productDao.getSaleTotal(product.getId()): 0+"" );

}

return "success";

final StringBuffer hql = new StringBuffer("from Product"); if(product!=null){

final List params = new ArrayList();

if(product.getPname()!=null&&!"".equals(product.getPname())){ }

hql.append(" and pname like ? "); params.add("%"+product.getPname()+"%");

if(product.getPdirectory()!=null&&!"".equals(product.getPdirectory())){

if(product.getPbrandName()!=null&&!"".equals(product.getPbrandName())){ }

}

return (List) this.getHibernateTemplate().execute(

new HibernateCallback() {

@Override

public Object doInHibernate(Session session) }

throws HibernateException, SQLException { Query query = session.createQuery(hql.toString()); for(int i=0; i

int min = (page - 1) * pageSize; int max = pageSize; query.setFirstResult(min); query.setMaxResults(pageSize); return query.list();

query.setString(i, params.get(i));

}

hql.append(" and pbrandName like ? "); params.add("%"+product.getPbrandName()+"%");

}

hql.append(" and pdirectory like ? "); params.add("%"+product.getPdirectory()+"%");

});

5)购物车模块的实现

用户在选择商品后,可以选择将商品加入购物车,在加入购物车之前可以对商品的数量进行修改。在用户点击加入购物车之后,利用Jquery获取这个商品的ID,并提交给后台,后台根据这个ID获取到这个商品的所有信息并返回购物车添加页面,这个效果是通过Jquery.lightbox.js来实现的。在购物车商品编辑页面,用户可以修改商品的数量,默认为1。修改完数量后,点击确定按钮,此时利用Ajax技术将商品的信息提交到后台,并添加到数据库中。另外,用户可以点击页面上“购物车”图标,进入到购物功能。这时,首先会判断用户是否登录,如果用户登录了则直接获取当前用户的购物车中所有的商品信息,如果没有,则跳转到用户登录界面,提示用户进行登录。如图 6.6、图6.7、图6.8、图6.9所示:

图:6.6 在页面进入购物车

图:6.7 将商品加入到购物车中

图:6.8 将商品加入到购物车修改商品的数量

图:6.9 购物车中的商品

6)订单管理模块的实现

用户可以通过对商品的直接购买或者在购物车中选择性的对某些商品进行购买,进而跳转到订单的管理页面。直接购买和在购物车中购买都是通过将商品的Id传递到后台,然后从数据库中读取出该商品的相关信息,并在前台页面进行显示。在订单编辑页面,用户也可以对商品的数量进行修改。直接购买时与从购物车中购买修改商品的数量时有所不同,直接购买无须在商品的数量发生变化时去更新数据库中的数据,而从购物车中过来的商品却需要改变购物车中的商品数量。在订单页面需要填写收货人的信息,另外对于订单的查看,用户登录后可以点击我的中心中进行订单的查看。如图:6.10、图:6.11、图:6.12所示:

图:6.10 直接购买的方式下,所提交的订单编辑页面

图:6.11 从购物车中购买商品

图:6.12 订单查看页面

7)商品信息管理模块的实现

管理员用户可以登录到后台管理中心,进行商品信息的管理,比如商品信息的添加以及商品信息的修改,下架,是否热卖,删除等功能。在添加商品时,用户需要先上传商品的图片,然后再填写商品信息。这个功能是通过ajax方式提交到后台,添加成功与否,可以根据返回的数据来提示管理员操作的结果。在商品的信息管理功能模块中,管理员可以根据商品的名称,目录,品牌信息进行商品的筛选查询。对于某一个确定的商品,管理员可以对其进行修改与编辑,例如可以修改商品的数量,是否下架以及是否热卖等。同时也可以对这件商品进行删除。如下图图6.13,图6.14图6.15所示:

图:6.13 新增商品页面

图:6.14 商品信息查看页面

图:6.15 商品修改页面

8)广告管理模块的实现

管理员在我的中心功能模块中,可以对商铺的广告进行新增,修改,删除等操作。管理员在添加广告时,图片上传功能的实现使用了Jquery.Upload.js插件。管理员对广告进行修改时,只能修改其链接,不能修改其图片。本系统在首页设有左右两处广告位置,管理员在广告查询页面可以对广告的显示位置进行设置。但左、右广告只能各自取一,且一个广告不能同时被设置在左右两边进行显示。如下图图6.16,图6.17,

图6.18所示:

图:6.16 广告显示页面

图:6.17 广告新增页面

图:6.18 广告修改页面

7 系统测试

7.1系统部分功能测试

系统测试是对已经集成好的软件系统进行彻底的测试,以验证软件系统的正确性和性能等满足其规约所指定的要求,检查软件的行为和输出是否正确并非一项简单的任务,它被称为测试的“先知者问题”。因此,系统测试应该按照测试计划进行,其输入、输出和其他动态运行行为应该与软件规约进行对比。软件系统测试方法很多,主要有功能测试、性能测试、随机测试等等。

对于本系统的测试用了功能测试,对于具体的模块在数据的正确输入和错误输入以及流程的变化上边做的一个测试。 1、登录时,用户名或者密码输入错误时

对于该系统而言,登录是最基本的操作。这里,通过Ajax方式提交到后台,根据后台返回的数据来控制地址栏的跳转。当用户名或者密码输入错误时,如下所图示:

图7.1 验证用户输入错误的登录信息

2、发表贴子时,验证是否登录

本系统中要求用户登录后,才可以进行贴子的发表以及回复。验证未登录去点击发表贴子时的效果,如果没有登录需提醒用户去登录如下图所示:

图:7.2未登录时发表贴子

3、订单编辑页面,商品数量的变化

在订单编辑页面,随着商品数量的变化,其总计也应跟着发生变化。测试如下图所示:

图:7.3 订单编辑的初次加载页面

图:7.4 修改商品数量后的页面

4、广告的设置

本系统在首页有左右两处广告位置,管理员可以对广告进行设置,测试如下图所示:

图:7.5 原始首页

图:7.6 设置第一个为左广告

图:7.7 设置完毕后的首页

8 总结

经过一段时间的努力,终于完成了本次毕业设计的内容,达到了预期的设计目标。通过这次毕设,让我深刻的理解到了自己在技术方面还是有很大的欠缺。时常会出现一些难以解决的问题,需要不停的尝试各种解决的方法,通过积极的查找相关资料,同时也通过向别人请教,在付出了艰辛的努力之后,顺利如期的完成了本次毕业设计。这次毕设给了我很大的信心,让我了解了专业知识的同时也对本专业的发展前景充满期待。

经过这次的毕业设计和对相关资料的收集,让我清楚的感到随着网络科技的不断发展和网络的广泛应用,使我们的生活离不开它了。在如今的社会中,商务业务类型的不断增加以及它的需求不断的发生变化,在这样的情况下,就要求我们的系统做到更完善,以满足社会上更复杂的现实需求。希望在今后的工作与生活中,能够努力提高自己的技术水平,不断的来完善系统中现有的不足。

参考文献

[1] 陈火旺,徐建波, 周新莲. Web设计原理与编程技术[M]. 中南大学出版社. 2005.

[2] 武延军,黄飞跃. 精通JSP编程技术[M]. 人民邮电出版社. 2001.

[3] 徐国智, SQL Server 2000数据库系统开发实例精粹, 电子工业出版社,2006

[4] 飞思科技产品研发中心. JSP应用开发详解[M]. 电子工业出版. 2002

[5] 柏亚军. JSP编程基础及应用实例集锦[M]. 人民邮电出版社. 2001.

[6] (美)Michael J.Young, 前导工作室译. XML学习指南[M]. 机械工业出版社. 2001.

[7] 李江,张威. 实例解析XML/XSL/Java网络编程[M] 北京希望电子出版社 2002

[8] 李振华,季小武. Drwamweaver基础教程. 清华大学出版社. 2005.

[9] 聂小燕. DrwamweaverMX2004动态网站建设全攻略.兵器工业出版社,北京科海电子出版社. 2005.

[10] 塞奎春. JSP信息系统开发实例精选. 机械工业出版社. 2006.

[11] (美)Damon Hougland, Aaron Tavistock ,马朝晖译. JSP 核心技术. 机械工业出版社. 2001.

[12] 潇湘工作室 刘涛 徐冉. DrwamweaverUltraDev网页设计与网站开发. 人民邮电出版社. 2000.

[13] 许增伟,张强. JSP快速高效开发利器——DrwamweaverUltraDev. 清华大学出版社.2002

重庆科技学院本科生毕业设计 致谢

致谢

经过两个多月的努力,终于完成了毕业设计和毕业论文的写作工作,在这里我首先要感谢学校能让我们在最后的时间,通过这次毕设能意识到自己在大学里所学知识的不足与自身能力的欠缺。这样才会使我们对自己能有一个很好的定位,不至于对自己的技术没有很好的把握。

在这里我还要感谢我的设计指导老师刘海玲老师,是她在设计的技术方向上给我提出许多宝贵的设计意见,在最后的测试修改阶段又在百忙之中抽出时间为我提供了必要的帮助,这样使得我得以顺利的完成毕业设计开发工作。感谢在校的老师们,在我大学时间里对我的谆谆教诲和无私帮助,在实际的开发工作中,我深深体会到了基础理论知识的重要性,在大学阶段只有好好学习,掌握好扎实的理论基础,这样才能在将来的工作中更快的学习,从而得心应手,有所成就,真正成为一个对社会和他人有用的人。

最后还要感谢我的同学们,在这次毕业设计及论文写作中给我的支持和帮助。

重庆科技学院

毕业设计(论文)

题 目 网上商城的设计与实现

学 院 电气与信息工程学院

专业班级 计科2010-03

学生姓名 刘拉锁 学号 2010444415

指导教师 刘海玲 职称 讲 师

评阅教师 职称

2014年 5 月 25 日

学生毕业设计(论文)原创性声明

本人以信誉声明:所呈交的毕业设计(论文)是在导师的指导下进行的设计(研究)工作及取得的成果,设计(论文)中引用他(她)人的文献、数据、图件、资料均已明确标注出,论文中的结论和结果为本人独立完成,不包含他人成果及为获得重庆科技学院或其它教育机构的学位或证书而使用其材料。与我一同工作的同志对本设计(研究)所做的任何贡献均已在论文中作了明确的说明并表示了谢意。

毕业设计(论文)作者(签字):

年 月 日

摘要

近年来,随着Internet的迅速崛起,互联网技术得到前所未有的发展,日益成为收集、提供信息的最佳渠道,并逐步进入传统的流通领域。无店商铺也悄然兴起,它的出现及发展,不仅是市场经济以及相应技术发展到一定阶段的产物,而且符合当今社会的发展及人们的需求更新,替代了以往死板的购物模式,节省了人们的精力和时间。

本毕业设计——基于Java语言等相关技术开发、实现的网上购物系统,为一些小规模经营的网上商铺提供了极大的便利,例如,获得授权的店主(卖方)通过相关的身份验证之后,在管理模块中,可以对在售的商品进行各种管理操作,除此之外,还可以对会员信息、物流信息进行管理。普通用户(买方)登录后,在网上可以进行商品的查询、浏览及选购等操作。

该系统的实现,主要依靠Java的开源框架SSH来进行环境的搭建,利用MVC的设计思想完成系统的设计与开发。数据库采用的是MySQL数据库,在链接上采用DBCP连接池,在事物的管理上采用spring的声明式事物来管理。这样架构有利用系统后期的维护,极大的降低了系统的耦合性。

关键字:网上购物系统 、Java Web 、连接池 、SSH、MySql数据库、MVC

ABSTRACT

In recent years, with the rapid rise of the Internet, the Internet technology has been an unprecedented development, becoming collected to provide the best information channels, and gradually into the traditional circulation. No shops have sprung up shop, its emergence and development of not only a market economy and the corresponding technology development to a certain stage of the product, and in line with today's social development and people's needs updating, replacing the previous rigid shopping patterns, saving people energy and time.

The graduation project - the development of related technologies such as Java language-based online shopping system implemented for a number of small-scale online store provides a great convenience, for example, authorized the owner (seller) by the associated authentication after in the management module, the product can be sold in a variety of management operations, in addition, can also membership information, logistics and information management. After a normal user (buyer) login, you can check in online goods, browse and buy other operations.

Implementation of the system, mainly rely on SSH Java open source framework for

building environments, using MVC design ideas to complete the system design and development. Database using the MySQL database, using DBCP connection pool on the link, using spring declarative things on management to manage things. Such systems have a post-maintenance architecture using the system, greatly reducing the coupling of the system.

Keyword: Online shopping system、Java Web、Connection pooling、SSH、MySql databases、 MVC

目录

1 绪 论 ................................................................... 1

1.1研究的目的和意义 .................................................... 1

1.2国内外研究现状分析 .................................................. 1

1.3课题研究方法 ........................................................ 2

1.4研究设想及预期结果 .................................................. 3

2 相关技术介绍 ............................................................ 4

2.1关于Java Web的介绍 ................................................. 4

2.2关于Struts2的介绍 .................................................. 4

2.3关于SSH的介绍 ...................................................... 5

2.4关于JavaScript和Jquery的介绍 ...................................... 5

2.5关于数据库连接池的介绍 .............................................. 6

2.6关于MySQL的介绍 .................................................... 6

3 系统需求分析 ............................................................ 8

3.1系统目标功能分析 .................................................... 8

3.2系统可行性分析 ...................................................... 9

3.3系统开发设备需求 .................................................... 9

3.4项目实现途径 ....................................................... 10

3.5数据存储的实现 ..................................................... 10

4 数据库设计 ............................................................. 11

4.1数据库整体设计 ..................................................... 11

4.2数据库表设计 ....................................................... 11

5 系统设计 ............................................................... 15

5.1系统整体设计流程图 ................................................. 15

6 系统实现 ............................................................... 17

6.1 三层架构设计 ....................................................... 17

6.2创建与数据库的连接 ................................................. 17

6.3 事物管理 ........................................................... 18

6.4系统部分主要功能模块的界面与编程实现 ............................... 21

7 系统测试 ............................................................... 33

7.1系统部分功能测试 ................................................... 33

8 总结 ................................................................... 36

参考文献 ................................................................. 37

致谢 ..................................................................... 38

1 绪 论

1.1研究的目的和意义

网上商城的悄然兴起,是商业经济发展到一定阶段的产物,也是顺应新的消费需求和技术进步的必然结果。上海市商业经济研究中心副主任齐晓斋分析说,与传统的百货商店、连锁超市、大卖场、便利店等有形商铺相比,网上商城业具有一定的先天优势。一是地段。对于以往的实体店铺来讲,商店的位置,地段的优势,几乎可以决定未来经营的成功与失败,但在城市的商业网络资源,特别是优质的商业网络资源已是十分稀缺,而网上商城是没有限制的地段;二是经营成本。借助快速发展的科学技术,网上商城通常能够节省从生产到销售过程当中的许多步骤,从而极大地降低经营成本与交易成本,给消费者、商家待来双赢的局面;三是风险。对于个人来说,由于网上商店等网上商城投入的资金相对较低,经营和管理比较灵活,即使遇到商业危机,也能及时改变自己的经营和管理方式来规避风险。随着社会经济的发展及消费水平的提高,人们希望得到更加方便、更加快捷的购物方式,同时也乐于尝试各种新的购物方式。在这一市场需求的推动下,企业将会对商品零售的方式进行创新,而先进的技术为其创新提供了重要的支撑与平台。

通过对互联网的特点以及对国内外相关电子商务网站的现状进行研究与分析,本毕业设计以基于Web的电子购物网站的开发与实现作为主题。目的在于设计并实现一个在网络环境下能够运行的集商品上架、商品信息管理、货品浏览及查询、订单、购物车和配送等功能于一体的网上商城,为一些打算网上开设店铺的商家提供服务。

1.2国内外研究现状分析

在我国,网上购物从无到有也不过短短几年时间。我国第一家网上购物发生在1996年,燕莎友谊商场首次通过网上商城售出一个景泰蓝,虽然货款的支付不是在网上进行的,但这毕竟为我国零售业奏出了网上购物的先声。现在,在北京,上海,深圳市等,200多家商场开设网上商店,旗舰店等,还有一些城市处于观望阶段。网上购物的真正意义上的,即在网上付款,我们目前可以随处可见,比如天猫、京东等。深圳某家虹商城去年5月开设了第一家实施计划和网上支付的网店,在线消费者可以凭借中国招商银行“一卡通”,可以很方便地购物,并且商家会在24小时内送货上门。商家通过投资经营网上商店的目的是赚钱,但从网上商店目前的运营情况来看,上网

者大多数并不是去网上购物而是消遣时间、对于真正需求购物的人们却不愿意在网上进行购物,他们对网上购物这种方式处于怀疑的态度,所以网上商店生意渗淡目前俨然成为各大网上商店共同的困惑。比如:上海的第一个网上商店购物中心——上海亿样购物中心,由于管理不善,经营不到一半的关闭,一些大型零售商场在北京,其网上商店也“门庭冷落”。

结算方式的原始落后是网上购物致命的弱点。在国外,计算机一般都与银行的帐户相联,消费者与网上商城只需通过网上银行打交道,不必当面进行现金的交易。在我国目前,除了淘宝拍拍网上购物结算的几个网上商店外,大部分商家业务结算只能以 “送货上门、到货付款”或“邮寄上门、贷款邮资先付”的方式。这样不仅浪费了人们的时间和精力,而且限制了人们对某些商品的需求和地域的限制。因此,安全、快捷、方便的电子支付手段将是今后网上商店健康发展的主要决定性要素。以下是CNNIC(中国互联网络信息中心)发布的B2C电子商务发展报告,进一步分析了目前我国网上购物的现状。

90%选择网上购物的人都认为网上购物可以节约时间和精力,这说明随着生活节奏的加快,人们越来越希望拥有简单快捷的购物方式。随着消费者对消费者的需求增加,使网上购物商城必须经过精心的打算,提供专业的产品和服务,差异化的市场。以卓越网和铛铛网为例,最近根据不同的消费者和消费者的需求,开通了计算机、外语、文学和艺术四个专业商城,这不仅体现了卓越网“以客户为中心”的经营理念,相信这也是中国在线购物中心的未来发展趋势。

尽管网络版权、阅读习惯仍是制约未来网络出版、网上商城发展的障碍,但网络环境给出版业带来了深刻的革命,已成大势所趋。网上购物与传统商店都在努力保持商品发布新的利润空间。目前的情况是,大部分商城对网上商城的了解是不足够的,只是初步参与电子商务和网站建设,网络上的其他产品,一对一,跨越时间,空间和其他特性,并没有充分利用,可以预计,随着网络深入到人们的生活中,以及网络技术的快速发展,相信以技术、服务为品牌支撑的网上商城在不远的未来会成为市场的宠儿和业态创新的引领者。

1.3课题研究方法

通过在网上查找相关资料,了解了设计的思路,熟悉了开发的环境之后,通过分析网上商城的开发流程与具体业务,为本次毕业设计打下了坚实的基础。结合自身对Java语言的掌握情况,本设计决定采用Java语言进行编程实现。在决定了使用何种语言进行开发后,我想通过这次的设计与开发提高自身的水平和能力,在架构体系上就大胆的尝试了SSH框架,并结合MVC的思想进行本次系统的开发。而网页的部分布

局,是从网上下载的成熟模版,并结合本毕业设计的需求,进行了部分UI界面的设计及实现。

1.4研究设想及预期结果

本系统预期实现的功能及结果主要包括:

1) 管理员可以进行对商品信息的添加,修改,删除;

2) 管理员可以进行的商品目录添加,修改,删除,再对商品信息的添加时,

动态加载目前存在数据库中的目录,在删除的时候,如果此目录下存在商品

将不能删除此目录,在修改的时候,如果目录名称发生变化,在商品表中的

目录也必须变;

5) 管理员实现对会员信息的管理。

6) 管理员可以同过商品的销量,以及商品的数量来设置商品的下架,是否热

卖。

7) 管理员要对物流信息进行管理;

8) 管理员可以对订单进行查看,会员也可以看到自身的订单;

9) 管理员可以对首页的广告进行管理,实现广告的添加,修改,删除等;

10) 管理员在后台可以对帖子进行审核,删除;

11) 会员可以进行对商品信息的搜索

12)会员可以进行商品的购买,添加到购物车,购物车查看;

13)会员登陆到后台可以对自己的订单进行查看

14)用户可以进行会员的注册以及会员自身的信息修改;

15)会员登录后可以进行有关本系统的帖子的一个发布供能,但发布后,需

通过管理员的审核,同时也可以对已审核通过的帖子进行回复,可以查看帖

子的回复内容;

2 相关技术介绍

2.1关于Java Web的介绍

Java Web,是用Java技术来解决相关web互联网领域的技术总和。Java web开发的web项目通常包括两个部分:Web服务器和客户端。Java在客户端的应用有java applet不过在Java Applet现在已很少使用在客户端应用程序,Java客户端在服务器中的应用是非常丰富的,如servlert,JSP和第三方架等。Java web发展目前俨然成为一个强大的驱动力,推动着Web领域的快速发展。

2.2关于Struts2的介绍

Struts 2是Struts1的下一代产品,是在 struts 1和WebWork的技术基础上进行了合并的全新的Struts 2框架。其全新的Struts 2的体系结构与Struts 1的体系结构差别巨大。Struts1 结构简单、小巧,是由Apache推出。但其与Jsp/Servlet耦合紧密,制约了发展。而Struts 2以WebWork为核心,采用拦截器的机制来处理客户端发的请求,这样的设计来自于WebWork的开发理念,使业务逻辑控制器能够与ServlertAPI完全分离出来,所以在某种程度上可以认为Struts 2为WebWork的升级版本。尽管从Struts 1到Struts 2有着很多的变化,然而相对WebWork,Struts 2的变化很小。

当Web服务器收到 客户端的请求(HttpServletRequest),这就意味客户端初始化了一个指向servlert容器的请求,servlert容器将请求进过一些过滤链,包括(ActionContextCleanUp)过滤器,然后经过Other filters(SiteMesh ,etc),接下来需要调用FilterDispatcher核心控制器,然后它询问ActionMapper来决定这个请求是否调用某个Action,如果要调用Action,此时 ActionMapper返回一个收集Action详细信息的ActionMaping对象,来决定调用哪个Action。在决定调用那个Action后,接下来FilterDispatcher将请求委派给ActionProxy,ActionProxy调用配置管 理器(ConfigurationManager) 从配置文件中读取配置信息(struts.xml),然后创建ActionInvocation实例,ActionInvocation实例使用命名模式来调用,在调用 Action之前会依次的调用所用配置拦截器(Interceptor N), 一旦执行结果返回结果字符串,ActionInvocation负责查找结果字符串对应的(Result),然后执行这个Result,

Result会调用一些模版(JSP)来呈现页面,之后通过递归的做法,前面的拦截器(Interceptor N)会再被执行(顺序和Action执行之前相反),最后响应(HttpServletResponse)被返回在web.xml中配置的那些过滤器和核心控制器(FilterDispatcher)。

2.3关于SSH的介绍

集成SSH框架的系统,从架构上分为四层:展现层、业务逻辑处理层、数据持久层和实体模型层,可以使开发人员在短期内搭建结构清晰、可复用性好、维护方便的Web应用程序。其中使用Struts作为系统的整体基础架构,负责MVC的分离,在Struts框架的模型部分,控制业务跳转,利用Hibernate框架对持久层提供支持,Spring做管理,管理struts和hibernate。具体做法是:用面向对象的分析方法,根据业务需求提出一些模型,将这些模型实现为基本的Java对象,然后编写基本的DAO(Data Access Objects)接口,并给出Hibernate的DAO实现,采用Hibernate架构实现的DAO类来实现Java类与数据库之间的转换和访问,最 后由Spring做管理,管理struts和hibernate。

系统的基本业务流程是: 在表示层中,首先通过JSP页面实现交互界面, 负责接收请求(Request)和传送响应(Response),然后Struts根据配置文件(struts-config.xml)将 ActionServlet接收到的Request委派给相应的Action处理。在业务层中,管理服务组件的Spring IoC容器负责向Action提供业务模型(Model)组件和该组件的协作对象数据处理(DAO)组件完成业务逻辑,并提供事务处理、缓冲池等容器组件 以提升系统性能和保证数据的完整性。而在持久层中,则依赖于Hibernate的对象化映射和数据库交互,处理DAO组件请求的数据,并返回处理结果。 采用上述开发模型,不仅实现了视图、控制器与模型的彻底分离,而且还实现了业务逻辑层与持久层的分离。这样无论前端如何变化,模型层只需做很少的改动,并且数据库的变化也不会对前端有所影响,大大提高了系统的可复用性。而且由于不同层之间耦合度小,有利于团队成员并行工作,大大提高开发效率。

2.4关于JavaScript和Jquery的介绍

JavaScript :Javascript是一种网页编程技术,用来向HTML页面添加交互的行

为,是一种基于事件驱动的解释性脚本语言。它是由Netscape的LiveScript发展而来的原型化继承的基于对象的动态类型的区分大小写的客户端脚本语言,主要目的是为了解决服务器端语言,比如Perl,遗留的速度问题,为客户提供更流畅的浏览效果。

当服务器需要验证数据,由于网络速度很慢,只有28.8Kbps,太多的验证步骤,浪费时间对服务器高效工作造成了一定的干扰。因而Netscape的浏览器Navigator加入了Javascript,提供了数据验证的基本功能。

Jquery :Jquery是继prototype以后又一个优良的Javascript框架。它是轻量级的js库 ,它兼容CSS3,还兼容各类浏览器。Jquery的设计思想是将原始的dom对象封装成一个Jquery对象,通过调用Jquery对象的方法来实现对原始的dom对象的操作。jQuery使用户能更方便地处理HTML、events、实现动画效果,并且方便地为网站提供AJAX交互。jQuery还有一个比较大的优势是,它的文档说明很全,而且各种应用也说得很详细,同时随着客户端技术的发展,Jquery提供很多成熟的插件来供我们选择,比如本系统使用的Jquery.msgbox.js等。jQuery能够使用户的html页面保持代码和html内容分离,有利用代码的重用性。其操作也很简洁,不用再在html里面插入一堆js来调用命令了,只需定义id便能实现以往JS所实现的功能。

2.5关于数据库连接池的介绍

在Java Web中,数据库连接是一种很耗时、有限的资源,这一点在并发高的网

页应用程序中体现得尤为突出。在高并发的情况下,如果没有采用连接池技术,就意味着每个用户的操作,程序本身就要对这个用户提供一条数据库的连接。如此的话,数据库的链接的个数将是无法统计的,同时对于一个数据库它的链接数是有限制的。如果超过这个临界点就会导致数据库的奔溃,从而导致程序本身运行不下去。所以对数据库连接的管理显著影响到整个应用程序的伸缩性和健壮性,影响到程序的性能指标。数据库连接池正是为了解决这个问题而提出来的。数据库连接池负责分配、管理和释放数据库连接,它可以使应用程序重复使用一个现有的数据库连接,而再不是重新建立一个;释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏。这项技术能明显提高对数据库操作的性能,提高了程序本身的伸缩性和健壮性。

2.6关于MySQL的介绍 MySQL

是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于

Oracle公司。Mysql是最流行的关系型数据库管理系统,在WEB应用方面MySQL是最好的RDBMS(Relational Database Management System:关系数据库管理系统)应用软件之一。MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。MySQL所

使用的SQL语言是用于访问数据库的最常用标准化语言。MySQL软件采用了双授权政策,它分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择MySQL作为网站数据库。由于其社区版的性能卓越,搭配PHP和Apache可组成良好的开发环境。

3 系统需求分析

3.1系统目标功能分析

信息化飞速发展的时代,由于网络技术的发展及相关硬件设施性能的提高,秉承“时间就是金钱的理念”,为了满足人们在网上能够方便、快捷的进行购物,以及当前无店零售模式的兴起,导致越来越多的商家打算将自己的商品进行在线销售的计划,因此,拟设计并实现本系统。该系统的目标在于,帮助一些小规模的商铺进行商品的在线销售及管理功能。

通过对京东商城,天猫等网上购物网站的了解,再对小规模商铺商品在线销售功能的分析,本系统需实现的基本功能主要包括:

1)会员的注册:能对会员的用户名以及密码,邮箱进行简单的验证。在填写用户名的同时验证是否存在相同的用户名,如果存在则提示用户名已存在,取消注册。反之注册成功

2)会员的管理:能够对会员的信息的进行修改,删除功能。

3)商品的浏览:能进行商品的模糊搜索,在未登录的情况下也可以进行此操作。 4)商品的购买:如果用户没用登录则提示用户没有登录,并提示用户去登录。此时用户可以选择不登录,或者去登录。只用用户在进行登录后,才能进行商品的购买。在用户登录后,分为两种购买方式:直接购买和加入购物车。直接购买:则直接进入订单的编辑页面;加入购物车:可以将某个商品加入到用户自己的购物车。 5)购物车:在购物车中用户可以对自己所有添加到购物车的中商品进行编辑。例如:商品的数量的编辑,以及对购物车的商品进行删除。在提交到订单的时候,可以进行选择性的购买。

6) 订单编辑页面:此时,用户可以对自已所要购买的商品的数量进行修改。注意,在修改商品的数量的时候,交易金额的总计要随着商品的数量发生相应的变化。在订单编辑完成后提交时要对一些信息进行验证,比如 收货人,联系电话是否填写等。 7) 会员后台:会员能够对自身的某些信息进行修改,比如密码等。 能够对自己交易的订单进行查询。

8)论坛:用户登录后,可以对商铺以及某些商品的信息的评论,可以发帖。但发贴后需要管理员后台的审核。通过管理员审核后,会员可以通过帖子主题的搜索看到自己的帖子,同时用户也可以对他人的帖子进行回复。

9)商品信息的添加:管理员可以进行商品的信息的添加,商品图片的上传等。

在添加商品的时候,要根据商品的目录以及品牌来验证是否已存在此商品。如果存在则提示管理员无需重复添加;

10)商品信息的管理:管理员可以对所有的商品进行查询,可以利用商品的名称,目录,品牌等信息进行商品的查询。同时也可以商品信息进行上架下架操作,是否热卖以及删除的操作。

11)商品目录管理:管理员可以对商品的目录进行添加和删除以及修改,在修改的时候,其所有在目录下的所有的商品也必须进行修改。在删除时,如果此目录下有商品则不能进行目录的删除。

12)物流的管理:管理员可以新增物流,修改物流的名称,删除物流等功能。在添加的时候,要根据物流名称验证是否存在相同的物流,如果有则无需再添加。在订单编辑页面,填写物流时,都需要从物流表中动态获取。

13) 广告管理:管理员可以进行广告的添加,删除,修改广告的链接。管理可以设置其优先显示某个广告。

14)帖子的审核:管理员可以在后台进行帖子的审核,删除。

3.2技术可行性分析

JSP(JavaServer Pages)是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。JSP技术有点类似ASP技术,它是在传统的网页HTML文件 (*.htm,*.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件(*.jsp)。用JSP开发的Web应用是跨平台的,即能在Linux下运行,也能在其他操作系统上运行。JSP技术使用Java编程语言编写类XML的tags和scriptlets,来封装产生动态网页的处理逻辑。网页还能通过tags和 scriptlets访问存在于服务端的资源的应用逻辑。JSP将网页逻辑与网页设计和显示分离,支持可重用的基于组件的设计,使基于Web的应用程序的开发变得迅速和容易。

Web服务器在遇到访问JSP网页的请求时,首先执行其中的程序段,然后将执行结果连同JSP文件中的HTML代码一起返回给客户。插入的Java程序段可以操作数据库、重新定向网页等,以实现建立动态网页所需要的功能。

3.3系统开发设备需求

1.硬件环境:

1)一台安装了windowXP或者window7的电脑; 2.软件环境:

1)Myeclipse软件; 2)JDK1.6; 3)chrom浏览器; 4) MySQL数据库;

3.4项目实现途径

1.前期调研,了解相关技术及实现方案; 2.明确设计目标,了解设计要求;

3.比较分析并确定实现方案,并进行可行性分析;

采用Java语言等相关技术进行设计、实现,在体系架构上以MVC为指导思想,利用SSH框架进来开发,数据库采用MySQL数据库。

4.搭建开发环境;

5.根据设计思想及方案进行开发与实现; 6.系统排错及调优; 7.总结。

3.5数据存储的实现

本系统采用了MySQL数据库,数据库名称为:netshop。在建立表时,没有采用主外键的联系来建立表,因为本系统中用到最多的操作是查询,为了提高查询的效率,本系统在建表的时候采用了冗余数据来提高系统的查询效率。

4 数据库设计

4.1数据库整体设计

本系统数据库采用MySql数据库,系统数据库名称为netshop,共包含9张表,其中包括:用户信息表、广告管理表、购物车、商品目录表、帖子管理表、物流表、商品表、回复表、订单表等。

4.2数据库表设计

1)tb_user(用户信息表)用户信息表中保存会员的信息以及管理员的信息如表

4.1所示:

表 4.1 用户信息表

2)tb_advertisement(广告管理表)广告管理表中保存管理员增加的广告。如表4.2所示:

表 4.2 广告管理表

3)tb_cart(购物车)购物车中保存用户的在购物车中保存的商品,为了使系统的性能得到提高,采用了冗余数据,如表4.3所示:

表 4.3 购物车表

4)tb_drectory(商品目录表)商品目录表中保存着店铺的所有商品目录,如表4.4所示:

表 4.4 商品目录表

5)tb_forum(帖子管理表)在帖子管理表中保存着用户发表的帖子, 如表:4.5所示:

表 4.5 帖子管理表

6)tb_logistics(物流表)在物流表中保存新增的物流信息,如表4.6所示: 表 4.6 物流表

7)tb_order(订单表)在订单表中保存订单信息,如表:4.7所示: 表 4.7 订单表

8)tb_product(商品表)商品表中保存商品的信息,如表:4.8所示: 表 4.8 商品表

9)tb_replay(回复表)回复贴保存帖子回复的内容,如表4.9所示: 表 4.9 帖子回复表

5 系统设计

5.1系统整体设计流程图

1.普通会员(买方)购物流程图,如下图5.1所示:

图5.1 会员购物流程图

2.管理员功能模块图,如下图5.2所示:

图 5.2 管理员功能图

3.会员信息的注册流程图,如下图5.3 所示:

图 5.3 注册流程图

4.论坛发帖如下图 5.4所示:

图5.4 论坛发帖流程图

5.管理员审核帖子如下图 5.5 所示:

图 5.5 管理员审核帖子流程图

6.会员订单查看业务流程图,如图 5.6 所示:

图:5.6会员订单查看业务流程图

6 系统实现

本系统采用的Java语言开发,MVC设计思想,三层架构的B/S模式,采用SSH开源框架与Mysql数据库技术实现,同时利用了JavaScript、Jquery、数据库连接池等技术。下面对系统的开发过程进行详细说明。

6.1 三层架构设计

本系统采用了三层架构的B/S模式,所谓的三层架构就是将整个业务应用划分为:表现层(UI)、业务逻辑层(BLL)、数据持久层层(DAL)。这样设计架构的目的即为了“高内聚,低耦合”。表现层(UI):通俗讲就是展现给用户的界面,即用户在使用系统的时候他能看见的所有界面;业务逻辑层(BLL):针对具体模块的操作,也可以说是对数据持久层的操作,对业务逻辑的处理;数据持久层(DAL):该层所做事务直接操作数据库,针对数据的增添、删除、修改、查找等。在本系统三层架构具体为:XXX.jsp(UI),XXXAction.java(业务逻辑层),XXXDAO.java(数据访问层)

6.2创建与数据库的连接

本系统的数据持久层用的是hibernate,利用Spring来管理并且采用数据库连接池技术(DBCP).采用数据库Spring管理数据库的连接是为了方便以后系统的二次开发。而采用数据库连接池技术是为了提高系统的性能,因为数据库的连接是一个非常耗时的操作,不断获取的新的连接会给系统增加很大的性能开销。不能保证系统在多用户的操作下,而不是数据库当掉。而连接池就很好解决了这个问题,我们可以设置连接的初始化获取连接的个数,当某个用户操作本系统向数据库获取了一条连接,在获取这个连接的后,这条连接便被放入到了连接池中,不会因用户的操作终止而关闭,这样连接池中就有了一条数据库的连接,当下一个用户访问数据库时,便不再获取新的连接。这样就极大的提高了系统的性能。源代码如下:

value="jdbc:mysql://localhost:3306/netshop">

6.3 事物管理

本系统对于事物的管理采用了Spring的声明式的事物管理。在DAO中不再进行事物的开启与管理,Spring声明式事务管理是利用面向切面的编程思想,在本系统,作用与每个Action上,并指定需要开启事物管理的Method和事物的传播特性。这样可以让编程更加的简洁,不用在去事物何时开启,何时关闭,极大的简化了编程。源码如下:

isolation="READ_COMMITTED"/>

isolation="READ_COMMITTED"/>

isolation="READ_COMMITTED"/> isolation="READ_COMMITTED"/> isolation="READ_COMMITTED"/> isolation="READ_COMMITTED"/> isolation="READ_COMMITTED"/>

"marketOrder""REQUIRED" isolation="READ_COMMITTED"/> isolation="READ_COMMITTED"/> isolation="READ_COMMITTED"/> isolation="READ_COMMITTED"/> isolation="READ_COMMITTED"/>

com.netshop.adertisement.action.*.*(..))" id="adertisement"/>

pointcut-ref="adertisement"/> com.netshop.buy.action.*.*(..))" id="buy"/> com.netshop.admin.action.*.*(..))" id="admin"/>

com.netshop.forum.action.*.*(..))" id="forum"/>

"idAdvice""forum" com.netshop.index.action.*.*(..))" id="index"/> com.netshop.logic.action.*.*(..))" id="logic"/> com.netshop.login.action.*.*(..))" id="login"/> com.netshop.order.action.*.*(..))" id="order"/> com.netshop.product.action.*.*(..))" id="product"/> com.netshop.rigister.action.*.*(..))" id="rigister"/>

6.4系统部分主要功能模块的界面与编程实现

1)登录模块的实现

用户在首页的右上方点击登录按钮,就可以跳转到登录的页面,此时用户可以输入正确的用户名以及密码便可以成功登录,成功登录之后系统自动跳转到首页。在这里利用ajax提交表单来访问后台的LoginAction中的方法,先根据用户输入的用户名和密码,查询数据库中的 表,看是否存在此用户,如果存在,将用户信息存入session中并返回“0”,否则返回“1”。在客户端判断Ajax返回的数据。如果为“0”则跳转到首页,否则提示用户用户名或密码错误(本系统在提示上,使用了JqueryMsgbox.js插件)如图6.1,图6.2所示:

图:6.1 首页登录按钮

图:6.2 登陆页面

源代码如下:

public void Login(){

if(user==null){ AjaxString.resultAjax("1"); Map session = user = loginDao.isExistUser(user); if(user==null){ AjaxString.resultAjax("1"); }else{ ServletActionContext.getContext().getSession();

} }else{ } if(session.get("user")!=null){ } AjaxString.resultAjax("2"); session.put("user", user); AjaxString.resultAjax("0"); }else{ }

//ajax提交后台判断是否登陆

$.ajax({type :"post",

url : "login/login!Login.action", data : $("#form1").serialize(), async : false, success: function(data){ if(data=="1"){ $.msgbox("您输入的用户名或者密码不正确,请重新输入!", ); $.msgbox("你以登录无须重复登录!!", {type:"info", ); window.location.href="login/login!toMain.action"; window.location.href="login/login!toMain.action";

{type:"error", buttons : [ { type : "cancel", value : "确定" } ] } }else if(data=="2"){ buttons : [ { type : "cancel", value : "确定" } ] } }else{

} } }); });

2)会员注册模块的实现

在会员注册页面,使用了一个开源的form表单验证框架(formValidator)。它自带的样式会使界面看起来更加的友好。这个框架可以使表单的验证更加简单。在表单提交的时候,它会自动调用Js来验证我们输入的内容是否合法。当用户输入的验证信息正确后,便将数据提交到后台,保存到数据库中。如图6.3所示:

图:6.3注册页面

源代码如下:

//注册页面验证

$.formValidator.initConfig({

formID : "form1", theme:"Default",//ArrowSolidBox submitOnce : true,onSuccess:function(){return submit();} }); var titles1="请输入用户名称由2-10个汉字!"; $("#fname").formValidator({onShow:titles1,oncorrect:"1",onFocus:titles1, .inputValidator({min:2, onError:titles1}) .inputValidator({max:25, onError:titles1}) .functionValidator({ fun: function (val, elem) { oncorrect:'OK'})

var pattern =/[\u4e00-\u9fa5_]{2,10}/;

if (!pattern.test(val)) {

return "用户名格式不正确,请检查!";

}

if(val.indexOf(" ") != -1){

return "用户名格式不正确,不能存在空格!";

}

if(val.length>8){

$(this).attr("readonly", true);

}

return true; }});

3)首页的实现

在首页,显示了商铺的所有商品目录和目录下的部分商品,以及热卖商品、广告。通过访问后台IndexAction中的Menthod来获取这些数据并动态加载出来。其在JSP上利用Struts2标签迭代出来。效果如图6.4所示:

图:6.4 首页页面设计

源代码如下:

IndexAction:

public String toIndex() {

//获取所有的目录

drectories = productDao.getDrectories();

//获取右广告

}

right = advertisementDao.getRight(); left = advertisementDao.getLeft(); products = indexDao.getProducts(); session.put("stockNames", drectories); productsList = indexDao.getMapOfProducts(); return "success";

//获取做广告 //获取所有商品 //将目录放入session中

4)商品搜索模块的实现

用户可以通过页面的搜索功能模块,输入商品的名称进行商品的搜索。其实现原来为通过获取输入的内容“华为”,再通过对商品表的模糊查询来获取所有符合条件的商品。如图6.5、6.6所示:

图:6.4.4.1 商品搜索设计

图:6.5 商品搜索结构显示

源代码如下:

public String getListProducts() throws UnsupportedEncodingException{ ){

brandName = new

String(product.getPbrandName().getBytes("ISO-8859-1"), "utf-8");

if(product!=null && page>1

&&product.getPbrandName()!=null&&!"".equals(product.getPbrandName().trim())

}

outproduct.setPbrandName(brandName);

if(product!=null&&

page>1&&product.getPdirectory()!=null&&!"".equals(product.getPdirectory().trim())){

product.setSalTotal( Integer.parseInt(productDao.getSaleTotal(product.ge }

public List getProducts(final Product product,final int page , final int pageSize) {

}

stockName = new

System.out.println(stockName); product.setPdirectory(stockName);

String(product.getPdirectory().getBytes("ISO-8859-1"), "utf-8");

if(product!=null&& }

totalpage = productDao.getTotalPage(product, pageSize); products = productDao.getProducts(product, page, pageSize); for(Product product : products){

String name = new String(product.getPname().getBytes("ISO-8859-1"), System.out.println(name); product.setPname(name);

page>1&&product.getPname()!=null&&!"".equals(product.getPname().trim())){ "utf-8");

drectories = productDao.getDrectories();

tId())) > 0 ? productDao.getSaleTotal(product.getId()): 0+"" );

}

return "success";

final StringBuffer hql = new StringBuffer("from Product"); if(product!=null){

final List params = new ArrayList();

if(product.getPname()!=null&&!"".equals(product.getPname())){ }

hql.append(" and pname like ? "); params.add("%"+product.getPname()+"%");

if(product.getPdirectory()!=null&&!"".equals(product.getPdirectory())){

if(product.getPbrandName()!=null&&!"".equals(product.getPbrandName())){ }

}

return (List) this.getHibernateTemplate().execute(

new HibernateCallback() {

@Override

public Object doInHibernate(Session session) }

throws HibernateException, SQLException { Query query = session.createQuery(hql.toString()); for(int i=0; i

int min = (page - 1) * pageSize; int max = pageSize; query.setFirstResult(min); query.setMaxResults(pageSize); return query.list();

query.setString(i, params.get(i));

}

hql.append(" and pbrandName like ? "); params.add("%"+product.getPbrandName()+"%");

}

hql.append(" and pdirectory like ? "); params.add("%"+product.getPdirectory()+"%");

});

5)购物车模块的实现

用户在选择商品后,可以选择将商品加入购物车,在加入购物车之前可以对商品的数量进行修改。在用户点击加入购物车之后,利用Jquery获取这个商品的ID,并提交给后台,后台根据这个ID获取到这个商品的所有信息并返回购物车添加页面,这个效果是通过Jquery.lightbox.js来实现的。在购物车商品编辑页面,用户可以修改商品的数量,默认为1。修改完数量后,点击确定按钮,此时利用Ajax技术将商品的信息提交到后台,并添加到数据库中。另外,用户可以点击页面上“购物车”图标,进入到购物功能。这时,首先会判断用户是否登录,如果用户登录了则直接获取当前用户的购物车中所有的商品信息,如果没有,则跳转到用户登录界面,提示用户进行登录。如图 6.6、图6.7、图6.8、图6.9所示:

图:6.6 在页面进入购物车

图:6.7 将商品加入到购物车中

图:6.8 将商品加入到购物车修改商品的数量

图:6.9 购物车中的商品

6)订单管理模块的实现

用户可以通过对商品的直接购买或者在购物车中选择性的对某些商品进行购买,进而跳转到订单的管理页面。直接购买和在购物车中购买都是通过将商品的Id传递到后台,然后从数据库中读取出该商品的相关信息,并在前台页面进行显示。在订单编辑页面,用户也可以对商品的数量进行修改。直接购买时与从购物车中购买修改商品的数量时有所不同,直接购买无须在商品的数量发生变化时去更新数据库中的数据,而从购物车中过来的商品却需要改变购物车中的商品数量。在订单页面需要填写收货人的信息,另外对于订单的查看,用户登录后可以点击我的中心中进行订单的查看。如图:6.10、图:6.11、图:6.12所示:

图:6.10 直接购买的方式下,所提交的订单编辑页面

图:6.11 从购物车中购买商品

图:6.12 订单查看页面

7)商品信息管理模块的实现

管理员用户可以登录到后台管理中心,进行商品信息的管理,比如商品信息的添加以及商品信息的修改,下架,是否热卖,删除等功能。在添加商品时,用户需要先上传商品的图片,然后再填写商品信息。这个功能是通过ajax方式提交到后台,添加成功与否,可以根据返回的数据来提示管理员操作的结果。在商品的信息管理功能模块中,管理员可以根据商品的名称,目录,品牌信息进行商品的筛选查询。对于某一个确定的商品,管理员可以对其进行修改与编辑,例如可以修改商品的数量,是否下架以及是否热卖等。同时也可以对这件商品进行删除。如下图图6.13,图6.14图6.15所示:

图:6.13 新增商品页面

图:6.14 商品信息查看页面

图:6.15 商品修改页面

8)广告管理模块的实现

管理员在我的中心功能模块中,可以对商铺的广告进行新增,修改,删除等操作。管理员在添加广告时,图片上传功能的实现使用了Jquery.Upload.js插件。管理员对广告进行修改时,只能修改其链接,不能修改其图片。本系统在首页设有左右两处广告位置,管理员在广告查询页面可以对广告的显示位置进行设置。但左、右广告只能各自取一,且一个广告不能同时被设置在左右两边进行显示。如下图图6.16,图6.17,

图6.18所示:

图:6.16 广告显示页面

图:6.17 广告新增页面

图:6.18 广告修改页面

7 系统测试

7.1系统部分功能测试

系统测试是对已经集成好的软件系统进行彻底的测试,以验证软件系统的正确性和性能等满足其规约所指定的要求,检查软件的行为和输出是否正确并非一项简单的任务,它被称为测试的“先知者问题”。因此,系统测试应该按照测试计划进行,其输入、输出和其他动态运行行为应该与软件规约进行对比。软件系统测试方法很多,主要有功能测试、性能测试、随机测试等等。

对于本系统的测试用了功能测试,对于具体的模块在数据的正确输入和错误输入以及流程的变化上边做的一个测试。 1、登录时,用户名或者密码输入错误时

对于该系统而言,登录是最基本的操作。这里,通过Ajax方式提交到后台,根据后台返回的数据来控制地址栏的跳转。当用户名或者密码输入错误时,如下所图示:

图7.1 验证用户输入错误的登录信息

2、发表贴子时,验证是否登录

本系统中要求用户登录后,才可以进行贴子的发表以及回复。验证未登录去点击发表贴子时的效果,如果没有登录需提醒用户去登录如下图所示:

图:7.2未登录时发表贴子

3、订单编辑页面,商品数量的变化

在订单编辑页面,随着商品数量的变化,其总计也应跟着发生变化。测试如下图所示:

图:7.3 订单编辑的初次加载页面

图:7.4 修改商品数量后的页面

4、广告的设置

本系统在首页有左右两处广告位置,管理员可以对广告进行设置,测试如下图所示:

图:7.5 原始首页

图:7.6 设置第一个为左广告

图:7.7 设置完毕后的首页

8 总结

经过一段时间的努力,终于完成了本次毕业设计的内容,达到了预期的设计目标。通过这次毕设,让我深刻的理解到了自己在技术方面还是有很大的欠缺。时常会出现一些难以解决的问题,需要不停的尝试各种解决的方法,通过积极的查找相关资料,同时也通过向别人请教,在付出了艰辛的努力之后,顺利如期的完成了本次毕业设计。这次毕设给了我很大的信心,让我了解了专业知识的同时也对本专业的发展前景充满期待。

经过这次的毕业设计和对相关资料的收集,让我清楚的感到随着网络科技的不断发展和网络的广泛应用,使我们的生活离不开它了。在如今的社会中,商务业务类型的不断增加以及它的需求不断的发生变化,在这样的情况下,就要求我们的系统做到更完善,以满足社会上更复杂的现实需求。希望在今后的工作与生活中,能够努力提高自己的技术水平,不断的来完善系统中现有的不足。

参考文献

[1] 陈火旺,徐建波, 周新莲. Web设计原理与编程技术[M]. 中南大学出版社. 2005.

[2] 武延军,黄飞跃. 精通JSP编程技术[M]. 人民邮电出版社. 2001.

[3] 徐国智, SQL Server 2000数据库系统开发实例精粹, 电子工业出版社,2006

[4] 飞思科技产品研发中心. JSP应用开发详解[M]. 电子工业出版. 2002

[5] 柏亚军. JSP编程基础及应用实例集锦[M]. 人民邮电出版社. 2001.

[6] (美)Michael J.Young, 前导工作室译. XML学习指南[M]. 机械工业出版社. 2001.

[7] 李江,张威. 实例解析XML/XSL/Java网络编程[M] 北京希望电子出版社 2002

[8] 李振华,季小武. Drwamweaver基础教程. 清华大学出版社. 2005.

[9] 聂小燕. DrwamweaverMX2004动态网站建设全攻略.兵器工业出版社,北京科海电子出版社. 2005.

[10] 塞奎春. JSP信息系统开发实例精选. 机械工业出版社. 2006.

[11] (美)Damon Hougland, Aaron Tavistock ,马朝晖译. JSP 核心技术. 机械工业出版社. 2001.

[12] 潇湘工作室 刘涛 徐冉. DrwamweaverUltraDev网页设计与网站开发. 人民邮电出版社. 2000.

[13] 许增伟,张强. JSP快速高效开发利器——DrwamweaverUltraDev. 清华大学出版社.2002

重庆科技学院本科生毕业设计 致谢

致谢

经过两个多月的努力,终于完成了毕业设计和毕业论文的写作工作,在这里我首先要感谢学校能让我们在最后的时间,通过这次毕设能意识到自己在大学里所学知识的不足与自身能力的欠缺。这样才会使我们对自己能有一个很好的定位,不至于对自己的技术没有很好的把握。

在这里我还要感谢我的设计指导老师刘海玲老师,是她在设计的技术方向上给我提出许多宝贵的设计意见,在最后的测试修改阶段又在百忙之中抽出时间为我提供了必要的帮助,这样使得我得以顺利的完成毕业设计开发工作。感谢在校的老师们,在我大学时间里对我的谆谆教诲和无私帮助,在实际的开发工作中,我深深体会到了基础理论知识的重要性,在大学阶段只有好好学习,掌握好扎实的理论基础,这样才能在将来的工作中更快的学习,从而得心应手,有所成就,真正成为一个对社会和他人有用的人。

最后还要感谢我的同学们,在这次毕业设计及论文写作中给我的支持和帮助。


相关内容

  • N多毕业设计题目
  • 基于Ajax技术的WEB应用的设计 又快到毕业的时候了,大家该准备做毕业设计了.大学问问特意收集了一些毕业设计(论文)的题目,供大家选择. VB售楼管理系统 VB无纸化考试系统 VB小区物业管理系统 VB航空公司管理信息系统 VB计算机机房管理系统 VB房地产评估系统VB+SQL2000 VB光盘信 ...

  • 计算机信息管理毕业论文题目
  • 信管专业本科毕业论文选题参考331目 以下选题仅供同学们参考,不一定在这个范围内,同学们完全可以自已命题.由于IT技术发展极快,所以我们提供的论文选题不一定最新.最快.最先进.请大家理解. 要求同学们在选题时尽量与带实习及指导论文的老师联系和商量,获得老师们的支持和帮助.如果能考虑论文与实习项目结合 ...

  • 餐饮管理系统毕业论文毕业设计
  • 毕业设计(论文) 基于三层架构的餐饮管理系统 设计与实现 学 号: [1**********]4 学生姓名: 肖子敏 系 部: 工业设计系 专 业: 软件技术 班 级: 高软件1001 指导教师: 李春奇 株洲职业技术学院教务处制 株洲职业技术学院毕业设计论文 目 录 摘要„„„„„„„„„„„„„ ...

  • 网上购物系统毕业论文
  • 1 引言 进入21 世纪,网上购物系统在人们的生活中已经不可或缺,通过网络实现商品的交易,大大减少了时间,网上购物以它独特的方便.快捷.高效而深受广大用户的喜爱.在我国,网上购物从无到有也不过短短几年时间,我国第一家网上购物发生在1996年,燕莎友谊商场首次通过网上商城售出一个景泰蓝,虽然货款的支付 ...

  • 毕业论文--汽车票订票系统
  • 摘 要 随着我国铁路交通的不断发展,简单的窗口售票模式已经不能满足方便人们出行的目的.采用先进的网络技术开发出方便快捷的网上订票系统是现代客运业务发展的必然需求.本次设计的火车票网上订票系统通过访问主页,可以实现个人信息注册.车次车票价格查询.在线订票退票等基本功能,为用户提供方便快捷的订票服务. ...

  • 毕业范文1
  • 襄樊职业技术学院(毕业)论文 我院计算机专业机房维护方案设计与实现 专业班级:计算机网络技术0701 学 生: 学 号: 指导教师: 教学单位:电子信息工程学院 毕 业 届: 2010届 2010年6月1日 襄樊职业技术学院 电子信息工程学院 毕 业 设 计(论 文)课 题 任 务 书 一. 毕业设 ...

  • 网上订餐系统
  • 网上订餐系统 摘要 二十一世纪是一个集数字化,网络化,信息化的,以网络为核心的社会.中国的网民充分领略到"畅游天地间,网络无极限" 所带来的畅快.随着Internet 的飞速发展,使得网络的应用日益的广泛.如电子商务,电子政务,网上医疗,网上娱乐,网络游戏,网络教学等.本次毕业设 ...

  • 分班级论文题目
  • 一.计算机应用专业 1.基于局域网上的教学模式探讨 2.校园局域网综合布线系统设计 3.实现网络远程攻击主动防御的安全研究 4.组建对等网络(WINSOWS 2000 SERVER组网探讨) 5.基于ASP的在线选课系统 6.防火墙在网络安全中应用 7.办公室无线网络的设计与实现 8.计算机网络拥塞 ...

  • 硕士论文写作范本(结构化方法V5)
  • 分类号 TP31 密级 公开 UDC 编号 硕士研究生学位论文 题 目 XX系统的分析与设计 学院(所.中心) 软件学院 专业名称研究生姓名 学号 导师姓名 梁志宏 职称 研究员 年 月 独创性声明 本人声明所呈交的论文是我个人在导师指导下进行的研究工作及取得的研究成果.除了文中特别加以标注和致谢的 ...