电子商城-网上购物系统

电子商城-网上购物系统

ID:11097201

大小:10.26 MB

页数:76页

时间:2018-07-10

上传者:xinshengwencai
电子商城-网上购物系统_第1页
电子商城-网上购物系统_第2页
电子商城-网上购物系统_第3页
电子商城-网上购物系统_第4页
电子商城-网上购物系统_第5页
资源描述:

《电子商城-网上购物系统》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

电子商城-网上购物系统本科生毕业论文(设计)题目:电子商城-网上购物系统学生姓名:彭晓红学号:201317030231专业班级:网络工程13102班指导教师:丁德红完成时间:2017年4月IV 电子商城-网上购物系统目录目录I摘要IVAbstractIV引言1第一章绪论21.1网上购物系统的概念21.2网上购物系统与电子商务的联系与区别2第二章主要开发技术介绍32.1开发工具32.2开发语言32.3设计模式32.4后端框架32.5前端框架42.6数据交互技术42.7响应式设计42.8即时通讯5第三章需求与可行性分析63.1功能需求63.2性能分析73.3可行性分析8第四章系统总体设计94.1数据库设计94.2功能模块设计164.3网站流程设计17第五章系统详细设计与实现185.1为用户提供主页185.2用户注册页面195.3用户登陆页面215.4找回密码页面22IV 电子商城-网上购物系统5.5个人信息页面235.6商品列表页面255.7商品详情页面265.8店铺展示页面305.9申请成为卖家315.10卖家管理中心325.11添加商品325.12我的关注页面345.13我的收藏页面345.14我的购物车页面345.15我的订单页面355.16管理员登陆界面365.17超级管理系统界面375.18购物管理系统界面38第六章总结426.1系统优点426.2存在的不足426.3改进的方案42结束语43参考文献44致谢45附录46IV 电子商城-网上购物系统摘要在电子商务日益繁荣的今天,网上购物系统承担着极其重要的作用,因此设计一个安全、高效、稳定、具有良好用户体验的网上购物系统是值得不断探讨的一个主题。本网上购物系统以Windows操作系统作为开发平台,使用JetBrains公司的集成开发工具IntelliJIDEA实现。后端以Java的SSH(Spring、Struts2和Hibernate)三大框架作为核心架构并采用MVC设计模式,前端以Bootstrap作为主要框架。系统使用Oracle数据库作为数据库管理软件。系统中大量使用Ajax技术用于前后端信息交互,以便优化用户体验,在后台对用户数据进行检验,提高了系统安全性,为了进行实时交互,还采用了HTML5的WebSocket技术。系统为用户提供了登陆、注册、找回密码、修改个人信息、商品分类、搜索商品、收藏商品、购买商品、关注店铺、加入购物车、申请退货、余额充值、申请成为卖家、新建店铺、发布商品等功能,系统还为管理人员提供了修改密码、对用户提交的申请进行审核等功能。关键词:Java,SSH,Spring,Struts2,Hibernate,Bootstrap,Ajax,WebSocket,MVCIV 电子商城-网上购物系统AbstractToday,E-commerceismoreandmorebooming.Theonlineshoppingsystemisplayinganextremelyimportantrole,sodesignansafe,efficient,stableOnlineshoppingsystemwithagoodexperienceisasubjectthatworthexploring.ThisonlineshoppingsystemisbasedontheWindowsoperatingsystemplatform,anditwasdevelopedbyusingJetBrains'sintegrateddevelopmenttoolIntelliJIDEA.Inposteriorsystem,Java'sthreeframeworkSSH(Spring,Struts2andHibernate)wasusedasthecoreframeworkandMVCdesignpatternswasusedinthesystem.Inpage,Bootstrapframeworkwasusedasthemainframework.ThesystemusedOracledatabaseasthedatabasemanagementsoftware.Ajaxtechnologyisusedinthesystemfordatainteractionbetweenpageandsysteminordertooptimizetheuser’sexperience.Inthebackground,thedatawasverifiedtoimprovethesecurityofsystem.Forreal-timeinteraction,WebSockettechnologyofHTML5wasused.Thesystemprovidessomefunctionsforuserswiththelanding,registration,retrievethepassword,modifythepersonalinformation,commodityclassification,searchforgoods,collectgoods,buygoods,payattentiontoshops,addshoppingcart,applyforreturn,rechargethebalance,applytobecomeaseller,Publishgoodsandsoon.Thesystemalsoprovidesmanagementpersonnelwithachangeofpassword,reviewtheapplicationofuserandotherfunctions.Keywords:Java,SSH,Spring,Struts2,Hibernate,Bootstrap,AJAX,WebSocket,MVCIV 电子商城-网上购物系统引言购物作为人类生活中不可或缺的一部分,进入互联网时代后,随着网络技术的不断发展进步,各种移动智能终端快速涌现[1],网民数量的不断增长,网络与人们的生活日益紧密,人们对购物提出了更高的要求,他们不再满足于不得不在特定场所(比如商场、小卖部等)进行购物的现状,网上购物系统可以解决这些问题。通过网上购物系统,人们只要手持一部智能终端,就能随时随地购物。随着电子商务的不断成熟,网上的商品也与日俱增,几乎可以满足所有用户的购物需求,绝大多数人们可以在网上购买到想要的商品。购物系统给人类的生活带来了巨大的便利[2]。70 电子商城-网上购物系统第一章绪论1.1网上购物系统的概念网上购物系统又称为在线商城、网络商城、网上商城,是指运行在网络上的并且人们可以通过其进行购物行为的系统[3]。网上购物系统的英文是OnlineShoppingSystem,最早被Lap公司提出,当时英国在线购物刚刚起步,这一词语后来被引入中国,也就是现在的网上购物系统。1.2网上购物系统与电子商务的联系与区别电子商务的概念是在1996年被提出的,是指通过网络进行商务交易。狭义上的电子商务是指主要利用因特网进行商务活动,从广义上讲一切通过各种电子手段进行的商务交易都可以称之为电子商务。他们都有一个共同点,就是不是面对面的交易活动,这也是其区别于传统商务活动的地方[4]。根据电子商务的概念,网上购物是一种典型并常见的电子商务行为,网上购物系统作为网上购物行为中被广泛使用的一种重要工具和手段,在电子商务中充当着特殊且重要的角色。同时,人们网上购物的需求成就了网上购物系统的诞生与发展[5]。70 电子商城-网上购物系统第二章主要开发技术介绍2.1开发工具IntelliJIDEA:IntelliJIDEA是JetBrains公司推出的一款集成开发工具,主要用于Java开发,由于其在代码智能助手、代码自动提示、重构、J2EE支持、各类版本工具、单元测试、代码分析等方面的功能非常优秀,获得业界的高度好评,被公认为最好的java开发工具之一。2.2开发语言Java是由SunMicrosystems公司于1995年5月推出的高级程序设计语言。Java具有易于学习、强制面向对象、分布式、安全健壮、体系结构中立、原生支持多线程等优良特性而被许多程序员青睐[6]。Java的技术体系平台只要包括JavaSE、JavaME、JavaEE。本系统使用的是JavaEE平台[7]。现阶段,JavaEE平台被在许多企业使用于服务器端开发,占据着自己的一片天地。2.3设计模式B/S模式:B/S模式即“流量器/服务器”模式,区别于C/S(“客户端/服务器”)模式,对于用户而言,它的好处就是只需要通过浏览器就可以与服务器进行交互,不需要额外安装客户端程序[8]。它的不足是,与C/S相比,安全性和功能的完备性较差,它的客户端开发是基于浏览器的,存在限制,而C/S的客户端开发是专门为某些服务量身定制的,更加具有多样性。MVC的英文全称是ModelViewController,即模型-视图-控制器[9]。就是把一个应用程序设计为模型、视图和控制器三层,模型层封装数据和业务处理逻辑,视图层实现信息显示,控制层接收来自用户的操作,调用模型层响应对应的视图组件。这样做的好处是可以实现业务代码的重用,并且层次分明,便于查错和修改。本系统中使用的Struts2框架就是该模式的典型体现[10]。2.4后端框架70 电子商城-网上购物系统Spring是一个开源的轻量级框架,基于Spring开发的应用中的对象可以不依赖于Spring的API。Spring还是一个反转控制(IOC)和面向切面编程(AOP)的一站式容器,它可以包含和管理应用对象的声明周期,整合各种企业应用的第三方类库,例如本系统中使用的Struts框架和Hibernate框架就是使用Spring进行整合的,称之为SSH架构[11]。Struts2是一个基于MVC设计模式的Web应用框架[12],它使用Filter作为控制器,可以很方便地对所有资源进行控制访问,并且提供了开发过程中一些常见问题的解决方案,例如:对来自用户输入数据进行合法性验证,统一的布局,可扩展性、国际化和本地化、表单的重复提交、文件的上传下载等等。Hibernate是Java领域的一个非常成熟持久化框架,它通过对象关系映射实现对象的持久化,内部实现为对JDBC进行了非常轻量级的封装[13]。通过这个框架,程序员可以通过面向对象的方式实现对关系型数据库的操作,消除了那些针对特定数据库厂商的SQL代码。2.5前端框架Bootstrap是一个用于快速开发Web应用程序和网站的前端框架,目前非常受欢迎[14]。它基于HTML、CSS和JavaScript提供了大量现代Web项目开发中常用的组件,并且整个框架是基于模块的,使得更为简洁灵活,使用者可以不需要知道太多的HTML和CSS知识就可以构建一个网站。2.6数据交互技术Ajax即异步的JavaScript和XML,是一种前后端信息交互技术,它可以在不刷新整个页面的情况下,对网页的某个部分进行更新。利用好这项技术可以提升用户体验,有些情况下还可以减轻服务器压力[15]。例如:表单验证、搜索框提示、图片瀑布流等等。2.7响应式设计所谓响应式网站布局就是指页面可以根据用户行为或设备环境自动调整布局,使用这种设计理念可以达到更好的体验效果,例如:一个页面包含30张图片,在电脑浏览器上面可以清晰的展示,在不改变页面布局的情况下如果通过手机的浏览器打开就可能因为图片太小而看不清晰,通过响应式布局设计可以使页面通过手机的浏览器打开时调整布局,每行显示更少的图片,达到简洁清晰的效果[16]。70 电子商城-网上购物系统2.8即时通讯WebSocket是HTML5开始提供的一种基于TCP连接实现浏览器与服务器全双工通讯的协议[17]。通常,浏览器使用HTTP协议向服务器发送请求,但是这种通讯方式是单向的,服务器只有在收到浏览器的请求时才会根据这些请求进行对应处理并把处理的结果响应给浏览器,服务器不能主动向浏览器传输信息。而在许多情况下,这种需求是存在的,例如:股票、证券等实时数据的更新,在用户没有任何操作时向网页推送广告或新闻、在网页上实时聊天等等。在WebSocket之前,也有许多的技术能够实现这种需求,比如轮询(polling)、Comet、flash中的socket和xmlsocket等等,但是这些技术都存在一些缺陷。轮询指浏览器每隔特定时间(比如1秒)向服务器发送http请求,以便获得最新数据来更新页面,这种方式请求头很长,而且有效数据少,浪费带宽,需要不断访问服务器,增加了服务器压力。Comet技术比轮询更有优势,基于HTTP长连接实现,不需要浏览器显示发送请求,服务器会主动通过异步的方式推送数据到服务器,但是这种方式对服务器有要求,并且效率不高。使用flash可以完全实现该需求,但是浏览器需要安装flash插件。WebSocket只需一次握手就可以与服务器建立一条快速通道,实现数据的相互传递,并且Header很小,节省带宽,服务器在没有收到浏览器的请求时也可以向浏览器发送数据,未来可能取代上面的技术。WebSocket是一种新技术,许多低版本浏览器不支持,是否使用该技术还应该考虑实际需求。70 电子商城-网上购物系统第三章需求与可行性分析需求分析指明了要求完成的任务,为任务的实现者明确地提出了工作的方向和目标。在一个项目实际操作之前,进行详细的需求分析,是十分重要的一个环节,如果没有这一步,可能因为需求不明确而导致某些需求未给予实现或者实现不符合需求。通过需求分析可以体现项目的规模、实现难度以及需要的资源(包括人力和物力资源),从而在工作开始之前对需要的资源进行预算和准备。可行性分析是在需求分析的基础之上的,只有在确定需求之后才能分析出这些需求是否能够实现。如果没有进行可行性分析,可能出现工程在实现部分功能之后由于某些需求无法实现从而导致整个工程无法实现造成一定损失的情况。可行性分析需要考虑的情况很多,除上面提到的之外,还包括法律可行性、社会可行性、经济可行性等等。3.1功能需求购物系统要求采用B/S模式实现,用户可以通过浏览器方便地对服务器进行访问,而不需要经过安装客户端的繁琐过程。购物系统的用户按角色分为游客、会员、卖家和管理员,游客、会员和卖家是层层递进的关系,会员具备游客能实现的全部行为,卖家具有买家能实现的全部行为。游客能够查看和查询商品信息,并且可以注册购物系统,成为会员,会员主要作为商品的消费者,卖家是商品的提供者,而管理员对会员的行为进行管理。对于会员访问的页面,要求实现响应式布局,在不同大小的窗口中对布局进行调整,以便在不同设备上页面都能达到较好的显示效果。3.1.1为非管理员用户提供的功能游客可以访问购物系统的主页并浏览其中的商品信息,但是许多行为受到限制。游客成功注册购物系统后就具备会员的一切行为,会员可以体验购物系统提供的更多的功能,例如查看自己的个人信息,包括昵称、性别、默认收货地址、手机号和余额等,并且可以对自己的这些信息进行修改。会员还可以根据商品的类别、商品的名称和商品所属的店铺名称搜索自己需要的商品,并查看商品详情,关注自己喜欢的店铺,收藏心仪的商品,购买商品或把商品加入购物车。70 电子商城-网上购物系统会员可以申请成为卖家,申请成为卖家需要提供更多的个人信息,这些信息会被管理员看到,管理员会对这些信息进行审核,只有当管理员确定这些信息的合法性并同意通过审核之后,申请者才能成为卖家。卖家具有创建店铺,并向店铺中发布商品的功能,发布的商品也必须首先经过管理员审核通过之后才能被用户看到和购买。3.1.2为管理员用户提供的功能购物系统有两种管理员角色,分别是普通管理员和超级管理员,普通管理员的职责是对买家和卖家的操作行为进行控制,维护购物系统的良好环境,保障消费者权益,防止不良用户非法注册并发布虚假不合格商品。超级管理员一般只设置一个,是这个系统的答Boss,普通管理员都是他的员工,超级管理员可以对普通管理员的信息进行增删改查,对整个系统进行宏观的控制。3.2性能分析对于购物系统而言,从架构角度考虑,不使用框架,直接使用方法实现功能,性能会比较好,但是开发效率会降低,开发难度也会加大,要求程序员对技术的掌握程度更高。对于现在的处理器来说,使用优良的框架进行架构,性能影响不大。良好的代码能够使购物系统在相同硬件基础的条件下,具有更高的并发和数据处理能力。本系统中使用的是一些比较优秀和常用的框架,在一定程度上提高了开发效率,同时也保证了性能。性能分析考虑的方面很多,除了上面提到的之外,包括以下几个方面。3.2.1功能的完整性前面以购物系统的使用者为切入点,对系统的功能做了比较详细的需求分析,这些功能涵盖了一个购物系统必须具备的基本功能,并在此基础上进行了扩展,总体来说,这个系统的功能还是比较完整和丰富的。3.2.2数据库的安全性系统使用了Oracle数据库对数据进行存储和管理,并通过持久化框架Hibernate对数据库进行操作,使用Spring框架对Hibernate框架进行整合,管理Hibernate的sessionFactory,配置声明式事务和事务切入点,实现事务处理,保证了数据的一致性。在Hibernate中使用c3p0数据源管理Java程序与数据库的连接,在整体上提高了操作数据库的效率。在对数据库进行操作之前进行了权限的检验和数据的校验,防止对数据的非法操作和修改。3.2.3软件的可维护和可扩展性70 电子商城-网上购物系统系统中使用的Spring框架是轻量级的,使用该框架开发的应用可以不依赖于该框架的API,也就是说是松耦合的,更易于维护和扩展。同时,Spring框架是一个容器,可以整合第三方框架,很好地实现了扩展。在Struts2中,可以对控制用户访问的拦截器进行自由配置,也可以根据需求自定义拦截器,具有很好的灵活性。在后台系统中,所有使用的框架都使用配置文件的方式实现了软编码。这样的好处是,某些情况下,需要对程序进行调整,可以通过修改配置文件而不必修改原代码实现。3.2.4程序的可移植性Hibernate框架了使用配置文件的方式,实现了数据的可移植性。Java是一门跨平台语言,使用Java开发的程序可以运行在实现对应平台的JVM上,实现了整个系统的可移植性。使用Windows系统开发的程序可以在不对原码进行任何修改的情况下部署到以Linux为操作系统的服务器上。3.3可行性分析3.3.1社会可行性分析网上购物系统是现代比较流行的一种程序,它的出现给人们的生活带来了方便,也在一定程度上推动了经济的发展,促进了社会的进步。网上购物系统是网上购物需求的产物,也是网上购物的一种实现途径。网上购物的流行促进了人们的消费,以一种新的模式与实体经济进行融合,显示出强大的生命力。3.3.2经济可行性分析使用网上购物系统创建一个网上商城的成本包括开发成本、租用或购买服务器成本、维护成本等等,这里只对网上购物系统的设计与开发进行介绍,只涉及到开发成本,开发成本的高低与购物系统的复杂度有直接关系。3.3.3技术可行性分析系统为B/S模式,通常把浏览器端的开发称之为前端开发,把服务器端的开发称之为服务器端开发。服务器端可以通过JAVAEE平台实现,使用Spring框架管理对象,使用Struts2框架处理请求,使用hibernate框架持久化数据。前端可以通过HTML、CSS和JavaScript技术及基于这些技术的框架BootStrap实现。70 电子商城-网上购物系统第四章系统总体设计从总体角度对系统进行设计,大处着眼,从形成对整个系统的一个宏观上的认识,再由粗入细,小处着手,完成对整个系统的设计。这里从数据库设计、功能模块设计和流程设计三个方面进行介绍[18]。4.1数据库设计数据是系统中最为宝贵的资源,在关系型数据库中,数据通过记录的形式保存在表中,对于复杂的数据,数据之间是存在某些关系的,通常体现在表与表之间的关系,处理好这些关系,有助于提高操作数据的效率,同时也让人容易理解,一目了然。4.2.1概念结构设计概念结构设计是对现实中的事物的属性与关系进行分析,也是对信息的第一层提取和总结,为之后把其转化为可以通过数据库管理系统进行操作的数据表奠定基础。通常把这种抽象的事务称之为实体,通过E-R图的方式可以清楚地展示实体之间的关系。下面是系统分析过程中的部分E-R图,如图4.1所示,清楚地展示了管理员、买家、卖家、店铺、商品等实体之间的关系。与现实生活相似,一个会员实体具有昵称、性别、电话、头像、余额等属性,卖家也是会员,所以会员包括卖家,会员必须提供相关身份证明并通过管理员才能成为卖家,卖家具备创建店铺的行为,一个店铺可以存放若干商品,商品需要被管理员审核通过才能参与交易,一类商品可以使用多个参数、多张图片进行描述,一类商品可以有不同的规格,每种规格可以有不同的参数。图4.1主要实体间关系70 电子商城-网上购物系统图4.2中描述了商品实体间的联系,在现实中,我们经常把具有相同特征或功能的某些事物抽象成一个类,在类的基础上,还可以进行抽象,形成一个更大范围的类,于是类便有了层次结构。例如:一头猪和一头牛,它们都是哺乳动物,一条蛇和一条鳄鱼,它们都是爬行动物,哺乳动物和爬行动物都是动物,动物和植物都是生物。这里对商品进行了分类,把一个大的类别划分为若干个中等的类别,再把每个中等的类别划分为若干个小的类别。图4.2商品类别实体关系图4.3中同样按照分类的思想描述了省市区之间的联系,一个省包含了多个市、一个市包含了多个区。省市区都用来表示一个地址范围,且代表的范围越来越小。分类的好处是便于对类中的个体进行查找和管理。图4.3省市区实体间关系4.2.2实体与数据表70 电子商城-网上购物系统在实际开发中,实体需要进行进一步抽象,转化为数据表,存储在数据库中,以便通过程序代码进行操作。在Java中,通常使用一个类对应数据库中的一个表,使用一个对象对应数据库中一条记录,使用属性代表数据库中的字段。下面的表4.1-表4.21描述了实体与数据表之间的对应关系。表4.1超级管理员资料数据表-ADMIN_SUPER字段名类型长度描述A_NAMEVARCHAR220用户名A_PASSVARCHAR220密码表4.2普通管理员资料数据表-ADMIN字段名类型长度描述A_NAMEVARCHAR220用户名(主键)A_PASSVARCHAR220密码表4.3会员资料数据表-USERS字段名类型长度描述U_IDNUMBER10主键U_NICKVARCHAR220昵称U_PHONEVARCHAR213电话U_PASSNUMBER1密码U_HEADBLOB4000头像U_ADDRVARCHAR2300收货地址U_DATEDATE7注册日期U_MONEYNUMBER22余额表4.4卖家资料数据表-SELLERS字段名类型长度描述U_IDNUMBER10主键DETAILSBLOB4000身份证图片A_NAMEVARCHAR220管理员账号70 电子商城-网上购物系统S_DATEDATE7申请日期ID_CARDVARCHAR218身份证号码表4.5店铺资料数据表-SHOPS字段名类型长度描述S_IDNUMBER12主键S_NAMEVARCHAR250店铺名称S_HEADBLOB4000店铺头像U_IDNUMBER10所属卖家STATUSNUMBER1删除标识表4.6商品资料数据表-GOODS字段名类型长度描述G_IDNUMBER15主键C_IDNUMBER6商品类别G_ADDRVARCHAR2100发货地址S_IDVARCHAR212所属店铺A_NAMEVARCHAR220管理员账号G_HEADBLOB4000商品头像G_DATEDATE7发布日期G_NAMEVARCHAR2300商品名称STATUSNUMBER1删除标识表4.7商品详情资料数据表-GOODS_DESC字段名类型长度描述G_IDNUMBER15商品idG_DESCBLOB4000商品描述图片70 电子商城-网上购物系统D_IDNUMBER17主键表4.8商品参数资料数据表-GOODS_PARA字段名类型长度描述G_IDNUMBER15商品idP_NAMEVARCHAR250商品参数名P_VALUEVARCHAR2100商品参数值D_IDNUMBER17主键表4.9商品规格资料数据表-GOODS_NORM字段名类型长度描述G_IDNUMBER15商品idN_IDNUMBER17主键N_PRICENUMBER11商品价格N_STOCKNUMBER10商品库存表4.10规格参数资料数据表-NORM_VALUE字段名类型长度描述V_IDNUMBER17主键N_IDNUMBER15规格idV_NAMEVARCHAR240参数名V_VALUEVARCHAR2100参数值表4.11退货请求资料数据表-RETURNGOODS字段名类型长度描述IDNUMBER17主键REASONVARCHAR2400退货理由70 电子商城-网上购物系统OIDVARCHAR217订单号UIDVARCHAR210客户id表4.12关注资料数据表-USERS_ATTEN字段名类型长度描述U_IDNUMBER10用户idS_IDNUMBER12店铺id表4.13收藏资料数据表-USERS_COLLECT字段名类型长度描述U_IDNUMBER10用户idG_IDNUMBER15商品id表4.14购物车资料数据表-USERS_CART字段名类型长度描述U_IDNUMBER10用户idN_IDNUMBER15商品规格idNUMNUMBER8数量表4.15订单资料数据表-USERS_ORDER字段名类型长度描述U_IDNUMBER10用户idN_IDNUMBER17商品规格idNUMNUMBER10数量O_IDNUMBER17主键ADDRVARCHAR2100收货地址dateDATE7购买日期70 电子商城-网上购物系统STATEVARCHAR230状态标记表4.16省名称资料数据表-ADDR_PROVINCE字段名类型长度描述IDNUMBER11主键ADDR_PROVINCEIDVARCHAR26省idADDR_PROVINCEVARCHAR240省名表4.17城市名称资料数据表-ADDR_CITY字段名类型长度描述IDNUMBER11主键ADDR_CITYIDVARCHAR26城市idADDR_CITYVARCHAR250城市名FATHERVARCHAR26所属省份表4.18地区名称资料数据表-ADDR_AREA字段名类型长度描述IDNUMBER11主键ADDR_AREAIDVARCHAR26地区idADDR_AREAVARCHAR250地区名FATHERVARCHAR26所属城市表4.19商品大类别资料数据表-CATE_A字段名类型长度描述A_IDNUMBER2主键A_NAMEVARCHAR220名称70 电子商城-网上购物系统表4.20商品中类别资料数据表-CATE_B字段名类型长度描述A_IDNUMBER2主键A_NAMEVARCHAR220名称表4.21商品小类别资料数据表-CATE_C字段名类型长度描述A_IDNUMBER2主键A_NAMEVARCHAR220名称4.2功能模块设计系统主要包含网上购物系统和网上购物管理平台两个模块。网上购物系统是面向网络上使用该购物系统进行购物和发布商品的用户的,在此基础上的购物管理平台是针对系统拥有者的。4.4.1网上购物系统功能模块在图4.4中比较清晰地列出了网络购物系统下主要的功能模块,这些功能模块的具体实现将在下一章进行介绍。图4.4网络管理系统功能模块图70 电子商城-网上购物系统4.4.2网上购物管理系统功能模如图4.5所示,网上购物管理系统的主要功能模块包括登陆、注销、修改密码、审核卖家和商品和管理管理员。图4.5管理平台功能模块图4.3网站流程设计下图4.6描述了该系统前台基本流程图,当进入本站主页后,用户可以浏览本站商品,或者登陆本站购买商品、关注店铺、收藏商品、加入购物车,没有账号的用户可以进行注册成为本系统会员,会员如果想要发布商品可以提交申请信息供管理员审核,审核通过后就是本系统的卖家会员了,卖家发布的商品也是要经过管理员审核的,不然是无法被其他会员购买的。管理员也需要登陆管理平台后才能对会员或者管理员进行管理。图4.6系统前台基本流程图70 电子商城-网上购物系统第五章系统详细设计与实现5.1为用户提供主页主页是一个网站的门面。如图5.1所示,显示了系统主页,主页简洁方便,导航条上列出了登陆、注册、我的关注、我的收藏、我的订单、登出等连接,这些都是用户最常用的。主页上提供了搜索框,用户可以使用它快速地找到想要的商品。主页上的商品栏中列出了最新发布的商品供用户选择。在主页的最后列出了商品的类别,如果用户想查找某一类别的商品就可以用到它。图5.1主页界面主页设计时使用了Bootstrap框架的响应式布局模块,页面能够自适应屏幕,当使用手机浏览器打开主页是,界面如图5.2所示。导航栏会自动折叠,在右上角显示折叠栏,点击该折叠栏,导航栏中的内容就能展开了。原来在在电脑浏览器中一行显示六张图片,在这里每行只显示两张图片,看起来更加清晰精简。70 电子商城-网上购物系统图5.2移动端主页5.2用户注册页面点击主页中的注册按钮或者直接键入注册网址就进入了注册页面。注册页面提供注册功能,其实现使用了AJAX技术,该技术主要用于在不提交表单的情况下检测昵称是否已经被注册和实现省、市、区三级联动。同时,对于输入的字段,使用JQuery进行了格式校验。如果填写的信息不合法或者格式错误,注册按钮是不能使用的。除此之外,该界面模拟了使用手机获取验证码验证功能,由于发送短信需要购买接口,所以这里只进行了模拟。界面如图5.3所示。70 电子商城-网上购物系统图5.3注册页面部分代码://前端格式校验时获取输入文本字节数的函数:functiongetByteNum(str){vartotal=0;varcharCode;for(vari=0;inum){value=value.substr(0,value.length-1);that.val(value);}}//后端校验昵称是否已经占用的代码publicStringverifyNick(){//通过昵称从数据库中获取user对象Usersuser=usersService.getByNick(httpServletRequest.getParameter("uNick"));if(user==null){result.put("result","true");}else{result.put("result","false");}returnSUCCESS;}5.3用户登陆页面系统提供使用电话号码和密码登陆的功能,登陆需要填写验证码,目的是防止恶意套取他人账号,在登陆界面的左下角和右下角,分别提供了注册账号和找回密码的链接,方便用户切换页面。图5.4登录页面部分代码://电话号码只能填写数字$(":input[name='uPhone']").keyup(function(){$(this).val($(this).val().match(/d+/g,"-"));70 电子商城-网上购物系统});//点击图片时更换验证码$("img").click(function(){$("img").attr("src","${pageContext.request.contextPath}/users_getSecurityCode?"+newDate().getTime());});//后端校验验证码是否正确publicStringvarifySecurityCode(){StringsecurityCode=httpServletRequest.getParameter("securityCode");result.put("result","false");if(securityCode!=null&&securityCode.equalsIgnoreCase((String)session.get("securityCode"))){result.put("result","true");}returnSUCCESS;}5.4找回密码页面当用户忘记密码时,可以点击登录界面的找回密码链接进入找回密码界面,找回密码界面模拟通过手机号获取验证码来获得登录密码。图5.5找回密码页面部分代码://后台随机生成验证码并把验证码保存在session中publicStringsendPhoneCode(){Stringphone=httpServletRequest.getParameter("phone");Usersuser=usersService.getByPhone(phone);result.put("result","false");if(user!=null){70 电子商城-网上购物系统Strings="";for(inti=0;i<6;i++){s+=String.valueOf(Math.round(Math.random()*9));}session.put("pass",user.getuPass());session.put("phoneCode",s);result.put("result",s);}returnSUCCESS;}5.5个人信息页面登陆成功后,主页上会显示会员的昵称,点击昵称就进入个人信息页面,用户可以对自己的个人信息进行修改。在个人信息页面,点击头像可以修改头像,点击页面中的“编辑”按钮可以对相关信息进行编辑,注意的是这个功能有的浏览器不支持,修改完成后,可以点击“确定修改”按钮确定修改,也可以点击“取消”按钮取消修改。点击页面中的“充值”按钮,会弹出输入充值金额的对话框,输入充值的数目,点击“确定”按钮完成充值,点击“取消”按钮取消充值。如果要对手机号和密码进行修改,必须先填写密码,在对应位置输入修改目标手机号或目标密码,点击对应的“修改”按钮完成修改。图5.6个人信息页面70 电子商城-网上购物系统部分代码://使用ajax发送充值请求$(".ok").click(function(){$(".more").css("display","none");$.get("${pageContext.request.contextPath}/users_updateUser",{"name":"uMoney","value":$("#addMoney").val()},function(data){if(JSON.parse(data).result=="success"){$("td[name='uMoney']").text(parseFloat(${sessionScope.user.uMoney})+parseFloat($("#addMoney").val()));alert("充值成功!");}else{alert("充值失败!");}$.get("${pageContext.request.contextPath}/users_myData",function(data){$("body").html(data);});});});//手机号或密码修改$("button.update").click(function(){if($(".uPass").text().length==0){alert("修改之前必须提供密码!");}else{$.get("${pageContext.request.contextPath}/users_updateUser",{"name":$(this).parent().prev().attr("name"),"value":$(this).parent().prev().text(),"pass":$(".uPass").text()},function(data){if(JSON.parse(data).result=="success"){alert("修改成功!");window.location.assign("${pageContext.request.contextPath}/users_logout");}else{$(".uPass").text("");$("td[name='uPhone']").text("");$("td[name='uPass']").text("");alert("修改失败!");}});}});70 电子商城-网上购物系统5.6商品列表页面在主页中提供了搜索框,搜索框提供了两种模式搜索商品,第一种模式是通过商品名称搜索商品,另一种是通过店铺名称搜索商品。搜索采用的是模糊查询,只要名称中包含了填写的关键字,该商品就能被搜索到。点击搜索按钮后就进入到商品列表页面,如下图5.6所示。如果想按照类别查找所需商品,可以在主页中找到相应类别的链接也能进入到该页面。图5.7商品列表页面部分代码://控制层代码publicStringShowGood(){StringcId=httpServletRequest.getParameter("cId");if(cId!=null){cId=cId.trim();}Stringtype=httpServletRequest.getParameter("type");if(type!=null){type=type.trim();}Stringkey=httpServletRequest.getParameter("key");if(key!=null){key=key.trim();}Stringpages=httpServletRequest.getParameter("page");if(pages==null||pages.equals("")){pages="1";}else{pages=pages.trim();70 电子商城-网上购物系统}System.out.println(httpServletRequest.getParameter("page"));intsize=2;intpage=Integer.parseInt(pages);System.out.println("page"+page);Listgoodses=newArrayList<>();if(cId!=null&&!cId.equals("")){goodses=goodsService.listGoodsByCate(Long.parseLong(cId),page,size);Collections.shuffle(goodses);}if(type!=null&&!type.equals("")){goodses=goodsService.listGoodsByType(type,key,page,size);}Iteratoriterator=goodses.iterator();inti=0;while(iterator.hasNext()){Goodsnext=iterator.next();StringgetgName=next.getgName();if(getgName.length()>6){next.setgName(getgName.substring(0,6)+"...");}GoodsNormnorm=goodsService.listGoodsNorm(next).get(0);Doubleprice=norm.getnPrice();byte[]bytes=next.getgHead();Stringhead=Base64.getEncoder().encodeToString(bytes);result.put("head"+i,head);result.put("price"+i++,String.valueOf(price));next.setgHead(null);}try{result.put("goodses",JSONUtil.serialize(goodses));}catch(JSONExceptione){e.printStackTrace();}returnSUCCESS;}5.7商品详情页面70 电子商城-网上购物系统在主页、商品列表页面、店铺展示页面上都有商品展示图片,点击商品展示图片浏览器就会跳转到商品详情页面,商品详情页面如下图所示,该页面显示了商品的详细信息,包括商品所在店铺、商品名称、商品的卖家、发货地址、参数、规格等等。在这里,会员可以点击对应的按钮进行收藏、购买和加入购物车操作,如果是商品的卖家自己进入到该页面,是看不见这些按钮的,因为本购物系统不允许自己购买自己的商品。图5.8商品详情页面部分代码://后台响应请求publicStringshowGoodDetails(){StringgId=httpServletRequest.getParameter("gId");Goodsgood=goodsService.getGood(Long.parseLong(gId));ShopsshopById=shopsServers.getShopById(good.getsId());Usersuserbyid=usersService.getById(shopById.getuId().getuId());System.out.println(shopById.getuId());70 电子商城-网上购物系统byte[]bytes=good.getgHead();Stringhead=Base64.getEncoder().encodeToString(bytes);result.put("head",head);good.setgHead(null);Usersuser=(Users)session.get("user");result.put("hide","false");if(user!=null&&user.getuId()==shopById.getuId().getuId()){result.put("hide","true");}result.put("isCollect","false");if(user!=null&&usersService.getCollectById(user.getuId(),Long.parseLong(gId))!=null){result.put("isCollect","true");}try{result.put("shop",JSONUtil.serialize(shopById));result.put("good",JSONUtil.serialize(good));result.put("user",JSONUtil.serialize(userbyid));ListgoodsDescs=goodsService.listGoodsDesc(good);Liststrings=newArrayList<>();for(GoodsDescgoodsDesc:goodsDescs){byte[]bytes1=goodsDesc.getgDesc();Strings=Base64.getEncoder().encodeToString(bytes1);strings.add(s);}result.put("desc",JSONUtil.serialize(strings));ListgoodsParas=goodsService.listGoodsPara(good);Iteratoriterator1=goodsParas.iterator();while(iterator1.hasNext()){iterator1.next().setgId(null);}result.put("paras",JSONUtil.serialize(goodsParas));ListgoodsNorms=goodsService.listGoodsNorm(good);Iteratoriterator2=goodsNorms.iterator();while(iterator2.hasNext()){iterator2.next().setgId(null);}result.put("norms",JSONUtil.serialize(goodsNorms));Iteratoriterator=goodsNorms.iterator();inti=0;while(iterator.hasNext()){GoodsNormnext=iterator.next();ListnormValues=goodsService.listNormValue(next);70 电子商城-网上购物系统Iteratoriterator3=normValues.iterator();while(iterator3.hasNext()){iterator3.next().setnId(null);}result.put("values"+i++,JSONUtil.serialize(normValues));}}catch(JSONExceptione){e.printStackTrace();}returnSUCCESS;}当选好商品以及商品的购买数量点击购买按钮时,会出现验证框,如下图5.9所示,点击确定就确认购买,点击取消则不购买。图5.9验证提示框//业务层购买功能实现publicintbuy(Usersuser,StringnId,Stringnum){doublemoney=user.getuMoney();GoodsNormgoodsNorm=this.getGoodsNormById(Long.parseLong(nId));Doubleprice=goodsNorm.getnPrice();if(moneygoodsNorms=usersDao.listNormByGid(gid);intsum=0;for(GoodsNormnorm:goodsNorms){if(norm.getnStock()!=0){sum+=1;}}if(sum==0){good.setStatus(1);}return3;}}5.8店铺展示页面在商品详情页面中点击店铺链接就进入店铺展示页面,如下图5.10所示,店铺展示页面展示了该店铺所有的商品,点击商品图片进入商品详情页,点击关注店铺则把店铺添加到“我的关注”。图5.10店铺展示页面部分代码://关注店铺后端处理publicStringattenShop(){try{Usersuser=(Users)session.get("user");if(user==null){return"login";}70 电子商城-网上购物系统StringsId=httpServletRequest.getParameter("sId");UsersAttenusersAtten=newUsersAtten();usersAtten.setsId(Long.parseLong(sId));usersAtten.setuId(user.getuId());usersService.attenShop(usersAtten);result.put("result","success");}catch(NumberFormatExceptione){result.put("result","false");}returnSUCCESS;}5.9申请成为卖家申请成为卖家需要提交身份证号码和身份证图片供管理员审核,如下图5.7所示。图5.11申请成为卖家页面部分代码://后端处理请求publicStringseller_index(){Usersuser;SellersisSeller;if((user=(Users)session.get("user"))==null){return"login";}elseif((isSeller=sellersService.getSellerById(user.getuId()))!=null){if(isSeller.getaName()==null){return"jumpIndex";}else{session.put("seller",isSeller);return"sellers_index";}}else{StringidCard=httpServletRequest.getParameter("idCard");Sellersseller=newSellers();70 电子商城-网上购物系统seller.setuId(user.getuId());seller.setIdCard(idCard);if(details!=null){try{seller.setDetails(IOUtils.toByteArray(newFileInputStream(details)));sellersService.addSeller(seller);session.put("seller",seller);AdminActionadminAction=newAdminAction();adminAction.toSendMsg(sellersService);return"jumpIndex";}catch(IOExceptione){e.printStackTrace();}}return"applyForSeller";}}5.10卖家管理中心当申请成为卖家成功之后就可以进入卖家管理页面,在该页面可以创建店铺,并且可以对自己的店铺信息进行删除和修改,页面如图5.12所示。图5.12卖家管理中心5.11添加商品在卖家管理中心页面点击进入按钮,就进入商品管理页面,在商品管理页面可以添加商品,页面如下图5.13所示。当选择商品展示图片时,图片会在上方显示,商品类别和发货地址使用了级联下拉框。我们可以为一件商品设置多个参数,添加多个描述图片,发布多个规格。70 电子商城-网上购物系统图5.13添加商品页面部分代码://对商品展示图片的实时显示$(":file").change(function(){varpath=$(this)[0].value;varext=path.substring(path.lastIndexOf(".")).toLowerCase();if(!ext.match(/.jpg|.png|.bmp/i)){if($(this)[0].value!=""){alert("您上传的文件不合法,请重新上传!");}$(this)[0].value="";if($(":file[name='head']")[0].value==""){$("img.gHead").removeAttr("src");}}else{$("img.gHead").attr("src",window.URL.createObjectURL($(":file[name='head']")[0].files[0]));}70 电子商城-网上购物系统});5.12我的关注页面在主页上点击我的关注之后,就进入我的而关注页面。如图5.14所示。点击页面中的店铺名称,可以浏览该店铺的商品,点击取消关注,店铺将从我的关注页面移除,但是可以重新关注。图5.14我的关注页面5.13我的收藏页面从主页链接可以很方便地来到我的收藏页面。如图5.15所示,点击商品名称可以查看商品详情,点击取消收藏,该商品将从我的收藏中移除。图5.15我的收藏页面5.14我的购物车页面在主页上点击我的购物车链接便进入到购物车页面,如图5.16所示,点击商品名称会进入商品详情页,点击购买链接进行购买操作,点击移除购物车从购物车移除。图5.16我的购物车页面70 电子商城-网上购物系统5.15我的订单页面从主页链接可以很方便地来到我的收藏页面。图5.17我的订单页面部分代码://退货请求处理varop=$(".op");for(leti=0;i").text("退货").click(function(){vardiv=$("

").css({"position":"absolute","top":"0","left":"0","background-color":"white","width":"100%","height":"100%",}).appendTo("body");$("

").text("退货理由").css({"text-align":"center"}).appendTo(div);letreson=$("

内容无法转码请

关闭