欢迎添加微信互相交流学习哦!
项目源码:https://gitee.com/oklongmm/biye
摘 要
随着近年来中国经济的快速发展,人民水平的提高。人们的购物需求日益剧增,与传统购物销售不同的是,网上商城是当下最热门的方式。
为满足用户需求,实现一个基于JSP技术和MySQL数据库技术开发的购物销售系统。本系统基于B/S模式,采用SSH框架,使用MVC架构设计而成。在设计过程中,借鉴国内外优秀网站的设计,网站界面简洁、大方,便于用户操作,用户良好性高,而后台设计内容丰富,是的管理员管理后台得心应手。通过本系统将实现用户随时随地在网上浏览、购买购物,也便于商家管理购物销售、挖掘潜在客户,凭借互联网思维,为购物销售开创一个新的渠道。
关键词:JSP,SSH,MySQL,网上商城
Pet sales system based on JSP
Abstract
With the rapid development of China economy in recent years, people raise the level of. People's increasing demand for alcohol, and traditional wine sales is different, online shopping is the most popular way.
In order to meet the needs of users, based on the realization of a wine sales system with JSP technology and MySQL database technology development. The system is based on B/S mode, using SSH framework, using MVC architecture and design. In the design process, from the design of excellent domestic and foreign websites, the website interface is simple, easy, easy operation, good user is high, the design of the background is rich in content, the administrator management background. This system will enable users to browse online, whenever and wherever possible to purchase wine, wine sales, business management for potential customers, with the Internet thinking, create a new channel for wine sales.
Keywords: JSP, Struts, MySQL, online shopping mall
目 录
1 引言 1
1.1 开放背景 1
1.2 开发的意义 2
1.3 课题内容 2
2 技术说明 3
2.1 Java语言概述 3
2.2 JSP概述 5
2.2.1 JSP特点 6
2.3 JavaScript 7
2.3.1 JavaScript语言特性 7
3 开发工具 7
3. 1 Eclipse 7
3. 2 Tomcat服务器 8
3. 3 MySql数据库 8
3.3.1 MySql特点 8
4 系统分析 9
4.1 系统可行性分析 9
4.1.1 社会可行性 9
4.1.2 经济可行性 9
4.1.3 技术可行性 10
4.1.4 操作可行性 10
5.1 功能需求分析 10
5.2 业务流程分析 11
5.3 数据流分析 12
6 系统设计 13
6.1 系统功能设计 13
6.2 系统数据结构设计 13
6.2.1 系统概念结构设计 13
6.2.2 系统逻辑结构设计 19
7 系统前台功能实现 23
7.1前台页面设计 23
7.2 前台用户注册登陆模块 24
7.3前台用户维护模块 30
7.4 前台购物车与订单模块 30
8 系统后台功能实现 33
8.1 商品类别管理模块 34
8.2 商品管理模块 35
8.3 用户管理模块 37
8.4 订单管理模块 41
9 系统运行 41
9.1 系统运行环境 41
9.2 系统使用步骤 42
10 系统测试 42
10.1 测试环境与测试条件 42
10.2 系统运行情况 42
10.3 系统评价 42
11 总结 44
参 考 文 献 45
致 谢 46
1 引言
1.1 开放背景
随着互联网的发展与科技的高速进步,人们的消费方式也在悄然发生着改变。电子商务是指以信息网络技术,以商品交换为中心的商务活动。电子商务是一种新兴的、处于高速发展中的现代商务模式,从1995年发展至今,显示了其巨大的商业价值。从亚马逊网站的火热,到2014年淘宝网“双十一”的惊人首日交易额,我们有理由相信,电子商务将逐渐成为现代商务的主流方式,也将成为数字化社会的基础。
电子商务的发展将逐步改变我们的生活方式,由原来的面对面谈判、纸上合约与商务活动沟通逐渐演变成由网络支配的一系列活动。减少了时间、空间和认知条件上的限制,人们的生活和工作将变得更加方便、灵活和自由。特别是在交流、交易享受服务等方面将有很大的变化。正因为电子商务的发展,使得网上购物变得流行。
网上商城作为一种新兴的商业模式,有其独特的便利性,其优点包括:
1) 扩大商业机会。电子商务为企业提供了突破空间时间的限制,提供了直接面向全球市场的捷径。通过电子商务可大大扩展潜在客户,发掘市场。
2) 提高内部效率。减少中间环节。商家和消费者之间直接交流,方便企业获取客户反馈信息,使企业具备快速的市场反应,能及时了解到消费者的消费需求和消费习惯。即缩短了新品上市周期,又能针对其个性化需求快速调整新品的开发和生产。
电子商务随着其应用领域的不断扩大和信息服务方式的不断创新,电子商务的类型层出不穷,主要可分为以下四种类型:
1) 企业与消费者之间的电子电子商务(Business to Customer,即B2C)
2) 企业与企业之间的电子商务(Business to Business,即B2B)
3) 消费者与消费者之间的电子商务(Customer to Customer,即C2C)
4) 线下商务与互联网之间的电子商务(Online to Offline即O2O)
电子商城现今已成为趋势,随着物联网的发展,更加带动了电子商务的发展。电子商城以其随时购物的特点,依据客户各种需求结合当前市场现状以及消费者的消费观念来建设。电子商务系统可以集成企业信息系统内外资源构建一个可伸缩的、互动强,良好的业务流程企业信息网络。业务电子商务系统可以支持全球商业和商业之间,方便和快速的业务和客户之间的互动。与软件技术的快速发展和互联网的J2EE技术体系,为代表的分布式对象技术为企业构建一个新的基于互联网的电子商务平台提供了技术支持。J2EE规范定义了一个分布式企业简化开发和部署基于组件的应用模型,它提供了一个多层分布式应用程序模型和一系列的开发人员构建可伸缩的技术规格,为灵活性,易于维护的电子商务系统提供了良好的机制。框架可以集成企业各种业务系统,和无缝的系统之间的数据交换,提高企业信息系统的环境。基于流行的Struts框架开发的项目可以提高效率和可重用性,J2EE平台开发和部署电子商务应用程序框架提供了一个完整的应用程序架构。有一个业务电子商务平台系统是基于J2EE框架结构用于每个各自的组件实现的功能层在一起形成一个可伸缩的、全功能的电子商务平台系统框架,结构,低耦合程度,易于维护和扩展方便[1]。
1.2 开发的意义
购物是人们日常生活中必不可少的。随着中国人均GDP收入的提高,购物消费领域逐渐呈现出两大特点:第一,购物流通市场总量迅速扩大;第二,市场份额向高档名优商品集中。宠物市场的新趋势必然对传统的宠物销售模式产生深刻影响。目前,传统的经销商代理、批发、分销仍是主要销售渠道,但随着终端的强势崛起已经开始日薄西山。直接运作市场进行深度分销、渠道下沉、终端拦截成为大部分厂商现实的选择,但高昂的运营成本和递减的边际效率也让不少厂商感到无奈。针对传统宠物流通渠道的现状,提出以B2C现代电子商务激活传统电子产品流通行业的设想[1]。由此可见,改变电子产品销售方式是形势所趋。当我们走在繁华的大街上,几乎到处都可以看到宠物的身影。
为了让消费者网上购物过程变得简单、方便、安全、快捷,网上商城购物成了一种新型而热门的购物方式。网上商城购物系统是一种具有交互功能的商业信息系统,它在网络上建立一个虚拟的购物商城,使购物过程变得轻松、快捷、方便。
1.3 课题内容
通过前期对购物销售的调研和学习,熟悉了购物销售的具体流程,查阅资料、梳理思路,对这一行业有了一定的了解。
本系统按照销售工作流程,实现的购物的在线交易一体化。客户可以在网站上注册、登录、购买并实时了解购物价格变动等功能,商家可以对客户订单处理、发布广告,并可以对购物上架下架等操作。通过在网络上搭建虚拟商城,使得购物过程变得轻松、快捷、方便。
2 技术说明
2.1 Java语言概述
Java是一个广泛使用的网络编程语言,是一种新的计算概念。首先,作为一种程序设计语言,它简单、面向对象、不依赖于机器的结构、具有可移植性、鲁棒性、安全性、并且提供了并发的机制、具有很高性能。其次,它最大限度地利用了网络,Java应用程序可在网络上传输但是不受CPU和环境远近的限制。另外,Java还提供了丰富的类库机制,方便编程人员建立自己的系统[3]。
Java是一种面向对象的语言。面向对象技术模拟真实世界的方式倡导思维,数据绑定到程序的运行方式,在现代大型软件开发的要求和趋势是逐渐取代了传统的面向过程的程序设计技术,成为计算机应用开发领域的主要趋势。同时,Java是一种跨语言平台。在单机时代,通过共享内存变量之间的交换程序。在互联网时代,程序运行在主机上的不同网络协议的消息格式(二进制字符流)交换,语义信息交换程序由双方保持。诚然,现在在异构网络中不同的计算机时代,如果你想运行一个程序,编程语言必须是跨平台的。具有高度的可移植性,Java,安全性高,大多数程序员很受欢迎。
Java语言有以下特点:
1) 面向对象
Java是一个纯面向对象的语言。Java程序的面向对象设计思想不同于C语言的编程过程的基础。面向对象的程序设计,以更好地模拟真实世界的环境和可重用性的能力。这将解决实际问题转化为一系列程序独立的对象,这些对象可以互相交流。一个对象包含信息、访问和更改信息对应的实体方面应。通过这样的设计,所设计的程序更完善,扩展,维护和重用。
2) 分布式
Java是一种分布式的语言。基于传统的C/S(客户端/服务器)架构的程序,采用了客户端发出服务请求到服务器,然后执行方式根据适当的程序和结果的要求,所以服务器负载较重。Java虚拟机使用Java架构,很多工作可以由终端,直接处理,因此,可以将数据分布式处理。此外,Java类库的使用,大大降低了网络传输的负载。
3) 高效解释执行
Java是高效解释执行的语言。高级语言程序必须转换成机器语言程序,在计算机上执行。然而,机器语言不同的计算机系统采用的不同。为了实现“一次编写,到处运行”的目标,Java程序在编译的时候不直接转化为特定的机器语言程序,但编译成系统独立的字节代码(字节码),由Java虚拟机(Java虚拟机,虚拟机)来实现。JVM使Java程序可以“一次编写,到处运行”。任何系统的Java虚拟机是唯一可以执行Java程序安装后。JVM可以直接执行在任何机器上,提供字节码运行环境。当JVM解释Java程序,Java编译器(Just In Time,JIT)将被翻译成目标平台的字节码对应的机器语言指令代码。
4) 健壮性
Java是一个强大的语言。Java提供了垃圾回收器自动收集未使用的内存占用的对象。Java提供了一种面向对象的异常处理机制来解决异常问题处理。通过类型检查,空指针检测数组边界检测方法在应用程序开发的早期发现程序错误。
5) 安全
Java是一种安全的网络编程语言。因为Java是经常使用的一个网络环境,因此,Java提供的一些安全机制来防止恶意代码的攻击,保证系统的安全性。Java是分层次的安全机制,包括Java语言本身的安全设计和严格的检验,编译,运行一个检查和安全检查网络接口层。Java是强类型语言,每种类型都需要一个严格的定义。首先,每个变量的表达式的类型。其次,所有的值传递,或直接,或通过一个方法调用参数传递类型兼容,应进行的检查。有些语言没有自动数据类型的一致性检查,或冲突化解机制的类型。Java编译器为所有类型的表达式和参数应进行相容性检查以确保类型是兼容的。不匹配任何类型的错误,在编译完成,所有的错误必须纠正。
6) 结构中立
Java是结构中立的语言。Java被设计为支持网络应用。一般来说,网络是由许多不同的系统构成,包括各种CPU和操作系统。为了让Java应用程序执行从网络上的任何地方,包括编译器会产生一个结构中立的目标文件格式,Java的字节码文件。Java字节码可以在任何平台上运行Java虚拟机的安装。
7) 可移植
Java开发的程序具有可移植性。结构中立性是保证程序的可移植性,此外,还与许多其他条件。Java的可移植性方面做了大量工作。Java语言规范没有任何“执行的内容”,解决所有可能影响Java的可移植性问题。
8) 多线程
Java语言支持多线程。多线程应用程序设计。线程从出来的大,小的,独立的过程划分,使它能够执行多个任务同时进行的一个小程序。的好处,多线程带来的交互性能和实时控制性能更好。但是,使用传统的编程语言(如C / C + +)是很难实现的多线程。Java实现的多线程技术提供的方法容易实现多线程,并具有高度复杂的同步机制。
9) 动态
Java语言具有动态特性。Java动态特性是其面向对象设计方法的扩展,允许程序动态加载所需的类在运行过程中,这是C++面向对象程序设计无法实现。C++程序设计过程中,每当在类中增加一个实例变量或一种成员函数后,涉及到所有的子类都必须重新编译。否则,程序会产生一个错误。Java采取如下措施来解决此类问题。Java运行时模块建立模块和更直接的使用面向对象的设计系统之间的连接。程序库可以自由地增加新方法和实例变量,而不会对它们的用户产生任何影响。
2.2 JSP概述
JSP(Java Server Pages) 是Sun Microsystem 公司倡导的许多公司参与一起建立的一种基于Java Servlet 的动态的网页program技术。在传统的网页HTML 文件中加入Java 代码(Scriptlet) 和JSP 标记(tag) ,两者有机结构成了JSP 。在JSP 页面上,用户可以由自己的不同要求而传递不同的请求,从而获取相应不同的回应,从而实现了网页的动态性和交互性[4]。JSP是基于JAVA的技术,它具备了JAVA语言所有的优点,同时拥有强大的服务器端动态网页技术功能,目前是在中国,乃至全球最流行、应用最广泛的软件开发技术之一。近几年,JSP技术已经成为电子商务网站开发语言的事实标准。在同一个JSP页面上,用户可以根据自己的需要而发送不同的请求, 因此得到一个动态的、交互式的web页面。
2.2.1 JSP特点
1) 将内容的产生和显示进行分离。使用JSP技术,Web页面开发人员可以使用HTML或XML标识来设计和格式化最终的页面。使用JSP标识或者小脚本来生成页面上的动态内容。逻辑产生的内容封装在JavaBean组件的标识,并绑在小脚本中,所有的脚本在服务器端。如果核心逻辑被封装在标识和JavaBean中,然后其他人,如Web管理人员和页面设计者,能够编辑和使用JSP页面,而不影响内容的产生。在Server端,生成所请求的内容正式因为JSP引擎可以识别JSP标志,(例如,通过访问JavaBeans组件,使用JDBC技术访问数据库),并在HTML表单的结果(或XML)页面发送回浏览器。
2) 提倡可复用的组件。大部分JSP页面依托可复用的组件和跨平台特性(如:JavaBean或EJB)来执行更复杂的处理的应用要求。编程人员能够分享和互换组件来执行常见的操作,或做更多的这些组件是由一个用户或用户组。基于组件加快全面发展的过程,使各种组织已平衡优化他们现有的技能和发展努力的结果。
3) 许多功能封装在内,使用方便,JSP由动态内容生成后满足 XML标记相关的需求。JSP标准标识访问和实例化可以JavaBean组件,设置或检索组件的属性,用其他的方法来下载程序,并执行不易编程和费时的功能。
4) 通过自定义标签库的开发,JSP技术可以说是非常具有扩展行。在未来,第三方编程人员和其他人员可以创建自己的常用功能标识库。这就使得开发Web页面的人员可以使用习惯的插件和相同的标签库执行特定功能的工作。
5) JSP技术很容易整合到各种应用架构,利用现有的组件和技术,并扩展到支持企业级的分布式应用。其因吸取Java技术家族,以及J2EE的一个成员,JSP技术可以建设应用程序的相对复杂的网络应用。
6) 基于Java语言编写的内置脚本语言JSP,因此JSP页面都能被编译成Servlet代码,可以说JSP页面兼具了Java语言的所有优点,包括健壮性和安全性。
7) JSP作为Java平台的一部分,JSP的特点和是Java语言一样,都具有“一次编写,到处执行”的特点。现在有着很多的生产商的产品设计添加了JSP支持,用户可以根据自己的需求选择服务器和服务,修改工具或服务器并不会影响用户体验。
2.3 JavaScript
JavaScript最初由网景公司的Brendan Eich设计,是一种基于对象和事件驱动并具有相对安全性的客户端脚本语言。它是一种被广泛使用的客户端Web开发的脚本语言,或者称为描述语言。JavaScript可以为HTML页面增加动态功能,像用户响应的等各种操作,可以进行客户端数据验证,是一种性能良好的跨平台的脚本语言[5]。它不仅具有动态性,还支持弱类型,并且是基于原型的语言,并且内置支持类。JavaScript也可以用于其他场合,如服务器端编程。运行用Javascript编写的程序需要能支持Javascript语言的浏览器。一个完整的JavaScript应当包括以下三个部分:ECMAScript,基于文档的对象模型,字节顺序标记。随着Internet的出现,Web编程逐渐流行,Web编程技术快速进步。常见的Web开发技术有HTML语言、ASP语言、PHP语言、VBScript语言、JavaScript语言、Java语言,CGI语言等,编程人用通过使用这些技术可以编写出运行灵活的互联网程序。
2.3.1 JavaScript语言特性
1) 动态性。是指在一个Javascript对象中,要为一个属性赋值,我们不必事先创建一个字段,只需要在使用的时候做赋值操作即可。
2) 弱类型。与Java,C/C++不同,Javascript是弱类型的,它的数据类型无需在声明时指定,解释器会根据上下文对变量进行实例化。
3) 解释与编译。可以随时修改代码,无需编译,刷新页面即可重新解释,可以实时看到程序的结果,但是由于每一次都需要解释,程序的开销较大;而编译型的语言则仅需要编译一次,每次都运行编译过的代码即可,但是又丧失了动态性。
3 开发工具
3. 1 Eclipse
Eclipse是著名的跨平台的自由集成开发环境(IDE),在软件开发领域的应用十分广泛。因为的它的开源,这对开发插件的框架和环境,编写、集成和使用插件提供了便利性。Eclipse开发平台不仅可以用于管理多种开发方式,其中包括代码测试、分析性能及程序优化等,而且还可以集成来自多种第三方应用程序开发工具[6]。 Eclipse原本只是一个框架平台,提供插件开发环境(Plug-in Development Environment,PDE),这部分主要是要扩展Eclipse的软件编程人员,它可以让你建立与Eclipse环境的工具,它支持插件,使得Eclipse拥有许多其他功能。相对固定的IDE软件很难具有的灵活性无缝集成。因为一切都在Eclipse是一个插件为Eclipse提供了一个插件,为用户提供一致和统一的集成开发环境,使开发开发人员都能发挥同等作用。
3. 2 Tomcat服务器
Apache Tomcat是一个基于Java的web和开放源码服务程序,应用于主机基于Java的应用程序。它首先是Jakarta Tomcat开发。由于需求的增加,它作为单独的项目,称为Apache Tomcat由阿帕奇软件基金会支持。它最初是由詹姆斯•邓肯•戴维森,软件架构师和太阳微系统公司开发的。这一项目打开源,发挥了关键的作用,这一项目从太阳微系统公司向阿帕奇软件基金会捐出。Tomcat实现Java Servlet和JavaServer页面(JSP)规格从太阳微系统公司,并提供"纯Java"HTTP web服务器环境的Java代码运行[7]。
3. 3 MySql数据库
SQL是世界上使用最广泛的和标准化的数据库语言。MySQL是一个客户端/服务器结构的程序。由一个服务器守护程序mysqld和多种的客户程序和库组成。 SQL是一种标准化语言,对数据存储、更新来说非常容易。目前MySQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。MySQL是一个广受Linux社区人们喜爱的半商业的数据库。其经济性受到相当多用户的青睐,并且凭借其在存储过程的优越性能使得其实用性也远超其他数据库模式,占据很大优势[8]。
3.3.1 MySql特点
1. 使用C和C++编写,并使用了多种编译器进行测试,保证源代码的可移植性。
2. 支持AIX、FreeBSD、HP-UX、Linux、Mac OS、Novell Netware、OpenBSD、OS/2 Wrap、Solaris、Windows等多种操作系统。
3. 为多种编程语言提供了API。这些编程语言包括C、C++、Eiffel、Java、Perl、PHP、Python、Ruby和Tcl等。
4. 支持多线程,充分利用CPU资源。
5. 优化的SQL查询算法,有效地提高查询速度。
6. 既能够作为一个单独的应用程序应用在客户端服务器网络环境中,也能够作为一个库而嵌入到其他的软件中提供多语言支持,常见的编码如中文的GB 2312、BIG5,日文的Shift_JIS等都可以用作数据表名和数据列名。
7. 提供TCP/IP、ODBC和JDBC等多种数据库连接途径。
8. 提供用于管理、检查、优化数据库操作的管理工具
系统数据诸如用户信息,购物的品种价格,都需要进行存储。因此选择数据存储方式十分关键。在数据库字段命名、配置时,应选择相应规则。在建表过程中应该避免存在的多值字段和多型字段,以确保数据库的数据完整性。对于此类字段的处理要遵循一定方法。在建表后最好引入数据库版本控制,避免在建表过程中出现的不当处理的问题[9]。
信息时代用户信息安全是每个用过所关心的,因此数据的安全在数据处理过程中有着十分巨大的影响。计算机数据的重要性也使数据的价值已经远远超出了纯粹的网络技术意义。计算机数据存储的安全问题、敏感数据的防窃取和防篡改问题越来越引起人们的重视。数据信息的安全性将是信息产业的重中之重[10]。
4 系统分析
4.1 系统可行性分析
可行性分析的目的在于使用最小的成本在最短的时间内发现问题,项目所需的能解决的。实践是检验真理的唯一途径。以下几点应该开始的可行性分析。
4.1.1 社会可行性
目前购物销售市场主要集中在经销销售,市场占有率高,利润低。本系统在一定层面上起到开拓市场的作用,有利用挖掘潜在客户,同时节约成本,适合中小型商家使用。
4.1.2 经济可行性
随着互联网的发展,推动了社会的进步,反过来社会的高速进步,也对互联网技术起到推动作用。本系统使用开源软件进行开发,无开发费用。本系统若是上线,考虑到服务器价格并不高,可以选择租用服务器,大约600元一个月,维护费用低廉。
4.1.3 技术可行性
在系统结构设计方面,目前主流的有C/S和B/C结构。C/S结构下的软件具有强壮的数据操纵和事务处理能力,以及数据的安全性和完整性约束,B/S结构下的软件具有分布性强、维护方便、共享性强、升级方便的特性,在开发管理信息系统的过程中,根据系统的安全要求、操作响应速度、软件维护量来选择系统的架构[11]。C/S结构通过将任务合理分配到Client和Server端,降低了系统和通讯开销,可以充分利用两端硬件环境的优势;B/S结构主要事务逻辑在服务端实现,用通用浏览器来实现需要复杂专用软件才能实现的功能.在处理数据量大、数据查询灵活的地点固定的小范围内使用C/S模式;在安全性和交互性不高,地点灵活的广域范围内使用B/S模式[12]。本系统使用JAVA语言与JSP技术,基于B/S结构,使用MySql数据库存储数据。
4.1.4 操作可行性
本系统是Web项目,面向的用户对象只需懂得基本的电脑操作即可。
因此从以上几方面来看,本系统开发完全具有可行性。
5 需求分析
5.1 功能需求分析
通过走访、交流、查阅资料等方式,对网上购物有了一定的了解。本系统设计为前台页面和后台管理。
前台方面,面向客户,实现客户登陆网站浏览商品、注册网站购买商品等功能。本系统前台分为以下模块:
登录注册:用户注册登陆网站实现购物浏览、购买;
公告:展示网站动态,播放最新信息;
商品展示:展示购物的信息;
信息检索:通过关键字对购物进行检索;
购物车:用户将选购的购物添加到购物车;
个人中心:用户查看或者修改个人信息及密码,查看订单记录。
后台方面,管理员对商品进行上架下架处理、发布公告、处理订单。因此本系统后台分为以下模块:
用户管理:管理员对用户信息进行维护;
管理员维护:系统管理员对管理员进行维护;
订单管理:管理员对用户订单进行处理;
商品管理:管理员对购物上架下架进行处理;
公告维护:管理员发布网站公告。
5.2 业务流程分析
客户进入网站首页,进行注册/登陆操作,实现浏览购物,购买,留言。或者查看/修改个人信息,修改个人密码,查看订单。
前台管理端流程如图5.1。
图5.1 前台业务流程图
管理员登陆网站后台,查看最新订单,并对订单经行处理,修改购物信息,进行购物上架下架处理,发布网站公告。
后台管理端流程如图5.2。
图5.2 后台业务流程图
5.3 数据流分析
随着软件工程在各个行业的日益深入以及软件规模的日益庞大,在软件生命周期的早期阶段对软件系统进行规模度量显得尤为重要。在需求分析阶段所建立的逻辑模型的基础上,使用E-R图来简化数据流图,并结合功能点分析的度量原理,以简化的数据流图作为度量要素,详细给出了度量简化数据流图的映射规则和度量规则,以实例验证了这些规则的使用方法,简单实用[13]。本系统中,后台管理员可对购物信息,用户订单信息,用户信息,公告信息,管理员信息的各种信息进行维护。会员用户对注册登录信息、订单信息、购物信息、购物详细信息进行操作。
前台用户数据图如图5.3
图5.3 前台用户数据流图
系统顶层数据流图如图5.4
图5.4系统顶层数据流图
由于论文的篇幅限制不能一一列举数据流图,只给出了部分数据流图,其他的数据流图基本一致。
6 系统设计
6.1 系统功能设计
综合系统的需求分析,本系统模块设计如下:
1、用户登录注册模块:用户登录注册、个人资料查询修改;
2、购物展示模块:用户查看购物信息;管理员添加购物展示;
3、购物车与订单模块:用户添加购物车、查看购物车、修改购物车;
4、用户管理模块:管理员查看用户信息、维护用户;
5、购物管理模块:管理员添加删除购物、修改购物信息;
6、公告模块:用户查看公告;管理员发布修改公告;
6.2 系统数据结构设计
6.2.1 系统概念结构设计
根据以上对数据库的需求分析,并结合系统概念模型的特点及建立方法,建立E-R模型图。
1. 用户实体图,如图6.1所示。
图6.1用户实体关系模型
2. 购物大类别实体图,如图6.2所示。
图6.2 购物大类别实体关系模型
3. 购物小类别实体图,如图6.3所示。
图6.3 购物小类别实体关系模型
4. 购物实体图,如图6.4所示。
图6.4 商品实体关系模型
5. 订单实体图,如图6.5所示。
图6.5 订单实体关系模型
6. 订单项实体图,如图6.6所示。
图6.6 订单项实体关系模型
7. 留言实体图,如图6.7所示。
图6.7 留言实体关系模型
8. 留言实体图,如图6.8所示。
图6.8 留言实体关系模型
9. 新闻实体图,如图6.9所示。
图6.9 新闻实体关系模型
10. 公告实体图,如图6.10所示。
图6.10 公告实体关系模型
11. 标签实体图,如图6.11所示。
图6.11 标签实体关系模型
6.2.2 系统逻辑结构设计
数据库设计的好坏,直接影响到后期后台代码和业务逻辑的编写。因此根据E-R模型,数据表的设计如下:
1. 用户信息表用于存放用户的信息,如表6.1所示。
表6.1 用户信息表
列名 数据类型 长度 允许空 是否主键 说明
id Int 11 否 是 用户编号
address varchar 200 是 否 用户地址
brithday datetime 是 否 用户出生日期
dentityCode varchar 20 是 否 用户密码
email varchar 20 是 否 用户邮箱
mobile varchar 20 是 否 用户手机
password varchar 50 是 否 用户密码
sex varchar 5 是 否 用户性别
status int 11 否 否 用户类型
trueName varchar 20 是 否 用户真名
userName varchar 20 是 否 用户名
2. 购物大类别信息表用于存放购物大类别,如表6.2所示。
表6.2 购物大类别信息表
列名 数据类型 长度 允许空 是否主键 说明
id Int 11 否 是 大类别编号
name varchar 50 是 否 大类别名称
remarks varchar 255 是 否 大类别介绍
3. 购物小类别表用来存放购物小类别,如表6.3所示。
表6.3 购物小类别表
列名 数据类型 长度 允许空 是否主键 说明
id Int 10 否 是 小类别编号
name varchar 20 是 否 小类别名称
remarks Bit 是 否 小热点介绍
bigTypsId Int 10 是 否 所属大类别
4. 购物信息表用来存放购物的基本信息,如表6.4所示。
表6.4 购物信息表
列名 数据类型 长度 允许空 是否主键 说明
id Int 11 否 是 商品编号
description varchar 2000 是 否 商品描述
hot decimal 11 是 否 是否热卖
hotTime datetime 是 否 时间
name varchar 50 是 否 名称
price Int 11 是 否 价格
proPic varchar 255 是 否 图片
specialPrice Int 11 是 否 特价
specialPriceTime datetime 是 否 特价时间
bigTypeId Int 11 否 否 所属大类别
smallTypeId Int 11 否 否 所属小类别
stock Int 11 否 否 库存
5. 订单信息表用于存放订单基本信息,如表6.5所示。
表6.5 订单信息表
列名 数据类型 长度 允许空 是否主键 说明
id Int 11 否 是 订单编号
cost float 否 否 订单总价
creatTime datetime 20 是 否 下单时间
orderNo varchar 255 是 否 订单号
status Int 11 否 否 订单状态
userId Int 11 是 否 下单人
6. 订单项信息表用来存放订单项的基本信息,如图6.6所示。
表6.6 订单项信息表
列名 数据类型 长度 允许空 是否主键 说明
id Int 11 否 是 订单项编号
num Int 11 否 否 购买商品的数量
orderId Int 11 是 否 订单编号
productId Int 11 是 否 购物编号
7. 标签表用来存放标签的基本信息,如表6.7所示。
表6.7 标签信息表
列名 数据类型 长度 允许空 是否主键 说明
id Int 11 否 是 标签编号
name varchar 50 是 否 标签名称
url varchar 100 是 否 链接
8. 留言表用来存放留言的基本信息,如图6.8所示。
表6.8 留言信息表
列名 数据类型 长度 允许空 是否主键 说明
id Int 11 否 是 留言编号
content varchar 1000 是 否 留言内容
createTime datetime 是 否 留言时间
nickName varchar 30 是 否 昵称
replyContent varchar 100 是 否 回复内容
replyTime datetime 是 否 回复时间
9. 新闻表用来存放新闻的基本信息,如图6.9所示。
表6.9 新闻信息表
列名 数据类型 长度 允许空 是否主键 说明
id Int 11 否 是 新闻编号
content text 是 否 新闻内容
createTime datetime 是 否 创建时间
title varchar 50 是 否 标题
10. 公告表用来存放公告的基本信息,如图6.10所示。
表6.10 公告信息表
列名 数据类型 长度 允许空 是否主键 说明
id Int 11 否 是 公告编号
content text 是 否 公告内容
createTime datetime 是 否 创建时间
title varchar 50 是 否 标题
7 系统前台功能实现
7.1 前台页面设计
网站首页是整个网站系统的灵活所在,好的页面会吸引用户,增加网站的访问量,这对于本购物销售系统亦是如此。网站首页设计如图7.1所示:
图7.1 网站首页展示
7.2 前台用户注册登陆模块
前台用户非登陆状态下可以浏览购物信息,商城公告,而不能进行添加购物到购物车。当用户选择添加购物到购物车后,系统会提示用户进行登录,才能进行下一步操作。当用户没非网站会员时,需注册网站会员才能进行网上购物。用户输入的信息使用Form表单通过POST方式发送请求。Struts框架通过ServletActionContext类来获取用户登陆信息,通过用数据库重的用户信息进行比对,这样做有效的防止了用户非法登陆。用户登录时,输入错误信息,页面会对用户进行错误提示。用户登陆后,用户信息保存在Session中,用于在用户登陆后也蛮现实用户信息。登陆页面如图7.2所示:
图7.2 前台用户登陆界面
前台用户登陆相关实现代码:
1.用户登陆信息有效性验证usersLogin.jsp
2.验证用户登陆信息-UserAction.java
public String login()throws Exception{
HttpSession session=request.getSession();
User currentUser=userService.login(user);
if(!imageCode.equals(session.getAttribute("sRand"))){
error="验证码错误!";
if(user.getStatus()==2){
return "adminError";
}else{
return ERROR;
}
}else if(currentUser==null){
error="用户名或密码错误!";
if(user.getStatus()==2){
return "adminError";
}else{
return ERROR;
}
}else{
session.setAttribute("currentUser", currentUser);
}
if(user.getStatus()==2){
return "adminLogin";
}else{
return "login";
}
}
本系统设定只有用户才可以进行购买购物,因此用户需要注册网站会员。前台用户注册页面如图7.3所示:
图7.3 前台用户注册界面
前台用户注册相关实现代码:
1.用户注册信息有效性验证register.jsp
2.用户注册后信息存储到数据库UsersAction.java
public String register()throws Exception{
userService.saveUser(user);
return "register_success";
}
7.3 前台用户维护模块
前台用户登陆网站后,可以进行查看修改个人信息、订单信息,修改密码。如图7.4所示:
图7.4 前台用户信息维护界面
7.4 前台购物车与订单模块
用户登录本系统后,可以添加购物到购物车。如图7.5所示:
图7.5 购买购物界面
用户添加购物车后可以对购物车订单进行操作如删除订单、清空购物车、再次添加购物到购物车等操作。如图7.6所示
图7.6 购物车界面
订单信息确认无误后,点击【结算】,完成后可在【我的王朝】中查看订单情况。
添加购物车流程图如图7.7所示:
图7.7 添加购物车流程图
购物车可订单模块相关代码实现:
添加购物到购物车OrderAction.java
public String save()throws Exception{
HttpSession session=request.getSession();
Order order=new Order();
User currentUsre=(User)session.getAttribute("currentUser");
order.setUser(currentUsre);
order.setCreateTime(new Date());
order.setOrderNo(DateUtil.getCurrentDateStr());
order.setStatus(1);
ShoppingCart shoppingCart=(ShoppingCart) session.getAttribute("shoppingCart");
List
float cost=0;
List
for(ShoppingCartItem shoppingCartItem:shoppingCartItemList){
Product product=shoppingCartItem.getProduct();
OrderProduct orderProduct=new OrderProduct();
orderProduct.setNum(shoppingCartItem.getCount());
orderProduct.setOrder(order);
orderProduct.setProduct(product);
cost+=product.getPrice()*shoppingCartItem.getCount();
orderProductList.add(orderProduct);
}
order.setOrderProductList(orderProductList);
order.setCost(cost);
orderService.saveOrder(order);
navCode=NavUtil.genNavCode("购物");
mainPage="shopping/shopping-result.jsp";
session.removeAttribute("shoppingCart");
return SUCCESS;
}
8 系统后台功能实现
管理员可登录系统后台,可查看维护用户信息、查看维护订单信息、查看维护管理员信息、还可对购物类别与购物进行维护,随时发布网站公告新闻等功能。后台登陆界面如图8.1所示。
图8.1 系统后台界面
8.1 商品类别管理模块
系统管理员可对购物类别进行查看修改操作。如图8.2所示:
图8.2 购物类别管理界面
相关代码实现:productBigTypeManage.jsp
function saveProductBigType(){
$("#fm").form("submit",{
url:url,
onSubmit:function(){
return $(this).form("validate");
},
success:function(result){
var result=eval('('+result+')');
if(result.success){
$.messager.alert("系统提示","保存成功");
resetValue();
$("#dlg").dialog("close");
$("#dg").datagrid("reload");
}else{
$.messager.alert("系统提示","保存失败");
return;
}
}
});
}
8.2 商品管理模块
此模块可实现管理员添加购物,查看修改购物信息功能。如图8.3所示:
图8.3 购物管理界面
模块关键代码实现:
function saveProduct(){
$("#fm").form("submit",{
url:url,
onSubmit:function(){
if($('#bName').combobox("getValue")==""){
$.messager.alert("系统提示","请选择商品大类");
return false; }
if($('#sName').combobox("getValue")==""){
$.messager.alert("系统提示","请选择商品小类");
return false; }
return $(this).form("validate");},
success:function(result){
var result=eval('('+result+')');
if(result.success){
$.messager.alert("系统提示","保存成功");
resetValue();
$("#dlg").dialog("close");
$("#dg").datagrid("reload");
}else{
$.messager.alert("系统提示","保存失败");
return; }
}});}
8.3 用户管理模块
此模块管理员可对用户进行管理。如图8.4所示:
图8.4 用户管理界面
此模块关键代码:userManage.jsp
var url;
function searchUser(){
$("#dg").datagrid('load',{
"s_user.userName":$("#s_userName").val()
});
}
function deleteUser(){
var selectedRows=$("#dg").datagrid('getSelections');
if(selectedRows.length==0){
$.messager.alert("系统提示","请选择要删除的数据!");
return;
}
var strIds=[];
for(var i=0;i
}
var ids=strIds.join(",");
$.messager.confirm("系统提示","您确认要删除这"+selectedRows.length+"条数据吗?",function(r){
if(r){
$.post("user_deleteUser.action",{ids:ids},function(result){
if(result.success){
$.messager.alert("系统提示","数据已成功删除!");
$("#dg").datagrid("reload");
}else{
$.messager.alert("系统提示","数据删除失败!");
}
},"json");
}
});
}
function openUserAddDialog(){
$("#dlg").dialog("open").dialog("setTitle","添加用户信息");
url="user_saveUser.action";
}
function saveUser(){
$("#fm").form("submit",{
url:url,
onSubmit:function(){
if($("#sex").combobox("getValue")==""){
$.messager.alert("系统提示","请选择性别");
return false;
}
return $(this).form("validate");
},
success:function(result){
var result=eval('('+result+')');
if(result.success){
$.messager.alert("系统提示","保存成功");
resetValue();
$("#dlg").dialog("close");
$("#dg").datagrid("reload");
}else{
$.messager.alert("系统提示","保存失败");
return;
}
}
});
}
function openUserModifyDialog(){
var selectedRows=$("#dg").datagrid('getSelections');
if(selectedRows.length!=1){
$.messager.alert("系统提示","请选择一条要编辑的数据!");
return;
}
var row=selectedRows[0];
$("#dlg").dialog("open").dialog("setTitle","编辑用户信息");
$("#trueName").val(row.trueName);
$("#userName").val(row.userName);
$("#password").val(row.password);
$("#sex").combobox("setValue",row.sex);
$("#birthday").datebox("setValue",row.birthday);
$("#dentityCode").val(row.dentityCode);
$("#email").val(row.email);
$("#mobile").val(row.mobile);
$("#address").val(row.address);
url="user_saveUser.action?user.id="+row.id;
}
function resetValue(){
$("#trueName").val("");
$("#userName").val("");
$("#password").val("");
$("#sex").combobox("setValue","");
$("#birthday").datebox("setValue","");
$("#dentityCode").val("");
$("#email").val("");
$("#mobile").val("");
$("#address").val("");
}
function closeUserDialog(){
$("#dlg").dialog("close");
resetValue();
}
8.4 订单管理模块
此模块便于管理员对用户订单进行查看和处理。如图8.5所示:
图8.5 订单管理界面
相关代码实现与其他模块类似,这里就不再阐述了。
9 系统运行
9.1 系统运行环境
硬件配置:2.4G以上处理器,4G以上内存,250G以上硬盘空间;
操作系统:Windows XP、Windows 7或更高版本;
数据库:MySQL;
Web服务器:Tomcat 7.0;
JDK:1.7.0;
S2SH:Struts2、Spring4.0、Hibernate4;
后台框架: BootStrap3 、easyui;
开发工具:Eclipse 3.7以上,MySQL,EditPlus。
9.2 系统使用步骤
1、在Windows 环境中MySQL 5.1数据库和Tomcat 7.0服务器;
2、在浏览器地址栏输入:http://localhost:8080/Ebuy/,进入王朝购物商城首页,进行注册登陆操作,登陆完成后,用户可以在商城购买购物;
3、管理员在浏览器登陆http://localhost:8080/Ebuy/admin/alogin.jsp,对商城系统进行维护。
10 系统测试
随着日益扩张的软件系统规模,和逐渐复杂的软件需求,对软件质量的要求也不断增加。但是,面对现实中不尽如人意的软件系统质量,因此采取有效的软件测试是保证软件质量、提高软件可靠性的重要手段。为了确保软件产品的提交能够满足客户的需求和使用中的可靠性,必须对所开发的软件产品进行系统而全面的测试 [14]。本系统开发面向的对象主要网上用户,所以对系统采用功能验证和数据验证,即黑盒测试和白盒测试。测试功能使用多个测试用例,通过测试查看功能处理是否正确,数据验证则验证数据处理结果与数据库数据进行比对。
10.1 测试环境与测试条件
处理器:Inter(R) Core (TM)2 Duo T5750
内存:2GB
硬盘:250G
操作系统:Windows Win7
数据库:MySQL
10.2 系统运行情况
通过对系统的全面测试结果显示本系统运行正常,数据处理准确,以达到系统设计之初的目标,可以投入使用。
10.3 系统评价
像互联网的发展一样,电子商务的发展也经历过“泡沫”期,当时各种电子商务的宣传、会议、论坛、展览展示此起彼伏,媒体报道连篇累牍。这些年围绕电子商务就出现过许多设想,而现在技术也逐渐走向成熟。目前,大量的在线零售商都获得了赢利,他们希望新的技术来网上销售到一个新的水平。对于购物者来说,下一代的在线销售意味着更多的交互性,更好的视觉效果,更准确的产品信息的搜索结果[15]。本系统基于JSP实现页面实现,使用MVC模式,使用SSH框架,实现了网上购物商城的主要功能。目前该系统处在初始阶段,仍存在许多不足,将在后期进行完善。
11 总结
随着设计阶段进入尾声,系统功能基本实现。本系统将实现用户随时随地购买购物,商家的产品利用这套系统进行网上交易,而不需要在商店里等待顾客来购买商品,凭借互联网思维,为购物销售开创一个新的渠道。
本系统方便、操作简单、稳定。同时还有些不足之处,例如,页面设计不精美,代码耦合度不高,数据库优化设计不足等,设计仍需进一步完善和改进。
这次毕业设计不仅是对以往知识的补充,更是对整个开发流程的进一步熟悉,丰富了我的知识体系。这次选题很有意义,购物商城是目前流行的项目,用户多,受众广,非常具有现实意义。在设计之初,通过查阅资料,咨询老师,对课题有了充分了解。好的开端是成功的一半,通过需求分析,规划出系统所要实现的功能模块。在软件设计阶段,与老师讨论研究模块的总体设计,这对功能实现方面打下了坚实的基础。
通过这次设计,学到了很多,是对我大学四年的补充和完善,对我而言受益匪浅。