随着我国网民数量的不断增长,在关于互联网政策的大力支持下,国内的电子商务已经发展为全民网购的热潮。什么是电子商务,就是在互联网中盲目投资的网名有一个稳定的有规则的平台,有了电子商务平台后,多数商家选择在电子商务平台上开网店进行交易。在Internet飞速发展的今天,互联网成为人们快速获取、发布和传递信息的重要渠道,它在人们政治、经济、生活等各个方面发挥着重要的作用。Internet上发布信息主要是通过网站来实现的,获取信息也是要在Internet“海洋”中按照一定的检索方式将所需要的信息从网站上下载下来。因此网站建设在Internet应用上的地位显而易见,它已成为政府、企事业单位信息化建设中的重要组成部分,从而倍受人们的重视。
本设计是电子商务网站,以使每一位顾客不用出门在家里就能够通过上网来轻松购物。
关键词: 1、电子商务 2、网上商城 3、JavaScript
一、引言 1
(一)课题背景 1
(二)研究目标 1
(三)论文各部分的内容 2
二、系统设计 3
(一)需求分析 3
(二)系统架构 7
(三)系统数据库设计 12
(四)系统模块组成 18
(五)小结 26
三、系统实现 26
(一)用户注册模块实现 26
(二)类别模块实现 30
(三)小结 36
四、结论 37
五、致谢 37
参考文献 39
(一)课题背景
电子商务网站改变了了人们的生活方式,是当今e时代便捷人们生活的一项伟大创举。在生活节奏越来越快的今天,人们对购物便捷的需求也越来越强烈,而网上购物正是给人们带来一种轻松,让每个人享受购物的快乐和冲浪的乐趣
一个网络电子网站可以实现的功能非常强大,例如:淘宝集市除了基本的产品信息发布和交易功能之外,还可分析客户购买行为,列出相关商品,购买后的评价系统,以及便捷的交易支付系统,还有跟后台服务系统及后台物流系统的集成。当然也可以做的功能很简单,例如:现在很多的公司只做到商品目录介绍,连采购车的系统都没有,下订单还要通过电子邮件来完成。当然我觉得做的电子商务网站分为两部分:一是前端的购物系统,二是后端的管理系统。在整个系统中的核心技术为购物和结帐系统,但最为难的技术为安全技术,在整个系统中我们需要进行SSL加密,数据库加密,和网页间数据传递加密以及用户和密码加密。
(二)研究目标
从企业以往的服务管理模式提供的一些服务的方式来看,有些传统的方法已经落伍且非常耗费人力和时间,为了提高员工工作效率,加速资金周转、降低各项成本及改善服务质量,必须开发一个在线电子商务系统。这是本网站设计的核心部分。
(三)论文共分为两大部分
第一部分需求分析:本文作者通过目前的时代背景下、从企业的需求出发,阐述电子商务的必要性和必然性、电子商务对目前企业和人们生活的影响;然后通过现有技术手段,来如何实现这样一个电子商务:从系统的架构、数据库的设计、整体界面及模块的设计。以及设计过程上的思路及应用技术做出介绍
第二部分是对目前已完成的系统做一些展示,并挑出2-3个模块来列举模块的实现过程及实现方法,以及实现过程中的设计思路
(一)需求分析
需求分析是一种软件工程活动,它在系统级需求工程和软件设计间起到桥梁的作用。需求分析需要开发人员准确理解用户的要求,进行细致的调查分析,将客户非形式的需求陈述转化为完整的需求定义,再由定义转换到相应的形式功能规约(需求规格说明)的过程。它通过详细调查现实世界要处理的对象(组织、部门、企业等)、充分了解原系统(手工系统或计算机系统)的概况和发展前景、明确客户的各种需求、收集支持系统目标的基础数据及其处理方法、确定新系统的功能和边界来实现。电子商务由用户使用商家或企业提供的平台、选购产品、生成订单、以及最后通过物流到达用户手中的过程
在对电子商务网站进行调研分析时,首先对电子商务所涉及的领域作了总体的了解,为在后面的调研分析做好充足的准备。通过对其各个主要流程模块详细深入的调查后,发现作为一个网站系统,各个部门最基本的功能都是通过网络对外宣传,使得有兴趣的客户可以及时获得他们想要的信息,以此来吸引更多的客户加入。从企业以往的服务管理模式提供的一些服务的方式来看,有些传统的方法已经落伍且非常耗费人力和时间,为了提高员工工作效率,加速资金周转、降低各项成本及改善服务质量,必须开发一个在线电子商务系统。这是本网站设计的核心部分。
122.11.小型电子商务网站开发目的和意义
我国目前网上购物主要现状有节省时间、操作方便、节约费用、出于好奇、寻找稀有商品,但主要以节省时间和操作方便为主。这说明随着生活节奏的加快,人们越来越希望拥有简单快捷的购物方式。由此可见,电子商务网络有着很大的市场。随着网络不断的发展与扩大,未来的物联网也在进一步的形成初步模型,电子商务也会在未来的网络中占有重要地位,利用电子商务的优势同现有销售模式和流通渠道相结合,扩大消费市场,为企业的再发展带来新的商机,也为各地消费者提供便利,而且降低商业成本。相对于中小企业来讲,由于不涉及到大型的数据库和保密安全等,网站的技术要求是被降低了,但建站的指导思想是不变的,网站便要以营销为目的,宣传其产品,让客户更直观的了解产品的功能和特性。
2.国内网上电子商务网站现状
综合性购物网站:卓越网、当当网是以图书起家,至今已经成为中国网上零售的领先者。当当网是全球最大的综合性中文网上购物商城,成立以来,当当网每年均保持100%高速成长,2015年成长率高达120%。
IT数码购物网站:自2004年创立至2015年,京东商城的年销售额每年都在大幅度的增长中。2008年销售额接近14亿元,年复增长率高达340%,市场份额从2007年的8.1%飙升至2008年的18%,一下子将当当、卓越亚马逊甩在后面,登上B2C行业头把交椅。2009年3月,京东单月销售额超过2亿元;6月,京东商城单月销售额突破3亿元,与2007年全年销售额持平。同时,日订单处理能力突破20,000单。
亚洲最大网络零售商圈:淘宝网——亚洲最大、最安全的网上交易平台,提供各类服饰、美容、家居、数码、话费/点卡充等等,与人们生活所需息息相关商品、服务。淘宝网现在业务跨越C2C(个人对个人)、B2C(商家对个人)两大部分。截至2014年底,淘宝网拥有注册会员近5亿,日活跃用户超1.2亿,在线商品数量达到10亿,在c2c市场,淘宝网占95.1%的市场份额。综上可知,我国的网购产业在较短的十几年间得到了较大幅度的发展,这种归属于电子商务类的产业随着科技的发展进步逐渐深入人心。目前我国互联网上网人数已达5亿,目前全球网购用户数量已经超过1.37亿。网购,正在展现出巨大的市场增长潜力,正在迅速成长成为一种消费时中国时尚。是强大的市场需求,驱动并成就了“网购消费时尚”。
3.小型电子商务网站应该的功能
一个电子商务网站应该提供以下功能:
(1)产品分类的增加,查询和修改功能。产品需按照一定的方式实现分类;
(2)分类中产品的增加、修改、删除、查询功能;
(3)产品展示功能。当管理员建好产品的分类和各个分类中的产品后,可以将产品在前台按照一定的方式展示给用户。
(4)购物车功能。当用户选定一种产品后,就可以把这种产品放置到购物车中。需要注意的是,在购物车中的产品并不是用户最终会得到的产品,只是一个购物的意向。
(5)订单的生成、查询功能。当用户挑选好产品之后,可以把购物车中的产品形成一张订单提交给系统。同时应该提交用户的电话和送货地点。用户提交订单后。通过订单查询程序来查询自己订单的处理情况。
(6)订单处理功能。电子商务网站一般采用网上付款和快递的方法进行交易,当管理员得到一个订单并收到汇款后,可以开始处理订单。首先,管理员要看用户订购的产品是否有货,就可以把这个订单的实际交付数量修改为用户的订购数量。如果不能够满足用户的要求,应该输入相关的原因,并将订单处理置于“作废”状态。接下来是物流,送货多采用快递方式,当用户订购的产品快递出以后,就可以把订单的状态改为“已成功”。当然本系统简化了这一系列属于物流管理方面的操作过程,而直接由管理员统一进行这些状态的修改设置
将功能详细表述如下
(1)会员可以浏览和检索商品
(2)会员可以下订单(享受会员价)
(3)会员可以浏览自己下过的订单
(4)会员可以管理自己的信息(自服务系统)
(5)会员可以浏览和检索商品
(6)会员可以下订单(享受会员价)
(7)会员可以浏览自己下过的订单
(8)会员可以管理自己的信息(自服务系统)
(二)系统架构
2.21. 逻辑架构JSP + JAVABEAN +DATABASE
JSP负责表现:
JAVABEAN负责业务逻辑
使用JavaBean将功能、处理、值、数据库访问和其他任何可以用java代码创造的对象进行打包,并且其他的开发者可以通过内部的JSP页面、Servlet、其他JavaBean、applet程序或者应用来使用这些对象。用户可以认为JavaBean提供了一种随时随地的复制和粘贴的功能,而不用关心任何改变。
DATABASE负责持久保持数据
2. 物理架构
Web服务器一台(32bit)
配置:CPU Core 2 2.93G,硬盘320G,内存2G,OS::Windows 2003专业版
DataBase服务器一台
配置:CPU Core 2 3.9G,硬盘1T,内存8G,OS:Windows 2003专业版
3. 技术解决方案
程序开发工具(Eclipse):
Eclipse 是一个开放源代码的、基于 Java 的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。是著名的跨平台的自由集成开发环境(IDE)。最初主要用来Java语言开发,但是目前亦有人通过插件使其作为其他计算机语言比如C++和Python的开发工具。Eclipse的本身只是一个框架平台,但是众多插件的支持使得Eclipse拥有其他功能相对固定的IDE软件很难具有的灵活性。
WER SERVER:Tomcat5.5
Tomcat 是一个轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。
数据库 DATABASE:MySQL
MySQL是一个小型关系型数据库管理系统。MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内。这样就增加了速度并提高了灵活性。MySQL的SQL“结构化查询语言”。SQL是用于访问数据库的最常用标准化语言。MySQL软件采用了GPL(GNU通用公共许可证)。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。
配置管理SCM(Software Configuration Management)CVS:
CVS是多个开发人员通过一个中心版本控制系统来记录文件版本,从而达到保证文件同步的目的。CVS版本控制系统是一种GNU软件包,主要用于在多人开发环境下的源码的维护
JSP
JSP技术使用Java编程语言编写类XML的tags和scriptlets,来封装产生动态网页的处理逻辑。网页还能通过tags和scriptlets访问存在于服务端的资源的应用逻辑。JSP将网页逻辑与网页设计和显示分离,支持可重用的基于组件的设计,使基于Web的应用程序的开发变得迅速和容易。
Web服务器在遇到访问JSP网页的请求时,首先执行其中的程序段,然后将执行结果连同JSP文件中的HTML代码一起返回给客户。插入的Java程序段可以操作数据库、重新定向网页等,以实现建立动态网页所需要的功能
AJAX
AJAX 不是一种新的编程语言,而是一种用于创建更好更快以及交互性更强的 Web 应用程序的技术。通过 AJAX,您的 JavaScript 可使用 JavaScript 的 XMLHttpRequest 对象来直接与服务器进行通信。通过这个对象,您的 JavaScript 可在不重载页面的情况与 Web 服务器交换数据。AJAX 在浏览器与 Web 服务器之间使用异步数据传输(HTTP 请求),这样就可使网页从服务器请求少量的信息,而不是整个页面,可使因特网应用程序更小、更快,更友好。
JAVABEAN
使用JavaBean将功能、处理、值、数据库访问和其他任何可以用java代码创造的对象进行打包,并且其他的开发者可以通过内部的JSP页面、Servlet、其他JavaBean、applet程序或者应用来使用这些对象。用户可以认为JavaBean提供了一种随时随地的复制和粘贴的功能,而不用关心任何改变。
系统相关技术:Browser/Server体系
B/S结构的软件是相对传统的C/S结构而言的。C/S结构将程序分为两部分,一部分是由多个用户共享的信息与功能,这部分称为服务器端;另一部分是为每一个用户所专用,称为客户端。C/S结构应该具有这样的特征:客户端、服务器端都安装相应的软件,客户端、服务器端各完成相应的计算工作,服务器端保存数据库。而B/S结构应该具有如下特征:服务器端都安装相应的软件,客户端不安装任何软件(不需要维护)。客户端运行程序是靠浏览器软件(如IE ,Netscape等)登陆服务器进行的。客户端在浏览器里完成一定的计算任务。
Web数据库的访问方式
在Internet上服务器访问数据库的访问方式有多种、如公共网关接口CGI, Web服务器专用API, Java语言的数据库访问接口JDBC。CGI是一个用于定义Web服务器与外部程序之间通讯方式的标准。CGI的主要优点是能运行在各种平台上,可以用任何语言编程,主要缺点是当浏览器向CGI程序发出请求时,CGI执行的是另一种独立于Web服务器的系统进程,占用了CPU的资源,当大量用户向服务器请求文件时,会严重消耗服务器的系统资源。Web服务器专用API是各Web服务器生产厂家为扩展自己的Web服务器功能而设置的接口。由于它和Web服务器紧密结合,使得它的运行速度更快、效率更高,但它不具备跨平台性。本系统采用的是微软的Web服务器IIS(Internet Information Server),它的专用API是ISAPI 。JDBC是JAVA语言的数据库访问接口,将Java Applet嵌入在网页中,当客户浏览器向Web服务器发出请求时,Applet被下载到客户浏览器中运行,然后该Applet通过JDBC访问数据库。JDBC的数据库访问方式提供了高度的可扩充性和可移植性,但复杂的电子商务应用会导致Applet下载过大,从而影响了下载速度。
(三)系统数据库设计
a)1.管理系统的数据流图
数据流图(DFD)是描述信息流和数据从输入移动到输出时被运用的变换的图形化技术,它反映系统必须完成的逻辑功能,是一种功能模型。它是组织中信息运动的抽象,是在调研的基础上,从系统的科学性、管理的合理性、实际运动的可行性角度出发,将信息处理功能和彼此之间的联系自顶向下,逐层分解,从逻辑上精确地描述系统应具有的数据加工功能、数据输入、数据输出、数据存储及数据来源和去向(外部实体)等项目。
首先,分析系统的总体情况,划分系统边界,识别系统的数据来源和去处,确定外部实体从而得出系统的顶层数据流程图。把整个网站系统看成一个整体,分析这个整体与外界的联系。通过分析得出系统有管理员和客户这两个实体,系统的输入有两个来源,即管理员在对系统的维护更新过程中对系统所进行添加、删除或修改的数据和用户在与系统交互时输入的订单资料数据。系统的输出也有两个去向:一个是管理员在对系统录入信息后系统返回给管理员的信息和用户提交的订单;另一个是管理员对系统录入信息后,由浏览器输出到客户端的信息。其中管理员输入的信息和从客户浏览器上或管理员端显示的信息包括首页、关于我们、管理资讯、服务项目、招商代理、管理文库、资料下载、在线服务、管理论坛、人才招聘等,而订单信息是由客户端输入然后返回给客户端并提交给管理员的。
在信息世界中,信息从客观事物出发流经数据库,通过决策机构最后又回到客观世界,信息的这一循环经历了三个领域:信息世界,数据世界,现实世界。现实世界的事物反映到人的头脑中,人的大脑对它有个认识过程,经过分析(选择、命名、分类等)进入信息世界。这些信息再进一步加工、编码,然后进入数据世界,而软件系统的开发工作需要考虑这两个方面的问题,也就是要考虑系统开发所需要的数据,以及如何对这些数据进行操作。这两个问题贯穿了整个软件系统的开发过程,这也就是数据库的设计问题,软件设计的一个核心。
电子商务网站的主要对象是用户,所以必需建立用户表,包括用户的基本信息情况;用户的主要活动是对产品的购买,所以必需建立产品信息表;用户对产品的购买,选择所要的产品,首先得对产品进行搜索,所以我们把商品进行分类,建立产品类别表;最后用户提交订单,建立订单表;管理员是后台操作的用户,在此建立了管理员信息表。
一般会员管理
网络电子商店前台的基本功能。
会员系统:基本会员注册、会员登录认证。
商品陈列系统:商品模糊查询、商品详细数据介绍。
添加商品到采购车、采购车内容的删除修改。
订单查询系统:根据会员的登录查出会员历史订单及订单的详细信息。
实现网络电子商店的程序运行的基本结构就是所谓的三层式结构,此种结构最主要的是将前台接口、商业对象及数据库独立分开,将此三者分开,程序运行起来有更大的灵活性,前台接口只负责数据的表现,至于商业对象就是负责将一些商业逻辑运算封装到对象,对象中运算方法则最主要是当作后台数据库与前台接口的桥梁,JSP也提供很简单的方法让您建立、修改及布置商业对象。至于数据库,最主要的功能就是存储数据,就像微软的产品来说最有名的前台数据库就是了MySQL,在此网络电子商务网站系统选择的数据库是MySQL。
(1) User用户表、字段设计
User(用户)
字段名 字段类型 说明 主键
Id Int 序号/自动递增 主键
Username Varchar 用户名
Password Varchar 密码
Phone Varchar 电话
Addr Varchar 地址
rdate datetime 注册日期
(2) Product产品表、字段设计
Product(产品)
字段名 字段类型 说明 主键
Id Int 序号/自动递增 主键
name Varchar 产品名
Descry Varchar 描述
Normalprice Varchar 市场价
Memberprice Varchar 会员价
Pdate datetime 上架日期
categoryID Int 类别ID/引用Category表的id
(3) Cagegory产品类型表、字段设计
Cagegory(产品类别)
字段名 字段类型 说明 主键
Id Int 序号/自动递增 主键
name Varchar 分类名
Descry Varchar 描述
pid Varchar 父id
(4) SalesOrder订单抬头表、字段设计
SalesOrder(订单抬头)
字段名 字段类型 说明 主键
Id Int 序号/自动递增 主键
Userid Int 用户ID
Addr Varchar 送货地址
odate datetime 下单时间
Status Int 订单状态/0未处理1处理中2处理成功3作废
(5) SalesItem订单行项目表、字段设计
SalesItem(订单行项目)
字段名 字段类型 说明 主键
Id Int 序号/自动递增 主键
productid Int 产品ID
Unitprice Varchar 单价
Pcount datetime 数量
orderid Int 订单id/引用salesorder的ID
(四)系统模块组成
系统分为前端的客户信息浏览及查询和后台管理两大部分:前台销售管理系统的用户是通过Internet访问网站的客户,后台管理系统的用户是通过Internet访问的后台管理员
前台管理系统功能
前台的客户信息浏览及查询功能:
可直接登录上主页浏览电子商务网站对外发布的所有信息,包括企业本身的资料、对外服务部门的介绍、企业文化的宣传和特色及为客户介绍其它相关领域如其他服务业的相关信息。
可直接从主页上即时浏览企业发布的最新新闻,以增进和客户的交流,提高工作的效率。
通过点击主页上的链接,输入个人信息资料和必要的产品信息在线提交订单来订购产品。
后台管理系统功能
后台管理系统的页面将以加密的形式出现,只能由管理员及其赋予权限的用户登录,登录必须输入密码方可进入,以实现对本站点的全面维护及更新。进入后,页面会以网页的方式罗列出所有查询及处理客户填写的信息。管理员可从网页点击进入该信息处理页面,可以在这里对前台网站的内容进行更新,并支持对客户填写的信息增加、删除、修改以及对客户所发布信息的更新等操作,以使站点保持良好的运作状态,同时还可以根据客户的提交时间和IP地址进行索引与分析。在对酒店内部进行管理时,可通过为各个部门均分配具有一定权限的管理员来实现,此管理员分为一般用户和超级用户,使各个部门均能自主的对本部门的信息进行更新及发布本部门的最新通告等。因此,此管理系统是对整个网站的管理。
b)1.系统组成模块及其特点
综上所述,整个网站系统包括了以下功能模块:首页、产品分类、用户自助服务、购物车、订单管理。其中有的模块需以管理员的身份通过后台管理系统进行更新
其功能特点包括:
(1). 易用性好:操作简单、界面友好,控件式的页面布局,使得信息的查询更简便;使用的流程更清晰。
(2). 即时可见:对订单的处理(包括购买产品的添加、修改、删除)将立即在页面中显示出来,达到"即时发布、即时见效"的功能。
(3). 功能完善:流程和业务能按照设计简单明了的走下去,同时对客户网上消费进行过程有可能出现的情况都要有处理方案
(4). 方便移植:针对不同的企业,只需要稍作修改就可以开发出适合本企业特点的电子商务系统
2.业务逻辑分析
会员类
1.包装系统会员
2.与订单类有一对多的关系
管理员类
1.包装系统管理员
产品类
1.包装产品的信息
2.与订单是多对一的关系
类别类
1.包装产品的类别
2.树状结构
3.与产品是一对多的关系
订单类
1.包装订单的信息
2.与产品是多对多的关系
3.与会员是多对一的关系
购物车类
1.包装财物车的信息
2.与产品是一对多的关系
3.业务逻辑设计
User(用户管理属性、方法设计)
1.Properties
1.Id
2.Username
3.Password
4.Phone
5.Addr
6.Rdate
2. Methods
1.Getorders()
2.Save()
3.Change()
4.Delete
5.Static search()
Administrator(后台用户管理属性、方法设计)
1.Properties
1.Username
2.Password
2.Methods
1.Login()
Product(产品管理属性、方法设计)
1.Properties
1.Id
2.Name
3.Descry
4.Normalprice
5.memberPrice
6.pdate
7.category
2.methods
1.getCategory()
2.getSalesCount()
3.save()
4.change()
5.search()
Categroy(类别管理属性、方法设计)
1.progerties
1.id
2.name
3.descry
4.pid(parent:categroy)
2.mathods
1.getProductCounts()
2.save()
3.change()
SalesOrder&SaleItem(订单抬头属性、方法设计)
1.properties
1.id
2.userid
3.addr
4.SalesItem[]
5.Odate
2.Methods
1.getTotalPrice()
2.save()
3.change()
4.getSalesItem()
5.
SalesOrder&SaleItem(订单行项目属性、方法设计)
1.Properties
1.Id
2.productID
3.unitPrice
4.pCount
2.methods
1.getTotalPrice()
2.save()
3.change()
4.getCartItems()
ShoppingCart&CartIte(购物车抬头属性、方法设计)
1.properties
1.userid
2.CartItem[]
2.Methods
1.getTotalPrice()
2.save()
3.change()
4.getCartItems()
ShoppingCart&CartIte(购物车行项目属性、方法设计)
1.properties
1.productID
2.unitPrice
3.pCount
2.Methods
1.getTotalPrice()
(五)小结
本次阐述了电子商务对目前企业和人们生活的影响;然后通过现有编程与设计的技术手段,来如何实现这样一个电子商务:从系统的架构、数据库的设计、整体界面及模块的设计。以及设计过程上的思路及应用技术做出介绍。通过需求分析和概要设计、详细设计,对编码过程和项目进度时间表的控制有着进程碑的指导意义。
(一) 用户注册模块实现
用户注册页面有以下页面:注册页面register.jsp;注册成功registok.jsp;注册失败registerr.jsp
注册执行及转换远过程:用户在首页login.jsp中注册链接、链接到register.jsp页面,同时装载自身,同时通过脚本执行代码
request.setCharacterEncoding(“gb2312”);//编码选择gb2312
String action = request.getParameter(“action”);//此说明自身页面提交过来
if(action != null && action.trim().equals(“register”)) {
String username = request.getParameter(“username”);//接收用户名
String password = request.getParameter(“password”);//接收密码
String phone = request.getParameter(“phone”);//接收电话
String addr = request.getParameter(“addr”);//接收地址
User u = new User();/new一个user对象,这个user是通过register页面中import="com.cmnc.shopping.user."引用进来的,因为本文作者将所有user所有方法都封装在user.java中,在下方详细讲解user对象中sava()方法的执行过程*/
u.setUsername(username);
u.setPassword(password);
u.setPhone(phone);
u.setAddr(addr);
u.setRdate(new Date());
u.save();//调用com.cmnc.shopping.user.*中的save方法保存到数据库
out.println(“注册成功!恭喜!”);
user.java页面包含register.jsp中引用com.cmnc.shopping.user.*中的save方法,此方法是将自身保存到内存
public void save() {
Connection conn = DB.getConn();//save方法首先链接上数据库
String sql = “insert into user values (null, ?, ?, ?, ?, ?)”;/然后将自身插入到数据库中/
PreparedStatement pstmt = DB.prepare(conn, sql);
try {
pstmt.setString(1, username);//set 用户名的值
pstmt.setString(2, password); //set 密码的值
pstmt.setString(3, phone);// set 电话的值
pstmt.setString(4, addr);// set 地址的值
pstmt.setTimestamp(5, new Timestamp(rdate.getTime()));//时间处理
pstmt.executeUpdate();//执行更新方法
} catch (SQLException e) {//如果有异常,执行异常处理方法
e.printStackTrace();
} finally {
DB.close(pstmt);
DB.close(conn);
}
通过register.jsp,user.java设计体现了三层架构的思想,即jsp页面只做前台显示作用,这样避免了jsp页面直接与数据库交互,这样一个是为了数据安全性考虑,同时分层也为项目的扩展和可移植有着巨大的好处,每一次都可独立的发展:jsp页面不用和数据库交互、显得简洁明了,如果客户需要对项目自主扩展,只需要将中间的业务逻辑层基础上生成API文档,对业务逻辑进行说明,即可进行,不用公布数据库及其结构,具体分为以下几点:业务展示层——中间层Javbean即业务逻辑层——底层数据层。
(二)类别模块实现
类别管理分前台和后台,前台只是做展现,后台做数据处理,主要包含以下页面:类别显示categorylist.jsp、类别添加categoryadd.jsp、类别删除categorydelete.jsp、类别修改categorychange.jsp
类型添加在admin目录,需通过管理员登录后才能执行,数据及页面转换执行过程,管理员通过login.jsp页面登录到后台,点击点击添加类别链接到categoryadd.jsp页面,通过categoryadd.jsp页面中的代码提交信息给自身(即categoryadd.jsp页面)
request.setCharacterEncoding(“gb2312”);
String action = request.getParameter(“action”);//此说明自身页面提交过来
if(action != null && action.trim().equals(“add”)) {
String name = request.getParameter(“name”);//接收name值
String descr = request.getParameter(“descr”);//得到描述值
Category c = new Category();
c.setPid(0);//因为是最根节点,所以为0
c.setName(name);
c.setDescr(descr);
c.setGrade(1);//设定级别
CategoryService service = CategoryService.getInstance();
/拿到CategoryService内部的对象,单利模式/
service.add©;//调用add方法
out.println(“类别添加成功!恭喜!”);
return;
}
封装的时候有很多种方法,在注册模块的时候是将所有的方法全部封装在user.java中,但是类别的封装与user.java有所区别,本文作者装产品类别方法分别封装成3个文件,Category.java(类别)、CategoryService.java(类别管理)、GradeOutOfBoundsException.java(级别越界),在此,我们利用单利模式,使用静态工场方法,正文是添加类别过程中方法的详细代码过程
private static CategoryService service;
private CategoryService() {}
public static CategoryService getInstance() {
if(service == null) {
service = new CategoryService();
}
return service;
}
/** * 拿到所有的根类别* @return */
public List getTopCategories() {
List categories = new ArrayList();
Connection conn = DB.getConn();
Statement stmt = DB.getStatement(conn);
ResultSet rs = DB.getResultSet(stmt, “select * from category where grade = 1”);
try {
while (rs.next()) {
Category c = this.getCategoryFromRs(rs);
categories.add©;
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
DB.close(conn);
}
return categories;
}
public void add(Category c) {//接收Category
Connection conn = DB.getConn();
try {
conn.setAutoCommit(false);
/先将conn自动提交设置成false,因为数据不能被中断,必须整体提交,如果提交过程中有错误,需要退回,不能只插入一半/
} catch (SQLException e1) {
e1.printStackTrace();
}
String sql = "insert into category values (null, ?, ?, ?, ?, ?)";//插入数据
PreparedStatement pstmt = DB.prepare(conn, sql);
try {
int cno = getNextCno(conn, c);
pstmt.setInt(1, c.getPid());//得到根目录ID
pstmt.setString(2, c.getName());//得到类别名称
pstmt.setString(3, c.getDescr());//得到描述
pstmt.setInt(4, cno); //得到类别NUMBER
pstmt.setInt(5, c.getGrade());//得到类别级别
pstmt.executeUpdate();//执行更新方法
conn.commit();//整体完成后提交
} catch (SQLException e) {
try {
conn.rollback();
/如果提交时出现异常,则执行回滚,让数据插入不成功/
} catch (SQLException e1) {
e1.printStackTrace();
}
e.printStackTrace();
} finally {
try {
conn.setAutoCommit(true);
} catch (SQLException e) {
e.printStackTrace();
}
DB.close(pstmt);
DB.close(conn);
}
}
(三)小结
经过这次的设计和开发,本次的电子商务系统基本完成。并具备了前台销售和后台管理的功能,完成客户网上挑选、购物、生成订单的整个过程,后台管理保证数据库中数据的一致性。
在电子商务网站的设计开发过程中,以科学的软件设计为主导思路。在总体设计上,采用了模块化和分层的设计思想,使得整个流程清晰、逻辑合理,为系统的实现创造了良好的条件。在各功能模块的实现上,采用了B/S架构。本次设计的是一个简单通用的电子商务系统,所具备的功能不是很完善,但有很多可以扩展的地方,可以通过三层的B/S设计模型、 COM组件技术来实现中间层商务逻辑的开发,这样设计完善后可进一步提高所属程序程序的性能。
通过这次的毕业设计,使我感到高科技、新知识的力量。这次设计过程中,充分的利用到在学习期间学到的知识,更深的了解到现在电子商务所来带的便利,总而言之,这次设计是我改善了自己的不足,我会好好努力,使之成为我自己的知识。也让我把学会的东西更加熟练的掌握,更为熟练的应用,我会将不断的完善,在论文完成之际,我由衷的感谢帮助我的朋友既同学,感谢我的指导老师,在此请接受我诚挚的谢意!
[1].李辛铭《网页编程实例解析》清华大学出版社
[2].清宏计算机工作室等. JSP编程技巧,北京:机械工业出版社,2002
[3].Patrick McNeil《网页设计创意书》2010-11-03
[4].辛运帏《Java语言程序设计》人民邮电出版社(2009年10月1日)
[5].李刚《疯狂Java程序员的基本修养》电子工业出版社2013-1
[6].于淼《电子商务网站设计原理》中国财经经济出版社2008年03月
[7].臧良运 《电子商务网站建设》北京大学出版社2009-08-06
[8].郑阿奇,SQL Server数据库基础与应用教程[M],人民有点出版社,2009