版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于SSM框架的智能化茶楼点餐系统设计摘要随着餐饮业的快速发展,人们的口味也将得到提高,对要求也会越来越高,利用网络有效管理茶馆,在管理理念上注重运用先进的技术,在管理方法上运用有效的制度,从而订餐与管理能够达到一体化。根据茶馆的具体业务发展为用户提供快速高效的服务,准确地反映茶馆的工作条件和经营状况,从而提高服务质量,获得更高的经济效益,不断培养老客户、吸引新顾客,在竞争激烈的商业市场中取胜。利用SSM(SpringMVC,Spring,MyBatis)框架快速开发Java平台已成为主流方向,本文论述了系统需求分析、数据结构设计、数据库设计和SSM应用框架的原理和方法,采用SSM集成框架开发智能化茶楼点餐系统。系统实现了茶馆管理所需的基本功能,包括用户(管理员、员工、用户)登录、商品管理、预定管理、账单管理、评论管理、外卖管理和权限管理等功能。关键词:SSM;餐饮业;智能化茶楼点餐目录TOC\o"1-3"\h\u21652第一章绪论 [13]。在设计数据库之前,需要明确所有实体以及实体关系,构建整个系统思路。用户信息表主要用来存储茶馆用户个人信息,包括字段编号、字段用户名、字段密码、字段地址等信息。用户信息表(customer)如表3-1所示。表3-1customer中文列名列名列表型长度是否可为空编号customer_idint11否用户名namevarchar100是密码passwordvarchar100是地址addressvarchar100是手机phonevarchar11是用户等级statusint1是管理员表用来存储管理员的账号和密码。管理员表(admin)如表3-2所示。表3-2admin中文列名列名列表型长度是否可为空编号admin_idint20否管理员姓名namevarchar100是密码passwordvarchar100是加盐密码saltvarchar100是 状态statusint1是地址addressvarchar100是手机phonevarchar11是最后登录时间statusdatetime0是员工表主要用来存储茶馆工作人员个人信息,包括字段编号、字段员工登录名、字段员工姓名、字段密码、字段性别、字段生日、字段员工类型等信息。员工表(staff)如表3-3所示。表3-3staff中文列名列名列表型长度是否可为空编号staff_idint20否登录名loginNamevarchar255是姓名namevarchar255是性别sexchar1是生日birthdate0是员工类型formchar1是入职时间workTimedatetime0是电话phonevarchar11是任务avatarvarchar255是密码passwordvarchar255是基础工资baseSalarydecimal10是岗位编号post_idint11是岗位表主要用来存储岗位类型。岗位表(post)如表3-4所示。表3-4post中文列名列名列表型长度是否可为空编号post_idint11否岗位名称namevarchar255是类型typevarchar255是岗位人数numberint11是岗位职责dutyvarchar255是绩效表主要用来存储员工工资信息。绩效表(salary)如表3-5所示。表3-5salary中文列名列名列表型长度是否可为空编号salary_idint11否员工编号staff_idint11是岗位编号post_idint11是考勤chkvarchar255是续表3-5中文列名列名列表型长度是否可为空失误badvarchar255是奖金bonusfloat10是基本工资basesalaryfloat10是扣费deductionfloat10是最终工资salfloat10是状态statusint1是员工请求表主要用来存储员工在前台员工端提交的个人请求。员工请求表(request)如表3-6所示。表3-6request中文列名列名列表型长度是否可为空编号request_idint11否员工编号staff_idint11是开始时间starttimedate0是结束时间endtimedate0是类型typevarchar255是原因reasonvarchar255是状态statusint1是商品类型表主要用来存储商品类型。商品类型表(category)如表3-7所示。表3-7category中文列名列名列表型长度是否可为空编号category_idint10否商品类型名称namevarchar100是商品表存储了商品列表信息,包括商品的各种基本信息。同时管理员控制商品的状态,可以上线下线商品,商品类型表(product)如表3-8所示。表3-8product中文列名列名列表型长度是否可为空编号product_idint11否类型numbervarchar100是名称namevarchar50是价格pricefloat10是点赞数zanint100是状态statusint1是图片imageurlvarchar100是商品描述miaoshudatetime200是分类idcategory_idint10是订单表主要用来存储订单信息,存储了用户下达订单时提交的各种信息。订单项表(order_)如表3-9所示。表3-9order_中文列名列名列表型长度是否可为空编号order_idint11否订单编号codevarchar100是地址addressvarchar50是状态statusint1是用户idcustomer_tidint11是订单下单时间createTimetimestamp0是订单详情表主要用来存储订单详情,包括商品编号、订单编号、数量等信息。订单详情表(orderitem)如表3-10所示。表3-10orderitem中文列名列名列表型长度是否可为空编号orderitem_idint11否商品编号product_idint11是订单编号order_idint11是卖家编号customer_idint11是续表3-10中文列名列名列表型长度是否可为空数量numberint11是角色表主要用来新增管理员角色,配置了最高权限的超级管理员可以管理角色。角色表(role)如表3-11所示。表3-11role中文列名列名列表型长度是否可为空编号role_idbigint11否角色名namevarchar100是角色描述desc_varchar100是权限表主要用来新增角色权限,拥有权限的超级管理员可以管理权限。权限表(permission)如表3-12所示。表3-12permission中文列名列名列表型长度是否可为空编号permission_idbigint11否权限名称namevarchar100是描述desc_varchar100是路径urlvarchar100是角色权限对应权限表主要用来存储角色和权限的对应关系。角色权限对应表(role_permission)如表3-13所示。表3-13role_permission中文列名列名列表型长度是否可为空编号rp_idbigint11否角色idridbigint11是权限idpidbigint11是管理员角色对应权限表主要用来存储管理员和角色的对应关系。管理员角色对应表(admin_role)如表3-14所示。表3-14admin_role中文列名列名列表型长度是否可为空编号ar_idbigint11否管理员idadmin_idbigint11是角色idrole_idbigint11是评论表主要用来存储用户评论商品信息。评论表(review)如表3-15所示。表3-15review中文列名列名列表型长度是否可为空编号review_idint11否评论内容contentvarchar255是用户idcustomer_tidint11是商品idpidint11是评论时间datetimedatetime0是资讯表主要用来存储资讯信息。资讯表(zixun)如表3-16所示。表3-16zixun中文列名列名列表型长度是否可为空编号zixun_idint11否资讯内容contentvarchar1000是用户idcustomer_idint11是审核状态statusint1是发布时间fabudatedatetime0是3.4本章小结通过业务分析,画出用户、员工和管理员的流程图、功能模块图。接着设计E-R图和罗列数据表,详细的描述了属性之间的关系。
第四章智能化茶楼系统详细设计4.1对象设计茶楼点餐系统的类图,涉及管理员、用户,员工、岗位、绩效、请求、商品、商品类型、订单、订单详情、用户评论和资讯等实体类,根据数据库表列出各实体类属性,并列出实体类的操作说明,管理员类存在添加、编辑、删除等操作,用户类存在查询、添加、编辑、删除、开启会员状态等操作,员工类存在查询、添加、编辑、删除、转正等操作,员工类存在查询、添加、编辑、删除、转正等操作,岗位类存在添加、编辑、删除等操作,绩效类存在查询、添加、编辑、删除、发放工资等操作,请求类存在添加、编辑、删除、批准等操作,商品类型类存在添加、编辑、删除等操作,商品类存在查询、添加、编辑、删除、上线、下线等操作,订单类存在查看详情、发货等操作、订单详情类存在添加、删除、编辑数量等操作,评论类存在添加、删除等操作,资讯类存在添加、删除、审核等操作。具体类图如图4-1所示。图4-1总体类图4.2交互设计用户进入系统首页后,只可浏览网页,若用户需要进行下单商品,需要进行登录操作,用户登录协作图如图4-2所示。图4-2用户登录协作图用户首页进入系统,没有账号需要进行注册操作,用户注册协作图如图4-3所示。图4-3用户注册协作图用户进入系统后,可以浏览各类商品,用户浏览商品协作图如图4-4所示。图4-4用户浏览商品协作图用户在进入系统后,想要浏览商品并加入购物车,需要先登录,因此用户添加购物车协作图如图4-5所示。图4-5用户添加购物车协作图用户在进入系统后,想要下单购物车中的商品,需要先登录,此时可以添加商品进入购物车,也可以直接进入购物车,选择购物车中已有的商品,点击下单,用户下单购物车协作图如图4-6所示。图4-6用户下单购物车协作图员工点击专门的员工登录入口,并且输入正确的登录名和密码,可以进入员工个人界面,员工登录协作图如图4-7所示。图4-7员工登录协作图员工登录后,可以在员工界面提交请求(请假、换班、离职等),员工提交请求协作图如图4-8所示。图4-8员工提交请求协作图管理员进入后台登录界面,输入正确的登录名和密码后成功登录后台,进入用户管理中的用户列表,进行设置会员用户操作,管理员设置会员协作图如图4-9所示。图4-9管理员设置会员协作图管理员登录系统后台,进入员工列表,接收员工请求,并进行审核批准操作,管理员处理员工请求协作图如图4-10所示。图4-10管理员处理员工请求协作图管理员登录后台,进入商品列表,可以添加商品,管理员添加商品协作图如图4-11所示。图4-11管理员添加商品协作图管理员登录后台,进入商品模块中的商品列表,因为商品在前台页面展示需进行上线操作,因此管理员上线商品协作图如图4-12所示。图4-12管理员上线商品协作图管理员登录系统后台,进入订单列表,接收新订单,并进行下发操作,管理员下发订单协作图如图4-13所示。图4-13管理员下发订单协作图管理员登录系统后台,进入角色管理,可以新增管理员角色,新增管理员角色协作图如图4-14所示。图4-14管理员添加角色协作图管理员登录系统后台,进入权限管理,新增权限,新增权限协作图如图4-15所示。图4-15管理员新增权限协作图管理员登录系统后台,进入资讯列表,接收用户需要发布的资讯,审核是否可以发布,可以发布便批准该条资讯,管理员审核发布资讯协作图如图4-16所示。图4-16管理员审核发布资讯协作图4.3本章小结本章首先进行对象设计,划分实体类,归纳实体类的属性和操作功能,然后针对分析归纳出的主要对象画出一个类图。接着进行交互设计,通过协作图了解系统功能的执行过程。最后对系统流程进行详细设计,为进一步的系统实现打下基础。
第五章智能化茶楼系统系统实现5.1前台功能模块实现本系统已在多次改进的情况下完成测试,实现了前台登录注册、商品展示、添加购物车、提交订单、发布评论资讯等功能,实现后台登录、管理用户和员工信息、添加商品、下发订单等功能。下面分别介绍不同模块的界面实现。5.1.1用户登录模块打开任意的浏览器,输入http://localhost:8080/login进入到茶馆管理系统,点击登录,输入正确的用户名和密码时,即可登录用户账号,可以进行下单操作。右上角显示用户名即登录成功。用户登录流程图如图5-1所示。图5-1用户登录流程图用户登录界面如图5-2所示:图5-2用户登录界面关键代码如下:@RequestMapping(value="/login",method=RequestMethod.POST)publicStringlogin(Modelmodel,Stringname,Stringpassword){//throwsParseExceptionSubjectsubject=SecurityUtils.getSubject();UsernamePasswordTokentoken=newUsernamePasswordToken(name,password);try{subject.login(token);Userus=userService.getByName(name);StringlastLoginTime="";if(us!=null){SimpleDateFormatsdf=newSimpleDateFormat("yyyy-MM-ddHH:mm:ss");//上次时间Datetime=us.getLasttime();lastLoginTime=sdf.format(time);//新时间Stringformat=sdf.format(newDate());//string转date不处理时间格式会不理想ParsePositionpos=newParsePosition(0);Datestrtodate=sdf.parse(format,pos);us.setLasttime(strtodate);userService.update(us);}if(us.getStatus()==1){Sessionsession=subject.getSession();session.setAttribute("subject",subject);session.setAttribute("lastLoginTime",lastLoginTime);return"redirect:index";}else{model.addAttribute("error","账号已被停用!");return"/login";}}catch(AuthenticationExceptione){ e.printStackTrace();model.addAttribute("error","验证失败!");return"/login";}}5.1.2用户注册模块新用户进入该系统,想要进行下单操作,需要先进行用户注册,用户可以通过点击系统右上方的注册按钮进行注册,用户注册流程图如图5-3所示。图5-3用户注册流程图用户注册界面的运行结果如图5-4所示。图5-4用户注册界面在用户注册时候,表单会进行异步校验,这保证了用户账号的唯一性,注册时如果输入表单中已经存在的用户名,界面会进行提示用户名已存在,并且对其它注册信息也进行了校验,因此用户在注册时填写信息需要符合相应格式,否则注册无法通过。当用户注册成功后,可点击跳转到登录界面,如图5-5所示。图5-5用户注册成功界面关键代码如下:/***注册页面**@return*/@RequestMapping("/foreRegisterUI")publicStringregisterUI(){return"forepage/foreRegister";}@RequestMapping("/foreRegister")publicStringregister(Customercustomer){customer.setStatus(0);customerService.save(customer);return"forepage/registerSuccess";}5.1.3用户浏览界面模块用户在成功登录茶馆前台系统之后,可以查看系统首页,首页会为用户推荐热销商品,同时点击商品图片可以查看商品详情,用户遇到系统问题也可以查看常见问题。用户浏览界面流程图如图5-6所示。图5-6用户浏览界面流程图用户浏览系统首页、推荐商品和商品列表运行结果如图5-7、5-8、5-9所示,商品详情界面如图5-10所示,用户查看常见问题运行结果如图5-11所示。图5-7系统首页页面图5-8推荐商品图5-9商品列表页面图5-10商品详情页面图5-11查看常见问题关键代码如下://显示商品@RequestMapping("/foreFindCategoy")publicStringforeFindCategory(Modelmodel,@RequestParam(value="id")intcid,Pagepage){List<Product>prs=productService.findByCid(cid);Categorycategory=categoryService.get(cid);if(prs.size()>100){List<Product>prs1=newArrayList();for(inti=0;i<100;i++){prs1.add(prs.get(i));}model.addAttribute("products",prs1);model.addAttribute("category",category);return"forepage/proCategoySeach";}model.addAttribute("products",prs);model.addAttribute("proSize",prs.size());model.addAttribute("category",category);return"forepage/proCategoySeach";}}5.1.4购物车模块用户查看商品详情后可以将其添加至购物车,系统会提示加入购物车成功,然后用户进入我的购物车,勾选购物车商品并提交。需要注意的是,用户添加购物车的时候,必须是在已经登录的状态,如果用户没有登录,则会跳转到登录界面。购物车模块流程如图5-12所示。图5-12购物车模块流程图购物车模块运行如图5-13所示。图5-13购物车模块页面关键代码如下:/***添加购物车*/@RequestMapping("/foreAddCart")@ResponseBodypublicStringaddCart(intpid,intnumber,Modelmodel,floattotalPrice,HttpSessionsession){Customercustomer=(Customer)session.getAttribute("cst");if(customer==null){return"false";}Productpro=productService.get(pid);booleanfound=false;List<OrderItem>ois=orderItemService.listByCustomer(customer.getId());for(OrderItemori:oris){if(ori.getProduct().getId().intValue()==pro.getId().intValue()){ori.setNumber(ori.getNumber()+number);orderItemService.update(ori);found=true;break;}}if(!found){OrderItemori=newOrderItem();ori.setCstid(customer.getId());ori.setNumber(number);ori.setPid(pid);orderItemService.save(ori);}return"success";}5.1.5订单提交模块用户将商品添加至购物车后,勾选商品后点击提交订单按钮,跳转到确认订单页面,并填写收货信息。该界面需要用户填写姓名、地址、手机号等收获信息,并选择支付方式,点击提交订单。订单提交流程图如图5-14所示。图5-14订单提交流程图订单模块运行如图5-15所示。图5-15确认订单页面关键代码如下:@RequestMapping("/foreCreateOrder")publicStringcreateOrder(Modelmodel,Stringaddress,HttpSessionsession){Orderorder=newOrder();Customercustomer=(Customer)session.getAttribute("cst");StringorderCode=newSimpleDateFormat("yyyyMMddHHmmssSSS").format(newDate())+RandomUtils.nextInt(10000);order.setCode(orderCode);order.setAddress(address);order.setCstid(customer.getId());order.setStatus(0);List<OrderItem>oris=(List<OrderItem>)session.getAttribute("oris");floattotal=orderService.add(order,oris);return"redirect:forePayed?oid="+order.getId()+"&total="+total;}5.1.6查看订单模块当用户登录系统后,可以进入“我的订单”页面,查看个人历史订单。查看订单流程图如图5-16所示。图5-16查看订单流程图用户查看订单模块运行结果如图5-17所示。图5-17订单列表页面关键代码如下:@RequestMapping("/forebought")publicStringforebought(Modelmodel,HttpSessionsession){Customercustomer=(Customer)session.getAttribute("cst");List<Order>ors=orderService.list(customer.getId());orderItemService.fill(ors);model.addAttribute("ors",ors);return"forepage/foreBhought";}5.1.7资讯模块当用户登录系统后,可以进入“茶馆资讯”页面,查看资讯,当发布问题时,需要等待待后台管理员审核通过后,才会显示在资讯列表中。资讯功能流程图如图5-18所示。图5-18资讯功能流程图资讯模块运行结果如图5-19所示。图5-19资讯模块页面关键代码如下:@Controller@RequestMapping("/zixun")publicclassZiXunController{@AutowiredprivateZiXunServiceziXunService;@RequestMapping("/list")publicStringlist(Pagepage,Modelmodel){PageHelper.offsetPage(page.getStart(),page.getCount());List<ZiXun>list=ziXunService.list1();inttotal=(int)newPageInfo<>(list).getTotal();page.setTotal(total);model.addAttribute("list",list);model.addAttribute("totals",total);return"cstpage/zixun-list";}5.1.8员工登录模块打开任意的浏览器,输入http://localhost:8080/进入到茶馆管理系统,点击员工登录入口,输入正确的登录名和密码时,即可登录员工账号,可以进行员工端功能操作。右上角显示员工名即登录成功。员工登录流程图如图5-20所示。图5-20员工登录流程图员工登录界面如图5-21所示。图5-21员工登录页面关键代码如下:@RequestMapping("/staffLogin")publicStringstaffLogin(Staffstaff,HttpSessionsession,Modelmodel){Staffsta=staffService.staffLogin(staff);if(staff!=null){session.setAttribute("staff",staff);return"redirect:staffIndex";}else{return"redirect:staffLoginMsg";}}5.1.9员工浏览界面模块员工成功登录系统之后,可在员工系统查看个人信息,查询薪资和工作任务,员工浏览界面流程如图5-22所示。图5-22员工浏览界面流程图员工浏览界面运行结果如图5-23所示。图5-23员工浏览界面页面关键代码如下:@RequestMapping("/staffIndex")publicStringindex(Modelmodel,Pagespages,HttpSessionsession){//从session中取出已经登陆成功保存的员工信息Staffsta=(Staff)session.getAttribute("sta");if(sta==null){return"staffpage/stafflogin";}intid=sta.getId();List<Salary>list=salaryService.selectBySid(id);Stringsal="";if(list!=null&&list.size()>0){Salarysalary=list.get(0);sal=salary.getSal()+"";}PagesHelper.offsetPages(pages.getStart(),pages.getCount());List<Request>reqList=requestService.selectBySid(id);inttotal=(int)newPagesInfo<>(reqList).getTotal();pages.setTotal(total);model.addAttribute("list",reqList);model.addAttribute("totals",total);model.addAttribute("sal",sal);return"staffpage/grzx";}5.1.10员工请求模块员工成功登录系统之后,可在员工系统提交请求,例如请假、换班、离职等,员工请求模块流程图如图5-24所示。图5-24员工流程图添加请求界面如图5-25所示,请求列表运行结果如图5-26所示。图5-25添加请求页面图5-26请求列表页面关键代码如下:@RequestMapping("/addRequest1")publicStringadd1(intsid,Stringsname,Stringstarttime,Stringendtime,Stringtype,Stringreson,Integerstatus,Modelmodel,Pagepage){try{SimpleDateFormatformatter=newSimpleDateFormat("yyyy-MM-ddHH:mm:ss");Datestarttime1=formatter.parse(starttime);Dateendtime1=formatter.parse(endtime);Requestrequest=newRequest();request.setSid(sid);request.setSname(sname);request.setStarttime(starttime1);request.setEndtime(endtime1);request.setType(type);request.setReson(reson);request.setStatus(status);requestService.save(request);PagesHelper.offsetPages(pages.getStart(),pages.getCount());List<Request>reqList=requestService.selectBySid(request.getSid());inttotal=(int)newPagesInfo<>(reqList).getTotal();pages.setTotal(total);model.addAttribute("list",reqList);model.addAttribute("totals",total);}catch(Exceptione){e.printStackTrace();}return"staffpage/grzx";}5.2后台功能模块实现5.2.1用户管理模块用户管理模块隶属于后台管理,用户列表功能包括查询用户、编辑和添加用户信息、设置会员等,用户管理流程图如图5-27所示。图5-27用户管理流程图用户管理模块运行结果如图5-28所示。图5-28用户列表页面关键代码如下:@RequestMapping("/shezhihuiyuan")@ResponseBodypublicStringshezhihuiyuan(intid){customerService.shezhihuiyuan(id);return"success";}@RequestMapping("/del")publicStringdel(intid){customerService.del(id);return"redirect:list";}5.2.2岗位管理模块岗位管理模块隶主要包括岗位列表,操作功能主要包括查询、添加、编辑、删除等,岗位管理模块流程图如图5-29所示。图5-29岗位管理流程图岗位管理模块运行结果如图5-30所示。图5-30岗位列表关键代码如下: @RequestMapping("/editPost") publicStringedit(@RequestParam(value="id")intid,Modelmodel){ Postpost=postService.get(id); model.addAttribute("post",post); System.out.println(post); return"postpage/post-edit"; } @RequestMapping("/updatePost") publicStringupdate(Postpost,HttpSessionsession,UploadUtilupload)throwsIOException{ postService.update(post); return"redirect:listPost"; }5.2.3员工管理模块员工管理模块主要包括员工列表、员工绩效和员工请求,操作功能主要包括发放工资、批准员工请求、查询、添加、编辑、删除等,员工管理流程图如图5-31所示。图5-31员工管理模块流程图员工管理模块运行结果如图5-32、5-33、5-34所示。图5-32员工列表图5-33员工绩效图5-34员工请求关键代码如下:@RequestMapping("/listStaff")publicStringlist(Modelmodel,Pagepage,Stringcontent,Stringform){Stringsc=content;try{content=newString(content.getBytes("iso-8859-1"),"utf-8");}catch(Exceptione){content=sc;}PageHelper.offsetPage(page.getStart(),page.getCount());//分页查询List<Staff>list=null;if((content!=null&&!"".equals(content))||(form!=null&&!"".equals(form))){list=staffService.listByLike(content,form);}else{list=staffService.list();}inttotal=(int)newPageInfo<>(list).getTotal();//总条数page.setTotal(total);//PostExamplepostExample=newPostExample();//postExample.setDistinct(true);//List<Post>postList=postService.selectByExample(postExample);model.addAttribute("list",list);model.addAttribute("totals",total);model.addAttribute("sContent",content);model.addAttribute("sForm",form);return"staffpage/staff-list";}/***设置转正**@paramid*@return*/@RequestMapping("/zhuanzheng")@ResponseBodypublicStringzhuanzheng(intid){staffService.zhuanzheng(id);return"success";}/***发放工资*@paramid*@return*/@RequestMapping("/fafang")@ResponseBodypublicStringfafang(intid){salaryService.fafang(id);return"success";}/***设置批准请求*@paramid*@return*/@RequestMapping("/shezhipizhun")@ResponseBodypublicStringshezhipizhun(intid){requestService.shezhipizhun(id);return"success";}5.2.4商品管理模块商品管理模块主要包括商品列表和商品分类管理,操作功能主要包括上线下线商品、添加编辑等,商品管理模块流程图如图5-35所示。图5-35商品管理模块流程图商品管理模块运行结果如图5-36、5-37所示。图5-36商品列表图5-37商品分类关键代码如下:@RequestMapping("/List")publicStringlist(Modelmodel,Pagepage){PageHelper.offsetPage(page.getStart(),page.getCount());//分页查询List<Product>list=productService.list();inttotal=(int)newPageInfo<>(list).getTotal();//总条数page.setTotal(total);CategoryExamplecategoryExample=newCategoryExample();categoryExample.setDistinct(true);List<Category>categoryList=categoryService.selectByExample(categoryExample);model.addAttribute("list",list);model.addAttribute("categoryList",categoryList);model.addAttribute("total",total);model.addAttribute("page",page);return"productmodule/product-list";}@RequestMapping("/enableStatus")@ResponseBodypublicStringenableStatus(@RequestParam(value="name")Stringname){returnproductService.enableStatus(name);}@RequestMapping("/stopStatus")@ResponseBodypublicStringstopStatus(@RequestParam(value="name")Stringname){returnproductService.stopStatus(name);}@RequestMapping("/productAddUI")publicStringaddUI(Modelmodel){List<Category>categoryList=categoryService.list();List<User>userList=userService.list();model.addAttribute("categoryList",categoryList);model.addAttribute("userList",userList);return"productmodule/product-add";}@RequestMapping("/addProduct")publicStringadd(Productproduct,HttpSessionsession,UploadUtilupload)throwsIOException{productService.save(product);if(upload!=null){StringimageName=product.getId()+".jpg";Filefile=newFile(session.getServletContext().getRealPath("/images/product"),imageName);System.out.println(session.getServletContext().getRealPath("/images/product"));file.getParentFile().mkdirs();upload.getImage().transferTo(file);System.out.println("["+product.getId()+","+"images/product/"+imageName+"]");ProductVOvo=newProductVO();vo.setId(product.getId());vo.setImageUrl("images/product/"+imageName);productService.setImageURL(vo);System.out.println(productService.get(product.getId()));}return"redirect:list";}@RequestMapping("/editProduct")publicStringeditUI(@RequestParam(value="id")intid,Modelmodel){//获得要修改商品的信息Productproduct=productService.get(id);model.addAttribute("product",product);System.out.println(product);List<Category>categoryList=categoryService.list();List<User>userList=userService.list();//通过商品id返回所属分类CategorycategoryByid=productService.getCategoryByCid(id);model.addAttribute("crrentCategory",categoryByid);//通过id返回所属商家UseruserById=userService.getUserByPid(id);model.addAttribute("crrentUser",userById);model.addAttribute("categoryList",categoryList);model.addAttribute("userList",userList);return"productmodule/product-edit";}5.2.5营业管理模块营业管理模块主要包括订单列表、订单详情和营业额,操作功能主要包括发货订单、查询等,营业管理模块流程图如图5-38所示。图5-38管理员管理商品流程图营业管理模块运行结果如图5-39、5-40、5-41所示。图5-39订单列表图5-40订单详情图5-41营业额关键代码如下:@RequestMapping("/list")publicStringlist(Modelmodel,Pagepage){PageHelper.offsetPage(page.getStart(),page.getCount());List<Order>ors=orderService.list();inttotal=(int)newPageInfo<>(ors).getTotal();page.setTotal(total);//为订单添加订单项数据orderItemService.fill(ors);model.addAttribute("ors",ors);model.addAttribute("page",page);model.addAttribute("totals",total);return"ordermodule/order-list";}/***查看当前订单的订单项**@paramoid*@parammodel*@return*/@RequestMapping("/seeOrderItem")publicStringseeOrderItem(intoid,Modelmodel){Ordero=orderService.get(oid);orderItemService.fill(o);model.addAttribute("orderItems",o.getOrderItems());model.addAttribute("total",o.getOrderItems().size());model.addAttribute("totalPrice",o.getTotal());return"ordermodule/orderItem-list";}/***营业额**@parammodel*@parampage*@return*/@RequestMapping("/yyeList")publicStringyyelist(Modelmodel,Pagepage,Stringtype,Stringyear,Stringday){Yyeyye=null;if(type==null||"".equals(type)){type="year";//获取当前年份Calendardate=Calendar.getInstance();year=String.valueOf(date.get(Calendar.YEAR));}if("year".equals(type)){yye=orderService.getYearYye(year);}elseif("day".equals(type)){yye=orderService.getDayYye(day);}model.addAttribute("yye",yye);model.addAttribute("ssType",type);model.addAttribute("ssYear",year);model.addAttribute("ssDay",day);return"ordermodule/yye-list";}5.2.6管理员管理模块管理员管理模块主要包括管理列表、角色管理和权限管理,操作功能主要包括启用停用管理员账号、添加、编辑、删除等,管理员管理模块流程如图5-42所示。图5-42管理员管理商品流程图管理员管理模块运行结果如图5-43、5-44、5-45所示。图5-43角色管理图5-44权限管理图5-45管理员列表关键代码如下:publicStringlist(Modelmodel,longid){Rolerole=roleService.get(id);model.addAttribute("role",role);//所有权限List<Permission>ps=permissionService.list();model.addAttribute("ps",ps);List<Permission>currentPermissions=permissionService.list(role);model.addAttribute("currentPermissions",currentPermissions);return"syspage/admin-role-edit";}publicStringlist(Modelmodel,Pagepage){PageHelper.offsetPage(page.getStart(),page.getCount());//分页查询List<Permission>ps=permissionService.list();inttotal=(int)newPageInfo<>(ps).getTotal();//总条数page.setTotal(total);model.addAttribute("ps",ps);model.addAttribute("perCount",ps.size());return"syspage/admin-permission";}@RequestMapping("addUser")publicStringadd(Useruser,long[]roleIds){Stringsalt=newSecureRandomNumberGenerator().nextBytes().toString();//生成随机数inttimes=2;StringalgorithmName="md5";StringencodedPassword=newSimpleHash(algorithmName,user.getPassword(),salt,times).toString();Useru=newUser();u.setName(user.getName());u.setPassword(encodedPassword);u.setSalt(salt);u.setStatus(1);u.setAddress(user.getAddress());u.setPhone(user.getPhone());userService.add(u);userRoleService.setRoles(u,roleIds);return"redirect:listUser";}5.2.7评论管理模块评论管理模块主要包括评论列表,操作功能主要包括删除,评论管理模块流程图如图5-46所示。图4-46用户管理流程图评论管理模块运行结果如图5-47所示。图5-47评论列表关键代码如下:publicStringlist(Modelmodel,Pagepage){PageHelper.offsetPage(page.getStart(),page.getCount());//分页查询List<Review>list=reviewService.list();inttotal=(int)newPageInfo<>(list).getTotal();//总条数page.setTotal(total);model.addAttribute("totals",list.size());model.addAttribute("list",list);return"pinglunpage/pinglun";}@RequestMapping("/del")publicStringdel(intid){reviewService.del(id);return"redirect:list";}5.2.8资讯管理模块资讯管理模块主要包括资讯列表,操作功能主要包括审核资讯、删除资讯等,咨询管理流程图如图5-48所示。图4-48资讯管理模块流程图资讯管理模块运行结果如图5-49所示。图5-49资讯列表关键代码如下:@RequestMapping("/list")publicStringlist(Pagepage,Modelmodel){PageHelper.offsetPage(page.getStart(),page.getCount());//分页查询List<ZiXun>list=ziXunService.list1();inttotal=(int)newPageInfo<>(list).getTotal();//总条数page.setTotal(total);model.addAttribute("list",list);model.addAttribute("totals",total);return"cstpage/zixun-list";}/***审核*@paramzid*@return*/@RequestMapping("/zixunshenhe")@ResponseBodypublicStringzixunshenhe(intzid){ziXunService.shenhe(zid);return"success";}@RequestMapping("/del")publicStringdel(intid){ziXunService.del(id);return"redirect:list";}5.3数据库实现本茶馆在线点餐系统采用的是MYSQL数据库,涉及管理员、用户,员工、岗位、绩效、请求、商品、商品类型、订单、订单详情、用户评论和资讯等数据表,数据库实现图如图5-50所示。图5-50数据库实现图5.4本章小结通过对模块功能分析,以及设计各模块的流程图,实现系统各模块功能,并通过界面展示和关键代码展示进行说明本系统。
第六章智能化茶楼系统测试6.1测试目的作为软件生存周期,软件测试越来越受到重视。软件测试是唯一验证软件是否能执行所需功能的有效方法[14]。软件测试的执行过程是为了发现程序中的错误。测试是为了查找错误,而不是为了实现软件的正确功能,但是查找错误不是软件测试的唯一目的,更主要是要从系统功能缺陷中改进程序,从而让用户有更高的用户体验。6.2测试方法\t"/item/%E8%BD%AF%E4%BB%B6%E6%B5%8B%E8%AF%95%E6%96%B9%E6%B3%95/_blank"软件测试是整个软件流程中必不可少缺少的部分,当程序写完后,必须通过测试方法进行检验功能是否正确实现,并且测试的方法有很多种,划分的方法也有很多,最常见的划分方式为从内部程序代码和从简单的系统功能是否实现划分,这种测试方式主要有白盒测试和黑盒测试。白盒测试指的是从程序代码进行测试程序,例如可以通过编写单元测试进行检验代码。而黑盒测试则主要是看系统功能是否正确实现,也就是简单地通过鼠标模拟用户来操作系统,从而发现其中的使用问题。6.3测试用例本系统测试首先编写测试用例,这是黑盒测试不可缺少的一步,目的是模拟用户
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 小学语文改错试题及答案
- 海陵化学模拟试题及答案
- 2026年九年级数学中考二模模拟试卷(河北专用版·易错题诊断卷含答案详解与评分标准)
- 2026北师大三下赛课公开课课件
- 企业广告植入对观众无意识记忆的影响研究报告
- 企业产品生命周期管理对研发效率的影响研究报告
- 人教版四年级上册语文期中测试卷及答案
- 初中教研组“单元作业设计”研讨会议流程与展示范例
- 《生活科学实验课堂|发现身边的电池制作知识》
- 2026三下数学全册大单元情境课件
- 甘肃省兰州市城关区2024-2025学年数学四年级第二学期期末经典试题含解析
- 2025年安徽安庆市文化旅游产业发展集团有限公司招聘笔试参考题库含答案解析
- 流沙处理方案
- 水电安装工程技术标投标文件(技术方案)
- 术后快速康复(ERAS)在胸外科手术中的应用
- 教师校园网络安全培训
- 应急知识培训课件
- 变电站直流系统蓄电池更换改造
- 2022年湖北省普通高中学业水平合格性考试政治试题
- 地理信息安全在线培训考试系统题库
- T12拖拉机副变速摇臂机械加工工艺及加工10H8孔夹具设计
评论
0/150
提交评论