摘 要:随着网络技术和应用需求的发展许多网站建立了电子商务平台,网上购物系统是电子商务的一个重要的应用,由于网上购物系统拥有方便快捷、投资小、回收快、不受地理位置影响等一系列优点,它已成为研究与应用的热点,本系统就是在客户需求的基础上建立了苏宁易购的销售网站系统。
本系统便是尝试用JSP在网络上架构一个动态的电子商务网站,它是在Windows XP下,以Oracle为数据库开发平台,Tomcat网络信息服务作为应用服务器,采用MVC模式开发的网上购物系统。它分前台部分和后台部分,前台主要包括用户注册、商品浏览、购物车管理、订单管理、个人资料管理模块;后台主要包括商品管理、订单处理、用户信息管理模块。
关键词:Servlet,JSP,MVC,网上购物系统
Design and implementation of Suningyi purchase sales site

Abstract: With the development of network technology and application needs many e-commerce website platform, online shopping system is an important application of e-commerce, the online shopping system has convenient, small investment, quick recovery, less affected by the location and a series of advantages, it has become the hotspot of research and application, the system is based on the needs of the customers established sales website system Suningyi purchase.
The system is the electronic commerce website try in a dynamic network architecture with JSP, which is in Windows XP, with Oracle database development platform, Tomcat network information services as application servers, using MVC online shopping system development model. It is divided into the front part and back part, the onstage mainly includes the user registration, product browsing, shopping cart management, order management, personal information management module; the backstage mainly includes the commodity management, order processing, user information management module.
Keywords: Servlet, JSP, MVC, online shopping system
目录
TOC 1-3 前言 1
第1章 绪论 2
1.1开发背景 2
1.2 研究目的 3
第2章 相关技术简介 4
2.1 JSP技术 4
2.2 JDBC技术 5
2.3 MVC模式 6
2.4 MyEclipse简介 6
2.5 Oracle简介 7
第3章 总体设计 9
3.1需求分析 9
3.2 功能模块设计 10
3.2.1前台功能模块设计 10
3.2.2后台功能模块设计 11
3.3 数据库设计 12
3.3.1 E-R图 12
3.3.2数据库表设计 14
第4章 详细设计 17
4.1创建与数据库的连接 17
4.2前台功能的设计和实现 18
4.2.1用户管理模块 18
4.2.2商品管理模块 22
4.2.3购物车管理模块 24
4.2.4订单管理模块 25
4.3 后台功能的设计与实现 26
4.3.1管理员登录模块 26
4.3.2用户查询模块 27
4.3.3商品管理模块 28
4.3.4订单管理模块 30
第5章 结束语 32
参考文献 33
致谢 34
前言
随着计算机网络技术的发展,Web软件系统被广泛地应用。在软件技术日趋成熟的今天,开发者不再仅仅着力于系统功能的实现,更关注软件系统的结构。然而,目前的电子商务平台很多基于传统的开发技术,动态网页中会嵌有大量的业务逻辑程序代码,存在程序可重用程度低、可扩展性差、维护工作烦琐等缺点。针对以上提出的问题,我们对基于MVC模式的电子商务平台构造技术进行研究,结合实例采用JSP简化系统开发,提高系统性能以及可维护性,体现了软件框架结构和组件技术重用的优越性。
当今社会互联网成为人们快速获取、发布和传递信息的重要渠道,它在人们政治、经济、生活等各个方面发挥着重要的作用。其中最具代表性之一的就是网上商店的诞生,网上购物系统向消费者展示出一片新鲜的购物天地,网上购物弥补了传统购物的一些局限性,成为传统购物的补充,极大方便了人们的生活。系统采用B/S体系结构,人们通过浏览器就可以访问本网站的主页。由于MVC模式的简单高效性,本系统是在MVC模式之下,使用JSP、Servlet、JDBC、Ajax等技术实现的,同时使用JDBC操作数据库中的表和数据。
本说明书分为5章,第1章介绍了课题的背景以及目的和意义,还有系统设计目标,第2章介绍了开发此系统运用到的一些相关技术JSP、MVC模式等,以及对myeclipse等一些开发工具做了介绍,第3章对此系统进行了总体设计,包括需求分析和数据库的设计,第4章是对系统的详细设计,主要讲述了系统是如何实现的,包括前后台两个模块,前台实现了用户注册登录等功能,后台实现了管理员对系统的管理,如对订单的管理等,第5章是结束语,主要是对本系统做出评价,指出本系统的优缺点。
第1章 绪论
1.1开发背景
传统的购物是到商店手把手的挑选商品,和货主面对面交易,完成商品购买,这种购物方式是有很多缺点的,比如人多的时候要排队等候、商品种类缺少等。随着现代消费理念的提高和互联网的普及,人们已经不再满足传统的商务模式,不再满足面对面地选择商品而浪费时间,因为电子商务应运而生。电子商务可以指的是利用简单、快捷、低成本的电子通讯方式,买卖双方不谋面地进行各种商贸活动。一般能在网上获得供求信息从而达成交易的行为活动都可以称之为电子商务,如具体的各类产品的供求信息网站也都可以称之为电子商务网站。电子商务是因特网爆炸式发展的直接产物,是网络技术应用的新方向。因特网本身所具有的开放性、全球性、低成本、高效率的特点,也成为电子商务的内在特征,并使得电子商务大大超越了作为一种新的贸易形式所具有的价值[1]。
现在人们对于互联网技术的要求已不单单是浏览一下网页,收发电子邮件,日益忙碌的人们开始追求足不出户的利用互联网这一强大的平台来实现的网上购物。对于企业来讲,无论是企业之间(B to B),还是企业和客户之间(B to C)的交易,如果能够实现网上交易将大大提高交易速度、节约交易成本。近几年,随着网络数据库技术的进一步发展,使得这一设想逐渐成为现实。运用JSP技术和网络数据库原理,基于B/S模式用java语言开发了一个网上购物系统。
网上商城”实际上是运行在Web服务器中的一个Web运用程序。网上商店”模拟一般的商店的经营模式。利用页面、脚本程序来实现网上商城”的进货管理、销售管理、库存管理。互联网技术提供的不仅仅只是供需双方间的较低的交易成本,还有较低的选择费用和更多可供选择的商品。这些特点促使商家更多地通过使用网站来实现电子商务。本系统是苏宁易购的销售网站设计与实现,用户可以很方便的注册成为网站会员,对商品进行浏览检索,查看商品的详细资料,然后根据各人的喜好把心仪的商品放入购物车,按照顾客所填写的信息提交订单。系统管理员则可以对现有的商品进行添加和编辑,查询已注册的用户并对提交的订单进行处理[2]。
1.2 研究目的
网络购物中心是一种典型的电子商务网站,它的主要功能为企业与客户提供一个理解的交易平台,使掌握信息技术和商务规则的企业和个人,系统地利用各种电子工具和网络,高效率、低成本地从事各种以电子方式实现的商贸活动。网络购物中心可以将传统形式的购物活动的全过程在网络上以电子交易方式实现的商业贸易活动,包括选购商品、处理订单等。企业通过网络购物中心可以完成交易的全过程,扩大交易的范围,提高工作的效率,从而获取经济和社会效益。
网上购物不仅改变了公司进行运作的模式,使网上商城成为传统商务的补充和发展,也使人们改变了消费的观念和消费习惯。网上购物最大程度地方便了用户,你可以通过WWW浏览器实现WEB购物。自从几十年前电子计算机的出现,就为网上购物的发展创造了客观条件。但是它的发展还要借助于网络,所以其快速发展是在因特网的广泛应用上,可以预见,网上购物将成为商业普及、贸易的主流,必将影响着千家万户的生活和消费行为,并日益成为社会商业贸易活动的重要形式。廉价的网络资源使得网上商城成本低廉,世界性的互联网络带来无比宽阔的市场,给商家和买家带来的众多利益带来无限需求[3]。
本系统利用现在比较广泛的JSP+Oracle数据库的架构实现的,前台管理是友好的操作界面,供用户浏览、查询使用。包括浏览商品、查询商品、订购商品、购物车、用户维护等功能;后台管理是提供给管理员的,其中包括商品管理、用户管理等。使管理员从繁琐的手工操作中解脱出来,并提高了办公效率。
第2章 相关技术简介
2.1 JSP技术
Sun公司为了实现逻辑控制而创建出Servlet语言,但是Servlet语言将程序的逻辑控制代码和输出网页文档内容混合在一起,使得控制网页文档内容的显示外观和整体布局很难看,为了弥补Servlet语言这一缺陷,从而推出了JSP技术。它可以在传统的网页HTML中插入Java程序段和脚本文件以及JSP标记。用JSP开发的Web应用是跨平台的。
JSP页面由Web服务器执行,JSP的运行原理是当客户端向服务器发送请求时,被请求的JSP页面首先被Web应用服务器(tomcat)编译成Servlet(即将”.jsp”档编译成Java Class档)并执行,然后将所产生的结果作为一个HTML文件传输给浏览器,如果该JSP文件没有被修改过,当客户端再次向服务器发送请求时,JSP文件将不会再编译,而是直接执行已编译好的Servlet,这使得服务器的响应速度变得非常快,从而加快了访问速度。
JSP支持对组件的访问,组件本身体现了封装和复用的思想,基于组件的开发能有效提高软件生产效率。多数JSP页面依靠JavaBeans(相当于一个实体类)及企业级JavaBeans(EJB)组件, 来完成应用所需的复杂处理,并通过页面中的脚本把具有特定功能的组件集成在一起。现在,由第三方开发的共享组件越来越多,大大简化了用JSP实现动态网页的工作。JSP允许开发人员自己定义标签(tag ),这种标签一般对应于标签库中的Java程序,代表特定的应用功能。JSP使网页的外观设计与其动态内容分离,SP页面中的HTML标签定义了网页的外观,嵌在页面中的脚本、JavaBeans组件和标签库,共同生成与应用逻辑相关的动态内容。
本系统中用到了JSP的的标准标签库(JSTL),JSTL提供了能方便定义变量的标签,比如本系统在商品信息的jsp页面中中就用到了这个标签,还用到了标签,用来执行流程控制,其功能和java中的if功能完全相同。在标签中配合使用EL了表达式,主要用于查找作用域中的数据,然后对它们执行简单操作[4]。
本系统中还用到了JSP九大内置对象中的request、response、session、out四个对象,request对象封装了用户提交的信息,通过调用该对象相应的方法可以获取封装的信息,即使用该对象可以获取用户提交的信息,使用getParameter()方法获取表单提交的信息。当request对象获取客户提交的汉字字符时,会出现乱码问题,必须进行特殊处理,如下设置:request.setCharacterEncoding(utf-8),request对象作用域是一次请求;response对象主要功能是用于服务器对客户端的回应;session是基于cookie产生的,由tomcat管理的,cookie是通过代码创建的。session对象指的是客户端与服务器的一次会话,从客户连到服务器的一个WebApplication开始,直到客户端与服务器断开连接为止,它是HttpSession类的实例。系统中用setAttribute()方法存放用户名和密码,out对象时一个输出流,用来向客户端输出数据。out对象用于各种数据的输出,其常用方法有out.print()用于输出各种类型数据,out.close()是用于关闭流的。
2.2 JDBC技术
JDBC(Java DataBase Connectivity)是sun公司制定的Java链接数据库技术。在安装好数据库后JSP并不能直接与数据库连接,这里选择利用第三方JDBC驱动程序连接数据库。JDBC连接数据库的方式有四种,分别是JDBC-ODBC桥接驱动、JDBC本地访问方式、DBC网络访问方式、JDBC数据库协议访问方式。在项目开发中,如果频繁在JSP页面中使用数据库连接函数,释放函数进行操作的话,势必会非常麻烦,而且代码的冗余量也很大,页面很多的时候维护也会非常麻烦,页面上到处都是数据库连接和释放代码。因此,可以利用公共数据库访问连接JavaBean的开发。通过将数据库连接函数代码,释放函数代码等封装在JavaBean中,可以减少非常多的代码编程工作,提高代码可维护性。
SQL(结构化查询语言),它是一种标准化的关系型数据库访问语言。在SQL看来,数据库就是表的集合,其中包含了行和列。SQL标准虽然也还处在不断变革之中(任何一门标准如果已一成不变了,那只能说明这门学科已经停止发展了),但其基本内容相对稳定。JDBC定义了Java语言同SQL数据之间的程序设计接口。
本系统中自定义了一个底层数据库操作类DataBaseOperate,首先进行数据库连接属性的配置,在加载了JDBC驱动程序,建立了数据库的URL后,定义一个配置文件存放路径,使用getPath()方法,要先对文件是否存在加以判断,若不存在,先创建一个文件jdbc.xml,若存在,通过调用DriverManager类的getConnection方法与oracle数据库连接。这样,在其他的Java文件和页面中声明调用或包含了jdbc.xml文件后,都可以对数据库操作了,最后一定要记得关闭数据库及相关的对象。
2.3 MVC模式
本系统中使用MVC模式来降低耦合度,实现分层思想。其中Model层实现系统中的业务逻辑,由JavaBean来实现,View层用于与用户的交互,用JSP来实现,Controller层是M
odel与View之间沟通的桥梁,它可以分派用户的请求并选择恰当的视图以用于显示,同时它也可以解释用户的输入并将它们映射为模型层可执行的操作,本系统中是用servlet来实现的。
MVC全名是Model View Controller,是模型(model)、视图(view)、控制器(controll
er)的缩写,一种软件设计典范,用于组织代码,用一种业务逻辑 (​http:​/​​/​baike.baidu.com​/​view​/​1642754.htm​)和数据显示 (​http:​/​​/​baike.baidu.com​/​view​/​1309817.htm​)分离的方法,这个方法的假设前提是如果业务逻辑被聚集到一个部件里面,而且界面和用户围绕数据 (​http:​/​​/​baike.baidu.com​/​view​/​38752.htm​)的交互能被改进和个性化定制而不需要重新编写业务逻辑,MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中[5]。
视图是用户看到并与之交互的界面。对老式的Web (​http:​/​​/​baike.baidu.com​/​view​/​3912.htm​)应用程序来说 ,视图就是由HTML (​http:​/​​/​baike.baidu.com​/​view​/​692.htm​)元素组成的界面,在新式的Web应用程序中,HTML依旧在视图中扮演着重要的角色,但一些新的技术已层出不穷,它们包括Adobe Flash (​http:​/​​/​baike.baidu.com​/​view​/​1128244.htm​)和象XHTML、XML/XSL、WML (​http:​/​​/​baike.baidu.com​/​view​/​160091.htm​)等一些标识语言和Web services (​http:​/​​/​baike.baidu.com​/​view​/​1086510.htm​)。MVC好处是它能为应用程序处理很多不同的视图。在视图中其实没有真正的处理发生,不管这些数据是联机存储的还是一个雇员列表,作为视图来讲,它只是作为一种输出数据并允许用户操纵的方式。
模型表示企业数据和业务规则。在MVC的三个部件中,模型拥有最多的处理任务,例如它可能用像EJBs和ColdFusion Components这样的构件对象 (​http:​/​​/​baike.baidu.com​/​view​/​2387.htm​)来处理数据库,被模型返回的数据是中立的,就是说模型与数据格式无关,这样一个模型能为多个视图提供数据,由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性[6]。 
控制器接受用户的输入并调用模型和视图去完成用户的需求,所以当单击Web页面中的超链接和发送HTML表单 (​http:​/​​/​baike.baidu.com​/​view​/​3488030.htm​)时,控制器本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型构件去处理请求,然后再确定用哪个视图来显示返回的数据。
2.4 MyEclipse简介
本系统是在MyEclipse上进行开发的,MyEclipse从本质上讲是基于Eclipse的JavaEE方面的插件,是专门为方便JavaEE项目的开发设计的。MyEclipse的功能非常强大,支持也十分广泛,尤其是对各种开源产品的支持十分不错。MyEclip目前支持Java Servlet、AJAX、 JSP、JSF、 Struts、Spring、Hibernate、EJB3,JDBC数据库链接工具等多项功能。可以说MyEclipse几乎囊括了目前所有主流开源产品的专属eclipse开发工具。本系统用的是Myeclipse8.5版本,Genuitec发布了MyEclipse Enterprise Workbench 5.0,更智能、更快捷、更简单和更便宜的J2EE工具的新版本的诞生。它的价格对于个人和企业开发人员来说都是非常有吸引力的。这是J2EE IDE市场一个重量级的选手。通过增加UML双向建模工具、WYSIWYG的JSP/Strutsdesigner、可视化的Hibernate/ORM工具、Spring和Web services支持,以及新的Oracle数据库 (​http:​/​​/​baike.baidu.com​/​view​/​1685727.htm​)开发,MyEclipse 5.0继续为业界提供全面的产品[7]。
由于MyEclipse自带的jdk不全面,而且不能更新,所以在oracle官网中下载了jdk1.6.0_23,然后在MyEclipse中配置jdk,点击window下的Preferences,接着点击下面Java下的Installed JREs,点击add,最后还要设定环境变量path,JAVA_HOME。Path变量针对Java的具体含义是系统在任何路径下都可以识别Java命令需要设置的变量。JAVA_HOME变量就是java的安装路径。
2.5 Oracle简介
本系统使用的数据库是oracle,采用pl/sql工具建了5张表以及一个序列,该序列名称是T_SPXX_SPBH,PL/SQL Developer是一个集成开发环境,专门面向Oracle数据库存储程序单元的开发。oracle数据库是一种大型数据库系统,一般应用于商业,政府部门,它的功能很强大,能够处理大批量的数据,在网络方面也用的非常多。不过,一般的中小型企业都比较喜欢用mysql、SQL server等数据库系统,它的操作很简单,功能也比较齐全。只是相对于oracle数据库而言,在处理大量数据方面有些不如,oraclede的稳定性比sqlserver好,安全性也比sqlserver好,获得最高认证级别ISO的认证,oracle具有开放性,sqlserver只能在windows上运行[8]。
oracle简称甲骨文,是仅次于微软公司的世界第二大软件公司,该公司名称就叫oracl
e。oracle数据库管理系统是一个以关系型和面向对象为中心管理数据的数据库管理软件系统,其在管理信息系统、企业数据处理、因特网及电子商务等领域有着非常广泛的应用。因其在数据安全性与数据完整性控制方面的优越性能,以及跨操作系统、跨硬件平台的数据互操作能力,使得越来越多的用户将oracle作为其应用数据的处理系统。oracle数据库是基于客户端/服务器”模式结构。客户端应用程序执行与用户进行交互的活动。其接收用户信息,并向服务器端发送请求。服务器系统负责管理数据信息和各种操作数据的活动。
oracle数据库将权限划分为系统权限和对象权限两大类。系统权限是当前用户对数据库的操作权限,对象权限是当前用户对其他用户创建的数据库对象的访问权限。数据库对象有表、约束、索引、序列、触发器等等。实际Oracle的数据库对象是存放在一个叫做”方案”的逻辑空间内的。当前用户创建的数据库对象都放在当前用户的方案下,在用户创建的时候Oracle数据库会自动的为该用户创建一个与用户名相同的方案名。oracle创建表的规则:表名是由字母、数字、$、#、_组成 ,数字不能开头,长度不能超过30字符,大小写不敏感。一般情况下表名用大写来显示,不建议使用中文, 不能使用Oracle中的关键字。如该系统中的用户表名是T_YH,要注意的是如果需要访问其他的oracle数据库必须要配置tnsnames.ora在oracle的安装目录下的NETWORK/ADMIN/下,然后打开tnsnames.ora,把SERVICE_NAME = orcl中的orcl改成你要访问的那个数据库名称。
本系统要能正常使用数据库的前提是必须把服务(OracleServiceORC)和监听器(OracleOraDb10g_home1TNSListener)开启,建议把它们改成手动,这样不影响开机速度。
第3章 总体设计
3.1 需求分析
商务系统随着中国经济的高速发展发生了巨大的变化。专做营销的中小型企业随着百姓个人消费水平的增长迅速成长起来,但同时也带来了这一行业激烈的竞争。如今的网站已经不单单是把企业想要表达的内容拜访在网站上那么简单,设计包含了更多的元素,例如css样式、jsp页面,给予浏览者更多的视觉享受。现在企业营销商需要用一些更新颖更有效的方式增强竞争力。建设一个宣传自身商品形象的电子商务营销模式的网站是一种有效的方法。另外,通过电子商务网站,广阔自己的营销方式和市场,能够帮助企业营销商从鱼龙混杂的市场中脱颖而出,完善企业销售与服务的环节,最终提升企业的价值与经济效益。苏宁也在建立起了属于自己的购物平台,本系统就是模拟苏宁易购网站实现的一个网上购物系统[9]。具有基本以下功能:
1.用户注册登陆功能:用户户根据注册模快要求进行邮箱注册,验证码的验证,手机号是可选填的,注册后成功后完善自己的信息。
2.商品管理功能:该部分功能包括商品的管理和商品的浏览查询两大部分,将商品分成了日用、流行、新品、热销这4种状态,商品管理是面向管理员的,分商品增加、修改、查询,删除4个部分。面向用户的主要是商品的搜索,浏览功能,这里只支持精确查询。
3.购物车管理功能:商店用户在浏览商品时,可以根据自己愿意购买的商品加入到购物车,然后可以去结算或者继续购物,购买方式有两种,一键购和加入购物车,一键购是不需要加入购物车的,但是若要继续浏览其他商品可以选择先加入购物车,当进行结帐上时,购物车变为定单。
4.订单管理功能:订单管理分为面向管理员者和面向用户,管理员可以查询定单,修改定单以及删除订单,但是只能修改商品数量和商品总价格。用户可以查询订单状态,若此订单未付款,用户可以在此付款。
5.用户管理功能:此功能也分为两种面向管理员者和面向用户,用户可以对自己的信息进行修改,本系统有个默认的admin最大管理员,admin修改用户信息,注意的是不能修改用户密码,同时可以给用户授管理员权限,管理员可以查询所有用户,并有权删除。admin也可以新增其他管理员。
3.2 功能模块设计
层次模块结构是将系统划分为若干子系统,子系统下再划分为若干的模块。而模块是指具备有输入输出、逻辑功能、运行程序和内部数据四种属性的一组程序。在结构化系统设计中,模块一般都是按功能划分的,通常称为功能模块。合理的功能模块的划分能够极大限度地减少重复劳动、提高开发工作的效率并增大系统的可维护性[10]。
以前面的需求分析为基础,将系统分为两大模块,即前台模块和后台模块。本系统的功能结构如图3-1所示。
图3-1 系统功能结构图
3.2.1 前台功能模块设计
前台用户如需购买商品则需要先注册,为了系统的安全性考虑,在注册用户时要对邮箱格式进行了验证,还要校验两次密码输入是否相同,以及验证码是否输入正确,注册成功之后还要完善信息,完善的信息中包括昵称、真实姓名、性别、出生年月、证件类型、证件号码、居住地址。此时也要验证出生年月的格式和身份证的有效性,注册成功之后登录到首页面中,这时浏览商品了,将喜欢的商品选中加入购物车,可以查看购物车,修改商品数量,当总金额大于等于80时是免运费的,如果觉得这个商品不喜欢了可以删除购物车,购买购物车中的商品,即可以生成订单,也可以在订单管理里面查询到订单,订单状态为0的时候设置为未付款状态。如果没有登陆直接去主页面浏览商品的话,是不能加入购物车的,这是通过自己的用户名和密码登陆进去可以直接跳到刚刚浏览的那个页面,不需要再重新去查找商品了,这个是比较人性化的设计。为了方便登陆后台页面,在前台首页上放了一个超链接可以连到后台登陆的界面[11]。前台具体模块如图3-2所示。

