版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第一章绪论1.1背景今日,我国绝大多数高校中的快消品消费仍是以传统的方式经营,即实体店(校园内多为小卖部或大学生超市),这种传统的经营方式难以满足学生的需求,也让商店的营业状况收到地理位置的影响,同时,由于校园内寸土寸金的原因,商铺房租也给商家带来了很大的成本压力。校园O2O(OnlineToOffline)平台主要目的为商家减少开店成本和为广大学生群体建立一个实用性,广泛性,快捷性的消费平台,它是一种新兴的电子商务平台。观察现在大学生消费的习惯,可发现这个群体消费潜力也是非常可观的,市场份额是相当巨大的,这样的市场为我们平台的发展提供了广大而乐观的前景。1.2软件开发的目标与意义本软件是一个能为校园周边的商店和想要进行物品和服务交易的个人提供一个线上的展示平台,同时让消费者能够更方便的了解信息和挑选物品的软件平台。目标是解决校园内商店与消费者的供需不平衡现象。同时提出以下几个开发目标:(1)软件应具有实用性、可靠性和适用性,同时注意到技术的先进性;(2)对数据库结构进行精准设计,防止后期维护麻烦;(3)支持用户的各种输入方式,比如简单的精确查询和模糊查询;(4)UI美观,并且方便用户的操作。1.3可行性分析经过上文中的背景描述中可看出,本项目的市场可行性是足够的,在推广方面由于范围仅限于校园,自己宣传即可,推广成本不高。而软件的开发成本方面,项目的规模比较小,对各方面的要求不高,讲究的是实用性,所以开发人员只有本人一个人,需要花费的基本只有精力和时间[2]。技术方面,软件的各方面要求不高,并且并非面向客户的开发,所以技术要求不高,是可行的。并且在此声明:该系统的开发将不会侵犯任何个人、集体、国家的利益,也不会违反国家的政策与法律。1.4相关技术和工具1.4.1O2OO2O的概念最早是在美国被提出,英文全称是OnlinetoOffline,即线上到线下。\t"C:/Users/baosh/Desktop/42+%E5%8A%B3%E6%98%A5%E6%99%96+%E6%A0%A1%E5%9B%AD%E5%95%86%E9%93%BA%E5%B9%B3%E5%8F%B0%E7%9A%84%E8%AE%BE%E8%AE%A1%E4%B8%8E%E5%AE%9E%E7%8E%B0/report_wx_qfjczuxv_2019-5-30-16-06-03/PaperPass-%E6%97%97%E8%88%B0%E7%89%88-%E6%A3%80%E6%B5%8B%E6%8A%A5%E5%91%8A/htmls/detail_report/right"主要指的是互联网和线下商业机会的结合,使互联网成为线下交易的前端,甚至有的没有线下实体。并且O2O的概念非常广泛,并非只有面对普通商业。O2O商业模型通过网络线上的人机交互页面指引,将用户与线下的实体店无缝对接,完美连接了实体店与互联网。这种模式允许客户在享受线上独有折扣的同时还能够享受实体店的服务,这样就把实体店和网点的优势完美结合了起来。O2O的具体特点可有以下几点:1、传统的线下营销推广模式效果随机性太大,受地利影响较严重,并且难以统计效果,而线上营销模式可以直观的根据用户的点击量、注册量或者购买量来统计营销效果,避免了传统模式的种种制约,使消费者的消费行为越来越透明,也让商家可以更为准确的为客户提供定制服务。2、网络的发展越来越快,网民数量呈指数型上涨,O2O模式就可以搭上这两互联网的快车,使消费者与商家的关联越来越深。3、使商家在同行中具有价格便宜(省去了宣传费),方便宣传和营销,并且折扣信息传播。4、O2O模式让顾客可以在足不出户的情况下,只要通过手机或电脑即可预览自己想要的商品,这就相当于线下去商店挑选商品,实现了售前体验,同时网络商城的价格都是透明的,可以进行横向对比,避免了无意中购买了高价商品。1.4.2SSMSSM是Spring+SpringMVC+MyBatis的缩写,是类似于前几年非常流行的SSH后的又一个收到各大企业青睐的企业级JAVA应用框架。目前的JAVAWEB应用几乎都是用Spring来搭建,而Spring框架的核心特性是控制反转(IOC)和面向切面(AOP)[6]。Spring是一个轻量级的Java应用框架,于2003年兴起,它是源于RodJohnson在其著作《ExpertOne-On-OneJ2EEDevelopmentandDesign》一书中阐述的一些想法和原型派生的。企业级的应用程序都避免不了模块的庞大和复杂,并且这种复杂性是随着产品的迭代而越来越庞大的,Spring的创建正是为了解决企业应用程序开发的复杂性,Spring允许开发者仅通过配置文件就可以完成对程序的大部分搭建,并且控制反转的特性使得各个类间的耦合性大为降低,从这些角度来看,Spring的应用不均线与服务器端的开发,任何Java程序都可以使用Spring而使其更为优秀并且易维护。SpringMVC也是Spring框架的其中一个产品,属于一个MVC框架,用于调度显示层和模型层。由于是Spring旗下的产品,其原生支持Spring的特性,与Spring契合度非常高,并且十分规范。它将模型对象、控制器、调度器和处理程序对象的角色分离开来,这使得定制变得更加容易[7]。
MyBatis项目是iBATIS3.0的子产品,由一个包括iBATIS的原始创建者的团队维护。该项目于2010年5月19日创建,当时ApacheiBATIS3.0已经发布,团队宣布将继续以新名称和GoogleCode的新家开发。iBATIS提供的持久层框架包括SQLMaps(SQL映射)和DataAccessObjects(DAO,数据访问对象)。MyBatis提供了一个映射引擎,它以声明的方式将SQL结果映射到对象树。可以使用类似XML的语法的内置语言或使用Velocity集成插件的ApacheVelocity动态构建SQL语句。它允许使用所有的数据库功能,如存储过程,视图,任何复杂性的查询和供应商专有的功能。对于遗留或非规范化数据库或获得SQL执行的万全控制,它通常是一个不错的选择。可以这么理解,MyBatis是一个帮助我们管理数据添加、删除和修改的框架[8]。1.4.3SUIMobileMSUI的是目标是为移动H5页面提供一个通用的组件库,它是阿里巴巴共享业务事业部的UED团队的产品。它减少了重复工作,增强了代码复用性。SUIMobile是一套基于Framework7开发的开源UI库,能兼容到iOS6.0以上版本和Android4.0以上版本,非常适合开发跨平台Web项目,其特点是非常轻量、精美,无需下载,只需要引入他们的CDN文件就可以使用。数据库则是MySQL,适用于小型企业或个人使用。SUIMobile是个非常轻量的UI库,提供了20多个比较常用的组件,但它的核心库压缩后的JavaScript和CSS文件网络传输体积总共只有52KB。对于SUIMobile,开发人员只需要复制HTML代码就可以使用,当然这是对于只有HTML&CSS的组件,你不用了解太多的前端开发技术。而SUIMobile大多数JavaScript组件都是独立的Zepto插件,并且提供了大家非常熟悉的
Zepto/jQuery风格的API.。1.4.4MySQLMySQL由瑞典公司MySQLAB创建,而DavidAxmark,AllanLarsson和Michael“Monty”Widenius是它的创始人。它是一个关系型数据库管理系统,现在归Oracle公司所有。MySQL属于关系型数据库的一种,关系型数据库的特性是数据并非存储在同一个地方,而是将数据存储在不同的表中,这样就提高了数据结构的稳定性,并且因为数据之间是有关联关系的,提高了数据存取的速度和灵活性[9]。MySQL是开源的,这个特点对于个人用户和小型企业非常友好。MySQL支持大型的数据库,并没有因为是开源免费的就降低了处理能力。MySQL使用非常标准的SQL语法,兼容性很好。本机存储引有InnoDB,MyISAM,Merge,Memory,Federated,Archive,CSV,Blackhole,NDBCluster。提交分组,从多个连接收集多个事务,以增加每秒的提交次数。MySQL支持大型数据库,如支持5000万条记录的数据仓库。1.4.5EasyUIjQueryEasyUI是一组基于jQuery、Angular、Vue和React的用户界面插件集合体,而jQueryEasyUI为构建现代的交互式JS应用程序提供了仅功能。开发人员不需要编写过多的JavaScript代码,开发人员只需要编写依稀HTML标记来定义用户界面。jQueryEasyUI功能可能相对没有Extjs强大,但页面也是相当漂亮的,最重要的是在开发产品的同时能够节省时间和缩小代码规模[10]。
第二章需求分析2.1系统功能分析前台展示模块前台展示模块即本应用面向顾客用户的部分,用于向顾客展示平台中的商店列表,商店详情,商店中的商品列表,提供给顾客购买商品的功能,并且需要有登陆功能,用户登陆后方可购买商品。店家管理模块店家管理模块即本应用面向店家用户的部分,用于给店家管理名下的店铺和店铺中的商品。并且需要管理商店中的商品的类别,因为每个商品都对应着一个商品类别。超级管理员模块超级管理员模块用于管理系统中其他用户无权管理的信息,面向的是负责维护本程序的专业人员。具体应该包括对首页中的头条的管理,对商铺的类别的管理,对区域的管理,对系统中除超级管理员外的用户的管理和对系统中商铺的管理。2.2系统用例模型以下是根据需求分析所搭建出的用例模型[12]:2.2.1系统参与者列表表2-1系统参与者列表SA_01顾客SA_02店家SA_03超级管理员2.2.2用例图图2-1顾客用例图图2-2店家用例图图2-3超级管理员用例图2.2.3用例描述表2-2绑定本地账号用例描述用例编号UC_001用例名称绑定本地账号简要描述顾客或者店家绑定本地账号参与者顾客或店家前置条件已关注微信公众号,并在微信进入系统后置条件数据库中新建了一条本地账号信息正常流程进入首页或店铺列表页面点击右下角的“我”点击绑定本地账号输入账号和密码点击提交系统提示操作成功异常流程5a信息不充分:5a1.系统提示重新输入信息5a2.输入信息再次提交5a3.返回65b.已经存在账号:5b1.系统提示已经绑定过账号5b2.退出绑定界面表2-3登陆本地账号用例描述用例编号UC_002用例名称登陆本地账号简要描述顾客或者店家登陆本地账号参与者顾客或店家前置条件进入系统,并且已经绑定了本地账号后置条件登陆成功正常流程1.进入登陆页面2.输入账号和密码3.点击登陆4.登陆成功,进入对应页面异常流程3a信息不充分:3a1.系统提示重新输入信息3a2.输入信息再次提交3a3.返回43b.账号或密码错误:3b1.系统提示账号或密码错误3b2.重新输入正确的账号密码3b3.返回4表2-4修改本地账号密码用例描述用例编号UC_003用例名称修改本地账号密码简要描述顾客或者店家登陆本地账号参与者顾客或店家前置条件进入系统,并且已经绑定了本地账号后置条件修改账号密码成功正常流程进入系统进入修改账号密码页面输入账号、原密码、新密码、确认新密码、验证码点击提交修改成功异常流程4a信息不充分:3a1.系统提示重新输入信息3a2.输入信息再次提交3a3.返回54b.账号或密码错误:4b1.系统提示账号或密码错误4b2.重新输入正确的账号密码4b3.返回54c.验证码错误:4c1.系统提示验证码错误4c2.重新输入正确的验证码并提交4c3.返回5表2-5购买商品用例描述用例编号UC_004用例名称购买商品简要描述顾客在店铺内购买商品参与者顾客前置条件进入系统,进入商店页面后置条件提交订单成功正常流程将选择好的商品加入购物车进入购物车页面,确认信息点击提交订单提交成功异常流程3a购物车为空:3a1.系统提示购物车为空3a2.返回商店页面3a3.返回13b.登陆已失效:3b1.系统提示登陆已失效3b2.进入登陆页面重新登陆3b3.返回1表2-6添加店铺用例描述用例编号UC_005用例名称添加店铺简要描述店家添加一家店铺参与者店家前置条件进入系统,进入店铺列表页面后置条件添加成功正常流程点击添加店铺按钮填写表单信息并且选择要上传的图片输入验证码点击提交按钮提交成功异常流程4a.验证码错误:4a1.系统提示验证码错误4a2.重新输入正确的验证码4a3.点击提交按钮4a4.返回54b.表单信息不完整:4b1.系统提示请输入店铺信息4b2.重新填写表单信息4b3.点击提交按钮4b4.返回54c.上传图片为空:4c1.系统提示上传图片为空4c2.重新选择图片并填写验证码4c3.点击提交按钮4c4.返回5表2-7修改店铺信息用例描述用例编号UC_006用例名称修改店铺信息简要描述店家修改一家店铺的信息参与者店家前置条件进入系统,进入店铺列表页面后置条件添加成功正常流程点击需要操作的商铺的进入按钮点击商铺信息填写新的商铺信息填写验证码点击提交按钮修改成功异常流程5a.验证码错误:5a1.系统提示验证码错误5a2.重新输入正确的验证码5a3.点击提交按钮5a4.返回65b.表单信息不完整:5b1.系统提示请输入店铺信息b2.重新填写表单信息5b3.点击提交按钮5b4.返回65c.上传图片为空:5c1.系统提示上传图片为空5c2.重新选择图片并填写验证码5c3.点击提交按钮5c4.返回6表2-8商品类别管理用例描述用例编号UC_007用例名称商品类别管理简要描述添加或删除该店铺下的商品类别参与者店家前置条件进入系统,进入店铺列表页面后置条件操作成功正常流程点击需要操作的商铺的进入按钮点击类别管理点击新增按钮填写类别的信息点击提交按钮提交成功异常流程5a.没有新增的类别:5a1.系统提示请至少输入一个商品类别5a2.重新添加商品类别信息5a3.点击提交按钮5a4.返回6表2-9添加商品用例描述用例编号UC_008用例名称添加商品简要描述在当前店铺下添加商品参与者店家前置条件进入系统,进入店铺列表页面后置条件操作成功正常流程1.点击需要操作的商铺的进入按钮2.点击商品管理按钮3.点击添加按钮4.填写商品的表单信息5.填写验证码6.点击提交按钮7.提交成功异常流程6a.验证码错误:6a1.系统提示验证码错误6a2.重新输入正确的验证码6a3.点击提交按钮6a4.返回76b.表单信息不完整:6b1.系统提示请输入店铺信息6b2.重新填写表单信息6b3.点击提交按钮6b4.返回76c.上传图片为空:6c1.系统提示上传图片为空6c2.重新选择图片并填写验证码6c3.点击提交按钮6c4.返回7表2-10修改商品信息用例描述用例编号UC_009用例名称修改商品信息简要描述在当前店铺下修改商品信息参与者店家前置条件进入系统,进入店铺列表页面后置条件操作成功正常流程1.点击需要操作的商铺的进入按钮2.点击商品管理按钮3.点击对应商品的修改按钮4.填写商品的表单信息5.填写验证码6.点击提交按钮7.提交成功异常流程6a.验证码错误:6a1.系统提示验证码错误6a2.重新输入正确的验证码6a3.点击提交按钮6a4.返回76b.表单信息不完整:6b1.系统提示请输入店铺信息6b2.重新填写表单信息6b3.点击提交按钮6b4.返回76c.上传图片为空:6c1.系统提示上传图片为空6c2.重新选择图片并填写验证码6c3.点击提交按钮6c4.返回7表2-11超级管理员登陆用例描述用例编号UC_010用例名称超级管理员登陆简要描述超级管理员登陆参与者超级管理员前置条件进入超级管理员登陆页面后置条件登陆成功,进入后台管理主页正常流程1.输入超级管理员账号和密码2.点击登陆按钮3.登陆成功异常流程2a.账号或密码错误:2a1.系统提示账号或密码错误2a2.重新输入正确的账号密码2a3.点击提交按钮2a4.返回3表2-12头条信息管理用例描述用例编号UC_011用例名称头条信息管理简要描述对头条信息进行增删改查参与者超级管理员前置条件已登陆进后台管理页面后置条件操作成功正常流程点击头条管理按钮选择要进行操作的头条填写表单信息点击提交提交成功异常流程4a.表单信息不完整:4a1.系统提示请输入头条信息4a2.重新填写表单信息4a3.点击提交按钮4a4.返回54b.上传图片为空:4b1.系统提示上传图片为空4b2.点击提交按钮4b3.返回5表2-13区域信息管理用例描述用例编号UC_012用例名称区域信息管理简要描述对区域信息进行增删改查参与者超级管理员前置条件已登陆进后台管理页面后置条件操作成功正常流程1.点击区域管理按钮2.选择要进行操作的区域信息3.填写表单信息4.点击提交5.提交成功异常流程4a.表单信息不完整:4a1.系统提示请输入区域信息4a2.重新填写表单信息4a3.点击提交按钮4a4.返回5表2-14店铺类别信息管理用例描述用例编号UC_013用例名称区域信息管理简要描述对店铺类别信息进行增删改查参与者超级管理员前置条件已登陆进后台管理页面后置条件操作成功正常流程1.点击类别管理按钮2.选择要进行操作的类别信息3.填写表单信息4.点击提交5.提交成功异常流程4a.表单信息不完整:4a1.系统提示请输入类别信息4a2.重新填写表单信息4a3.点击提交按钮4a4.返回54b.上传图片为空:4b1.系统提示上传图片为空4b2.点击提交按钮4b3.返回5表2-15账号管理用例描述用例编号UC_014用例名称账号管理简要描述对账号进行禁用或启用参与者超级管理员前置条件已登陆进后台管理页面后置条件操作成功正常流程1.点击账号管理按钮2.选择要进行操作的账号3.启用或禁用账号4.点击提交5.提交成功异常流程无表2-16店铺管理用例描述用例编号UC_015用例名称店铺管理简要描述对店铺进行管理参与者超级管理员前置条件已登陆进后台管理页面后置条件操作成功正常流程1.点击商铺管理按钮2.选择要进行操作的店铺3.填写表单信息4.点击提交5.提交成功异常流程4a.表单信息不完整:4a1.系统提示请输入店铺信息4a2.重新填写表单信息4a3.点击提交按钮4a4.返回52.3性能需求分析一个程序应用不仅要考虑业务需求,对于程序的运行环境和系统质量需求也非常重要,直接影响到应用运行的稳定性,这直接关系到最终的用户体验,用户不想在使用的过程中遇到卡顿或程序崩溃的情况。我们要从人机交互、实用性的角度出发开发该网站系统,在设计过程中主要考虑一下要求:可操作性该系统操作简单,因为主要面向移动端,为手指点击操作,而在操作错误后会有对应的提示,帮助引导用户。系统界面尽量做到简单、美观,一眼就能看到需要的内容在什么地方。可靠性该系统为商城平台,势必会有多人同时访问,所以系统需要有一定的负载能力,但因为面向的仅是校园内,用户量有限。安全性系统有些功能需要有权限的用户才能操作,所以需要有权限验证,并且需要注意密码的安全性,需要对密码进行加密。可维护性软件都是需要不断维护的,前期设计代码时必须要考虑到日后修改的难度,尽量做到高内聚低耦合,减少代码之间的关联性。2.4数据分析经过需求分析和系统功能分析,本系统共有区域信息、微信账号信息、本地账号信息、用户个人信息、商铺信息、商铺类别信息、商品信息、商品类别信息、商品详情图片信息、头条信息、购物车信息11个数据对象,需要对他们进行相应的数据分析与设计。区域信息存储校园的区域信息,用于区别每个小区,每个店铺都有所属的区域,一个区域下面有多个店铺。微信账号和本地账号都是关联一个用户个人信息类。用户个人信息用于存储微信里的个人信息,这些信息都是用户第一次扫描进来时自动获取的,用户类别有三种,普通用户,店主和超级管理员,使用用户类别属性标识。商铺信息包括商铺名,商铺描述、商铺的缩略图、地址、联系电话、用于排序的权值、管理员给于的建议、所属的区域、店铺拥有者,店铺类别,一个商铺拥有多个商品类别。一个店家用户可以创多个店铺,所以用户和店铺是一对多关系。一个店铺类别下面会有多个店铺,所以店铺类别和店铺是一对多关系。商品与商品类别相关联,每种商品都属于一种商品类别,而商品类别都是在某个店铺下的。商品详情图片信息类用于存储详情图片的地址,而一个商品里关联着一个详情图片列表,列表里有复数个详情图片。头条信息即广告,展示于首页的上部。购物车信息即订单,用户提交购物车后生成。下面是对应的数据类图:图2-4系统数据类图这10个实体的属性说明如下:区域信息属性包括:区域Id、区域名称、权重、区域描述、创建时间和修改时间。区域Id为该实体的唯一标识,权重用于在展示时给各个区域排序。微信账号信息属性包括:微信账号Id、openId、创建时间和修改时间。微信账号Id为该实体的唯一标识,openId是微信官方接口提供的每个微信账号的唯一标识。本地账号信息属性包括:本地账号Id、用户名、密码、创建时间和修改时间,用户个人信息类。其中用户个人信息类是用于与用户个人信息类关联。用户个人信息属性包括:用户Id,用户名、头像、邮箱、性别、是否可用、用户类型、创建时间和修改时间。其中头像是从微信获取的微信头像,邮箱、性别、用户名也是来自微信的资料。用户类型用来标识用户的权限。商铺信息属性包括:商铺名,商铺描述、商铺的缩略图、地址、联系电话、权值、创建时间和修改时间,是否可用标识、区域、拥有者、店铺类别。其中区域、拥有者、店铺类别都是与对应实体类关联。商铺类别信息属性包括:类别Id、类别名称、类别描述、类别图片、权值、创建时间和修改时间。其中父类别与另一个商铺类别类关联。商品类别信息属性包括:类别Id、类别名称和权值、创建时间。。商品信息属性包括:商品Id、商品名称、商品描述、商品缩略图、原价、活动价、权值、创建时间和修改时间、所属店铺,所属商品类别,详情图片列表。其中所属店铺和店铺类关联,所属商品类别和商品类别类关联,详情图片列表存储着多个详情图片类实体。商品详情图片信息属性包括:图片Id、图片地址、图片描述、权值,所属商品、创建时间。其中所属商品与对应的商品类实体关联头条信息包括头条Id、头条名称、头条链接、头条图片、权值、是否可用的标识,创建时间和修改时间。购物车信息包括购物车Id,商铺Id,创建时间,所有商品的字符串,顾客,是否是新订单的标识。
系统设计完成了需求分析之后,接着就要开始进行程序的详细设计,包括程序的总系统架构,还有各个分支功能模块的业务流程,当然最重要的是数据库的表结构设计。3.1系统总体架构本网站使用动态网页开发的主流技术。为了降低耦合性,模块分离是必须的,我们使用MVC的架构模型(即model、view、controller),在文首已介绍,采用的是SSM框架。类似的功能模块在同一个层完成,并且在层与层之前使用明显的接口进行交互,目标是构建一个高内聚、低耦合的程序架构。并且使得前后端的开发可以分离,提高开发的速度。数据库框架Mybatis的使用使得不再需要手动编写繁琐的jdbc代码,仅需接口和SQL语句即可实现对数据库的操作。系统分层架构图如下:图3-1分层架构图3.2模块设计系统功能结构图如下:图3-2系统功能结构图3.2.1前台展示模块设计前端展示模块包括本地账号绑定、账号登录、店铺查询、商品查询、商品购买功能[13]1账号绑定用户第一次进入系统应是在关注公众号后在微信中点击链接进入,然后可以绑定一个本地账号,方便以后不用在微信中进入系统。此时在后台已经获取了用户微信账号的个人基本资料,包括昵称,头像等,绑定本地账号时仅需填写本地用户名和密码即可。图3-3账号绑定时序图2账号登陆用户绑定过本地账号后,可不经过微信,直接使用本地账号登陆。图3-4账号登陆时序图3店铺查询店铺查询是用户在主页点进某个大类之后,在输入框里输入了店铺的名字和点击了类别或区域的按钮后,后台筛选出符合条件的店铺,最后以列表形式展示在前端。图3-5店铺查询时序图4商品查询商品查询是进入店铺页面后,点击店铺页面的商品类别按钮或输入商品名后,根据后台筛选出的数据,已列表的形式展示商品的信息。具体处理过程和商铺查询类似。图3-6商品查询时序图5商品购买商品购买是顾客在某个商店内挑选好商品并将商品添加进购物车后,在购物车页面提交商品至后台的操作。图3-7商品购买时序图3.2.2店家管理模块设计店家管理模块包括添加店铺、修改店铺信息、商品管理、商品类别管理功能。另外还有绑定本地账号和修改账号密码功能,因为与顾客的几乎一样,所以在此不在赘述。1添加店铺添加店铺即是在当前用户名下添加一个店铺,需要设置店铺的名称、店铺类别、所属区域、详细地址、联系电话、缩略图等信息。图3-8添加店铺时序图2修改店铺信息修改店铺信息和添加店铺基本相同,在店铺信息页面填写需要修改的信息。图片不上传则保持原有图片。图3-9修改店铺信息时序图3商品管理商品管理即对本店铺下的商品进行添加和修改,因为添加和修改数据传递上没有什么区别,在这里只介绍添加商品。添加商品之后可以点击预览按钮预览商品详情页面。图3-10添加商品时序图4商品类别管理商品类别管理即对该商铺下的商品类别信息进行增删,填写信息包括类别名称和优先级。图3-11添加商品类别时序图3.2.3超级管理员模块设计超级管理员模块包括头条管理、类别管理、区域管理、账号管理、商铺管理功能。主要就是对各种数据信息进行增删改查。1头条管理头条管理就是对前端首页展示的头条广告进行增删改查,头条信息需要包括图片,优先级,链接等。因为功能重复度很高,只讨论对头条的添加。图3-12添加头条时序图2类别管理类别管理即是对店铺类别的增删改查,其中类别信息包括类别名称,上级类别Id,类别图片,优先级等。因为功能重复度高,这里只详细讨论对类别信息的添加功能。图3-13添加类别时序图3区域管理区域管理就是对校园区域信息进行增删改查,其中区域信息包括区域名,优先级等。图3-14添加区域时序图4账号管理账号管理即对系统中除超级管理员之外的账号(顾客,店家)账号进行管理,主要是对账号进行封禁或解禁。这里只讨论对账号的封禁,解禁是同样原理。图3-15封禁账号时序图5商铺管理商铺管理就是对商铺信息进行信息修改,启用禁用,提供建议。商铺信息包括商铺名,店铺类别,优先级,店铺状态,商铺建议。图3-16编辑商铺时序图3.3数据库设计3.3.1E-R图根据对系统中实体和实体间关系的分析[14],画出下面的实体属性图和E-R图:图3-17头条实体属性图图3-18本地账号实体属性图图3-19微信账号实体属性图图3-20用户个人信息实体属性图图3-21商品类别实体属性图图3-22商品实体属性图图3-23商铺类别实体属性图图3-24商铺实体属性图图3-25区域实体属性图图3-26商品详情图片实体属性图图3-27购物车实体属性图图3-27E-R图3.3.2数据库表设计表3-1区域信息表字段名字段类型字段大小是否允许为空是否是主键area_idint5否是area_nameVarchar200否否area_descVarchar1000是否priorityint2否否create_timedatetime-是否last_edit_timedatetime-是否GenderNchar10是否将区域信息表保存为tb_area,用来存储区域信息。表3-2头条信息表字段名字段类型字段大小是否允许为空是否是主键line_idint100否是line_nameVarchar1000是否line_linkVarchar2000否否line_imgvarchar2000否否priorityint2否否enable_statusint2否否create_timedatetime-是否last_edit_timedatetime-是否将头条信息表保存为tb_head_line,用来存储头条信息。表3-3本地账号信息表字段名字段类型字段大小是否允许为空是否是主键local_auth_idint10否是user_idint10否否user_nameVarchar128否否pass_wordvarchar128否否create_timedatetime-是否last_edit_timedatetime-是否将本地账号信息表保存为tb_local_auth,用来存储本地账号信息,该表的user_id为外键,参考了tb_person_info的主键user_id。表3-4用户个人信息表字段名字段类型字段大小是否允许为空是否是主键user_idInt10否是user_nameVarchar32是否profile_imgVarchar1024是否emailvarchar1024是否genderVarchar2是否enable_statusInt2否否user_typeInt2否否create_timedatetime-是否last_edit_timedatetime-是否将用户个人信息表保存为tb_person_info,用来存储用户个人信息。表3-5商品信息表字段名字段类型字段大小是否允许为空是否是主键product_idint100否是product_nameVarchar100否否product_descVarchar2000是否img_addrvarchar2000是否normal_priceVarchar100是否promotion_pricevarchar100是否priorityint2否否create_timedatetime-是否last_edit_timedatetime-是否enable_statusint2否否product_category_idint11是否shop_idint20否否将商品信息表保存为tb_product,用来存储商品信息,该表的product_category_id为外键,参考了tb_product_category的主键product_category_id;shop_id为外键,参考了tb_shop的主键shop_id。表3-6商品类别信息表字段名字段类型字段大小是否允许为空是否是主键product_category_idint11否是product_category_nameVarchar100否否priorityint2是否create_timedatetime-是否shop_idint20否否将商品类别信息表保存为tb_product_category,用来存储商品类别信息,该表的shop_id为外键,参考了tb_shop的主键shop_id。表3-7商品详情图片信息表字段名字段类型字段大小是否允许为空是否是主键product_img_idint20否是img_addrVarchar2000否否img_descvarchar2000是否priorityint2是否create_timedatetime-是否product_idint20是否将商品详情图片信息表保存为tb_product_img,用来存储商品详情图片信息,该表的product_id为外键,参考了tb_product的主键product_id。表3-8商铺信息表字段名字段类型字段大小是否允许为空是否是主键shop_idint10否是owner_idint10否否area_idint5是否shop_category_idint11是否shop_namevarchar256否否shop_descvarchar1024是否shop_addrvarchar200是否phonevarchar128是否shop_imgvarchar1024是否priorityint3是否create_timedatetime-是否last_edit_timedatetime-是否enable_statusint2否否advicevarchar255是否将商铺信息表保存为tb_shop,用来存储商铺信息,该表的area_id为外键,参考了tb_area的主键area_id;owner_id为外键,参考了tb_person_info的主键user_id;shop_category_id为外键,参考了tb_shop_category的主键shop_category_id。表3-9商铺类别信息表字段名字段类型字段大小是否允许为空是否是主键shop_category_idint10否是shop_category_namevarchar100否否shop_category_descvarchar1000是否shop_category_imgvarchar2000是否priorityint2否否create_timedatetime-是否last_edit_timedatetime-是否parent_idint11是否将商铺类别信息表保存为tb_shop_category,用来存储商铺类别信息,该表的parent_id为外键,参考了tb_shop_category的主键shop_category_id。表3-10微信账号信息表字段名字段类型字段大小是否允许为空是否是主键wechat_auth_idint10否是user_idint10否否open_idvarchar1024否否create_timedatetime-是否将微信账号信息表保存为tb_wechat_auth,用来存储微信账号信息,该表的user_id为外键,参考了tb_person_info的主键user_id。表3-11购物车信息表字段名字段类型字段大小是否允许为空是否是主键shopcar_idint10否是shop_idint10否否create_timedatetime-否否user_idint10否否product_strvarchar2000否否is_newint2否否将购物车表保存为tb_shop_car,用来存储购物车,该表的shop_id为外键,参考了tb_shop的主键shop_id;user_id为外键,参考了tb_person_info的主键user_id
系统实现4.1数据库连接的实现开头介绍过,本系统的底层数据库采用MySQL,而MySQL是一种关系型数据库,关系型数据库的特性是数据并非存储在同一个地方,而是将数据存储在不同的表中,这样就提高了数据结构的稳定性,并且因为数据之间是有关联关系的,提高了数据存取的速度和灵活性,对于系统的搭建也更为方便。并且MySQL是开源的,非常适合个人开发者,这也是本系统采用MySQL的关键原因。
持久层使用的是MyBatis框架,数据库的连接原理为:图4-1数据库连接原理图4.2模块实现4.2.1前台展示模块的实现在顾客进入网站时会首先进入网站首页,首页包括顶端的头条展示,当有多个头条时,则会进行轮播,当点击头条图片时,则会进入对应的链接页面。下半部是一级类别的列表(即没有父类),当点进对应类别里时,会以卡片列表的形式列出该大类下所有的店铺。页面底部是两个按钮。1系统主页效果图:图4-2前台首页效果图点击右边的“我”则会在右表弹出一个选项列表,分别是登陆,账号绑定,修改密码和登出。当点击登陆时则进入登陆页面,点击账号绑定进入绑定本地账号页面,点击修改密码进入密码修改页面,点击登出则退出当前账号。2侧边栏效果图:图4-3侧边栏效果图点击首页中全部店铺或者某个大类则进入商店列表页面,在这里进行商铺查询,在输入框里输入名字和点击类别按钮则会向后台发送数据重新获取商铺列表3商铺查询页面效果图:图4-4商铺查询页面效果图在店铺列表中点击某个店铺,则会进入该店铺的商店详情页面,商店详情页面里是商店的详情信息,包括店铺的图片,店铺名称,店铺介绍,地址,联系电话,底下是店铺内商品的列表,可以筛选。4商铺详情效果图:图4-5商铺详情效果图图4-6商铺详情里的商品列表商品列表跟商铺列表是同一个实现原理,点击商品列表的某个商品,则进入商品详情页面,该页面包括商品的略缩图,商品名称,商品介绍,原价,现价,商品详情图片。在下方可以点击加入购物车按钮将商品加入购物车,购物车存于浏览器的localstorage,该购物车仅限于当前店铺。5商品详情效果图图4-7商品详情页效果图在店铺页面点击“我”按钮,再点击右侧边栏的购物车按钮则进入购物车,购物车页面会显示当前已选择的商品和数量,可以对数量进行编辑,然后提交订单。提交订单时先在前端整理好数据,然后发送到后端存进购物车表中。6商品购买效果图图4-8购物车页面4.2.2店家管理模块的实现店家进入系统后首先要进行登录,登录之后则进入本人的商店列表页面:7店家商店列表效果图:图4-9商店列表页面点击列表中某个店铺的进入按钮,则进入到店铺的管理选项页面,店铺管理页面包括商铺信息管理,商品管理,商品类别管理四个功能。图4-10商店管理页面点击商铺信息管理则进入商铺信息编辑界面,该页面和添加店铺页面用的是同一个页面,不同点是该页面会有商铺的原信息。所以在这里只介绍商铺编辑,这里填写好表单后发到后台存进数据库。8修改商铺信息效果图:图4-11商铺信息页面在商铺管理页面点击商品管理则进入商品管理页面:图4-12商品管理页面下架即是该商品不会在前台模块中显示出来,将商品的可用标识设为0。而编辑和新增用的是同一个商品信息页面:9商品编辑效果图图4-13商品编辑页面预览则是预览商品最终在前台的显示效果,与商品详情页面是一致的,这里就不再赘述。在店铺管理页面点击分类管理则进入该店的商品分类管理页面,该页面会列出商店已有的商品类别,可以对这些类别进行删除,也可以新增类别,新增类别会在列表中生成一个空的类别输入框,输入类别名和优先级后点击提交,即可将类别新增进去。10商品分类管理效果图:图4-14商品分类管理效果图4.2.3超级管理员模块的实现超级管理员首先需要在登录界面登陆进后台管理系统,登陆界面如图:11超级管理员登陆效果图:图4-15登陆界面登陆成功后就进入了后台管理系统的主界面12超级管理员模块主界面:图4-16超级管理员模块主界面主界面的左侧就是各个管理模块的按钮,点击头条管理则进入头条管理页面,在这里可以对头条进行添加、编辑和删除,编辑和添加用的都是同一个页面:13头条管理效果图:图4-17头条管理页面在主界面点击类别管理进入商铺类别管理页面,在这里可以对头条进行添加、删除、和编辑,编辑和添加用的是同一个页面:14类别管理效果图:图4-18类别管理界面在主界面点击区域管理进入校园区域信息管理页面,在这里可以对区域进行添加、删除、和编辑,编辑和添加用的是同一个页面:15区域管理效果图:图4-19区域管理页面在主界面点击账号管理进入账号管理页面,这里可以对顾客和店家账号进行封禁和解禁;16账号管理效果图:图4-20账号管理页面在主界面点击商铺管理进入商铺管理页面,在这里可以编辑商铺的信息,包括店铺名、店铺类别、优先级、商铺建议,与启用和禁用店铺:17商铺管理效果图:图4-21商铺管理页面
测试5.1测试目的软件测试的主要目的是测试软件故障,以便发现和纠正缺陷。软甲测试的适用范围通常包括代码的检查以及在各种环境和条件下执行带啊,以及检查代码的各个方面。而对于一个商业软件,功能业务流程的正确性也是非常重要的一点,若测试没有报错,但是整个业务逻辑不符合最初提出的需求,这肯定也是无法交付的。一个软件开发完毕后不可能直接投入生产环境,因为软件本身仍存在很多缺陷和BUG,势必要经过一轮大大小小的测试。软件测试的目的:确认完成的软件的质量,其中一点是保证软件没有出现代码方面的错误,整个流程能正常执行;另一方面是执行的整个业务流程是否符合提出的需求,即是否按正确的方式去完成这件事。软件测试也为产品的风险评估提供数据,这些数据对于业务或产品经理来说非常有参考价值。但是,软件测试并非一个软件开发的最后步骤,而应该是从始至终贯穿在整个开发流程里,若是在软件完成后再进行测试,将会非常难以进行修改,一般来说完成一个小模块就要进行一次单元测试。5.2测试步骤既然是程序开发的一个流程,软件测试与软件开发过程类似,也必须分布执行,大型软件系统的测试基本上有如下几个步骤:单元测试又称为模块测试,该步骤主要为了及时发现编码和业务逻辑设计上的错误。系统测试系统测试是对整个系统的测试,操作人员将软件部署在目标硬件上运行整个流程,目标是发现任何程序上的错误和硬件规格上的错误。验收测试该测试步骤主要为了发现程序在系统需求中所设计的一些错误5.3测试用例一次完整软件测试将要设计大量的测试用例,这里仅列出部分测试用例。表5-1店家登录测试用例用例编号Testcase001用例摘要店家登录测试类型功能测试前置条件该用户已绑定本地账号测试方法人工测试输入数据本地账号用户名:MeiconJun密码:123456执行步骤1.不输入账户密码登录2.使用MeiconJun用户密码错误登录。3.使用MeiconJun用户密码登录,系统是否正常运行。预期输出1.不能进入系统,提示请输入用户名密码2.不能进入系统,提示用户名或密码错
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026浙江宁波市鄞州区钟公庙街道办事处编外人员招聘4人备考题库含答案详解(新)
- 2026国投泰康信托有限公司博士后科研工作站博士后招聘备考题库及答案详解(考点梳理)
- 2026南昌市劳动保障事务代理中心招聘外包人员2人备考题库含答案详解(典型题)
- 2026江苏南京白下人力资源开发服务有限公司招聘劳务派遣人员8人备考题库(七)及答案详解参考
- 2026中交天和机械设备制造有限公司常熟制造中心招聘4人备考题库含答案详解(巩固)
- 2026中国人民财产保险股份有限公司山亭支公司招聘10人备考题库含答案详解(考试直接用)
- 2025年9月浙江越秀外国语学院招聘备考题库(含答案详解)
- 2026山东济南市长清区卫生健康局所属事业单位招聘44人备考题库及答案详解(基础+提升)
- 浙江丽水云和县文元育英中学招聘3人备考题库含答案详解(达标题)
- 2026四川内江市隆昌市龙市镇中心学校招聘1人备考题库附答案详解ab卷
- 2026年北京市海淀区高三一模生物试卷(含答案)
- 小学财务管理工作制度
- 2026年成考《中医学》试题及答案
- 2026年高考历史十校联考全真模拟试卷及答案(共七套)
- 事业单位内部监督制度
- 限额以下小型工程常见安全隐患指导手册(2026版)
- 汽轮机润滑油系统课件
- 神州数码招聘测评题答案
- 事业单位工作人员调动申报表
- 每月叉车安全调度会议纪要
- 麻醉恢复室的护理课件
评论
0/150
提交评论