基于SSH和MySQL的网上购物系统的设计与实现
摘 要
随着计算机网络技术的飞速发展和人们生活节奏的不断加快,电子商务技术已经逐渐融入了人们的日常生活当中,网上商城作为电子商务最普遍的一种形式,已被大众逐渐接受。因此开发一个网上商城系统,适合当今形势,更加方便人们在线购物。
本网上商城系统以MVC分层思想为原则,使用SSH框架进行整合开发。页面显示使用JSP和HTML,数据库使用MySQL,这些技术目前相对比较成熟,方便系统的维护与扩展。网上商城系统前台包括了用户注册、用户登录、商品查询、商品添加到购物车、删除商品等几大功能;后台管理功能则包括商品的修改、添加、删除、用户管理和订单管理等主要功能。本系统具有操作简单、页面友善、灵活性好、运行稳定等特点。
与其他使用ASP,PHP语言编写的网上商城系统相比,本系统使用的JSP语言更加方便快捷,开发更加效率。使用SSH框架和JSP相结合的方式,大大降低了系统的耦合度,增强了系统的可维护性、可移植性。本系统使用了数据库连接池技术,有效的防止了因连接数过大而引起系统崩溃局面的发生,并且使用了基于Annotation注解的方式进行开发,使网上商城系统的数据访问更加的快捷。
关键词 :网上购物;MVC;SSH;MySQL
Abstract
With rapid development of computer network technology and theaccelerating of people lives rhythm,the electronic commerce technology has been gradually into people's daily life, as the most common form of the e-commerce,online shopping is easy to accept by public. Therefore to develop an online store system for today's situation,and more convenient for people to shop online.
This system of online shopping to MVC hierarchical thought principle,using the SSH framework for integrated development.The front display using JSP and HTML page, background database using MySQL,the technology is relatively mature,the system is convenient to maintenance and expansion.Online shopping mall in front of the system including the user registration,user login,commodity information,add commodity to cart, delete commodities,user messages and other major function;the backstage management function includes commodity modification,add,delete,user management,order management and other functions.;The backstage management function includes commodity modification, add,delete,user management,order management and other functions.This system has the advantages of simple operation,friendly interface,good flexibility,the characteristics of stable operation.
Compared with other online shop to use ASP, PHP language system, the system uses the JSP language more convenient, develop more efficiency.SSH framework and JSP combination of greatly reduced the degree of coupling of the system,and enhance the system's maintainability,portability.This system uses a database connection pool technique is effective to prevent the occurrence of the number of connections is too large to cause a system crash situation, and use the Annotation annotation-based development, online store system data access is fast.
Key words :Online Store; MVC; SSH; MySQL
1 绪论
1.1 系统开发背景
随着网络对人们生活和工作的影响日益增加,人们对网络的依赖是越来越强烈,不论是个人还是企业,都可以通过网络渠道来进行商品信息交流和买卖流通。网上商城由此产生,慢慢进入了人们的视线当中,越来越多的商家在网上建起在线商城,向消费者提供一种新型的购物方式。网上商城的出现,使消费者网上购物的过程变得简单、方便、快捷。网上商城是一种具有交互功能的商业信息系统,它在网络上建立一个虚拟的购物商城,使购物变得快捷又轻松,因此网上商城近年来发展的异常迅速,网上商城对人们生活的影响也会越来越大。
不可否认,网上商城将是企业发展和个人生活所不可缺少的重要组成部分,而且在网上商城购物会成为广大群众所能接受的最主要消费方式。
1.2 开发意义
从系统的开发背景来看,开发一个网上商城系统会有以下几项优势:
-
投资少,回收快 :一项针对中国中小企业的情况调查显示,个人在网下启动销售公司需要大量的资金,而网上商城的成本非常小。在网上筹办一家商店投资费用很小,不用去租店面,不用囤积货品,所需资金不会很多。网上商城比同等规模的门面商铺“租金”要低得多,同时租金不会因为营业面积的增加而增加,商家也不用为延长营业时间而增付额外的费用
-
基本不需要占压资金 :传统商店的进货资金少则几千元,多则数万元,而网上商城则不需要积压太多的资金
-
24小时营业 :网上商城延长了传统商店的营业时间,一天24小时、一年365天不停业经营,而且不需要很多专门人员值班
-
不受店面空间的限制 :哪怕只是街边小店,在网上却可以拥有百货大楼那么大的店面,只要投资者愿意,可以摆上成千上万种商品
-
不受地理位置影响 :不管客户距离网上商城有多远,也不管顾客是国内还是国外,只要客户可以上网,在网上商城就可以很方便地找到并购买商品
1.3 国内外现状
在美国、欧洲等信息化程度较高的国家,网上商城发展迅速,世界一流零售商,如沃尔玛、梅西百货、家得宝和萨克斯等纷纷跻身于网络销售行列。而在美国的家庭中,人们已经越来越习惯网上购物。网上购物已经成为美国、英国、日本等发达国家的一种消费习惯。
在我国,网上购物从无到有也不过十几年时间。而在最近几年时间,网上购物变得火热起来,网上购物迅速成为一种购物时尚。目前国内比较大型的网上购物商城如淘宝、京东、唯品会等,发展都是非常迅速,而随着国内计算机信息技术发展,网上购物会更加快速的发展起来,为消费者和商家都提供更加广阔的销售平台。因此,开发一个网上商城系统非常符合当今社会的发展趋势。
1.4 本系统设计的内容
本设计主要通过对现在网上商城发展形势进行分析,对开发工具进行简介,对系统的可行性进行分析、系统需求分析,然后进行系统的总体设计,设计数据库中表的关系和表结构,最后完成系统的总体实现,并对系统进行测试,从而完成整个系统。
1.5 设计的步骤
-
第一章 :绪论,主要介绍系统的开发背景、研究意义、国内外现状及设计的内容
-
第二章 :开发技术,主要介绍了开发系统使用的技术及使用的工具
-
第三章 :系统分析,主要包括系统的可行性分析,系统的需求分析
-
第四章 :系统设计,主要对系统功能模块、工作流程和各模块设计进行介绍
-
第五章 :数据库设计,主要介绍系统所需的数据表信息及表之间联系
-
第六章 :系统实现,主要介绍了各个模块的实现及关键代码
-
第七章 :系统测试,对系统进行压力测试,获得测试结果
2 系统开发技术
2.1 动态网页技术JSP
JSP(Java Server Pages)是由Sun Microsystems公司(已经被Oracle收购)倡导、许多公司参与建立的一种动态网页技术标准。它在传统的网页HTML文件中插入Java程序段和JSP标记,从而形成JSP文件。JSP技术相比其他技术有以下优势:
-
仅编写一次,就可以在其他任何环境中运行 :除了系统之外,代码不需要做任何更改
-
系统具有多平台支持 :JSP技术可以在众多平台上的环境中开发,在任意的环境中进行系统部署和扩展
-
功能强大的开发工具支持 :已经具有很多优秀的开发工具支持的JSP,其中许多都可以免费得到,并且许多工具可以顺利运行于多种平台下
2.2 框架SSH
SSH是Struts+Hibernate+Spring的集成框架,SSH框架的特点有以下几点:
-
Struts降低了系统的耦合度,使系统的逻辑结构更加清晰
-
Hibernate是一种开源的对象关系映射框架,它对JDBC进行了轻量级的对象封装,使系统操纵数据库更加的方便
-
Spring框架中的IOC和AOP对系统进行最大程度解耦合,使系统的各层之间的耦合度减小,极大地提高了系统开发效率
系统是集成SSH框架的,它的层次分别为:表示层、业务逻辑层和数据持久层。表示层采用JSP,Struts作为系统的整体基础架构,SSH框架各层次关系如图2-1所示。
2.3 系统开发工具
系统主要开发工具如下:
-
MyEclipse :它是一个十分优秀的用于开发Java的Eclipse插件集合,它的功能丰富,并且完全支持JSP、HTML、Struts、Spring、CSS、JS、SQL 、Hibernate,它的9.0版本已经支持了JavaEE6,因此选用MyEclipse9.0进行开发非常的合适
-
Tomcat :它是一种具有运行时占用系统资源小,扩展性好,支持负载平衡等功能优点的轻量级应用服务器。它的7.0版本实现了对JSP2.2的支持,而且增加了Web应用内存溢出侦测和预防功能,因此选用Tomcat7.0作为系统服务器
-
MySQL :它是一个关系型数据库管理系统,将数据保存到不同的表中,提高了访问速度并提高了灵活性。MySQL数据库速度快、体积小、移植性能好,而且它是开源的,选用MySQL数据库对系统的各方面都有很大好处。MySQL5.7版本提高了MySQL的性能、可用性、可扩展性,因此选用MySQL5.7进行系统的数据库管理
2.4 系统配置过程
系统配置详细过程:
-
在MyEclipse中配置安装好的的Java开发包和Tomcat服务器
-
安装MySQL5.7,设置账号密码,用于数据库连接,然后安装Navicat for MySQL,使得数据库可以在图形页面下进行操作
-
在MyEclipse中新建Web Project项目,项目名为webShopping
-
导入Struts2包,Spring包,Hibernate包,其中Struts2的配置文件为Struts.xml,Spring的配置文件为bean.xml,使用bean.xml文件进行数据库连接池的配置
-
导入外部的MySQL驱动包,用于数据库连接
2.5 配置关键性问题的解决
上述配置正确后,仅仅可以成功连接,所以还需要解决一些关键问题才能更好的运行程序。
2.5.1 系统性能调整
在对系统性能进行调整后才能更加快速稳定运行系统。主要内容如下:
-
禁止Tomcat的自动重载 :为了节约开发时间,在开发阶段Tomcat容器提供自动重载功能,方便在修改Java代码后不需要重新启动服务。但是,在生产环境下面,却占用了大量开销,因为进行了完全没有必要的重新载入操作,所以带来了很不好的性能影响。同时,在部分类载入,部分类载入的时候也可能带来各种难以处理的冲突。因此在J2EE的生产环境下关闭自动载入功能可以得到更好的性能
-
控制HttpSession :在默认情况下,不要在JSP页面中创建HttpSessions对象,JSP页面默认会自动创建HttpSessions,如果JSP页面中不需要HttpSessions,为了节省一些性能,使用下面的页面指令避免自动创建HttpSessions对象: <%@ page session="false"%>。
2.5.2 数据库编码
为了处理乱码,数据库应和页面统一使用UTF-8编码处理。在使用Navicat新建数据库时,使用的字符集一项选择:utf8 -- UTF-8 Unicode。
在进行数据库连接时,需要使用参数characterEncoding,参数值为UTF-8,例如连接的数据库为WebShopping,那么在配置数据库连接时,使用的URL应该为: jdbc:mysql://localhost:3306/webShopping?useUnicode=true&characterEncoding=UTF-8。
2.5.3 页面字符集
在每个JSP页面中,都要声明使用UTF-8这一字符集,在每个JSP页面的最上都要加上这一句:<%@ page language="java" contentType="text/html;charset=UTF-8"%>,这样才能够保证每个JSP页面中的中文显示正常不出现乱码。
3 系统分析
3.1 可行性分析
开发任何一个基于计算机的系统,都会受到时间和资源上的限制。因此,在接受项目之前,必须根据客户可能提供的时间和资源条件进行可行性研究。这样就可以避免人力、物力、财力上的浪费。项目风险越大,开发高质量软件的可行性就越小。
3.1.1 技术可行性
硬件、软件要求不高,目前市场上的一般计算机软硬件都能满足系统开发要求。运用的编程软件主要有MyEclipse9.0,使用JSP和SSH框架技术,数据库采用MySQL。
-
当前JSP是一种应用广泛的技术,实现了Html和Java的集成;SSH框架是Struts + Hibernate + Spring的集成框架,是目前流行的一种Web应用程序开源框架
-
用JSP开发的Web应用是跨平台的,既可以在Linux下运行,也可以在其他操作系统上运行
-
维护工作方便,一般具有一定软件开发经验的人员,都可以在短时间内掌握维护工作
3.1.2 经济可行性
网上商城系统的维护由程序人员即可完成,商家来进行对网上商城的订单、用户的信息来管理,不必使用大量的销售人员与客户面对面的交流,节约了人员工资开支的成本。而在销售业绩上,网上商城并不比实体商店的销售业绩差,因此在经济上是可行的。
3.1.3 可行性分析结论
经过以上对该项目进行各方面问题的分析,开发人员认为此项目的实现可以满足用户对商品的需要,方便用户与商家的交流,减少商家实体店面的开支,减少实体店铺对土地的浪费等,并且在技术和经济等方面均可行,确定本系统可以立项开发。
3.2 需求分析
需求分析指在建立一个新的系统时,确定系统的目的、范围、定义和功能时所要做的所用工作,需求分析是软件工程中的一个关键过程。需求分析阶段的任务是确定系统的功能。
3.2.1 开发意图
本系统适用于商家在网上进行商品销售,实现了商家的上架下架物品,修改商品信息,添加删除商品,用户管理功能等。极大地节省了商家对实体店铺的管理,物品的展示使用图片、视频信息便可。对客户而言,可以实现对商品的浏览,商品价格的了解、下单、购买等功能,方便了商家与客户之间的交流。
3.2.2 功能需求
在需求调查的基础上,结合网上商城系统的总体目标,对用户提出的需求从信息系统目标、业务功能、技术性能等方面分析,最终确定可行的、合理的系统功能需求。
根据以上分析,确定系统主要功能需求:
-
登录功能 :用户输入用户名和密码,进行登录验证
-
注册功能 :可以查询用户名是否已经存在,对注册信息进行验证
-
商品浏览 :可以查询商品,显示商品详情,提供购买链接
-
购物车管理 :欲购买商品可以增添到购物车,也可以从购物车删除商品
-
订单查询 :用户登录后可以下订单,用户登录后也可以查看自己的订单
-
商品种类管理 :管理员可以对商品种类进行添加、删除操作
-
商品管理 :管理员可以添加商品、删除商品,查看所有商品
-
订单管理 :管理员登录后可以对订单进行管理
-
用户管理 :管理员可以管理注册用户信息
3.2.3 数据流图
数据流图是描述系统中数据流程的图形工具。在本系统中,没有登录的用户提交注册信息、提交登录信息,登录后可以购买商品、提交订单、修改个人信息。管理员可以对商品信息、订单信息、用户信息进行管理。这其中涉及到了对各个数据库的信息处理。对本系统进行分析,可以得到以下几个数据流图:
网上商城系统顶层数据流图如图3-3所示。
网上商城系统第一层数据流图如图3-4所示。
用户信息管理数据流图如图3-5所示。
商品管理数据流图如图3-6所示。
3.2.4 数据字典
数据字典是关于数据的信息的集合,也就是对数据流图中包含的所有元素的定义的集合。数据字典是数据流图上所有的成分的定义和解释的文字的集合,它最重要的用途是供人查询对不了解的条目的解释。
数据字典主要的组成有:数据项、数据流、数据结构、数据存储、处理过程。根据对本系统的数据流图的分析,本系统的数据字典的主要内容如下:
关键部分数据项(仅对关键数据项进行描述)。关键部分数据项如表3-1所示。
数据项名 | 数据项描述 |
---|---|
用户ID | 用户的编号 |
用户名 | 用户登录账号 |
用户密码 | 用户登录密码 |
用户姓名 | 用户的姓名 |
邮寄地址 | 用户接收商品的地址 |
商品名称 | 商品的名称 |
商品种类 | 商品的种类 |
商城价格 | 商品在商城的售价 |
剩余数量 | 商品的剩余数量 |
商品图片 | 商品的图片地址 |
订单编号 | 订单的编号 |
是否付款 | 用户是否已经付款 |
是否发货 | 商城是否已经发货 |
数据结构反映了数据之间的组合关系。本系统的主要数据结构如下所示:
- 用户信息的数据结构
- 数据结构:用户
- 数据项说明:用户的各项信息
-
数据项组成:用户ID+用户名+用户姓名+用户密码+用户性别+用户电话+邮编+邮寄地址+电子邮件
-
商品信息的数据结构
- 数据结构:商品
- 数据项说明:商品的各项信息
-
数据项组成: 商品编号+商品名称+商品图片+商品种类+商品描述+商品厂商+商品原价+商城价格+商品总量+剩余数量
-
订单信息的数据结构
- 数据结构:订单
- 数据项说明:订单的信息
-
数据项组成:订单编号+商品信息+用户名+用户备注+提交时间+总金额+是否付款+是否发货+发货时间+订单流水号
-
管理员的数据结构
- 数据结构:管理员
- 数据项说明:管理员的信息
-
数据项组成:管理员编号+管理员用户名+管理员密码
-
商品种类的数据结构
- 数据结构:商品种类
- 数据项说明:商品种类的信息
- 数据项组成:商品种类名称+商品种类编号
数据流是数据结构在系统内的传输路径。本系统的数据流主要有:
- 用户登录数据流
- 数据流名称:用户登录
- 说明:用户登录输入的账号和密码
- 数据流来源:用户信息表
- 数据流去向:用户信息表
- 组成:用户
- 平均数据量:100次/每小时
-
高峰期流量:400次/每小时(商品优惠活动期间)
-
用户注册数据流
- 数据流名称:用户注册
- 说明:用户注册信息
- 数据流来源:用户信息表
- 数据流去向:用户信息表
- 组成:用户
- 平均数据量:20次/每小时
-
高峰期流量:50次/每小时
-
用户信息更新数据流
- 数据流名称:用户信息更新
- 说明:用户更新个人信息
- 数据流来源:用户信息表
- 数据流去向:用户信息表
- 组成:用户
- 平均数据量:10次/每小时
-
高峰期流量:20次/每小时(商品优惠活动期间)
-
订单提交数据流
- 数据流名称:提交订单
- 说明:用户提交订单信息
- 数据流来源:用户信息表
- 数据流去向:订单信息表
- 组成:订单
- 平均数据量:30次/每小时
-
高峰期流量:50次/每小时(商品优惠活动期间)
-
添加商品数据流
- 数据流名称:添加商品
- 说明:管理员添加商品信息
- 数据流来源:管理员信息表
- 数据流去向:商品信息表
- 组成:商品
- 平均数据量:20次/每天
- 高峰期流量:50次/每天(进货种类较多时)
4 系统设计
4.1 系统的功能模块设计
网上商城系统由前台管理、后台管理两部分组成。
前台管理 :该部分主要是用户对商品的查询等功能,用户没有注册可以实现商品的查询和商品信息的查看;用户注册后就可以进行添加商品到购物车、从购物车删除商品、订单提交、个人信息更新等操作。
后台管理 :该部分主要对商城内的一些基础数据进行有效管理,包括商品管理、会员管理、订单管理等。
网上商城系统的前台系统框架图如图4-1所示。
前台主要功能介绍:
-
搜索商品 :用户不用登录可以输入商品的名称来查看需要查询的商品,而且可以查看商品的详细信息,如生产厂商、剩余数量、介绍等
-
分类查询 :用户可以按分类来查看该分类的商品
-
用户注册 :用户可以输入注册信息来注册,用户可以检查用户名是否存在,用户注册信息没有错误则可正确注册(不要使用中文名称来注册)
-
用户登录 :用户输入登录名和密码进行登录,如果用户名和密码错误则无法登录
-
更新信息 :用户登录后可以查看个人信息并更新个人信息,还可以修改密码
-
购物车 :用户登录后就可以购物,可以把商品加入到购物车,或者把商品从购物车删除,如果商品数量为0则无法加入到购物车
-
提交订单 :用户把商品添加到购物车后即可提交订单,订单提交后用户可以进行付款(本系统为用户模拟了一个账户,用于用户购物,用户账户余额不足则无法付款)
-
查看订单 :用户可以查看自己的订单
网上商城系统的后台系统框架图如图4-2所示。
后台主要功能介绍:
-
商品种类管理 :管理登录后台后可以对商品种类进行添加、删除。添加时如果商品种类已经存在会提示添加错误
-
商品管理 :管理员对商品进行添加、删除操作,如果商品已经存在,添加时会提示商品已经存在
-
订单管理 :管理员可以查询订单,查看所有订单信息
-
用户管理 :管理员可以查询用户信息,管理用户信息
-
系统管理 :管理员可以修改登录密码,安全退出
4.2 系统的工作流程
网上商城系统前台的工作流程如图4-3所示。
网上商城系统后台的工作流程如图4-4所示。
4.3 系统模块详细设计
4.3.1 用户注册
用户注册是用户想要购买商品所必须进行的,用户注册需要填写正确的信息,用户账户一旦注册就不能修改,用户的其他信息可以修改。用户填写信息需要正确填写各项信息,如收货地址,用户下订单后用户的收货地址如果是错误的则无法正确发货的。用户注册后,使用用户名和密码登录系统,可以进行购物、下订单、提交留言操作。用户注册的流程图如图4-5所示。
4.3.2 用户登录
用户登录时需要输入用户名和密码,系统对用户输入信息进行验证,如果用户输入信息错误则需要重新输入,用户输入正确则可以成功登录,跳转到首页,显示用户常用操作例如修改密码,修改信息,退出等。用户如果忘记密码可以通过查找密码来重新设置密码。用户登录流程图如图4-6所示。
4.3.3 用户信息修改
用户登录后可以修改个人信息,修改个人信息后需要重新登录才能查看到更新之后的信息。用户登录后可以修改密码,重新登录需要使用修改后的密码才能登录。用户信息修改流程图如图4-7所示。
用户修改密码流程图如图4-8所示。
4.3.4 用户找回密码
用户如果忘记密码,可以通过输入注册时的信息来重设密码。如果输入的注册信息错误则无法重设密码,只有输入正确的注册信息才能进行密码重设。用户找回密码的流程图如图4-9所示。
4.3.5 用户查看商品
用户不需要登录就可以搜索商品,查看商品详细信息。用户可以通过搜索商品名称来搜索商品,或者商品分类来查看该种类的商品。用户查看商品流程图如图4-10所示。
4.3.6 添加到购物车
用户登录后可以把商品添加到购物车,也可以对购物车商品进行删除。如果商品的剩余数量为0则无法把商品添加到购物车。添加到购物车流程如图4-11所示。
4.3.7 管理商品
管理员登录后台后,可以对商品进行管理,添加、删除商品。添加时如果商品已经存在则无法添加。管理商品流程图如图4-13所示。
4.3.8 管理商品种类
管理员登录后台后,可以对商品种类进行管理,添加和删除商品种类。如果添加时商品种类已经存在则无法添加。管理商品种类流程图如图4-14所示。
4.3.9 系统管理
管理员登录后,可以修改登录密码、退出系统。系统管理流程图如图4-15所示。
5 数据库设计
5.1 数据库概念设计
数据库概念设计是根据对系统的分析、系统设计,规划出系统中使用的数据库实体。描述概念模型的工具主要是E-R图。根据对本系统的分析,规划出本系统所需要的实体,具体有:用户、商品、商品种类、管理员、订单。
5.1.1 实体属性的定义
用户实体拥有的属性有用户ID、用户名、用户密码、性别、姓名、电话、邮寄地址和电子邮箱这八个属性。用户实体属性如图5-1所示。
商品实体拥有的属性有商品ID、商品名称、商品种类、商品图片、商品描述、商品厂商、商城价格、商品原价、总数量和剩余数量这十个属性。商品实体属性如图5-2所示。
商品种类实体拥有的属性有商品种类和商品种类名称这两个属性。商品种类实体属性如图5-3所示。
订单实体拥有的属性有订单ID、订单用户名、商品、提交时间、发货时间、总金额、是否发货和是否付款这个八个属性。订单实体属性如图5-4所示。
管理员实体拥有的属性有管理员ID、管理员用户名和管理员密码这三个属性。管理员实体属性如图5-5所示。
5.2 数据库逻辑设计
5.2.1 用户信息表(users)
用于记录用户ID、用户名、用户姓名、用户密码、用户性别、用户电话、商品邮寄地址和用户电子邮件等信息。用户信息表的内容如表6-1所示。
字段名 | 数据类型 | 约束条件 | 是否可空 | 默认值 | 注释 |
---|---|---|---|---|---|
userId | int(20) | 主键 | 否 | 1 | 用户ID(自增) |
username | varchar(50) | 否 | 无 | 用户名 | |
password | varchar(50) | 否 | 无 | 用户密码 | |
name | varchar(50) | 否 | 无 | 用户姓名 | |
sex | varchar(50) | 否 | 无 | 用户性别 |
5.2.2 商品信息表(commoditys)
用于记录商品编号、商品种类、商品名称、图片商品描述、商品厂商,商品原价格,商城出售价格,商品总数量和商品剩余数量等信息。商品信息表的内容如表6-2所示。
字段名 | 数据类型 | 约束条件 | 是否可空 | 默认值 | 注释 |
---|---|---|---|---|---|
commodityId | int(20) | 主键 | 否 | 1 | 商品编号(自增) |
commodityClass | varchar(50) | 外键 | 否 | 无 | 商品种类 |
commodityName | varchar(50) | 否 | 无 | 商品名称 | |
manufacturer | varchar(50) | 否 | 无 | 商品厂商 | |
commodityDepict | varchar(255) | 否 | 无 | 商品描述 | |
commodityPrice | double(20) | 否 | 无 | 商品原价 | |
webShopPrice | double(20) | 否 | 无 | 商城价格 | |
commodityAmount | int(50) | 否 | 无 | 商品总量 | |
commodityLeaveNum | int(50) | 否 | 无 | 剩余数量 | |
image | varchar(255) | 否 | 无 | 商品图片 |
5.2.3 商品种类信息表(commodityclasses)
用于记录商品种类的编号,商品种类名称等信息。商品种类信息表的内容如表6-3所示。
字段名 | 数据类型 | 约束条件 | 是否可空 | 默认值 | 注释 |
---|---|---|---|---|---|
commodityId | int(20) | 主键 | 否 | 1 | 商品种类编号(自增) |
commodityClass | varchar(50) | 否 | 无 | 商品种类名称 |
5.2.4 订单信息表(orderform)
用于记录订单的编号,用户信息,订单提交时间,发货时间,总金额,买家备注,买家是否付款,是否发货等信息。订单信息表的内容如表6-4所示。
字段名 | 数据类型 | 约束条件 | 是否可空 | 默认值 | 注释 |
---|---|---|---|---|---|
orderFormId | int(20) | 主键 | 否 | 1 | 订单编号(自增) |
username | varchar(20) | 外键 | 否 | 无 | 用户名 |
commodity | varchar(50) | 外键 | 否 | 无 | 商品信息 |
submitTime | varchar(50) | 否 | 无 | 提交时间 | |
consignmentTime | varchar(50) | 是 | 无 | 发货时间 | |
totalPrice | varchar(50) | 否 | 无 | 总金额 | |
remark | varchar(50) | 是 | 无 | 用户备注 | |
isPayoff | varchar(10) | 否 | 无 | 是否付款 | |
isConsignment | varchar(10) | 是 | 无 | 是否发货 | |
orderFormNum | bigint(20) | 否 | 无 | 订单流水号 |
5.2.5 管理员信息表(admins)
用于记录管理员编号,管理员用户名,管理员密码等信息。管理员信息表内容如表6-5所示。
字段名 | 数据类型 | 约束条件 | 是否可空 | 默认值 | 注释 |
---|---|---|---|---|---|
adminId | int(20) | 主键 | 否 | 1 | 管理员编号(自增) |
adminName | varchar(255) | 否 | 无 | 管理员用户名 | |
adminPassword | varchar(255) | 否 | 无 | 管理员密码 |
6 系统实现
6.1 系统主页面
系统主要使用淡色调,颜色不会很刺眼,不会使客户感到反感。系统页面简洁,上方的导航则包括用户登录、用户注册、留言板等信息,下方显示商品种类列表、上架商品、商城公告、用户登录框等信息,用户可以通过左侧导航栏查询每个种类的商品,也可以通过搜索来查找商品。系统主页面如图6-1所示。
系统主页的商品分类需要通过请求来获取商品种类列表。
获取商品种类列表的关键代码如下:
java
public String execute() throws Exception {
Map request = (Map) ActionContext.getContext().get("request");
commodityClasses = commodityClassService.findAllCommodityClasses();
request.put("listCommodityClasses", commodityClasses); //列表信息保存到listCommodityClasses中
return "success";
}
6.2 非登录用户操作
6.2.1 用户注册
用户可通过注册成为商城会员,点击用户注册打开用户注册页面,用户注册包括用户名、密码、用户姓名、性别、电话、收货地址、电子邮箱等信息,用户点击每个输入框时后方会提示需填入的内容或注意事项。用户注册页面如图6-2所示。
用户提交注册信息后,若没有错误的信息,则会提示注册成功,跳转到登录页面。若用户注册信息有错误,则会提示注册失败,返回到注册页面,用户应重新注册。
用户注册关键代码如下:
java
public String execute() throws Exception {
String username= user.getUsername();
User user = service.findUserByName(username); //查询该用户名是否存在
if(user==null){
this.service.save(this.user);
return "success";
}
else{
return "error";
}
}
6.2.2 用户登录
用户可以通过右侧的登录框登录,也可通过上方的导航栏打开用户登录页面进行登录。用户登录页面如图6-3所示。
如果用户名和密码正确,则会提示登录成功,跳转到主页。如果用户名和密码不正确,则会提示登录失败,返回到登录页面,用户需要再次登录。用户登录后可以查看购物车中商品、提交留言、查看自己的订单等。用户可以点击退出按钮退出系统。用户登录成功后页面如图6-4所示。
用户登录关键代码如下:
java
public String login(){
String username= user.getUsername();
String password=user.getPassword();
User user = service.getUserByLoginNameAndPassword(username,password);
//搜索是否存在该用户
if(user == null){
ActionContext.getContext().put("message", "用户名或密码错误");
return "login";
}else{
ActionContext.getContext().getSession().put("user", user);
return "index";
}
}
6.2.3 找回密码
如果用户已经注册过,但是密码输入不正确或者忘记密码,可以通过输入正确的注册信息来重新设置密码。输入找回密码信息页面如图6-5所示。
用户输入正确的信息后即可进入重新设置密码页面,进行秘密的重置。
找回密码关键代码如下:
java
public String findUser(){
String username= user.getUsername();
String name= user.getName();
String sex= user.getSex();
String post= user.getPost();
String address= user.getAddress();
String phone= user.getPhone();
String email= user.getEmail();
User user=this.service.findUserByinfo(username, name,sex,phone, post, address, email); //查询是否有该用户信息
if(user==null){
ActionContext.getContext().put("findUsernull", "没有该用户信息!");
return "findUsernull";
}else{
ActionContext.getContext().getSession().put("findUser", user);
return "findUser";
}
6.2.4 查看商品信息
点击商品下的详细按钮,可以查看商品的详细信息,在商品的详细信息中可以看到商品的名称、商品编号、商品生产厂商、价格、数量、上架时间和商品的描述,这项操作用户没有登录也可以进行。商品信息页面如图6-6所示。
商品详细信息关键代码如下:
java
public String findCommodityById(){
int commId= commodity.getCommodityId();
Commodity commodity = this.service.findCommodityById(commId);
ActionContext.getContext().getSession().put("commodityById", commodity);
return "findCommodityById";
}
6.2.5 搜索商品
用户可以通过输入商品的部分关键字进行商品搜索,搜索商品后会显示搜索到的信息,如果没有相关信息会输出没有改商品信息。搜索商品信息结果页面如图6-7所示。
搜索商品关键代码如下:
java
public String findCommodityByName(){
String commodityName= commodity.getCommodityName();
Map request = (Map) ActionContext.getContext().get("request");
request.put("commoditybyName",this.service.findCommodityByName(
commodityName)); //保存搜索的信息
ActionContext.getContext().getSession().put("searchnameMessage",
commodityName);
return "findCommodityByName";
}
6.3 登录用户操作
6.3.1 购物车
用户只有登录后才能把商品添加到购物车。在每件商品的下方都有添加到购物车按钮,点击添加就可以添加到购物车,添加一次商品,商品剩余数量就减少1,如果商品剩余数量为0,则无法添加到购物车,提示商品无供货。在购物车中可以查看购物车中的物品,商品的简单信息。在购物车中可以移除商品,移除商品时,商品剩余数量会增加1。用户可以在买家备注里输入备注信息,然后点击提交订单进行订单的提交,也可以点击继续购物继续浏览商品。购物车页面如图6-9所示。
商品添加到购物车关键代码如下:
java
public String execute() throws Exception {
int commodityId= commodity.getCommodityId();
Map session =(Map) ActionContext.getContext().getSession();
Commodity commoditys = commodityService.findCommodityById (commodityId); //获得商品信息
if(commoditys.getCommodityLeaveNum()==0){
ActionContext.getContext().getSession().put("comnull","商品已无货!");
return "error";
}
else{
List<Commodity> car = null; //声明一个购物车
if(session.get("car") == null) { //如果session中不存在购物车
car = new ArrayList<Commodity>(); //新建一个ArrayList实例
}
else {
car = (List<Commodity>)session.get("car"); //取得购物车
}
}
commoditys.setCommodityLeaveNum(commoditys.getCommodityLeaveNum()-1);
commodityService.update(commoditys);
session.put("car", car);//将购物车保存在session中
return "success";
}
6.3.2 付款
用户点击提交订单按钮后,用户的订单就提交到了数据库,然后可以进行付款操作。用户付款时会检查用户金额,如果用户金额不足,会提示余额不足无法付款;用户余额足够才能付款成功。如果用户没有对订单进行付款,商家则不会发货。用户付款页面如图6-10所示。
6.3.3 更新个人信息
用户登录以后可以修改个人信息,修改个人信息时需要输入正确的信息,点击更新个人信息后即可更新个人信息,但是需要用户重新登录之后才会显示更新后的信息。用户也可以修改登录密码。用户更新个人信息页面如图6-12所示。
修改个人信息关键代码如下:
java
public String updateUser(){
this.service.update(user); //更新用户的信息
ActionContext.getContext().put("updatemessage", "您的信息已经更新!");
return "updateUser";
}
6.4 后台管理
6.4.1 后台登录
可以通过主页面下方的链接打开后台管理的登录页面,后台登录页面需要输入管理员账号和密码,如果用户名和密码错误则不能登录,只有输入正确的管理员账号和密码才能登录到后台主页面。后台登录页面如图6-13所示。
6.4.2 后台主页面
输入正确的管理员账号和密码后,打开后台关键的主页面,主页上主要显示此网上商城开发工具的介绍,左侧有快捷功能,上方有列表用于选择各个操作。点击退出即可退出后台管理页面返回登录页面。后台主页面如图6-14所示。
6.4.3 新增商品种类
新增商品种类,填写商品种类名称,提交便可增加一种新的商品种类。新增商品种类页面如图6-15所示。
6.4.4 商品种类列表
管理员可以查看商品种类的列表。商品种类列表页面如图6-16所示。
6.4.5 新增商品
新增商品可以填写商品的名称、商品编号、选择商品种类、填写生产厂家、上传图片、添加商品描述、商品原价格、商城销售价格、商品总数量。新增商品页面如图6-17所示。
新增商品主要代码如下:
java
public String addCommodity(){
CommodityClass com= commodityClassService.findCommodityClassByName (commodity.getCommodityClass().getCommodityClassName()); //获得商品种类信息
commodity.setCommodityClass(com); //设置商品种类
List<Commodity> comFindname = this.service.findCommodityByName (commodity.getCommodityName()); //查询该商品是否存在
if(comFindname.size()==0){
this.service.save(this.commodity); //保存商品信息
ActionContext.getContext().put("addComessage", commodity.getCommodityName() +"添加成功");
}
else {
ActionContext.getContext().put("addComessage", commodity.getCommodity Name() +"已经存在,请重新填写商品信息!");
return "addCommodity";
}
}
6.4.6 商品列表
管理员可以查看商品的列表。商品列表页面如图6-18所示。
6.4.7 订单列表
管理员可以查看订单列表,显示的内容包括:订单编号、用户是否已经付款、是否已经发货、总金额、可以进行订单发货操作等。订单列表页面如图6-19所示.
6.4.8 订单条件查询
输入订单的条件可以查询订单,用于管理员来查询符合条件的订单信息。订单条件查询页面如图6-20所示。
6.4.9 用户列表
用户列表包括所有用户的信息,显示的内容有:用户的姓名、联系电话、住址、邮寄地址、删除用户等。用户列表页面如图6-21所示。
7 系统压力测试
7.1 系统压力测试工具及环境
本系统测试使用Apache Jmeter工具,这是由Apache组织开发的基于java的测试工具。Apache JMeter是开源而且免费的测试工具,它是可以对利用HTTP或FTP服务器的应用程序进行测试的工具,因此,选用Apache Jmeter作为网上商城系统的测试工具非常适合。下载Jmeter,打开bin目录的JMeter.jar,启动JMeter。JMeter主页面如图7-1所示。
系统测试环境是系统在何种配置的服务器中进行的测试如表7-1所示。
操作系统: | Windows XP Professional SP3 |
---|---|
处理器: | AMD Sempron(tm) M100 |
内存: | 2G |
测试工具: | Apache Jmeter |
7.2 录制测试过程
7.2.1 建立线程组
线程组用于指定运行的线程数和等候周期。每个线程模拟一个用户,而Ramp-Up Period(in-seconds)用于指定创建全部线程的时间。设置200个用户同时访问,在5秒之内全部访问登录页面,登录系统。循环次数则代表执行的次数。建立线程组页面如图7-2所示。
7.2.2 建立HTTP请求默认值
在线程组下新建“HTTP请求默认值”同时配置其参数:服务器地址,端口号,访问协议。建立HTTP请求默认值页面如图7-3所示。
7.2.3 设置代理服务器
在工作台下设置HTTP代理服务器,设置Global Settings(端口号),Test plan content(目标控制器)选择上面建立的线程组,添加排除模式,以免在录制过程中录制了不需要的图片,脚本等。工作台设置HTTP代理服务器页面如图7-4所示。
配置好以后,设置浏览器的HTTP访问代理,用于用户的访问。浏览器设置HTTP代理服务器页面如图7-5所示。
浏览器端口号一定要与图8-4配置的端口号一致。启动JMeter的脚本录制。打开浏览器,进行一次登录退出操作。在线程组后会显示登录和退出所访问的action。录制完成页面如图7-6所示。
7.3 测试设置及启动
7.3.1 设置登录参数
在用户登录的action中,可以为用户名和密码进行参数化设置,测试的用户为testuser1到testuser201,测试之前请确认数据库中的用户表已经有这些用户名信息。用户名和密码进行参数化设置页面如图7-7所示。
用户名和密码的数据是从本地f盘下的文件login.txt中读取的,用户名和密码格式如图7-8所示。
7.3.2 启动测试
在启动测试前,确认已经添加好监听器:聚合报告、用表格察看结果、图形报告和查看结果树,用于在测试结束后察看结果。然后点击运行按钮,启动测试,等待测试结束。
7.4 测试结果
7.4.1 系统压力测试聚合报告
聚合报告是整个测试过程中的数据反映。其中参数说明:Lable是测试项目名称,Samples是多少个访问实例,Average是平均相应时间,Median是相应时间中间值,90%Line指90%的实例的相应时间,Min最小响应时间,Max最大响应时间,Error%出错率,Throughput是每秒完成的实例也就是系统的吞吐量,最后一项为每秒传送的数据量。系统压力测试聚合报告页面如图7-9所示。
7.4.2 系统压力测试图形结果
图形结果可以更加形象并且直观地看到测试的结果。主要参数有:样本数目是总共发送到服务器的请求数。最新样本是代表时间的数字,是服务器响应最后一个请求的时间。吞吐量是服务器每分钟处理的请求数。 平均值是总运行时间除以发送到服务器的请求数。中间值是代表时间的数字,有一半的服务器响应时间低于该值而另一半高于该值。偏离表示服务器响应时间变化、离散程度测量值的大小,也就是数据的分布。
在这些结果中可以看出,网上商城系统既可以满足一般商家的需要,又可以满足适量的用户同时登录,如果需要满足更多用户的登录,购物等操作,可以根据具体的需要对系统,服务器进行优化配置。总体上本系统是可以满足现有需求的。
结论
这次的毕业设计是先对网络购物系统做需求分析,对需要做出来的功能和目标做了一个阐述,之后进行的设计,最后实现了一个简易的网络购物系统的设计。该设计已Java语言为主,用MyEclipse环境完成,MySQL作为我的数据库,同时用到了Tomcat服务器。这个设计分为两个部分,分别是前台用户模块和后台管理模块。前台用户可以操作的模块如下:查看商品,登录注册,购买商品,操作购物车,修改个人信息;后台管理员可以操作的模块如下:商品种类的增删改查,商品的增删改查,查询和更改用户信息。通过不断调试,运行和测试,系统现在可以正常的运行。因为这是我第一次独立完成开发,系统不免有些简易和不足,还需进一步的改善。
这个设计是利用网络来进行一些简单的交易,方便大家的生活。这次的毕业设计锻炼了我的实际操作的能力。让我对Java的应用和理解更加透彻。
在这次毕业设计中,我做了下面一些工作:
-
分析并且建设了网络购物系统,探讨了这个应用的背景和开发它的目的
-
在软件开发的过程中完成一些开发必须的步骤,例如需求分析,总体设计、详细设计、系统测试等
-
在需求分析和总体设计完成后,决定使用什么技术,使用什么语言,使用哪种数据库等等多个问题,最后在制定一个合理的,简单有效的解决方案。此外还考虑到系统的可扩展性,实现整体的灵活性,为以后继续开发或完善提供便利
-
在整个开发系统的过程当中,随着不断的深入,依稀相关的数据材料,技术材料也在不停的汇集整合,形成一个完整的资料库,对我以后的开发有很大的意义和影响
参考文献
[1] 程南希. 基于 SSH 架构的在线购物管理系统的设计与实现[D]. 电子科技大学, 2011.
[2] 萨师煊,王珊.多数据库系统概论[M].北京:高等教育出版社,2006.1-11.
[3] 王建明.计算机实验室管理系统的设计与实现[J].计算机与信息技术,2007,15(11):74-75.
[4] 李春葆.Visual Fox Pro 6.0 高级编程[M].北京: 科学出版社,2001.1-70.
[5] 刘湘晖.多高校计算机实验室综合信息管理系统设计与实现[J].计算机光盘软件与应用,2010,11(12):148.
[6] 杜波伊斯.MySQL技术内幕[M].第4版.人民邮电出版社,2011年07月.
[7] 杨海鹰,潘华.实验室信息管理系统[M].北京: 化学工业出版社,2006.1-70.
[8] AR Hevner,ST Marcb. The Information Systems Research Cycle[J]. IEEE Computer,2003,9 (11):111-113.
[9] R Sandhu,V Bhamidpati,Q Munawer. The ARBAC 97 model for role-based administration of roles[J]. ACM Transactions on Information and System Security,1999, 8(1):105.
[10] B Regnell,P Runeson,C Wohlin. Towards integration of use case modeling and usage-based testing[J]. Journal of Systems and Software,2000,12 (2):117-130.
[11] Young Jin Yu.Backup Metadata As Data: DPC-To Ierance to Commodity File System. Journal of information science and engineering,2011, 27(4):13-15.
[12] Anonymous. Red Gate Software; Red Gate Software's SQL Backup 5 Named 2008 Editor's Best Award Winner by SQL Server Magazine,Computer Technology Journal 2008, 16(5):22-24.
参考文献
- 基于ASP的网上购物系统的设计与实现(西安电子科技大学·刘国超)
- 基于SSH框架某电子商务系统的设计与实现(北京邮电大学·程海山)
- 基于J2EE的网络商店的设计与实现(电子科技大学·周启勇)
- 基于PHP和MySQL的网上购物系统设计与实现(电子科技大学·李华明)
- 一个网上购物系统的设计与实现(华中科技大学·邬妍)
- 基于.NET的网上购物系统的设计与实现(电子科技大学·朱照坤)
- Go购电子商城的设计与实现(大连理工大学·赵楠)
- 电子商务购物系统的设计与实现(大连理工大学·程鹏)
- 基于.NET的网上购物系统的设计与实现(电子科技大学·朱照坤)
- 中小企业物资采购管理系统的设计与实现(北京工业大学·常有强)
- 基于SSH框架某电子商务系统的设计与实现(北京邮电大学·程海山)
- 电子产品网络购物系统的设计与实现(电子科技大学·李睿)
- 网上购物系统设计与实现(北京邮电大学·陈皓)
- 龙城电子商城购物系统的设计与实现(电子科技大学·任艳梅)
- 网上商城系统的设计(云南大学·张昆)
本文内容包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主题。发布者:毕设导航 ,原文地址:https://bishedaima.com/yuanma/35287.html