图3-2 前台功能结构图
3.2.2 后台功能模块设计
台后台管理员不能注册只能由默认的admin管理员新增,首先要对管理员账号和密码进行验证,登陆进去之后可以将所有的用户查询出来,这里支持模糊查询,可以修改用户信息,给用户设置是否有管理员权限,后台查询商品可以根据商品编号查询,也可以根据商品编号和商品名称同时查询,可以修改商品信息,删除掉的商品将在后台商品信息表中的商品状态置为0,还可以去查询订单,如果生成的订单没有付款则订单状态置为0,付款成功后置为1[12]。后台具体模块如图3-3所示。
图3-3 后台功能结构图
3.3 数据库设计
在建设网站系统之前,必须对系统所用到的数据进行大致的分类和具体的结构设计,既要做到清晰明了,又要能适应系统各项功能的调用,而不至于产生结构上的逻辑混乱,保证关键数据在意外情况下不会被破坏,可以说数据库是系统的重中之重。数据库的核心思想是构造数据库,建立数据库及相关的系统,满足各种需求。首先在设计数据库时要分离各个实体和表,一个实体对应一个表;同时要明确各实体间的关系,明确各实体的属性,以便确定它的字段[13]。
3.3.1 E-R图
数据模型是现实世界中数据特征的抽象。数据模型应该满足三个方面要求,能够比较真实的模拟现实世界,容易为人所理解,便于计算及实现。E-R图为实体关系图,提供了表现实体型、属性和联系的方法,用来描述现实世界的概念模型。构成E-R图的基本要素是实体型、属性和联系。用矩形表示实体型,矩形 (​http:​/​​/​baike.baidu.com​/​view​/​150124.htm​)框内写明实体名;用椭圆 (​http:​/​​/​baike.baidu.com​/​view​/​36981.htm​)表示实体的属性,并用无向边将其与相应的实体型连接起来;用菱形表示实体型之间的联系,在菱形 (​http:​/​​/​baike.baidu.com​/​view​/​133728.htm​)框内写明联系名,并用无向边分别与有关实体型连接起来[14]。
本系统中包括用户、管理员、商品、订单这几个实体。实体产生的行为有用户注册和登陆、用户资料修改、用户购买商品、商品的增删改查、订单的增删改查、管理员对用户的删除、修改。
商品实体具有商品编号、商品名称、尺码、商品状态、商品描述、商品类型、日用状态、热销状态、新品状态、流行状态、颜色、商品价格、商品数量、图片路径这些属性,商品信息实体图如图3-4所示。
图3-4 商品信息实体图
订单实体具有订单状态、订单编码、配送方式、收货人、手机号码、电话、用户名、下单时间、结算金额、收货地址这些属性。它的实体图如3-5所示。
图3-5 订单明细实体图
3.3.2 数据库表设计
本系统数据库采用Oracle数据库,共包含用户表、用户信息表、商品信息表、订单主表和订单明细表这5张表。
用户表主要存放用户注册后而为进行完善信息的时候的数据的存放,用于前台注册。该表主要字段有用户名、密码、是否是管理员、用户状态,主键是用户名,用0和1作为判断,0代表不是管理员,不是用户,1代表是管理员,是用户[15]。如表3-1所示。
表3-1 用户表
列名 数据类型 是否为空 是否为主键 描述
yhm Varchar2(50) 否 √ 用户名
mm Varchar2(50) 否 密码
sfsgly Number 否 是否是管理员
yhzt Number 否 用户状态
用户信息表主要存放用户信息完善后的数据的存放,用于前台登记,后台用户管理。该表主要字段有用户名、邮箱、昵称、姓名、性别、出生年月、证件类型、证件号码、居住地址,主键是用户名,该表与用户表是以用户名关联的。如表3-2所示。
表3-2 用户信息表
列名 数据类型 是否为空 是否为主键 描述
yhm Varchar2(50) 否 √ 用户名
email Varchar2(50) 否 邮箱
nc Varchar2(50) 否 昵称
xb Varchar2(50) 否 姓名
xm Varchar(250) 否 性别
csny Date 否 出生年月
zjlx Varchar2(50) 否 证件类型
zjhm Varchar2(50) 否 证件号码
jzdz Varchar2(50) 否 居住地址
订单主表用于前台用户提交订单后的订单信息。该表主要字段有订单编码、商品名称、购买数量、商品总金额、订单状态、下单时间,其中订单编码是主键,订单状态用0和1表示,0表示该订单还未付款,1表示付款成功。如表3-3所示。
表3-3 订单主表
列名 数据类型 是否为空 是否为主键 描述
ddbm Varchar2(50) 否 √ 订单编码
spbh Varchar2(50) 否 商品名称
spsl Number 否 购买数量
spzje Number 否 商品总金额
spzt Number 否 订单状态
xdsj Date 否 下单时间
商品信息表用于前台商品详细信息的显示,用于后台商品信息的修改和删除。该表主要字段有商品编号、商品名称、商品价格、商品数量、颜色、尺码、款式、商品描述、热销状态、新品状态、流行状态、日用状态、商品状态、图片路径、商品类型,通过建立一个序列来生成商品编号,商品状态用0和1表示,0表示商品无效,当商品被删除是商品状态就为0。如表3-4所示。
订单明细表是与订单主表相关联的,该表用于后台管理员对订单的查询的数据的显示。该表主要字段有订单编码、配送方式、收货人、用户名、手机号码、电话、收货地址、订单状态、结算金额、下单时间。其中订单编码是主键。如表3-5所示。
表3-4 商品信息表
列名 数据类型 是否为空 是否为主键 描述
spbh Varchar2(50) 否 √ 商品编号
spmc Varchar2(50) 否 商品名称
spjg Number(10,2) 否 商品价格
spsl Integer 否 商品数量
ys Varchar2(50) 否 颜色
cm Varchar2(50) 否 尺码
ks Varchar2(50) 否 款式
spms Varchar2(500) 否 商品描述
rxzt Number 否 热销状态
xpzt Number 否 新品状态
lxzt Number 否 流行状态
ryzt Number 否 日用状态
spzt Number 否 商品状态
tplj Varchar2(100) 否 图片路径
splx Varchar2(50) 否 商品类型
表3-5 订单明细表
列名 数据类型 是否为空 是否为主键 描述
ddbm Varchar2(50) 否 √ 订单编码
psfs Varchar2(50) 否 配送方式
shr Varchar2(50) 否 收货人
yhm Varchar2(50) 否 用户名
sjhm Number 否 手机号码
dh Number 否 电话
shdz Varchar2(100) 否 收货地址
ddzt Number 否 订单状态
xdsj Date 否 结算金额
jsje Number 否 下单时间
第4章 详细设计
将系统分成前台和后台分成两个模块,各模块虽然是独立的,但又统一于同一数据库中,便于管理员管理维护数据库,同时也便于用户的操作。通过数据库连接,对后台数据进项增删改查,并把数据显示到前台页面上[16]。
4.1 创建与数据库的连接
在JSP中可以使用Java的JDBC技术,实现对数据库中表记录的查询、修改和删除等操作。JDBC技术在JSP中占有很重要的位置。JDBC(Java DataBase Connectivity)是Java数据库连接API。JDBC能完成三件事,第一是与一个数据库建立连接,第二是向数据库发送SQL语句,第三是处理数据库返回的结果。要先配置数据库连接的属性配置,配置驱动private String driver=oracle.jdbc.driver.OracleDriver,配置url路径private String url = jdbc:oracle:thin:@localhost:1521:ORCL,配置数据库的用户名private String user = scott,配置数据库的密码private String password = niit,定义配置文件存放路径private File pFile = new File(DataBaseOperate.class.getResource(/).getPath().
replaceAll(/classes, /conf)+ jdbc.xml),再定义一个全局连接的变量private Connection con = null和全局通道的变量private Statement state = null,通过Class.forName(driver)加载驱动,通过con = DriverManager.getConnection(url, user, password)建立连接,最后通过state = con.createStatement()创建通道[17]。
4.2 前台功能的设计和实现
前台主要实现了用户注册、用户登录、商品展示、购物车管理、生成订单等功能,采用ajax进行在js中向web服务器请求传递数据并接受数据[18]。
4.2.1 用户管理模块
用户在购买商品前一定要先登录,如果没有注册过则需先注册用户,然后才能浏览、购
买商品。注册时要验证邮箱地址,两次密码是否输入相同,验证码是否正确,还对密码强度进行了判断,手机号码是可选填的,使用了正则表达式[19]来验证邮箱格式和密码强度和手机号码,如果验证码看不清可以点击换一张,就是通过一个click事件,绑定一个事件处理函数,使用attr()方法设置被选元素的属性值。对这一系列的验证增强了系统的安全性,合理性。
用户注册界面如图4-1所示。
图4-1用户注册图
点击注册页面的提交注册按钮之后,会触发一个click事件,通过该按钮的id找到它绑定的函数,点击提交按钮之后要先把所有提示信息清空,然后进行一系列验证,定义了一个falg变量,设为true,如果flag等于true,则使用ajax的post方法请求后台servlet 类if(flag==true){$.post(/SNYG/servlet/registServlet,{yxdz: $(#yxdz).val(),mm:
$(#szmm).val(),sjhm: $(#sjhm).val(),yzm: $(#yzm).val()},post向指定的资源提交要处理的数据。该servlet中创建了一个用户的对象RegistUser ru=new RegistUser(),
调用了RegistUser用户类中的ru.saveUserInfo(yxdz, mm,telephone)方法,执行sql语句String sql=insert into t_yh(yhm,mm,sfsgly,yhzt) values(+email+,+password+
,0,1)将数据插入到后台数据库表中,定义一个funciton(data){}的函数,如果data等于0表示用户名存在,等于1表示验证码错误,等于2表示验证通过,然后根据if判断,根据id从页面中取得对应元素,将text的文本内容设置到该元素中。
页面中的验证码是定义了一个图形处理类YanZhengMaServlet 来处理的,首先设置http头信息,让页面知道这是一幅图片response.setContentType(image/jpeg),然后取消图片的缓存response.setHeader(Pargma, No-cache),接着再在内存中创建图片的缓冲区BufferedImage image=new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB
),定义一个画笔Graphics g=image.getGraphics(),最后定义一系列的画边框、背景、随机线、数字的方法,记得的数字放在session中存储以便登陆的时候验证HttpSession session = request.getSession(),session.setAttribute(yzm, srand),接着调用dispose()方法结束绘画,最后借助于图形输出接口将内存中画的图片通过response中的输出通道向客户端页面输出ServletOutputStream responseOutputStream = response.getOutputStream(),
ImageIO.write(image, JPEG, responseOutputStream)。
跳到注册成功之后的页面,点击点此完善超链接到完善信息的(addInformation.jsp)页面,该页面中要对出生日期格式和身份证进行验证,信息完善页面设计如图4-2所示。
图4-2 用户信息完善图
通过EL表达式${yxdz}取得注册的邮箱地址值,将它显示在信息完善页面中,是不可以修改的,然后同样采用上面的请求方式跳转到增加信息的Servlet,先通过request获取参数
值,判断身份证是否有效,定义一个变量flag,flag=0说明身份证号码正确,然后连接数据
库,执行Update更新语句String sql=update t_yhxx set nc=+nc+,xm=+xm+,xb=
+xb+,csny=to_date(+csny+,yyyy-mm-dd),zjlx=+zjlx+,zjhm=+zjhm+,jzdz=+jzdz+where yhm=+yhm+。
信息完善之后就可以登录了,前台登录使用submit这个点击登录按钮触发的事件进行验证,用ajax的post方法请求后台checkLogin这个servlet,获取定义servlet中了两个变量flag和number,flag设为0,表示用户名不存在,1表示用户名存在密码错误,2表示验证通过3表示验证码错误,number设为0,0表示用户名不存在,1表示用户名存在密码错误,2表示验证通过,调用checkUser里面的find()方法,执行selcet语句,通过用户名查询数据库中对应的用户对象,通过验证获得num的值,返回到checkLogin,在进行if判断,得到flag的值。用户登录,登陆界面如图4-3所示。
图4-3 用户登陆图
前台登录使用submit这个点击登录按钮触发的事件,用ajax的post方法请求后台登陆检查checkLogin这个servlet,定义servlet中了两个变量flag和number,String flag=0,int number=0,flag设为0,表示用户名不存在,1表示用户名存在密码错误,2表示验证通过3表示验证码错误,number设为0,0表示用户名不存在,1表示用户名存在密码错误,2表示验证通过,调用检查用户checkUser类里面的find()方法,执行selcet查询语句,查询出来的结果以结果集返回,然后遍历结果集while(rs1.next()){num=2;}通过用户名查询数据库中对应的用户对象,通过验证获得num的值,返回到checkLogin,在进行if判断,得到flag的值。
number=checkUser.find(yhm, mm);
if(!yzm1.equals(yzm2)){
flag=3;
}else if(yzm1.equals(yzm2) && number==0){
flag=0;
}else if(yzm1.equals(yzm2) && number==1){
flag=1;
}else if(yzm1.equals(yzm2) && number==2){
flag=2;
}
然后创建一个session,把用户明和密码放入session中,以备下一个页面进行提取应用HttpSession session=request.getSession(),session.setAttribute(yhm,yhm),sess
ion.setAttribute(mm,mm)。
4.2.2 商品管理模块
进入主页面后,用户可以根据自己喜好浏览页面上的商品,通过

  • 无序列表实现了页面上的菜单功能,还可以根据商品名称进行搜索。商品显示页面如图4-4所示。
    图4-4 商品显示图
    前台页面qt_main.jsp中没有任何数据,是通过qt_main.js中的ajax获得数据的,$.getJSON(/SNYG/servlet/zYMTuP,null,function(data)跳到主页面图片的Servlet中,该类中定义一个map,里面放了四种商品,value是四种商品的list集合。
    Map > map=new HashMap>();
    map.put(rxsp,tup.getRxlist());
    map.put(xpsp,tup.getXplist());
    map.put(lxsp,tup.getLxlist());
    map.put(rysp,tup.getRylist());
    Gson gson=new Gson();//将map以json的格式返回到页面
    out.print(gson.toJson(map));
    通过ZYMTuPCl类中getRxlist()方法跳转的对应的热销产品的实现类中,再通过sql语句select * from t_spxx where rxzt=1 and rownum<=5查找到商品,然后循环遍历商品,把商品再放到list中。最后通过ajax循环变量商品信息并将商品输出到页面中。
    for(var item in data){
    if(item==rxsp){
    var rxsp=data[item];
    for(var i=0;ivar str= title=+rxsp[i].spmc+:+rxsp[i].spjg+元/>;
    $(#rxsp).append(str);}
    将商品显示到主页面后,可以点击商品通过商品编号显示商品的具体信息,商品信息如图4-5所示。
    图4-5 商品信息图
    具体商品显示页面中的值是在js中取的,先定义一个临时商品变量tmpspbh,用ajax的get方式请求,当进入页面是加载ShowSpService这个Servlet,先获得从商品显示页面ShowSp.jsp传递过来的商品编号,根据商品编号从后台商品信息表中查询到这个商品编号的商品,创建一个商品的对象sp,把遍历的商品放入这个new的新对像中,先判断结果集是否为空,如果为空先遍历结果集rs.next(),再判断传递过来的商品是否为空,不为空的话将tmpspbh和sp进行比较,再把tmpspbh赋值给sp,最后将它以json格式输出到jsp页面中。$.get(/SNYG/Servlet/showSpService,{spbh:tmpspbh},function(json){ $(#tplj).attr(src,json.tplj);$(.spms).html(json.spms);$(#hidden_spbh).val(json.spbh);$(#spjg).html(json.spjg);$(#text_spsl).val(1);$(#spks).html(json.Spks)$
    (#spys).html(json.spys);$(#spmc).html(json.spmc);$(#splx).html(json.splx
    );},json)
    4.2.3 购物车管理模块
    将商品具体信息显示出来之后就可以将商品加入购物车了,也可以选择一键购买,购物车页面如图4-6所示。
    图4-6 购物车图
    购物车原理是用session实现的,session里面放了一个list。加入购物车的流程是:先在showSp.js中用val()方法获取元素的值,定义一个String类型的变量var str =/SNYG/servlet/newAddSpCart?spbh=+spbh+&spsl=+spsl+&spjg=+spjg+&spys=+
    spys;设置它的属性$(#yjgm).attr(href,str);跳转到加入购物车的那个Servlet,用request获取从页面传递过来的参数值,新建一个session,定义一个购物车cart,将其放入session中,将其转换成ShoopingCart。删除购物车要调用购物车实体类ShoopingCart里面的remoreSp()方法,若要展示购物车,先判断购物车是否为空,如果不为空则遍历返回的list。
    HttpSession session = request.getSession(false);
    //将cart转换成ShoopingCart类型
    ShoopingCart cart = (ShoopingCart) session.getAttribute(cart);
    if(cart!=null && delete.equals(action)){//删除购物车
    cart.remoreSp(spbh);
    if(cart.getCartList().size()==0){
    session.removeAttribute(cart);
    }else{
    session.setAttribute(cart, cart);}
    //使用重定向技术跳转跳到购物车页面
    response.sendRedirect(/SNYG/huang/ShoopingCart.jsp);
    return;}
    如果在没有登陆的前提下先浏览了商品,然后直接点击一键购买,是不能实现的,一般登陆之后就需要重新挑选商品,本系统中使用了一个action标志,来标记刚浏览过的商品,跳到登陆页面登陆之后会直接跳到刚刚浏览到的页面,不需要重新浏览了。var str=/SNYG/huang/BuySp.jsp?spbh=+$(#hidden_spbh).val()+&spsl=+spsl+&spjg=+spjg+&spys=+spys+&action=yjgm; 根据id获取到一键购买,然后对此元素的属性进行设置$(#yjgm).attr(href,str)。
    4.2.4 订单管理模块
    将商品加入购物车之后去结算,提交用户的一些信息,就可以提交订单将数据插入到后台订单明细表中,之后生成订单,订单页面如果4-7所示。
    图4-7 订单查询图
    点击删选按钮时,触发一个click事件,跳转到订单查询的那个servlet,获取页面传递过来的data2=$(#sp).val()==商品名称/定单号?:$(#sp).val()值,根据商品名称或者订单编号进行精确删选,首先从session中获得登录用户名,并将其转换为String类型,
    if(request.getSession()!=null){yhm=(String)request.getSession().getAttribute(yhm);然后判断它是否存在,调用订单处理类里面的getIsGLY()方法判断是否是管理员,int isgly=ddcl.getIsGLY(yhm);然后判断该用户名是否是管理员,如果isgly等于0,说明使用户,则是前台订单查询。然后调用订单操作实现类里面的ddCxFy()方法,执行sql语句,遍历结果集,将订单放到list当中,最后匹配list当中的每一个元素,来执行function函数,判断该订单是否已经付款。
    $.each(data.list,function(i,item){
    var ddzt =;
    var cz = ;
    if(item.ddzt==1){
    ddzt=已经付款;
    cz =评价;
    }else if(item.ddzt==0){
    ddzt=等待付款;
    cz =付款;
    }
    4.3 后台功能的设计与实现
    后台只有管理员才能登陆,管理员登陆进去之后对系统进行维护,管理员是不能注册的,只能由默认的admin新增。管理可以进行用户管理,商品管理和订单管理[20]。
    4.3.1 管理员登录模块
    每一个系统都是有后台的,是由后台管理员管理的,通过sql语句进行对后台数据库进行增删改查操作,后台管理员可以对系统的各个模块进行管理,后台管理员登陆页面如图4-8所示。
    图4-8 管理员登陆图
    后台登陆使用form表单提交的方式跳转到登陆控制的那个serverLoginControl类中,,页面初始化时,调用init()方法,将焦点定位到帐号$(yhm).focus();账号,密码都不能为空,验证原理同前台是一样的。
    4.3.2 用户查询模块
    前台注册的用户可以在后台显示显示出来,管理可以对其进行查询、修改、删除,查询可以根据用户名查询,查询用户页面如图4-9所示。
    图4-9 用户查询图
    点击用户查询超链接时通过form表单进行提交,跳转到queryYH_ByYhmControl这个servlet, ,在servlet中,用List list= queryYHService.QueryYH()获取用户对象的list,request.setAttribute(list,list)再将list设置成一个元素,然后跳转到jsp页面,request.getRequestDispatcher(/ht_yhgl/QueryYH.jsp),将元素list值返回页面forward(request,response)。
    调用queryYHService中的QueryYH()查询方法,连接到后台数据库,执行sql语句select t_yhxx.*,t_yh.yhzt from t_yhxx,t_yh where t_yhxx.yhm=t_yh.yhm(+) and t_yh.YHZT=1,获取所有用户对象,放入list中,再通过request.setAttribute()方法放入名为list的变量中,通过request转发跳转到QueryYH.jsp页面中,,用JSTL标签进行用户list的遍历。
    4.3.3 商品管理模块
    要想实现购买必须前台要有商品才行,通过后台添加商品,把商品信息插入到后台数据库表中,商品添加的页面如图4-10所示。
    图4-10 商品添加图
    使是用JSTL标签添加商品,跳转到addSpglServlet中,从页面上取到尺码、款式、商品描述的值,通过addSp()放入商品的对象中。
    scope=request>
    String cm = request.getParameter(cm);
    String ks = request.getParameter(ks);
    String spms = request.getParameter(spms);
    Spxx sp = new Spxx();
    sp.setSpmc(spmc);
    boolean flag = spgl.addSp(sp);
    request.setAttribute(flag, flag);
    request.getRequestDispatcher(/spgl/spxxresult.jsp).forward(request,respon
    se);
    添加成功之后跳转到querySpglServlet,从数据库查询相关商品信息,放入list中进行遍历。
    商品添加成功之后跳出一个jsp页面,有两个超链接,点击查看商品,商品查询页面如图4-11所示。
    图4-11 商品查询图
    点击查询按钮时触发click事件,先判断商品编号不为空,调用函数跳转到商品查询的servlet,再调用商品信息实现类里面的fingSpxxById()方法,执行sql语句select * from T_SPXX where spzt =1 order by spbh查询到商品,根据商品状态和商品编号进行升序查询,把查询到的sql以参数返回到结果集中,遍历结果集,将商品放入一个list中,最后以json的格式返回到页面。
    $(#cx).click(function(){
    if($(#spbh).val()!=null&&$(#spbh).val()!=){
    $.getJSON(/SNYG/servlet/querySpglSpxxServlet,
    {spbh:$(#spbh).val()},
    function(json){//回调
    $(#datatable).remove(); //将表格移除
    $(#spzj).remove();
    $(body).append(

    商品信息
    序号 商品编号 商品名称 商品价格 商品数量 颜色 尺码 款式 热销状态 新品状态> 流行状态 日用状态 图片路径 商品类型 商品描述 操作

    );
    $(#datatable).append(+1++json.spbh++json.spmc++json.spjg++json.spsl++json.spsl++json.cm++json.ks++json.rxzt++json.xpzt++json.lxzt++json.ryzt++json.tplj++json.splx++json.spms+修改  vlet?spbh=+json.spbh+>删除);
    $(body).append(继续商品增加);});}
    else{
    alert(商品编号为空,请重新输入);
    $(#spbh).focus(); }
    4.3.4 订单管理模块
    前台生成订单之后可以在后台查询出来,如果已付款,这里的订单状态为1,否则为0,如果删除订单,删除之后订单状态改为2,可以根据商品名称或者订单编号进行模糊查询,订单查询的页面如图4-12所示。
    图4-12 订单查询图
    进入js触发筛选的click事件,使用$.getJSON(/SNYG/servlet/dDCX,{data1: data1,data2:data2}跳转到订单查询的servlet,用request获取从页面转递过来的值,调用订单操作类里面的ddCxFy()方法执行sql语句,从后台数据库表中查询数据,遍历结果集,最后把数据以json的格式返回。
    while(rs.next()) {
    DingD dingD=new DingD();
    dingD.setDdbh(rs.getString(ddbm));
    dingD.setSpmc(rs.getString(spmc));
    dingD.setDdzt(rs.getInt(ddzt));
    list.add(dingD);
    }
    第5章 结束语
    本系统前台主要实现了用户注册登录、根据不同的分类浏览商品,将自己看中的商品放进购物车,可以对购物车里面的商品数量进行修改,也可以删除购物车。后台主要实现了后台管理员登陆,商品管理、用户的管理、订单管理四大主要功能模块,可以及时对商品、客户信息进行查询修改添加删除。
    本系统的优点是简洁明了,运行快捷,人性化的操作流程使管理员能够快速掌握本后台管理的操作上手容易,方便使用。运用MVC模式实现了网上购物功能,基本可以满足广大上网购物用户的需求。MVC开发模式中的三层各司其职,其中一层发生变化不会影响其他层,而且有利于责任分工,因此运用此模式开发相关系统可以提高工作效率。采用javabean技术减少了代码的重用,并且对每个操作后台系统会做出相应的判断,防止误操作的现象发生,保证了后台数据的安全性,确保了系统的安全性、合理性。另外还做了一些比较人性化的操作,比如用户未登录时查看的商品可以在用户登陆之后会直接显示出来,而不需要重新浏览,在购物车模块使用了金额大于等于80的时候是免运费的,还对购物的时间进行了设置,如果夜深了会提醒用户。
    本系统主要缺点是界面不完美,过于简单了,系统还有一些功能不够完善。比如用户信息修改,应该先把用户的所有信息返回到修改页面上,然后去需要修改的地方进行修改即可。比如删除商品是做好有个提示框,提示是否删除以免删除错误。本系统虽然可以为用户及管理员提供一定的方便使用,但是由于现阶段的条件还不是很成熟,离实际应用还具有一定的差距,功能方面还有一些需要完善的地方,这些都是今后继续学习的目标,争取能够完善已经有的功能,增加新的功能,使本系统的发展更加成熟和完善。
    参考文献
    [1] 邬妍. 一个网上购物系统的设计与实现[D]. 华中科技大学, 2009.
    [2] 刘海林. 网上购物系统的设计与实现[D]. 电子科技大学, 2010.
    [3] 奚嘉敏. 基于J2EE的网上购物系统的设计与实现[D]. 复旦大学, 2012.
    [4] 梁元栋. 基于JSP技术的电子商务网站设计与实现[D]. 华南理工大学, 2010.
    [5] 郝赫. 基于MVC模式的电子商城的设计与实现[D]. 吉林大学, 2010.
    [6] 李国娟. 基于JavaEE架构的网上购物系统的设计与实现[D]. 河北工业大学, 2011.
    [7] 林行健. Oracle 10g数据库管理、应用与开发[M]. 清华大学出版社, 2005.
    [8] 顾春华, 张雪芹, 付歌. Web程序设计[M]. 华东理工大学出版社, 2006.
    [9] 叶佳丽. 中国电子商务发展现状及其面临的问题[J]. 商业经济, 2010.
    [10] 周建儒. JSP中自定义标签的实现与部署[J]. 科技信息(科学教研), 2008.
    [11] 罗幼平. 基于MVC模式的Web应用程序结构分析[J]. 软件导刊, 2009.
    [12] 胡雯. 利用JSON实现Ajax中数据传递[J]. 科技信息, 2009.
    [13] 周建儒. JSP中自定义标签的实现与部署[J]. 科技信息(科学教研), 2008.
    [14] 廖彦华,罗小亮. 基于JSP技术的网上购物系统[J]. 电脑知识与技术, 2007.
    [15]徐卫英. 基于JavaScript的验证表单通用方案的设计与应用[J]. 计算机时代, 2010.
    [16] 熊亮春. PL/SQL在ORACLE数据库应用程序中的应用[J]. 江西广播电视大学学报, 2008.
    [17] 史建成,李萍,王君霞,郑健. JavaBean在JSP开发中的两个典型运用[J]. 福建电脑, 2008.
    [18] 伍德雁. Tomcat应用系统乱码问题研究[J]. 电脑知识与技术, 2008.
    [19] Georges-Louis Baron,Eric Bruillard. ICT, educational technology and educational instruments. Will what has worked work again elsewhere in the future?[J] .2007.
    [20] Cassidy A. Information systems strategic planning[J]. Bocaraton.Flrida. St.
    Luicepress, 2008.
    致谢
    毕业设计是我们在大学期间最后的课程,是四年学习的一个总结,也是我们学习成果的具体体现。所以我们做毕业设计必须有一个良好的态度,认真地对待,只有这样才可以学到更多的专业知识,为将来的工作做好各个方面准备。
    首先要感谢带我毕业设计的XXXX老师,我学的很多编程方面的知识都是他无私传授的。在毕业设计中遇到的问题,都能得到老师的悉心指导和帮助,常常在吃饭和下班的时间,老师继续为我们留在学校指导毕业设计。通过这次毕业设计我不但更深地掌握了软件工程方面的知识,更为重要地是也学到了做人做事应该所必要的素质,那就是余小军老师那种治学严谨、平易近人、无私奉献的精神。
    其次要感谢我的同学和同事,感谢他们在毕业设计的过程中给我的帮助。没有他们的帮助,我也不可能很好地完成本次设计任务。同时感谢从我进入大学以来,学校所有在学习和生活方面对我关心的老师。
    JIANGSU UNIVERSITY OF TECHNOLOGY

    本科毕业设计(论文)
    网站
    前台
    后台
    后台
    搜索商品
    管理员新增
    注册
    登录
    购物车
    生成订单
    用户管理
    商品管理
    订单管理
    前台
    修改资料
    购物车
    订单查询
    注册
    商品浏览
    登录
    管理员新增
    用户管理
    修改用户
    用户查询
    删除用户
    添加商品
    后台
    商品查询
    商品管理
    商品修改
    商品删除
    订单查询
    订单修改
    订单管理
    订单删除
    商品信息
    图片路径
    商品数量
    商品价格
    颜色
    新品状态
    热销状态
    日用状态
    商品类型
    商品描述
    尺码
    商品名称
    商品编号
    流行状态
    商品状态
    订单信息
    订单状态
    订单编码
    结算金额
    收货地址
    收货人
    配送方式
    下单时间
    用户名
    电话
    手机号码

B2C销售网站的设计与实现相关推荐

  1. java毕业设计颜如玉图书销售网站的设计与实现Mybatis+系统+数据库+调试部署

    java毕业设计颜如玉图书销售网站的设计与实现Mybatis+系统+数据库+调试部署 java毕业设计颜如玉图书销售网站的设计与实现Mybatis+系统+数据库+调试部署 本源码技术栈: 项目架构:B ...

  2. B2C外贸网站产品设计和功能需求,一个产品设置了在多个类别里面都可以看到,以及Email模板问题...

    今天修复了2个问题 1.一个产品设置了在多个类别里面都可以看到 如果一个产品设置了多个类别,首先要考虑,当打开这个产品详情页面的时候你需要知道这个产品是属于哪个类别的,可能属于A,也可能属于B,也可能 ...

  3. 健身器材销售网站的设计与实现(SSH)

    目 录 摘要----------------------------------I Abstract--------------------------------II 目录------------- ...

  4. 基于PHP+MySQL珠宝销售网站的设计与开发

    大多数时候珠宝是一种身份和高贵的象征,一个价值不菲的珠宝会给人一种高贵的感觉,同时珠光宝气也是人们非常喜欢的一种氛围,尤其是对女生来说,那种金光闪闪的东西总是会在无形中吸引她们的注意力,但是很多时候人 ...

  5. 基于PHP+MySQL珠宝销售网站的设计与开发#计算机毕设

    大多数时候珠宝是一种身份和高贵的象征,一个价值不菲的珠宝会给人一种高贵的感觉,同时珠光宝气也是人们非常喜欢的一种氛围,尤其是对女生来说,那种金光闪闪的东西总是会在无形中吸引她们的注意力,但是很多时候人 ...

  6. 儿童服装(童装)销售网站的设计与实现(ASP,SQLServer)(含录像)

    www.wisdomdd.cn 儿童服装(童装)销售网站的设计与实现(ASP,SQLServer)(含录像)(开题报告,毕业论文12000字,程序代码,SQLServer数据库) 功能需求 对于本课题 ...

  7. 基于asp.net护肤化妆品销售网站的设计与开发

    爱美基本是每个女士的天性,她们通常会花费大量的时间和金钱在化妆品上面,本系统采用VS2010+SQL2008来进行开发,帮助那些爱美人士更加方便快捷的购买的自己所需的化妆品 护肤化妆品销售网站系统主要 ...

  8. 基于ASP.NET的电子产品销售网站的设计与实现

    在信息时代,日益普及的Internet不仅带给人们更多及时的资讯信息,而且也在生活的各个方面带给人们更多的便捷,在一定程度上改变着人类的生活方式,例如在线购物.人们只要通过Internet的连接,在个 ...

  9. 网上图书销售网站的设计与实现(论文+源码)_kaic

    目录 摘要.  一.绪论.  (一)选题背景意义.  (二)国内外研究现状.  1.国内研究现状.  2.国外研究现状.  (三)研究内容.  二.系统相关技术.  (一)SSM框架.  (二)Mys ...

最新文章

  1. P1486 [NOI2004] 郁闷的出纳员 FHQ-Treap
  2. MVC实现简单的上传功能
  3. JsBridge Uncaught TypeError: Cannot call method 'callHandler' of undefined, source
  4. 堰流实验报告思考题_堰流流量系数测定实验
  5. 百度SEO站群給WordPress加音乐插件源码
  6. 解决PowerDesigner中DBMS选项卡为空白
  7. Transformers Assemble(PART I )
  8. 摄像头YUV2格式详解
  9. 电脑中了MEMZ病毒怎么办
  10. o2o是什么营销模式c语言求幂函数,O2O营销模式的特点是什么,o2o模式的运营方式...
  11. php redis 批量发邮件,PHP使用Redis实现订阅发布与批量发送短信
  12. 数字媒体技术在计算机技术中的应用,浅谈数字媒体技术的主要应用及发展趋势...
  13. DAY8:尚学堂高琪JAVA(70~76)
  14. java 表格 列删除_Java 删除Excel表格中的空白行或列
  15. 浅谈面试与简历——总结于尚硅谷视频《程序员面试指南》
  16. UFC/k1 VS中国散打!!!!!!!
  17. 做了6年php,30岁程序员要去做外包,这个选择靠谱么?网友:别!
  18. html中使用css实现版心定位
  19. css中的图标字体的实现方案及原理和工具使用
  20. app 中嵌入H5页面,H5跳转H5页面的跳转实现

热门文章

  1. 一键GHOST是什么?
  2. HTML5期末大作业:游戏网站——网络游戏官网(悦世界) 6个页面 HTML+CSS+JavaScript ~ ~ 学生HTML个人网页作业作品下载...
  3. 提高spark任务稳定性1 - Blacklist 机制
  4. UMLChina建模答题赛第二赛季最终排行榜-刘京城、第五元素、龙龙
  5. 在python中print表示的数据类型是_【Python连载】那些必须掌握的Python数据类型
  6. 如何寻找出色的产品经理
  7. 第一次用示波器怎么使用(基础经验)
  8. vlan间路由技术和生成树协议
  9. php转存百度云盘,[转]Linux定时备份数据到百度云盘
  10. java 麻将_JAVA程序设计(11)-----面对对象0基础设计 麻将 创建麻将牌 然后洗牌 发牌~ 恩 就这样...