电子商务网站毕业设计报告Word文档格式.docx
《电子商务网站毕业设计报告Word文档格式.docx》由会员分享,可在线阅读,更多相关《电子商务网站毕业设计报告Word文档格式.docx(49页珍藏版)》请在冰点文库上搜索。
国外发展情况
亚马逊公司(A,简称亚马逊,NASDAQ:
AMZN),是美国最大的一家网络电子商务公司,位于华盛顿州的西雅图。
是网络上最早开始经营电子商务的公司之一,亚马逊成立于1995年,一开始只经营网络的书籍销售业务,现在则扩及了范围相当广的其他产品,包括了DVD、音乐光碟、电脑、软件、电视游戏、电子产品、衣服、家具等等。
图1.2亚马逊网
主要研究内容
本设计主要研究内容包括:
分析国内外现有的电子商务系统、简述网站的工作原理和相关技术、设计交易网站的前台页面、设计交易网站的后台数据库。
主要实现用户对商品的购买、发布、修改,用户信息管理,订单处理流程,商品在网站上的显示,商品搜索,购物车,管理员对用户管理,商品管理,订单管理以及网站管理等。
做为Web站点的主流编程语言JSP,在电子商务类网站中更能显现它的优势。
JSP能够在用户多次页面请求期间保持服务对象的状态,并且可以在Servlet和JavaBean的支持下完成更加强大的功能。
所以,本设计采用JSP作为开发语言,利用JSP语言,JAVA语言,数据库等知识实现了一个用户可以在线注册、登陆、查询商品、订购商品、退货、留言等功能的图书销售系统。
开发环境
服务器软件环境
表2.1服务器软件环境
分类
名称
版本
语种
操作系统
Windowsserver
2003
简体中文
数据库平台
MYSQL
5.0
应用平台
tomcat
6.0
邮件系统
Foxmail
4.2.0
服务器硬件环境
表2.2服务器硬件环境
服务器
最低配置
推荐配置
应用服务器、数据库服务器、邮件服务器、目录服务器
1CPU:
P42.0G
P42.8G
Mem:
512M
2G
HD:
40G
120G
开发机器软件环境
表2.3开发机器软件环境
WindowsXP
2000
开发平台
JDK
1.6
英文
开发机器硬件环境
表2.4开发机器硬件环境
开发机器
技术架构综述
表现层
表现层(PresentationTier)对应于MVC的V(View),负责系统的表示逻辑,主要响应前台用户的操作和提供适当数据的表现形式。
具体地,表现层处理接收到的HTTP请求,从中抽取业务数据,进行合法性校验,调用对应的业务逻辑层的业务逻辑,根据返回结果,决定画面迁移,产生HTTP响应[2]。
业务层
业务层(BusinessTier)体现系统的业务逻辑,是一组StatelessSessionBean。
业务层起到了BusinessDelegate的作用,屏蔽了表示层,有利于重用业务模型。
业务层可以进一步细分为:
1.业务控制层
业务控制层(BusinessControlTier)主要包括各类业务过程控制组件。
它负责封装业务过程逻辑,组装业务服务组件,并对事务进行控制和管理。
2.业务逻辑层
业务逻辑层(BusinessLogicTier)主要包括各类业务服务组件(servicecomponent),封装了业务逻辑(Businesslogic)。
它主要从业务的角度而不是具体需求操作的角度来设计。
当涉及到具体的数据存储操作(主要是数据库访问),它委托给集成层去具体实现。
业务逻辑层意识不到表示层的具体逻辑,而是通过约定的接口让表示层来调用。
3.业务模型
业务模型层(BusinessModelTier)包括各种业务对象(BusinessObject,BO)和值对象。
业务对象是根据业务领域知识和经验定义,包括属性、关系和相关的业务方法。
在建模的时候,使用了组件化和面向对象的设计思想。
数据访问层
数据访问/集成层(DataAccess/IntegrationTier)负责进行数据访问及系统间交互操作。
数据访问组件负责与关系型数据库打交道,进行具体的增删改查(CRUD)操作。
系统集成代理/适配器组件负责与软件产品(例如报表工具)和外部系统(例如财务核算系统、银行接口系统、外汇交易系统等)打交道,交换数据和消息。
数据访问/集成层组件意识不到业务层的具体逻辑,通过约定的接口让业务层来调用。
产品各模块的功能相对独立,模块除实现自身的业务逻辑外,同时对外提供业务接口,各模块之间的通信、调用将统一通过调用各模块的接口实现。
接口间采用了低耦合度和高重用性的技术,在设计上做到易扩展、易修改,便于系统的升级与维护。
1.原则上接口对外提供的功能均是本模块的完整的业务逻辑,不允许接口独立提供逻辑。
结构视图如下:
图2.1接口结构视图
2.接口与业务逻辑的依赖关系由代码交为容器处理,保持接口与业务逻辑在编译时的独立性,所有业务逻辑类实现自调用方法,对外提供统一入口,同时可通过此特性由执行器实现业务委托。
3.模块接口可利用业务逻辑类的自调用方法实现接口的动态加载,同时可实现接口的易扩展性,和易修改性。
采用MVC模式
MVC模式是一个用于将用户界面逻辑与业务逻辑分离开来的基础设计模式,它将数据处理、界面以及用户的行为控制分为:
Model(模型)-View(视图)-Controller(控制器)。
Model:
负责当前应用的数据获取与变更及相关的业务逻辑,可用JAVABEAN来体现。
View:
负责显示信息,可以使用JSP、VELOCITY模板等技术。
Controller:
负责收集转化用户的输入,常用一个SERVLET来实现。
图2.2MVC模式
View和Controller都依赖于Model,但是Model既不依赖于View,也不依赖于Controller,这是分离的主要优点之一,这样Model可以单独的建立和测试以便于代码复用,View和Controller只需要Model提供数据,它们不会知道、也不会关心数据是存储在SQLServer还是Oracle数据库中或者别的什么地方。
WEB层框架Struts
Struts是一个在JSPModel2基础上实现的MVC框架,其主要的设计理念是通过控制器将表现逻辑和业务逻辑解耦,以提高系统的可维护性、可扩展性及可重用性[3]。
Struts框架的体系结构如下图所示[4]:
图2.3Struts框架的体系结构
下面就上图所示的体系结构图分析Struts框架中的MVC组件。
视图(view):
视图部分主要由JSP页面组成,其中没有流程逻辑、业务逻辑和模型信息,只有标记。
Struts自身包含了一组标记库(TagLib),这也是Struts的精华之一,灵活运用它们可以简化JSP页面的代码,提高开发效率。
控制器(controller):
Struts中的Controller主要是其自身提供的ActionServlet。
ActionServlet接收所有来自客户端的请求并根据配置文件(struts.xml)中的定义将控制转移到适当的Action对象。
模型(model):
Struts没有定义具体Model层的实现,Model层通常是和业务逻辑紧密相关的,有持续化的要求。
目前在商业领域和开源世界,都有一些优秀的工具可以为Model层的开发提供便利。
持久层框架Hibernate
O/Rmapping技术是为了解决关系型数据库和面向对象的程序设计之间不匹配的矛盾而产生的。
Hibernate是目前最为流行的O/Rmapping框架,它也是开源软件,它在关系型数据库和Java对象之间做了一个自动映射,使得程序员可以以非常简单的方式实现对数据库的操作,它不仅负责从Java类到数据库表格以及来自Java数据类型的SQL数据类型的映射,而且还提供数据查询和检索能力,并能大大减少花在SQL和JDBC手工数据处理上的开发时间[5]。
Hibernate工作原理如下图所示:
图2.4Hibernate工作原理
Hibernate通过对JDBC的封装,向程序员屏蔽了底层的数据库操作,使程序员专注于程序的开发,有助于提高开发效率。
程序员访问数据库所需要做的就是为持久化对象编制xml映射文件。
底层数据库的改变只需要简单地更改初始化配置文件(hibernate.cfg.xml或者hibernate.properties)即可,不会对应用程序产生影响。
Hibernate有自己的面向对象的查询语言HQL,HQL功能强大,支持目前大部分主流的数据库,如Oracle、DB2、MySQL、MicrosoftSQLServer等,是目前应用最广泛的O/R映射工具。
Hibernate为快速开发应用程序提供了底层的支持。
需求分析
系统需求
当今世界,一股势不可挡的电子商务浪潮席卷而来。
图书作为一种最适合开展电子商务的商品,为网上书店成为一种典型的电子商务项目奠定了基础。
现在,网上书店在国内如雨后春笋般涌现,方便读者购书的同时也为读者提供了更多选择。
功能需求
作为一个网上书店系统,基于B/S的设计结构要求具备其他管理系统最基本的特点与性能:
良好的用户界面、基本的管理功能、较快的运行响应速度和稳定的系统等[6]。
功能设想
目前纷繁复杂的网上书店应运而生,不管是国内的还是国外的,基本都具备以下功能:
商品资料、用户注册登录、会员管理、购物车、订单管理、广告管理、数据统计等等。
实现功能:
系统具有的具体模块有商品模块、用户模块、会员积分管理模块、购物车模块、订单管理模块、广告管理模块、统计模块等等。
其中:
1.商品模块主要包括商品资料的管理(增删改查)以及商品图片的管理等。
2.用户模块主要包括用户登录,注册,修改个人资料,找回密码等。
3.会员积分管理模块包括会员的等级,积分兑换等。
4.购物车模块主要包括存放商品等。
5.订单模块主要包括订单处理(增删改等)。
6.广告管理主要包括广告的增删改等。
7.数据统计模块包括:
(1)商品销售统计:
按月份统计每个子产品分类的销量及分类下产品的销量。
(2)客户激活统计:
根据用户的登陆次数及最后登陆时间,统计用户活跃度。
(3)供应商供货情况统计:
按季度统计供应商的供货量。
8.邮件发送模块,包括注册邮件通知激活,定期为客户或供应商发送邮件。
性能需求
响应时间
一般来说,基于B/S下开发出来的管理系统的响应时间很大程度上依赖于用户的网络环境和该系统所在服务器的性能。
因此,用户的网络环境和系统服务器性能两个因素都会对系统的响应时间有一定的影响。
稳定性
对一个管理系统来说,稳定性是很重要的,一个系统做得再精良,如果稳定性很差,那么它也不会被用户认可[7]。
但是本系统由于是采用B/S结构的,用户和网站管理人员在自己的电脑上,只需通过IE浏览器就可以轻松完成工作。
安全性
互联网是对全世界都开放的网络,任何单位或个人都可以在网上方便地传输和获取各种信息,互联网这种具有开放性、共享性、国际性的特点就对计算机网络安全提出了挑战。
网上书店系统为了保证用户交易的安全,一方面要求网站管理人员不要随意到网吧等公共场所登录管理系统,同时也要求用户确保自己计算机的安全。
系统在一定范围内也对用户的密码修改做了保护,增强系统的安全性。
运行需求
硬件需求
两台或两台以上PC机;
CPU:
Pentium133以上;
内存:
64M以上;
硬盘:
6G以上。
软件需求
服务器:
OS:
Windows2000以上版本;
jdk1.6以上;
Eclipse;
SQLServer2005;
ApacheTomcat6.0。
客户端:
IE等浏览器。
总体设计
系统架构
下图4.1为系统总体结构设计图:
图4.1系统总体设计图
下图4.2为前台系统模设计图:
图4.2前台系统模块设计图
下图4.3为后台服务功能设计图:
图4.3后台服务功能设计图
系统数据库设计
数据库需求
根据系统的部署设计,数据库将部署到一部独立的计算机中。
根据前期的分析,系统将有大量的数据存放入数据库。
预留数据库空间400m,日增长约3m,日志空间1G,日增长5m[8]。
数据库逻辑设计
表设计中应注意的问题:
1.对于字符类型的字段,要仔细确认字段的可能长度。
在mysql数据库设计中,一般来说,对于定长的字符数据字段,取字符类型(char),对于不定长的,取变长字符类型(varchar)。
2.对于以分类形式出现的字段,建议不使用字符类型,而使用数字类型。
如:
订单的状态等;
如果用字符类型,则将这些字符串需要入库;
如果使用数字类型分别用2、1、0代表,则订单的是数字信息,从程序编写的角度考虑,后者更好维护一些,主要体现在如果是多语言版本时,不需要在程序中将这些字符串信息进行判断处理。
表4.1数据库设计
数据库表名
中文名
说明
orderitem
订单项
一个订单可以有多个订单项
t_ad
广告列表
保存广告信息
t_area
地区列表
保存国内所有的城市信息
t_book
书籍列表
保存所有的书籍信息
t_category
书籍分类
保存所有的书籍分类信息
t_counter
计数机
保存每天的顾客访问量
t_disrank
等级列表
记录用户需要的积分和等级
t_order
订单列表
记录用户的订单信息
table_admin
管理员信息
记录所有的管理信息
table_article
文章列表
记录所有的本站文章
table_article_type
文章类型
记录所有的文章类型关系
table_collection
收藏列表
记录用户收藏的书籍信息
table_friend_link
友情链接列表
记录所有的友情链接信息
table_message
用户留言
记录所有的留言信息
table_message_reply
留言回复
记录管理员的回复
table_message_tyjpe
留言类型
记录所有的留言信息类型
table_online
在线资源
记录在线资源信息
table_plan
任务计划
记录可能的任务和计划
table_usre
用户
记录用户的信息
table_wuliu
物流信息
记录物流配送地点信息
数据库E-R图
下图4.4为系统总体设计E-R图:
图4.4数据库E-R图
详细设计
前台模块功能详细设计
游客注册功能实现
1.游客注册管理模块类图:
图5.1游客注册管理模块类图
2.游客注册管理模块时序图[9]:
图5.2游客注册管理模块时序图
3.时序图展示内容说明:
(1)User通过JSP页面进行填写并提交注册信息。
(2)JSP页面通过post方式和控制器UserAction交互,提交注册会员请求。
(3)UserAction调用UserBizImpl类的register()函数进行注册。
(4)UserBizImpl类调用UserDaoImpl类的queryUser()函数检查用户名是否有效[10]。
(5)queryUser()方法返回true,表明用户名可用。
(6)new方法生成一个新的User对象。
(7)UserBizImpl类调用UerDaoImpl类的insertUser()方法将新的User插入数据库。
(8)UserAction控制器将注册成功的信息(response)返回给JSP页面。
附加说明:
拓展用例场景,注册用户失败的情况:
在进行用户名有效性检查时,发现用户名已经被注册,方法返回false,结果返回“该用户名已经被注册,注册失败”的信息给用户。
游客/会员搜索功能实现
1.搜索图书类图:
图5.3搜索图书类图
2.查询模块时序图:
图5.4查询模块时序图
(1)User通过JSP页面选择书籍类别、输入查询关键字进行查询操作。
(2)JSP页面通过post方式和控制器SearchAction交互,提交用户查询请求。
(3)SearchAction调用SearchBizImpl类的SearchByKeyWord()函数进行查询。
(4)SearchBizImpl类调用SearchDaoImpl类的queryByKeyWord()函数完成查询。
(5)将查询结果封装到User类中。
(6)将查询结果返回给SearchAction类。
(7)SearchAction类将结果渲染到jsp视图中返回给用户。
游客/会员购物车功能实现
1.购物车模块类图:
图5.5购物车模块类图
2.购物车模块时序图: