版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
I绪论研究背景和意义随着科技的蓬勃发展,网络已经成为人类社会中必不可少的生活必需品,因此,计算机技术在生活中的应用越来越广泛。由于中国的人口密度高,就餐的时候经常会有排队现象发生。还有的消费者喜欢足不出户就能享受到美食。因此,网上订餐行业,随之实现迅猛发展,但是由此也暴露很多问题。在大部分已经建立起来的餐馆中,可以通过电话订购食物。仍然是一种较为普及和普及的定餐方法,然而,如果仅仅依靠这样的电话的联系,并不能将更为有效的服务展现出来,而且还会对客户的个人喜好产生影响。并没有一个具体的记载,除此之外,这种定餐方式也只是口头上的沟通,即使客人不来吃饭,对商家来说也是一种节约。对在园区工作的顾客而言,在网上公园订购的食物最大的吸引力就是:一方面,人们可以感受到其便捷与快速。能够进行多种类型的订餐,消费者也能够在网上相互认识彼此的消费经验,帮助消费者与餐饮公司之间的关系,很好的交流。随着网络点餐受到越来越多人的关注,它也逐渐被许多人所接受。因此,假设建立一个网络订餐系统,为在此工作人员提供订餐的服务,这对于工作人员来说是非常重要的。国内外研究现状国内外饮食业市场研究:在国外,餐饮行业的发展速度非常快,在很长一段时间内,平台的功能都经过了不断的优化和完善,尤其是软件APP等服务不断涌现出来。从订单到配送,再到顾客,整个过程都是有监督的。海外的点餐APP和网络应用,已经被人们所熟知。无论是手机还是电脑,大部分都可以通过网络进行付款。我国的网上订餐行业正处于逐步发展阶段,热衷于网上订餐的群体不断壮大。喜欢网上订餐的人都是对计算机有需求的人,网上订餐的消费群体更加年轻化,比如大学生,老师,白领上班族等等。他们平时对电脑接触较多,并且由于文化程度等原因,中年群体更能接受这种新的模式。只需动动手指,登录订餐网站,寻找自己喜欢的食物下单即可体验美食。同时,园区中午是排队的高峰期,网上订餐可以节省一大笔时间去做一下自己喜欢的事。但是网上订餐仍有一些问题有待解决。园区餐厅从业人员能否接受网上订餐这新型订餐模式。园区订餐的支出相比传统方式支出要高一点,因此网上订餐能不能给餐厅带来高额的效益是大家比较关心的一个问题。网上订餐会受到等待时间,价格,运输,包装所带来的影响,味道有可能会有变化,无法保证客户获得最好的体验。网上订餐只能看到菜品的说明简介信息还有外观和其他人评论,无法看到实物,这是传统的实体餐饮业区别于网上订餐的不同点。在此基础上,本文以SSM为基本架构,利用开放源码MySQL作为资料库,实现了较好的可扩充性;并利用Eclipse开发平台实现了人机接口的良好设计。该系统使用的是面向对象的软件开发方法,遵循了软件工程的基本流程:系统分析-系统设计-系统实施,将整个系统划分成了一个前台和一个后台两部分。前台的任务是让使用者登陆,然后查看菜单和菜肴的详细信息。以及订餐还有对菜品进行评论等等,主要面向的群体是客户。后台是对前端的数据的更新,维护和管理,主要面向的是餐厅管理员,负责更新当前用户的订单信息还有对菜品进行增删改查等操作,处理用户订单。本文研究内容本文的研究重点是开发一个基于Web技术的园区订餐系统,旨在提升园区内用户的在线订餐体验。在项目启动阶段,本文对相关领域的国内外研究进行了全面的调研,并进行了深入的技术可行性分析,确定了系统的核心功能和结构设计。系统开发过程中,本文首先进行了详尽的需求分析,包括系统总体架构和具体功能模块的设计。通过分析用户和管理员的需求,本文明确了系统的目标用户群体和预期功能。随后,本文设计了系统的功能模块和数据库结构,确保系统设计能够满足用户需求,并为后续的开发工作奠定了坚实的基础。在系统实现阶段,本文详细阐述了用户使用模块和系统管理员模块的开发过程。用户模块提供了包括登录、注册、浏览菜品、添加购物车、下单和个人中心等在内的全面功能。管理员模块则包括了用户管理、商品管理、订单管理等多种管理功能。完成开发后,本文对系统进行了全面的测试,以确保所有功能都能按照预期工作,保障了系统的稳定性和正确性。综上所述,本文通过研究和实施园区订餐系统,为园区用户提供了便利高效的在线订餐服务,具有明显的实用性和创新性。未来,本文计划对系统进行进一步的优化和改进,以提升其性能和用户体验。系统需求分析系统总体分析在对园区餐厅目前的订餐过程进行了观测和分析之后,可以将园区网上订餐系统的使用群体划分为两大类:一类是在园区中工作的工作人员,也就是消费者,这一类人可以利用互联网登陆系统来进行访问。第二种是餐馆的经理,通常是那些系统管理员。本公司职员在本公司的后台登陆,以实现对本公司的管理。从这一点来看,本文可以发现,园区的网络订餐系统应该被分成两个部分,即前端的用户部分和后台管理部分。系统功能分析系统功能用户需求分析用户在注册登录之后,可以填写有关个人资料。浏览餐厅界面,选购菜品加入购物车,再去订单进行结算,个人资料里面一是可以修改密码,二是可以修改用户地址和评价,三是可以对心仪的商品进行收藏加入自己的收藏列表,以便下次点餐可以直接选取。同时也可以浏览自己的订单管理,查看历史订单。下面是详细流程图:图2-1用户需求流程图系统功能管理员需求分析管理员有管理权限,在后台登录管理系统,可以更新一些信息,例如对商品分类,商品信息进行更新,删除,修改,查询,又比如对订单的状态进行修改,这样更方便客户可以拿到菜品,其流程如图所示:图2-2管理员需求流程图技术可行性研究模板使用指南B/S体系结构基础的网络应用:B/S体系结构的全名是浏览器/伺服器,也就是browser/伺服器体系结构,大部分的事务和逻辑可以在后台实现,用户只需要有浏览器即可,前端可以用来实现数据渲染。B/S体系架构可以分为三层来体现,如下所示。表现层:呈现在用户面前的一个接口,用户可以在这个接口上与背景进行互动,并在此基础上进行查询,从而获得自己所需要的信息。逻辑层:实现对商业逻辑的运算,通过服务器端实现对商业逻辑的运算。数据层:在接收到客户的请求后,可以直接对数据库展开处理,根据请求,可以对数据进行添加,修改,删除,查询等。B/S架构相对C/S来说有不少优势:第一,客户端无需进行安装,只需有
web浏览器即可登陆;第二,B/S架构也可以将其放在广域网中;第三,对客户进行一个权限的分级,可以达到许多用户访问的目标,具有很强的交互能力。最后B/S架构对应用环境的依赖性也很小,无需升级客户端,只用对服务器进行维护就可以,在开发维护上更加便利,大幅度降低系统开发和维护成本。SSM框架:SSM架构是将SpringMVC、Spring、Mybatis等技术融合在一起,形成了一个统一的MVC架构,并对其进行了表示;控制器层,服务层,数据访问层。Spring是一个轻量级的控制逆转(IOC)和面向切面(AOP)的框架,它是为了解决企业应用程序开发的复杂性而建立的。Spring框架的一个优点就是具有层级结构,层级结构可以随意地让开发员使用其中的构件,而为开发的应用程序提供了一个整合好的框架。在配置文件中,可以指定使用特定化的参数,去在实体类(entity)中调用无参或者有参构建方法去实例化对象,可以被称为是项目中的胶合剂。利用
Spring自身的
IOC属性,本文可以把对象间的相关性转移到Spring上,从而很容易地将它们分离开来。利用
Spring的
AOP功能.易于管理交易、记录和许可。与此同时,Spring还为其它一些出色的开放源码框架提供了整合的支持。SpringMVC属于SpringFramework的后续产品,已经融合在SpringWebFlow里面,它原生支持的Spring特性,让开发变得非常简单规范[2],将模型/视图/控制器分开,实现了网络层次的责任的解耦,使一个复杂的网络应用成为一个有一定逻辑的及局部。与Spring相结合,提供了一种方便快捷的资料确认、格式、资料捆绑等功能。SpringMVC工作原理DispatcherServlet把请求分发到HandlerMappingHandlerMapping匹配到处理该url请求的Controller、Interceptor(根据xml配置、注解进行查找)返回给DispatcherServlet调用Interceptor、Controller进行请求过程控制器将此过程作为ModelAndView向DispatcherServletDispatcherServlet调用ViewResolver将ModelAndView作为最后的View,最后转为response返回给用户[3]。图1-1SpringMVC工作原理Mybatis是一个持久层的框架,Mybatis与传统的hibernate比较有更细致的优化,在程序性能和控制上也有更优秀的表现[4]。在使用传统的JDBC代码时候,本文需要在DAO中将数据表的数据都一起封装到实体类中,但是Mybatis通过XML或者注解的方式,最终,在Mybatis的基础上,利用SQL语言实现了对目标的处理,并将处理后的处理结果映射为对目标的处理。Mybatis将JDBC在数据库中的运行流程包装起来,使得开发人员无需在JDBC中耗费大量的时间和精力来完成对JDBC的登录、连接、参数设定等工作;只要把注意力集中在SQL声明上就行了。当你用一个SQL声明来进行映射时,将SQL语句灵活多变的特性融入项目开发中[5]。MVC模式:MVC:ModelViewController,译为模型、视图、控制器。MVC模式采用业务事务逻辑和数据的显示分离的方式去实现代码。且将所有业务逻辑都封装进后台,留前台与用户进行人机交互,这个模式广泛应用在网页建设中。Web应用程序的MVC的操作流程是这样的:首先,浏览器发出一个请求,
JSP页面对此进行回应,之后,用户再点击
JSP页面上的按钮,将该请求重新发出。接着,使用者的要求会被传送到使用者的控制端,即Servlet伺服器,使用者的要求会被使用者的要求所决定,并会被使用者所要求的模式所使用;在服务层面上,通过
DAO层面对
SQL语句和界面进行访问,并把这些访问结果传送到
JSP页面,最终得到JSP的回应;然后使用者就能看见这些动态的资料了。MVC模式完成了模块与功能模块的分离,拥有低耦合性,高适用性与重用性,可维护性高,降低程序开发难度等等被广泛适用。可行性分析随着二十一世纪互联网的发展和普及,人们的工作效率的逐渐提高。便捷,快速,个性化的在线订购已经深入到人们的日常生活中。为企业在园区内的餐饮服务,为企业提供了高效的经营模式,节约了宣传、店面等成本。餐厅可以有效地处理订单,统计销售情况。为园区内的员工提供便捷、快捷、优惠的订餐方式,避免了员工在食堂中的拥挤与排队现象,在食堂与员工之间形成了一种新型的高效的交流方式。以订餐系统流程为基础,实现从浏览菜单、点餐到下单,到结账支付,一条线的信息化管理。所以,整个园区订餐系统的研发就是一整套园区套订餐系统。实施餐饮定购工作电脑化[6]。综合以上分析,本设计决定用主流的Spring+SpringMVC+Mybatits框架作为后台代码基础,数据库使用开源的MySQL存储数据,共同组建一个高效简便的园区员工订餐系统。系统设计系统功能模块设计根据第2章的分析本文得知了系统的设计需求,因此,本文将系统划分成了两个不同的部分,一个是前台,另一个是后台,它们分别来对各部分的功能模块进行了设计。在该系统的后端框架中,使用了SSM后端集成框架,在持久层软件中,使用了Mysql的轻量化数据库,在B/S体系结构中,利用了浏览器的登陆方式,对网页进行了访问,同时还将tomcat用作了系统的轻量化服务器,在MVC的模式下,进行了系统的开发。前台功能模块设计前台系统主要是为了用户注册,登录之后给用户提供菜品信息。用户选择菜品,添加到购物车,客户提交订单。所以将前台模块细分为登录和注册模块、菜单选择模块、购物车添加模块,订单模块。登录和注册模块用户首次进入园区食堂订餐系统可以浏览菜品的信息,如果点击购买提示用户没有登录,客户要先登录才能购买。登录订餐系统,进入个人资料页面修改密码操作,邮箱,真实姓名进行修改,也可以查看历史订单,我的收藏和对已发出的评论进行管理。菜品选择模块用户可以从首页的菜品图点击进入菜品详情模块,可以查看菜品的浏览次数,累计出售次数,库存还有对菜品的评论,也可以将菜品放入收藏夹方便下次直接购买。购物车添加模块客户登入浏览时,可以将选中的菜品添加到自己的购物车,价格会根据客户添加的菜品的品种和数量而变动,当选择继续购物时会重新跳转到首页,最后将购物车进行结算。订单模块用户将购物车进行结算之后必须填写地址信息,只有填写地址并结算之后才会生成订单,在个人资料里面也可以对已购买订单和订单的地址进行修改。后台功能模块设计餐馆的管理者可以从页面上访问到后台,然后登陆后台,修改整个系统的数据。后台可以直接在数据库中添加管理员账号与密码,管理用户列表,菜肴列表,菜肴类别列表,评论列表,以及订单的状态,这些都可以被划分成订餐用户管理模块。餐厅的菜肴管理模块,包括了菜肴分类管理模块,菜肴评论管理模块,餐厅的订单管理模块。用户管理模块网上订餐系统的用户分为普通用户和超级管理员,模块中显示了当前所有注册的用户的个人信息,包括地址。菜品管理模块网上订餐系统的超级管理员可以对菜品的信息进行增加,删除,修改,也可以根据商品名称,商品分类还有价格区间进行查询。菜品分类模块该模块包含了所有菜品的种类,由管理员进行增删改查。评论管理模块管理员可以查询评论的内容和用户,但是不能对评论进行添加。订单管理模块餐馆的管理者可查看所有订单信息,需要及时查看时时的订单状态,订单有待发货和已发货的状态区别,等客户确认完成变成“已完成”状态。数据库的分析与设计该系统需要从数据库查询所有信息,所以,按照整体的设计要求,本文选择了MySQL作为本文的数据库。MySQL的特点是开放源代码,免费,并且很小;安装方便,且具有很强的功能等优点。许多公司都把MySQL当作自己的第一选择,MySQL已在世界范围内风靡。现在,淘宝,百度,新浪微博等都把一些商业数据转移到了MySQL数据库,其使用潜力很大[8]。根据需求,一共建立了14张表:用户信息表,用户地址表,订单表,购物车表,收藏夹表,评论表,订单详情表,菜品表,菜品类型表,管理员表,职能表,内置权限判断表,菜单表,日志表。数据库的E-R图如下:图3-1与用户有关的表图3-2与管理员有关的表(1).用户信息表用户基本信息表内存储的是用户的相关信息,包括用户的编号(userid)作为主键、用户的账号名称(username)、密码(userpassword)以及真实名称(trueName)等。表3-1用户基本信息表字段含义字段名类型长度字段是否为空用户IDuseridint11N用户名usernamevarchar32N密码upasswordvarchar32N邮箱uemailvarchardefaultY真实姓名trueNamevarchardefaultY性别Sexint2N状态statusintdefaultN创建时间createTimedatetimedefaultN(2).用户地址表用户地址表内存储的是用户地址的相关信息,包括地址的编号(aid)是主键、用户的id(userId)作为外键、地址(useraddress)以及联系方式(phone)等。表3-2用户地址表字段含义字段名类型长度字段是否为空编号aidint11N用户IDuserIdint11N用户名usernamevarchar128N地址addressvarchar128N联系方式phonevarchar128N创建时间createTimedatetimedefaultN(3).内置权限表内置表内存储的是用户权限的的相关信息,包括权限的编号(athid)是主要的键、职能编号作为外部的键,菜单编号(menuId)。表3-3内置权限表字段含义字段名类型长度字段是否为空编号athidint11N职能编号roleIdint11N菜单编号menuIdInt11N(4).购物车表购物车表:存储的是用户购物车的信息,包括购物车的编号、用户编号、与用户表关联,商品编号是用户编号与商品表关联,还有用户名(username),商品图片(imageUrl)等等都是继承了上述2表的相关信息。表3-4购物车表字段含义字段名类型长度字段是否为空编号cidint11N用户编号userIdint11N商品编号productIdint11N用户名usernamevarchar128N商品图片imageUrlvarchar128N单价pricefloat8,2N数量numint8N总价moneyDouble8,2N创建时间createTimedatetimedefaultN(5).评论表评论表内存储的是用户评论的的相关信息,包含了评论的编号coid是主键、用户编号(userId)是外键,它与用户表相关联,商品编号(ProductId)是外键,与商品表相关联,还有商品类型(type)与商品类型表相关联,最终是评论内容(content)。表3-5评论表字段含义字段名类型长度字段是否为空编号coidint11N商品编号productIdint11N用户编号userIdint11N商品类型typeint2N内容contentvarchar512N创建时间createTimedatetimedefaultN(6).收藏夹表收藏夹表内存储的是用个人收藏夹的的相关内容,包含了收藏夹的编号(fid),它是主键、用户编号(userId),它是外键,与用户表关联,商品编号(productId)用作外键与商品表关联,还有用户名(username),商品图片(imageUrl)等都是继承了上述2表的相关信息。表3-6收藏夹表字段含义字段名类型长度字段是否为空编号fidint11N用户编号userIdint11N商品编号productIdint11N用户名usernamevarchar128N商品图片imageUrlvarchar128N单价pricefloat8,2N创建时间createTimefloat8,2N(7).日志表日志表内存储的是系统日志的的相关信息,包括日志的编号(logid)是主键、日志内容(content),日志的创建时间(createTime)。表3-7日志表字段含义字段名类型长度字段是否为空编号logidint11N内容contentvarchar255N创建时间creatTimevarchar128N(8).菜单表菜单表内存储的是用管理员菜单界面的的相关信息,包括菜单的编号(mid)是主键、菜单名称(menuname),菜单url(url)还有菜单图标(icon)。表3-8菜单表字段含义字段名类型长度字段是否为空编号midint11N父节点parentIdint11N菜单名称menunamevarchar32N菜单urlurlvarchar128N图标iconvarchar32N(9).订单表订单表内存储的是用订单信息,包括订单编号oid,它是主键、用户编号(userId)它是外键,它与用户表关联,地址(address)记录订单地址,还有金额(money),商品数量(productNum)等。表3-9订单表字段含义字段名类型长度字段是否为空编号oidint11N订单号snvarchar32N用户编号userIdint11N地址addressvarchar128N金额moneydouble8,2N商品数量productNumint5N订单状态statusint2N备注remarkvarchar128N创建时间CreatTimedatetimedefaultN(10).订单详情表订单详情表:表里面存储的是用户订单详情以及商品信息,包括订单的编号(otid),它是主键、商品编号(productId)它是外键,并且与商品表关联,订单编号(orderId)也是外键,它与订单表关联,还有总价(money)等。表3-10订单详情表字段含义字段名类型长度字段是否为空编号otidint11N商品编号productIdint11N订单编号orderIdint11N商品名称namevarchar128N商品图片imageUrlvarchar128N单价pricefloat8,2N数量numint8N总价moneydouble8,2N(11).商品表商品表:表里面存储的是商品信息,包含了商品的编号(pid)、商品分类编号(productCategpryId),它与商品表关联,订单编号(orderId),它与订单表关联,还有总价(money)等。表3-11商品表字段含义字段名类型长度是否为空编号pidint11N商品分类编号productCategoryIdint11N商品名称productnamevarchar128N商品标签tagsvarchar128N商品图片imageUrlvarchar128N单价pricefloat8,2N库存stockint8N售出数量sellNumint8N浏览人数viewNumint8N评论数量commentNumint8N商品描述contenttextdefaultY创建时间createTimedatetimedefaultN(12).职能表功能表中保存了功能的有关信息,其中包含功能的数字是一个主要关键字、职能名称(rolename),备注(remark)。表3-12职能表字段含义字段名类型长度是否为空编号ridint11N职能名称rolenamevarchar32N备注remarkvarchar128N(13).管理员表管理员表中保存的是管理员的有关信息,其中包含了管理员的编号(aid)、管理员名称(accountname),管理员密码(password),职能编号(roleId)作为外键与职能表关联,还有性别(age)等。表3-13管理员表字段含义字段名类型长度是否为空编号aidint11N管理员名称accountnamevarchar32N管理员密码passwordvarchar32N职能编号roleIdint11N图片photovarchar128N性别sexint1N年龄ageint3N地址addressVarchar128N(14).商品分类表商品分类表:其中存储的是与商品分类的有关的信息,其中商品分类的编号procid是主键、商品类型名称procname,标签tags,备注remark。表3-14商品分类表字段含义字段名类型长度是否为空编号procidint11N父节点ParentIdint11N商品类型名称procnamevarchar128N标签tagsVarchar32N备注remarkvarchar128N系统功能实现用户使用模块用户登录经过设计,用户登录页主要采用Javascript和Ajax技术。效果图如图4-1所示。图4-1用户登录页面当用户输入账号和密码点击登录会发出Ajax请求,将数据封入后台的Account类中,后台将参数提交给service层,再由service通过查询用户的方法方法调用DAO层,再由DAO层的findList(Map<String,Object>queryMap),映射到对应的Mapper中,然后用select语句查询数据库中的数据,判断是否存在[9]。验证码部分则是单独写了一个登录验证码插件,用java.awt软件包生成验证的图片。输入的验证码在经过后台校验后,由前台的Ajax请求URL验证.登录成功之后网站会跳转到园区订餐系统首页,左上角会显示按钮:“登录的用户名和注销用户”。用户注册如果还没有注册,可以先登录,登录到登记页面,填写自己的个人资料。使用Ajax对用户进行了身份认证,并对其进行认证。注册的图示如下4-2所示.图4-2用户注册代码和登录差不多,只有sql语句不同,具体sql语句如下:insertintoaccount(id,name,password,email,trueName,sex,status,createTime)values(null,#{name},#{password},#{email},#{trueName},#{sex},#{status},#{createTime})园区订餐首页系统首页会显示导航商品一级分类菜单,购物车,个人中心,除首页外,本文网站通常还包括了多个子页面。网站一般就是多个网页集合的产物,网页与网页之间用超链接互相访问[10]。首页展示如图4-3所示图4-3园区订餐系统首页热门商品的实现方法是靠商品表自带的售出数量属性,通过service层的查询方法调用dao层,再映射到对应的ProductMapper.xml中的findlist的select语句将售出数量按从大到小排,查询的热门商品存入sellProductList变量中。将查询的结果用foreach循环打印。最新上架同理,通过Service对应的方法调用DAO接口中Mapper对应的sql语句进行查询,在将数据响应到JSP页面中,按照创建时间来排序最后存入lastProductList变量中。菜品详情页点击首页的菜品图片或文字会跳转到菜品详情的页面上,在详细信息中,可以看到每一件物品的全部信息,以及可以添加到购物车中的一个选项。当您已登陆时,将会显示您是否已进入了您的购物车,或是否尚未登陆时,将会显示您是否已登陆。商品详情的页面如下图4-4所示。图4-4商品详情页购买数量的加减按钮可以实现想添加数量的加减,按下按钮会将框内的值改变,传入购物车的数据也会改变,具体的js如下:jQuery(function(){jQuery("#goods_clicknumber_zengjia").click(function(){vargnum=jQuery("#goods_clicknumber").val();gnum=parseInt(gnum);gnum=gnum-1;if(gnum<=1){gnum=1;}jQuery("#goods_clicknumber").val(ngum);});jQuery("#goods_clicknumber_jiashao").click(function(){vargnum=jQuery("#goods_clicknumber").val();gnum=parseInt(gnum);gnum=gnum+1;if(gnum>parseInt($("#goods_clicknumber_jiashao").attr('stock'))){gnum=parseInt($("#goods_clicknumber_jiashao").attr('stock'));}jQuery("#goods_clicknumber").val(gnum);});});购物车页面如果使用者选择了他喜欢的物品并使用购物车进行付款,则在此过程中单击“购物车”将会出现一个新的网页,如下图4-5所示。图4-5购物车页面购物车页面会展示用户所有加入到购物车中的物品,返回购物车时会显示物品数目,可以对菜品数量进行增减或者删除,也可以收藏心仪的菜品。若没有登录,则会被截获,并会自动进入登录页面。如果用户已经登录,就会将用户ID和商品详情页传来的商品ID和数量封装进入实体类Cart。最后进行查询方法,根据用户ID查询购物车数据将数据传入Cart文件夹中的list.jsp显示给顾客,前台购物车控制器代码:model.addObject("productCategoryList",MenuUtil.getTreeCategory(productCategoryService.findList(newHashMap<String,Object>())));使用ModelAndView可以将购物车添加到模型中,并且可以添加商品使用的参数名称比如数量和价格等属性生成模型,通过ModelAndView构造方法可以指定返回的页面。购物车还有继续购物和确认并填写订单按钮,点击继续购物会跳转回首页,确认并填写订单会跳转到订单页面。订单页面图4-6订单页面订单页面由2部分组成一部分是收货人地址,另外一部分是购物车订单,跳转到订单页面时系统还没有正式生成订单,因此收货人的地址部分是用查询语句根据用户ID查出来的用户地址,确认购物车订单部分是之前购物车页面跳转过来的内容,用户可以填写订单备注,选择自己的地址,如果当前地址为空会显示空,用户也可以自己新增地址如图4-7。图4-7无地址的订单页面填写地址之后会传入后台封装进入Address实体类,然后通过Service的insert方法调用DAO,再映射到AddressMapper.xml中的有关insert的sql语句中传入数据库。当使用者点击了提交订单的按键,便会在资料库中产生一个订单。接着,使用者会进入一个订单完成的网页,将会出现关于订单的全部资料,若没有填上,将会出现如下所示的未填上的地址的提示:图4-8图4-8未填写订单地址下单之后则会打印订单,将购物车和地址表打包封装进入订单实体类,调用服务器的插入方法,最后把数据存入数据库,并生成了订单数据,如图4-9。图4-9订单成功页面订单成功后会调用Service的删除方法清空购物车内所有的数据,控制器会调用cartService层中和删除有关的方法deleteByUid然后将对应的oid查询出来,接着再调用DAO对应Mapper中的删除的sql语句将整个购物车的数据从数据库中删除。订单的编号没有采用random的方法,random也会有概率生成重复的数字,于是用O+System.currentTimeMillis()的方法,该方法是用于生成当前的一个毫秒,从1970年1月1日到现在的毫秒差,不会有重复的可能性。保证了订单编号的唯一性。个人中心页面
图4-10个人中心页面展示个人中心页面的数据都是通过用户ID调用对应的Service方法查询之后将数封入HashMap然后在响应给JSP页面展示出来供用户查询。系统管理员模块餐厅系统管理员登录页面餐厅的管理人员可以从主页底部的“登陆后台”超级连接进入到“后台”主页,如下图4-11。图4-11餐厅系统管理员登录页面系统管理员只有在后台才可以增加用户,而不是在网页中进行登录,并且可以按照用户的权限将用户移除。在管理员的键入相应的账户和密码之后,就可以进入到园区食堂订餐系统后台管理页面中。整个后台管理页面的内容主要可以分成三部分,分别是:系统设置模块,用户管理模块,系统日记模块。产品分类、产品、顾客、订单、评价等功能模块。图4-12后台系统页面系统设置页面在系统设置页中,有两个选项,一个是角色管理,另一个是修改密码。图4-13角色管理角色管理的增删改功能实现方法如下:本文通过Roleservice层的方法调用RoleDAO层之后再映射到RoleMapper中的增删改查语句进行查询。publicList<Role>findRoleList(Map<String,Object>queryMap);//打印出所有职能列表publicRolefind(Longid);//根据名字查询角色职能对应的sql语句如下:添加职能语句insertintorole(rid,name,remark)values(null,#{rolename},#{remark})模糊查询职能语句select*fromrole<iftest="rolename!=null">whererolenamelike'%${rolename}%'</if><iftest="offset!=nullandpageSize!=null">limit#{offset},#{pageSize}可将职能分页模糊查询语句selectcount(*)fromrole<iftest="rolename!=null">whererolenamelike'%${rolename}%'根据id进行查询select*fromrolewhererid=#{rid}修改职能信息的语句updaterolesetrolename=#{rolename},remark=#{remark}whererid=#{rid}</update>删除职能信息语句deletefromrolewhererid=#{rid}修改密码则是和用户注册类似的流程不在赘述。用户列表管理页面图4-14用户列表管理用户管理列表是对目前园区食堂订餐系统管理员的管理,本文可以在页面进行增加删除等操作。在使用用户服务层的方式对用户DAO层进行了调用,然后将其映射到用户地图中的增、删、改、查。具体sql语句如下:根据用户名进行详细查找用户语句selectuserid="findAllByUsername"parameterType="String"resultType="User">select*fromuserwhereusername=#{username}直接添加用户语句insertuserid="add"parameterType="User">insertintouser(userid,username,password,roleId,photo,sex,age,address)values(null,#{username},#{password},#{roleId},#{photo},#{sex},#{age},#{address})修改用户所有信息语句updateuserid="edit"parameterType="User">updateusersetusername=#{username},roleId=#{roleId},photo=#{photo},sex=#{sex},age=#{age},address=#{address}whereid=#{id}修改用户密码的语句updateuserid="editPassword"parameterType="User">updateusersetpassword=#{password}whereuserid=#{userid}删除用户所有信息语句deleteid="delete"parameterType="String">deletefromuserwhereuseridin(${value})商品管理页面图4-15商品管理页面商品管理页面供管理员更新商品信息,本文通过ProductService层的方法调用ProductDAO层之后再映射到ProductMapper中的增删改查语句进行查询。点击添加商品会显示add.jsp,本文要把照片上传到网上,本文要用输入type=“file”来获得照片,然后用FileReader来创建一个新的例子,然后用该例子的readAsDataURL()来阅读文件,然后把照片转化为Base64文件,然后用ajax的形式发送到后台。客户管理界面图4-16客户管理页面本文通过AccountService层的方法调用AccountDAO层之后再映射到AccountMapper中的增删改查语句进行查询。订单管理页面图4-17订单管理页面园区食堂订餐系统的管理员无法删除添加客户的定单,只可以修改定单信息,并且由于客户的要求,管理者必须及时更改定单的状态;为了避免使用者无法得到即时的订单状况,而将其状况修正为已经出货,用户才可以确认收货。如图:图4-18订单管理页面首先调用Service的editOrder相关的方法,然后通过OrderDAO层,映射到OrderMapper里面调用sql语句进行修改。OrderMapper.xml的Sql语句如下:<updateid="edit"parameterType="mon.Order">updateorderssetaddress=#{address},money=#{money},status=#{status},remark=#{remark}whereid=#{id}</update>本文可以根据类比发现,用户模块和管理员模块的代码有很多相似的地方,都用到了增删改查的方法,实现的方法也大致类似。都是通过后台写好接口,调用数据库操作之后进行封装,然后把封装好的数据传入前端。只有一些特殊需求的时候才会有其他处理方法,如上传图片等。
系统测试测试目的系统测试应该从使用者的角度出发,使用都大多数人是希望可以通过系统测试来检验产品是否满足自身需求,然后考虑是不是可以接受该产品包括一些小缺陷。如果从一个开发人员的观点来看,就是一个开发人员想要对一个完整的系统进行的测试能够显示出一个没有任何瑕疵的系统,并且满足用户需求,能使用户对系统和开发者的信心增加。在开发系统的时候,程序设计方面会有一些人为考虑不到的小错误,这些小错误开发者无法去意识到,只有经过测试才会暴露出来。如果不去进行系统测试来排查这些小缺陷,这些缺陷就会无法暴露出来,引起蝴蝶效应,导致程序发生一些无法预料的错误。本文要立足于用户的角度去思考,就需要将测试的目标着眼于程序运行时候的bug。因此在本文选取合适的测试用例时候,就需要重点考虑那些容易发现程序错误的信息。其根本目的还是缩短开发周期,提高开发效率,提高软件的健壮性和可重用性[11]。用例测试园区食堂订餐系统功能用例测试是对系统的每个模块进行测试发现问题,然后进行改正,保证系统的稳定性和流畅性。在试验时,应严格按照试验的要求进行试验。这里有一些通过用例来测试的过程和结果。用户管理测试用例,如表5-1:表5-1园区食堂用户管理测试用例表编号测试用例测试过程预期结果最终成果1用户信息添加管理员创建一个用户,填写相关信息,如果不正确要有提示能够进行用户信息的添加正常2用户信息
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 齐齐哈尔市铁锋区2025年数学四下期末检测试题含答案
- 《传染病防治法》知识考试测试卷及答案
- 2025广东深圳福田银座村镇银行社会招聘笔试历年典型考题及考点剖析附带答案详解
- 2025广东江门市台山市国有粮食集团有限公司招聘5人笔试历年备考题库附带答案详解
- 2025广东广湛城旅游轮有限公司招聘2人笔试历年常考点试题专练附带答案详解
- 2025广东中山东凤珠江村镇银行春季招聘笔试历年典型考题及考点剖析附带答案详解
- 2025年贵州茅台酒销售有限公司社会招聘22人笔试历年典型考点题库附带答案详解
- 2025年皖北煤电集团公司掘进工招聘380名笔试历年备考题库附带答案详解
- 2025年淮南寿县联合村镇银行春季招聘笔试历年典型考题及考点剖析附带答案详解2套
- 黑龙江省黑河市2025届数学四下期中学业质量监测试题含答案
- 卡车管理制度
- 交警执法培训课件
- 2025-2030含氟废水深度处理技术经济性与零排放实践
- TCQFX001-2024四川省机动车维修工时定额标准
- 处置施工险情和意外事故应急方案
- 医保基金检查合同范本
- 《宠物美容与护理》课件-梳毛工具
- 护理查房特发性突聋
- GB/T 44370-2024系统和软件工程软件产品质量要求和评估可用性通用行业格式用户需求说明
- 《建筑排水塑料管道工程技术规程 CJJT29-2010》
- 食品安全与日常饮食智慧树知到期末考试答案章节答案2024年中国农业大学
评论
0/150
提交评论