网上购物系统毕业论文
网上商城购物系统
摘 要
本网上购物系统是一个基于Internet , 采用B2C(Business to Consumers)模式,并根据现有的网上购物系统的现状而设计开发的电子商务平台。它不但可以扩大商家的规模和市场影响力,而且可以减少企业的经营成本,提高工作效率。本文首先介绍了网上购物系统的现状及开发背景,然后论述了系统的设计目标,系统需求和总体设计方案,较详细的论述了系统的详细设计和实现。最后,本文对网上购物系统进行了系统检测并提出了还需要改进的问题。
本系统主要为用户提供了会员注册,购物车管理,商品搜索,我的订单等功能,为管理员提供了供货管理,销售管理,库存管理,系统设定管理等功能。在设计方面,本系统采用B/S三层结构,同时使用JSP 技术进行动态页面的设计,从系统的安全性和代码的可重用性方面考虑,运用Java Bean对程序的关键代码进行封装。后台数据库选用SQL Sever数据库。
关键词:B2C ,B/S,JSP ,数据库,SQL Sever
Online mall shopping system
ABSTRACT
The online shopping system is one based on Internet, B2C (Business to Consumers) mode, and in accordance with the status quo of the existing online shopping system design and development of e-commerce platform. It can not only expand the business scale and market influence, and can reduce the operating costs of enterprises, improve work efficiency .This paper first introduces the status and development background of the online shopping system, and then discusses the system design objectives, system requirements and overall design, a more detailed discussion of the detailed design and implementation of the system. Finally, the online shopping system, the system detects and also need to improve.
The system is mainly to provide users with membership registration, shopping cart management, product search, my orders, and other functions, provides administrators with a supply management, sales management, inventory management, system configuration management functions. In terms of design, the system uses the B / S three-tier structure, and dynamic page design using JSP technology, from the security of the system and code reusability considerations, the use of Java Bean encapsulated the key code of the program. The back-end database selected SQL Sever database.
KEY WORDS: B2C,B/S,JSP ,DATABASE ,SQL Sever
目 录
前 言 .................................................................................................. 1
第1章 绪论 ........................................................................................ 2
1.1 课题背景 ................................................................................ 2
1.2 课题研究的意义..................................................................... 2
1.3 课题研究的方法..................................................................... 2
第2章 程序开发的技术基础............................................................. 3
2.1 HTML语言 ............................................................................. 3
2.2 JSP ........................................................................................... 4
2.3 SSH .......................................................................................... 4
2.3.1 Hibernate的工作原理................................................... 4
2.3.2 Spring的工作原理 . ....................................................... 5
2.3.3 Struts2的工作原理 ....................................................... 6
2.4 数据库原理............................................................................. 7
2.4.1 SQL语言简单介绍 ....................................................... 8
2.4.2 ADO技术介绍 .............................................................. 8
第3章 需求分析 .............................................................................. 10
3.1 系统主要工作流程图........................................................... 10
3.1.1 后台管理模块流程图................................................. 10
3.1.2 前台管理模块流程图................................................. 10
3.2 系统实现采用环境................................................................11
3.3 系统功能需求....................................................................... 12
第4章 功能的设计与实现 .............................................................. 13
4.1 系统主要设计....................................................................... 13
4.1.1 系统主要功能 ............................................................ 13
4.1.2 主要功能模块 ............................................................ 13
4.2 数据库的分析与设计........................................................... 14
4.2.1 数据库的需求分析..................................................... 14
4.2.2 数据库的结构设计..................................................... 15
4.3 系统主要功能实现............................................................... 18
4.3.1 注册页面的实现......................................................... 18
4.3.2 登录界面的实现......................................................... 19
4.3.3 商品分类 .................................................................... 22
4.3.4 后台管理登录页面..................................................... 26
第5章 系统测试 .............................................................................. 32
5.1 测试方法 .............................................................................. 32
5.2 预期测试结果....................................................................... 32
5.3 实际测试结果....................................................................... 32
结 论 ................................................................................................ 33
谢 辞 .................................................................................................. 34
参考文献 ............................................................................................ 35
前 言
近年来,随着Internet 的迅速崛起,互联网已日益成为收集提供信息的最佳渠道并逐步进入传统的流通领域。于是电子商务开始流行起来,越来越多的商家在网上建立起商店,向消费者展示出一种新颖的购物理念。 网上购物系统作为B2B,B2C,C2C 电子商务的前端商务平台, 在其商务活动全过程中起着举足轻重的作用。本文旨在讨论如何建设B2C 的网上购物系统。
网上购物是一种具有交互功能的商业信息系统。它向用户提供静态和动态两类信息资源。所谓静态信息是指那些比经常变动或更新的资源,如公司简介、管理规范和公司制度等等;动态信息是指随时变化的信息,如商品报价,会议安排和培训信息等。网上购物系统具有强大的交互功能,可使商家和用户方便的传递信息,完成电子贸易或EDI 交易。这种全新的交易方式实现了公司间文档与资金的无纸化交换。
在美、日等信息化程度较高的国家和地区,网络商店发展速度迅猛,美国的世界级超一流的零售商,如沃尔玛凯玛特,家庭仓储、科罗格、J.C 培尼等纷纷挤身于网络经商的行列。调查表明:美国的家庭已越来越习惯于在家中从网上购物。
在我国,网上购物从无到有也不过短短几年时间。我国第一家网上购物发生在1996年,燕莎友谊商场首次通过网上商城售出一个景泰蓝,虽然货款的支付不是在网上进行的,但这毕竟为我国零售业奏出了网上购物的先声。根据CNNIC 的统计结果,截止2004年1月中国有互联网用户7950万人,而又有40.7%以上的网民在过去的一年里有过网上购物经历,这就说明中国有网上购物的用户达是3235.7万人,并且这一数字还在以17%左右的速度增长,这说明在中国发展网上购物具有良好的群众基础,网上购物方式日趋被大家所接受。
第1章 绪论
1.1 课题背景
随着Internet 的快速发展,人们已经进入了信息时代,Web 已经对商业、工业、银行、财政、教育、政府、娱乐和信息产业及人们的工作、生活产生了深远的影响。许多传统的信息和数据库系统正在被移植到互联网上,人们获得信息的来源已经不再只是报纸、电视、广播等传统媒体,一个新的信息传送媒体逐渐被人们所青睐。范围广泛的,复杂的分布式应用正在Web 环境中出现。网上购物系统就相继的出现,给人们带来了不少的方便快捷,网上购物系统正在快速向前发展。
1.2 课题研究的意义
当今时代是一个互联网络高速发展的时代,本课题的研究意义就在于构造一个网络购物的平台,使人们在纷繁的网络中也能够找到一个购物的天地。同时也是对三年学习的一个总结和提高。
1.3 课题研究的方法
本课题的开发采用SSH +SQL Sever实现,前期主要运用所学相关知识、查询资料、学习其他优秀管理系统开发方法,结合相关要求写出需求分析;后期,进行本课题的设计与开发。课题的页面主要采用java 语言对数据库进行操作,通过对数据库的查询搜索来实现,对表单以及数据的校验采用java script脚本语言,控制页面的正确显示和对用户类型的权限设计。采用SQL 数据库,实现整个系统的操作。在整个设计过程中以需求分析为基础,写出系统实现流程及相关问题的实现方法;系统开发完成后,进行调试和运行,做好调试和试运行的相关记录。
第2章 程序开发的技术基础
2.1 HTML语言
HTML (Hyper Text Markup Language 超文本标记语言)是一种用来制作超文本文档的简单标记语言。与常见的字处理文件不同,web 页 以超文本标识语言编排格式。HTML 文件是带有特定HTML 插入标记的用以编排文档属性和格式的标准文本文件。它能独立于各种操作系统平台(如UNIX,WINDOWS 等)。自1990年以来HTML 就一直被用作World Wide Web 上的信息表示语言,用于描述Homepage 的格式设计和它与WWW 上其它Ho mepage 的连结信息。
HTML 文档(即Ho mepage 的源文件)是一个放置了标记的ASCII 文本文件,通常它带有.html 或.htm 的文件扩展名。生成一个HTML 文档主要有以下三种途径:
(1)手工直接编写(例如用你所喜爱的ASCII 文本编辑器或其它HTML 的编辑工具)。
(2)通过某些格式转换工具将现有的其它格式文档(如WORD 文档)转换成HTML 文档。
(3)由Web 服务器(或称HTTP 服务器)一方实时动态地生成。 一般的HTML 页面具有如下的结构:
〈html 〉
,,,,
这是HTML 正文部分
〈/body〉
可见在一个HTML 网页文件中,一般必须有一对〈html 〉标记作为文件的开头和结尾,在标记后是头部标记,其后是实
体标记。
2.2 JSP
JSP (JavaServer Pages) 是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。JSP 技术有点类似ASP 技术,它是在传统的网页HTML 文件(*.htm,*.html) 中插入Java 程序段(Scriptlet ) 和JSP 标记(tag ) ,从而形成JSP 文件(*.jsp)。
Web 服务器在遇到访问JSP 网页的请求时,首先执行其中的程序段,然后将执行结果连同JSP 文件中的HTML 代码一起返回给客户。插入的Java 程序段可以操作数据库、重新定向网页等,以实现建立动态网页所需要的功能。
JSP 与Java Servlet一样,是在服务器端执行的,通常返回该客户端的就是一个HTML 文本,因此客户端只要有浏览器就能浏览。
JSP 的1.0规范的最后版本是1999年9月推出的,12月又推出了1.1规范。目前较新的是JSP 1.2规范,JSP2.0规范的征求意见稿也已出台。
2.3 SSH
2.3.1 Hibernate的工作原理
1.Hibernate 是如何连接数据库
主要是通过hibernate.cfg.xml 配置文件中的配置。
在这个文件中定义了数据库进行连接所需要的信息,包括JDBC 驱动、用户名、密码、数据库方言等configuration 类借助dom4j 的XML 解析器解析设置环境,然后使用这些环境属性来生成SessionFactory 。这样这个sessionFactory 生成的sessio n 就能成功获得数据库的连接。
2.Hibernate 是如何进行数据库写操作
对数据库的写操作包括保存、更新和删除,当保存一个POJO 持久对象时,触发Hibernate 的保存事件监听器进行处理。Hibernate 通过映射文件获得对象对应数据库表名以及属性所对应的表中的列名,然后通过反射机制持久化对象(实体对象)的各个属性,最终组织成向数据库插入新对象的SQLinsert 语句。调用了sessio n.save()方法后,这个对象会标识成持
久化状态存放在session 中,对于Hibernate 来说它就是一个持久化了的对象,但这个时候Hibernate 还不会真正的执行insert 语句,当进行sessio n 的刷新同部或事务提交时,Hibernate 会把session 缓存中的所有SQL 语句一起执行,对于更新、删除操作也是采用类似的机制。
然后,提交事务并事务提交成功后,这些写操作就会被永久地保存进数据库中,所以,使用session 对数据库操作还依赖于Hibernate 事务的处理。如果设置了二级缓存,那么这些操作会被同步到二级缓存中,Hibernate 对数据库最终操作也是依赖于底层JDBC 对数据库进行。
3.Hibernate 如何从数据库中载入对象
当使用session. load()载入对象时,可以设置是否采用延迟加载,如果延迟加载,那么load 返回的对象实际是CGLIB 或javassist 返回的代理类,它的非主键属性都是空的,这对于对象集合属性很有效。Hibernate 以此来节约内存,当真正需要读取对象时,Hibernate 会先尝试从session 缓存中读取,如果session 缓存中数据不存在或者是脏数据并且配置了二级缓存,Hibernate 尝试从二级缓存中检索数据,否则Hibernate 会根据对象类型,主键等信息组织select 语句到数据中读取,再把select 结果组织成对象返回。
4.Hibernate 如何进行数据库查询操作
Hibernate 提供SQLHQLCriteria 查询方式。HQL 是其中运用最广泛的查询方式。用户使用session.createQuery()方法以一条HQL 语句为参数创建Query 查询对象后,Hibernate 会使用Anltr 库把HQL 语句解析成JDBC 可以识别的SQL 语句,如果设置了查询缓存,那么执行Query.list()时,Hibernate 会先对查询缓存进行查询,如果查询缓存不存在,再使用select 语句查询数据库。
2.3.2 Spring的工作原理
Spring 是非侵入式的:典型地,Spring 应用中的对象不依赖于Spring 的特定类。
1. 控制反转
Spring 通过一种称作控制反转(IoC )的技术促进了松耦合。当应用了IoC ,
一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。你可以认为IoC 与JNDI 相反不是对象从容器中查找依赖,而是容器在对象初始化时不等对象请求就主动将依赖传递给它。
2. 面向切面
Spring 提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务(例如审计和事务管理)进行内聚性的开发。应用对象只实现它们应该做的——完成业务逻辑——仅此而已。它们并不负责(甚至是意识)其它的系统级关注点,例如日志或事务支持。
3. 容器
Spring 包含并管理应用对象的配置和生命周期,在这个意义上它是一种容器,你可以配置你的每个bean 如何被创建——基于一个可配置原型(prototype ),你的bean 可以创建一个单独的实例或者每次需要时都生成一个新的实例——以及它们是如何相互关联的。然而,Spring 不应该被混同于传统的重量级的EJB 容器,它们经常是庞大与笨重的,难以使用。
4. 框架
Spring 可以将简单的组件配置、组合成为复杂的应用。在Spring 中,应用对象被声明式地组合,典型地是在一个XML 文件里。Spring 也提供了很多基础功能(事务管理、持久化框架集成等等),将应用逻辑的开发留给了你。 所有Spring 的这些特征使你能够编写更干净、更可管理、并且更易于测试的代码。它们也为Spring 中的各种模块提供了基础支持。
2.3.3 Struts2的工作原理
Struts2并不是一个陌生的web 框架,它是以Webwork 的设计思想为核心,吸收struts1的优点,可以说S truts2是Struts1和Webwork 结合的产物。
Struts2 的工作原理:一个请求在Struts2框架中的处理分为以下几个步骤:
(1)客户端发出一个指向servlet 容器的请求(to mcat ) (2)这个请求会经过几个过滤器,最后会到达FilterDispatcher 过滤器。
(3)过滤器FilterDispatcher 是Struts2框架的心脏,在处理用户请求时,它和请求一起相互配合访问Struts2的底层框架结构。在web 容器启动时,Struts2框架会自动加载配置文件里相关参数,并转换成相应的类。如:Configuratio nManager
、
ActionMapper
和
ObjectFactory
。
Configuratio nManager 存有配置文件的一些基本信息,ActionMapper 存有action 的配置信息。在请求过程中所有的对象(Action ,Results ,Interceptors ,等)都是通过ObjectFactory 来创建的。过滤器会通过询问ActionMapper 类来查找请求中需要用到的Action 。
(4)如果找到需要调用的Action ,过滤器会把请求的处理交给ActionProxy 。ActionProxy 为Actio n 的代理对象。Actio nProxy 通过Configuratio nManager 询问框架的配置文件,找到需要调用的Action 类。
(5)Actio nProxy 创建
一个Actio nInvocation 的实例。ActionInvocation 在Actio nProxy 层之下,它表示了Actio n 的执行状态, 或者说它控制的Actio n 的执行步骤。它持有Action 实例和所有的Interceptor 。
(6)ActionInvocatio n 实例使用命名模式来调用
1. ActionInvocation 初始化时,根据配置,加载Action 相关的所有Interceptor 。
2. 通过Actio nInvocation. invoke 方法调用Action 实现时,执行Interceptor 。在调用Action 的过程前后,涉及到相关拦截器(intercepetor ) 的调用。
(7) 一旦Actio n 执行完毕,ActionInvocatio n 负责根据struts.xml 中的配置找到对应的返回结果。返回结果通常是(但不总是,也可能是另外的一个Action 链)一个需要被表示的JSP 或者FreeMarker 的模版。在表示的过程中可以使用Struts2 框架中继承的标签。
2.4 数据库原理
2.4.1 SQL语言简单介绍
SQL 是英文Structured Query Language的缩写,意思为结构化查询语言。
SQL 语言的主要功能就是同各种数据库建立联系,进行沟通。按照ANSI (美国国家标准协会)的规定,SQL 被作为关系型数据库管理系统的标准语言。SQL 语句可以用来执行各种各样的操作,例如更新数据库中的数据,从数据库中提取数据等。
目前大多数关系数据库管理系统,如Oracle 、Sybase 、Microsoft SQL Server 、Access 都采用了SQL 语言标准。虽然很多数据库都对SQL 语句进行了再开发和扩展,但是包括Select 、Insert 、Update 、Delete 、Create 以及Drop 在内的标准SQL 命令仍然可以被用来完成几乎所有的数据库操作。 在众多的SQL 命令中,select 语句应该算是使用最频繁的。select 语句主要被用来对数据库进行查询并返回符合用户查询标准的结果数据。select 语句中位于select 关键词之后的列名用来决定哪些列将作为查询结果返回。用户可以按照自己的需要选择任意列,还可以使用通配符“*”来设定返回表格中的所有列。
select 语句中位于fro m 关键词之后的表格名称用来决定将要进行查询操作的目标表格。
除了上面所提到的运算符外,LIKE 运算符在where 条件从句中也非常重要。LIKE 运算符的功能非常强大,通过使用LIKE 运算符可以设定只选择与用户规定格式相同的记录。
2.4.2 ADO技术介绍
ADO (ActiveX Data Objects)技术是微软公司推出的数据库连接技术,运用该技术可以对各种数据库(如SQL Server、Access 、Oracle 及Sybase 等)的链接、查询、存取等操作。
ADO 对象给开发人员提供一种快捷、简单、高效的数据库访问方法,ADO 可以包含在脚本中来产生对数据库的连接,并从数据库表中读取数据,形成实际要使用的对象集合。而且,对于数据资源,提供了应用程序一级的界面。不过,ADO 并不与数据资源直接通信,而是通过称为OLE DB
的中间界面,对于数据资源(Microsoft SQL Server),OLE DB提供了系统一级的界面。
ADO 是一组优化的访问数据库的对象集,为Web 数据库开发者提供完整的网站数据库解决方案。ADO 可以与ASP 紧密结合,运行在服务器端,从而制作出功能完善的数据库网页。ADO 除了支持各种数据库平台外,它还支持VB 、VC 和Script 等多种程序设计语言。
在利用ADO 技术进行数据库网页制作的第一步就是要建立服务器端的数据库,即后台数据库,一般可选择SQL Server或者Access 作为后台数据库。本次的毕业设计是以SQL Server作为后台数据库。
第3章 需求分析
3.1 系统主要工作流程图
3.1.1 后台管理模块流程图
该流程图描述了后台管理员对网站的管理,管理员可以对商品进行添加,修改,删除。具体的添加功能是通过本地浏览把商品上传到网站;修改商品信息或者删除商品等功能, 如图3-1所示。
图3-1 后台管理程序主要流程图
3.1.2 前台管理模块流程图
本系统设计的初衷是会员可以享受网站的功能,未注册的游客只能浏览网站,不能进行其他操作。因此当用户在进入网站的一开始便会对用户的身份和权限进行验证,反馈不同的页面给不同的用户,从而实现对权限的划分功能。可在网站上在线购买商品、搜索商品等功能。该流程图描述
了商品购物网站的整个流程,如图3-2所示。
图3-2 前台管理程序主要流程图
3.2 系统实现采用环境
1. 操作系统:Microsoft Windows XP Professional 。 2. 开发语言:JAVA 。
3. 数据库系统: SQL Server。 4. 开发平台:MyEclipse 。
3.3 系统功能需求
操作的简易实用性本系统是网上商品购物系统, 针对的用户社会上所有的人们。因此操作的简易实用性就体现的尤其重要。在此系统的开发中就很好的体现了这一点, 系统的界面美观, 典雅, 充满了人性化; 用户操作起来也容易上手。对于一个网上商品购物系统而言,网上的商品的种类样式是很重要的,所以对系统的安全性有比较高的要求:对于数据库,要设置不同用户的权限,数据的修改必须由合法用户操作。
第4章 功能的设计与实现
4.1 系统主要设计
4.1.1 系统主要功能
1. 用户注册登录功能:只有登录注册后才能使用本网站功能; 2. 购物车:用来存放客户购物过程中选出的货物; 3. 浏览最新商品品信息:了解到最新商品新闻; 4. 搜索商品:搜索客户想要的商品;
5. 商品管理:后台管理员可以增、删、编辑商品信息;
4.1.2 主要功能模块
1. 后台管理模块
该模块只对管理员开放,管理员可以对商品进行添加,修改,删除。具体的添加功能是通过浏览把商品上传到网站;修改商品信息或者删除商品等功能。如图4-1所示。
图4-1 后台管理模块
2. 前台管理模块
该模块用户注册后即成为会员,就可在网站上在线购买商品、搜索商品等功能。详细模块的介绍如图4-2所示。
图4-2 前台管理模块图
4.2 数据库的分析与设计
4.2.1 数据库的需求分析
本课题开发的数据库主要包括四个方面。
1. 会员注册数据表:存储会员注册时各种信息和账户的激活,充值,收货地址等信息的数据表。
2. 商品数据表:商品基本参数信息,包括商品的出处,商品的生产日期,商品的性能等的数据表。
3. 供货商数据表:供货商的基本参数信息,包括供货商的名称,地址,联系方式等的数据表。
4. 订单信息数据表:用户购买商品的基本参数信息,包括订单号,收货人的基本信息,配送地址等的数据表。
4.2.2 数据库的结构设计
会员信息表(TBa_MemberInfo):
该表有递增的流水号,用户名,密码,姓名,余额,注册日期,激活日期,备注等。
表4-1 会员信息表
会员充值表(TBa_SupplyRecordInfo)
:
该表有用户名,付款账号,付款开户行,收款账号,收款开户行等。
表4-2 会员充值表
会员收货地址信息表(TBa_MembeAddrInfo):
该表有用户名,收货人姓名,货物配送地址,邮编等。
表4-3 会员收货地址信息表
供应商信息表(TBa_SupplierInfo) :
该表有供应商编码,供应商名称,地址,联系人等。
表4-4 供应商信息表
商品信息表(TMe_MerchandiseInfo):
该表有商品编号,单位编码,商品名称,销售状态等。
表4-5 商品信息表
订单信息表(TMe_OrderInfo):
该表有订单号,配送商编码,快递单号,订单状态,订购时间,收货人姓名等。
表4-6 订单信息表
订单明细信息表(TMe_OrderDetailsInfo):
该表有:订单号,商品编码,单位编码,数量,售价等。
表4-7订单明细信息表
4.3 系统主要功能实现
4.3.1 注册页面的实现
在登录网页中,没有注册的用户只能浏览网页,会员注册之后才能购物。在注册页面中需要填写基本参数信息,如用户名,密码,真实姓名等。
图4-1注册页面
图4-2 用户名已经注册
只有注册成功的用户才能选购商品,注册的用户被添加到TBa_MemberInfo表中。
4.3.2 登录界面的实现
注册成功后的会员可以登录系统,进行网上购物和浏览。
图4-3 登录页面
图4-4 登录成功
主要代码如下:
public class LoginAction extends CommonBaseAction {
Private
static
final
long
serialVersionUID
=
-[***********]3L;
private String username ; //用户名 private String password ; //密码 private String validCode ; //验证码 @Resource
private TauOperinfoMapper oper_dao; @Resource
private TauRoleinfoMapper roleInfo_dao; //角色 @Resource
private TauAuthorizationMapper auth_dao; public String execute() thro ws Exception{
Mapsession=ActionContext.getContext ().getSession();
String realCode=(String)session.get("rand " ); if (logger . isDebugEnab led()){
logger .debug(" 前台提交的验证码为:"+validCode +" 后台
session 中的验证码值:"+realCode);
}
if (!validCode .equals(realCode)){ }
TauOperinfoCriteria example=new TauOperinfoCriteria(); TauOperinfoCriteria.Criteria cr=example.createCriteria(); cr.andOpernameEqualTo(username ); cr.andPwdEqualTo(password );
List results=oper_dao.selectByExample(example); boolean canLogin=results.size()>0; if (true ==canLogin){
//记录当前登录用户信息
TauOperinfo userInfo=results.get(0);
this .addActionError(" 输入的验证码不正确!" ); return INPUT ;
ActionContext. getContext ().getSession().put(Consts.USERINFO ,userI
nfo);
//查角色信息
TauRoleinfoCriteria roleEx=new TauRoleinfoCriteria(); TauRoleinfoCriteria.Criteria cr1=roleEx.createCriteria(); cr1.andRoleidEq ualTo(userInfo.getRoleid());
ListroleInfos=roleInfo_dao.selectByExamp le(roleEx);
if (roleInfos.size()>0){
TauRoleinfo roleInfo=roleInfos.get(0);
ActionContext. getContext ().getSession().put(Consts.USERROLEINFO ,rol
eInfo);
TauAuthorizationCriteria authEx=ne w TauAuthorizationCriteria(); TauAuthorizationCriteria.Criteria authCr=authEx.createCriteria();
authCr.andRoleidEq ualTo(roleInfo.getRoleid());
role_2_menus=auth_dao.selectByExamp le(authEx);
List
ActionContext. getContext ().getSession().put(Consts.USERROLE2MENUI
NFO ,role_2_menus);
4.3.3 商品分类
商品的分类信息在主页面的左上方,如图4-5所示。 }
}
logger .debug(" 登陆成功的用户名:"+username ); return SUCCESS ;
}else { }
this .addActionError(" 用户名或密码错误!" ); return INPUT ;
图4-5 商品类别
图4-6 商品列表
相关代码如下: 方法
public String listDefault(){//首次打开默认列表页面时执行的actio n
TmeMerchand iseinfoCriteria cr=new TmeMerchandiseinfoCriteria();
//实例化查询条件
}
public String listByParameter(){
TmeMerchand iseinfoCriteria cr=new TmeMerchandiseinfoCriteria();
ActionContext. getContext ().getSession().put("tiaojian" , cr); this . pageIndex =1;//要查出第一页的数据内容 return listPage();
//实例化查询条件
TmeMerchand iseinfoCriteria.Criteria cr1=null ;
if ((pojo .getMerchandisecid()!=null )&&(!("-1" .equals(pojo .getMercha
ndisecid())))){
if (null ==cr1){ }
cr1.andMerchandisecidEqualTo(pojo .getMerchandisecid());//
cr1=cr.createCriteria();
商品类别
}
if ((pojo .getProstatusid()!=null )&&(((byte )-1)!=pojo .getProstatusid())){
if (null ==cr1){ }
cr1.andProstatusidEqualTo(pojo .getProstatusid());//促销状态
cr1=cr.createCriteria();
查询条件
}
if ((pojo .getUnitid()!=null ) && (((byte )-1)!=pojo .getUnitid())){ }
if (null ==cr1){ }
cr1.andUnitidEqualTo(pojo .getUnitid());//计量单位查询条件
cr1=cr.createCriteria();
if ((saleStatus !=null ) && (!"-1" .equals(saleStatus ))){
if (null ==cr1){ }
cr1=cr.createCriteria();
cr1.andSalestatusEqualTo("true" .equals(saleStatus )? true :false ); //
销售类别
TmeMerchand iseinfoCriteria }
public String listPage(){
this .prepareDictDatas();
TmeMerchand isecinfo all1=new TmeMerchandisecinfo(); all1.setMerchandisecid("-1" ); all1.setMerchandisecname(" 全部" ); categorysList .add(0,all1);
TmeProstatusinfo all2=new TmeProstatusinfo(); all2.setProstatusid((byte )-1); all2.setProstatusname(" 全部" ); proStatusInfoList .add(0, all2);
}
ActionContext. getContext ().getSession().put("tiaojian" , cr); this . pageIndex =1;//要查出第一页的数据内容 return listPage();
TmeUnitinfo all3=new TmeUnitinfo(); all3.setUnitid((byte )-1); all3.setName(" 全部" ); unitInfoList .add(0, all3);
cr=(TmeMerchandiseinfoCriteria)ActionContext. getContext ().getSession().get
("tiaojian" );
4.3.4 后台管理登录页面
后台管理只提供给管理员,用"admin" 账号登录,进入后台管理,如图4-6所示。
}
cr.setPageSize(PAGESIZE ); //一页多少行 cr.setPageIndex(this . pageIndex ); //要展示哪一页 totalRecordCount =dao .countByExample(cr); pojoList =dao .selectPage(cr); return "disp lay_list_data";
图4-6 后台登录页面
后台管理员可以对商品进行增加,编辑,删除。商品可以上传到购物网站的首页,供客户浏览选购。
图4-7 商品信息管理
图4-8 编辑商品
相关代码如下:
public String create(){//准备开始新增数据
prepareDictDatas(); //初始化字典数据 ActionContext. getContext ().getSession().put("categorysList" ,
categorysList );
ActionContext. getContext ().getSession().put("proStatusInfoList" ,
proStatusInfoList );
ActionContext. getContext ().getSession().put("unitInfoList" , unitInfoList );
} public String saveCreate(){ //保存新增数据 //做数据的合法性验证 //取商品名称的拼音码 return INPUT ; if ((null !=pojo )&&(null !=pojo .getMerchand isename())){ GB2Alpha obj1 = ne w GB2Alpha();
pojo .setMerchand iseab(obj1.String2Alpha(pojo .getMerchand isename()));
} if ((null !=productPic )&&(null !=productPicFileName )){ //上传文件的存储 ServletContext
application=ServletActionContext.getServletContext ();
String
fileName=String.valueOf (System.currentTimeMillis ())+productPicF ileName ;
String
fullFileName=application.getRealPath("/upload" )+"/"+fileName;
logger .debug(" 即将存储的文件路径及文件名称:"+fullFileName);
try { java.io.FileOutputStream outs=ne w FileOutputStream(new File(fullFileName));
FileInputStream fis=new FileInputStream(productPic ); byte [] buffer = new byte [1024]; int len = 0; while ((len = fis.read(buffer)) > 0) { } fis.close();
outs.write(buffer, 0, len);
} outs.close(); pojo .setPicpath(fileName); } catch (Exception e) { } e.printStackTrace(); int i=dao .insert(pojo ); if (1==i){ pojo =new TmeMerchand iseinfo();//准备跳缺省列表页面, 清除列表界面查询条件数据
)));
} pojo .setPicpath(null );
} return listDefault(); }else { } addActionError(" 新增数据失败!" ); return INPUT ; public String edit(){ } public String saveEdit(){ //取商品名称的拼音码 if ((null !=pojo ) && (null !=pojo .getMerchandisename())){ GB2Alpha obj1 = new GB2Alpha(); this .prepareDictDatas(); this . pojo =dao .selectByPrimaryKey(pojo .getMerchand iseid()); return INPUT ; pojo .setMerchand iseab(obj1.String2Alpha(pojo .getMerchand isename(
if ((null !=productPic ) && (null !=productPicFileName )){ //上传文件的存储 ServletContext
application=ServletActionContext.getServletContext ();
delete_old_picture(application); String
fileName=String.valueOf (System.currentTimeMillis ())+productPicF ileName ;
String
fullFileName=application.getRealPath("/upload" )+"/"+fileName;
logger .debug(" 即将存储的文件路径及文件名称:"+fullFileName);
try { java.io.FileOutputStream outs=ne w FileOutputStream(new File(fullFileName));
} pojo .setId(null ) ; int i=dao .updateByPrimaryKeySelective(pojo ); if (1==i){
FileInputStream fis=new FileInputStream(productPic ); byte [] buffer = new byte [1024]; int len = 0; while ((len = fis.read(buffer)) > 0) { } fis.close(); outs.close(); pojo .setPicpath(fileName); outs.write(buffer, 0, len); } catch (Exception e) { } e.printStackTrace();
pojo =new TmeMerchand iseinfo();//准备跳缺省列表页面, 清除列表界面查询条件数据
} private void delete_old_picture(ServletContext application) { //查出原文件名称 TmeMerchand iseinfo return listDefault(); }else { } addActionError(" 编辑数据失败!" ); return INPUT ;
olddata=dao .selectByPrimaryKey(pojo .getMerchandiseid());
if ((null !=olddata.getPicpath())&&(olddata.getPicpath().length()>3)){ File oldP icFile=ne w File(application.getRealPath("/upload" )+"/"+olddata.getPicpath());
} public String delete(){ //上传文件的存储 ServletContext } if (oldPicFile.exists()){ } oldPicFile.delete();
application=ServletActionContext.getServletContext ();
}delete_old_picture(application); dao .deleteByPrimaryKey(pojo .getMerchand iseid()); return this .listDefault();
第5章 系统测试
5.1 测试方法
1. 首先在MyEclipse 中启动该项目服务器。
2. 在浏览其中输入访问的URL
3. 对系统的各个部分进行测试
5.2 预期测试结果
1. 实现会员注册登录,能够进行浏览和购物
2. 后台管理员可以进行商品管理,供货商管理,
5.3 实际测试结果
1. 能实现会员注册登录,登陆后可以进行商品选购;
2. 会员能进行购买商品,查看最新商品,搜索商品,等功能;
3. 实现了查看推荐商品,提供最新的商品信息给用户;
4. 实现了后台管理员对商品的添加、修改、删除及用户管理等功能。
结 论
本文简要介绍了网上购物系统的主要功能及体系结构,重点讨论了系统数据准备,数据库的逻辑结构分析,SSH 与后台数据库链接等关键技术。这些技术的实现满足了系统的需要,优化了系统的性能。目前基于该模型的系统处于试运行阶段,还存在许多问题与不足,如安全性能还不完善,缺少网上支付认证加密系统等。因此在今后的工作里这些功能与技术还需要加以提高和实现。
网上购物系统无论是在开发过程中,还是在建成后的日常维护过程中,都需要进行严格的检测,以保证购物系统的服务质量。
建议网上购物系统应注意以下三点:
(1)把握好商品质量和宣传内容环节。
(2)提供的商品必须是货真价实的优质产品而决非假冒伪劣。
(3)产品宣传广告内容应健康真实,既要反映客观事物又要有欣赏价值。
服务功能的检测:
网上购物系统不仅要把好进货关,而且由于网上购物系统提供的是虚拟的电子商品,包含的信息量大,多分支,多链接,多媒体,所有网上购物系统的服务检测就显得格外重要。对虚拟电子商品的审查,首先要进行内容正确行测试。如文字录入的错误,参照图像的错误等都会降低用户对上品的信任度。
进行系统功能的测试。购物系统所有功能是否能正确执行,有无死机或其他异常情况发生,交互手段是否能满足用户需求。
对系统的执行效率进行测试。测试系统对大量数据的检索效率,数据的装载时间及对鼠标的反应速度等。
网上客户身份的确认对网上购物中心来说是一个非常关键的环节,稍有疏漏将会造成巨大的损失。用户身份确认包括用户真实身份和信用两方面。
网上购物系统服务的另一个重要环节就是商品的配送。快速迅捷的配送系统能保证用户购买的商品及时送达,在用户心目中树立良好的企业形象,增强用户对网上购物的优势日趋明显,会有更多的人参与到网上购物的浪潮中来,人类最终将迎接电子商务时代的来临。
谢 辞
从接受课题到现在完成毕业设计论文,导师给予了精心的指导和热情的帮助,尤其在课题设计的前期准备阶段和本人的数据库的设计阶段,导师提出许多宝贵的设计意见,在最后的测试修改阶段老师在百忙之中抽出时间为我们提供了必要的帮助,这样使得我们得以顺利的完成毕业设计开发工作,在短暂的几个月的相处时间里,老师渊博的知识、敏锐的思路和实事求是的工作作风给我留下了深刻的印象,这将使得我终身受益,谨此向老师表示衷心的感谢和崇高的敬意。同时我也感谢我的同组同学在这次毕业设计中的支持和帮助。
参考文献
[1] Michael Kofler . MySQL 5 权威指南[M]. 北京邮电出版社,2006
[2] 曾顺. 精通CSS+DIV网页样式与布局[M]. 人民邮电出版社,2009年11月.
[3] Bear Bibeault,Yehuda Katz. jQuery 实战[M]. 人民邮电出版社,2010年2月.
[4] 田宇. B2C 网上商城后台管理模块的设计与实现[D]. 北京:北京工业大学. 2007.
[5] 萨师煊, 王珊. 数据库系统设计(第三版)[M]. 北京: 高等教育出版社, 2004.
[6] 孙卫琴. 基于MVC 的JavaWeb 设计与开发[M]. 北京: 电子工业出版社, 2004.
[7] 李峰, 晁阳. JavaScript 开发技术详解[M]. 北京:清华大学出版社,2009.
[8] 兰旭辉 熊家军 邓刚. 基于MySQL 的应用程序设计[M]. 计算机工程与设计2004 25(3).
[9] 黄维通.ASP. 数据库开发技术.[M]北京:清华大学出版社,1998.
[10] 孙卫琴, 李洪成. 《To mcat 与 JSP Web 开发技术详解》. 电子工业出版社,2003年6月:1-205
[11]
日:1-354
[12]
[13] 王珊, 陈红. 数据库系统原理教程[M].北京:清华大学出版社,2004.6. 柳永坡, 刘雪梅, 赵长海.JSP 应用开发技术[M].北京:人民邮耿祥义, 张跃平. 《JSP 实用教程》. 清华大学出版社,2003年5月1电出版社,2005:30-32.
[14] 孙卫琴, 李洪成.To mcat 与Java Web 开发技术详解[M].北京:电子工业出版社,2004:73-78.
[15] 胡百敬, 姚巧玫.SQL Server 2005 数据库开发详解[M].北京:电子工业出版社,2006:9-13,123-125.
[16] (美)格罗夫 著, 章小莉 等译. SQL完全手册(第二版)[M].北京:电子工业出版社,2006:12-14.