版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
补习班家教预约系统设计与实现摘要近两年,微信小程序以方便多元的入口,远低于原生APP的开发价格,深受有意进入电商领域的传统行业和创业者的青睐。而且小程序有无需下载、不占用内存、即开即用并可以添加到桌面的优点,所以很多用户更愿意使用小程序。家教行业拥有庞大的市场,当其与小程序结合,能扬长避短以新兴的小程序发挥传统行业的优势,短时间获得大量的用户。该系统的开发分为后台数据库的设计和前台应用程序的设计,后台数据库使用MySQL数据库系统开发,前台以Java为后端开发语言,Eclipse为后端开发工具,微信提供的开发者平台作为前端开发工具,具体实现信息浏览、教师预约、订单评价等功能。后台管理系统提供设置了管理员成员,管理员拥有添加教师角色、更新角色信息和订单信息的权限。系统通过这种方式实现员工入职和异常处理功能。本论文主要介绍了该家教预约系统的设计背景、可行性分析和需求分析、部分设计的技术和总体设计思路。本论文共有图23幅,表15幅。关键词:家教服务电子商务小程序设计目录摘要 11绪论 51.1系统研究背景及意义 51.2研究现状 62基本知识及相关技术介绍 72.1开发环境介绍 72.2系统的关键技术介绍 72.2.1MySql 72.2.2JSP简介 73系统分析 93.1可行性分析 93.2系统需求分析 104系统设计 114.1系统设计方案 114.2系统功能模块划分 114.3基本设计和处理流程 125数据库设计 155.1概念数据模型设计 155.4数据库物理结构设计 175.5公共类实现 226私教服务公司小程序系统的详细设计 346.1管理员登陆 346.2注册/添加用户 346.3首页 356.4商品管理 366.5商品信息修改 376.6类型管理 386.7订单管理 396.9评价管理 396.10用户/员工管理 406.11小程序首页文章(视频、广告、推荐信息)管理 416.12微信小程序首页 426.14教师/商品列表 436.15小程序预约 446.16预约列表 456.17评价 467系统测试 47结语 48参考文献 491绪论1.1系统研究背景及意义讨论家教预约系统之前首先要弄清楚为什么选择家教这个行业与小程序进行融合。首先,根据网络公开资料和部分企业公开的报告整理大概得到:截止2018年我国K12(指从幼儿园到12年级即高三阶段)教育行业的市场规模大约4331亿元,2019年为4751亿元。我国拥有庞大的人口基数,而且随着国民义务教育的不断推进,我国的K12人群会维持在一个很庞大的数字上,而这就是传统家教行业的潜在客户群体。在目前很多家长的观念中,‘为孩子创造一个美好的学习环境和学习条件’是一个必要的事情,大多数家庭愿意为孩子留下这笔储备资金。而且随着K12群体的增加(即使是维持在现在的数量),人们的学习竞争压力也是与日俱增,为了提高竞争力,家教这种额外的教育开支很多家庭也愿意承担。其次,自2015年以来,国内各个教育机构都开始尝试网络化,甚至开启远程教育,直至疫情期间远程教育可以说是达到了一个前所未有的热度。但是我向一些教育行业从业者(包括在职教师、大学生兼职家教、职业家教等)了解到,疫情期间远程教育虽然是解决了学生无法返校上课的问题,但其教学效果可谓是一塌糊涂。而在国内各地陆续解禁后为了弥补这段时间的学习空缺,家教行业迎来了一次爆发。这也暴露了传统教育机构的一个弊端——业务拓展难。最后,结合传统教育行业的优缺点来看,融合小程序的技术,让微信的10亿用户成为潜在用户。使用微信提供的各种方便快捷的工具,实现用户轻松找老师,教师轻松拓展业务,教务轻松排课或者统计工作量,完美发挥小程序的优势。而且依托实体教育机构的用户信任度又可以很大程度上规避线上企业用户信任度低的弊端。总之,家教预约或教育机构使用小程序方便快捷的运作模式,将传统的私教公司电子网络化,大大提高了私教服务行业的工作效率和整体工作水平,甚至可以给私教服务业带来深刻的变革。1.2研究现状我国强大的教育市场需求催生了大量的家庭教育从业者队伍,家庭教育行业发展蓬勃。互联网上各种教育机构如雨后春笋般成立,各种网页平台,PC客户端平台不断出现。但截止2020年10月只有为数不多的教育机构尝试使用微信小程序宣传和售卖各自的线下产品,而做线上预约的更是寥寥无几,本小程序作为一次尝试,也希望可以带给家教从业者和用户一个不同以往的、良好的体验。微信小程序技术趋于成熟,而且网上各类预约系统也不在少数,类似于医院网上挂号,餐厅预约餐桌等。家教预约不同于以上系统的地方在于家教预约更多的是用户和教师双方的约定和互动,而不是单方面的预约请求。预约家教要考虑多方面的因素去匹配教师和用户双方,而不是单纯的提供列表供用户选择。2基本知识及相关技术介绍2.1开发环境介绍系统开发的软件环境:开发工具:MyEclipse/微信开发者工具开发系统:Win2012Svr/Win10数据库管理系统:MySQL5.7.15辅助工具:数据库辅助工具:Navicat15premium制图辅助工具:Visio20102.2系统的关键技术介绍2.2.1MySqlMySQL是关系数据库开发工具,它具有利用数据表示图或自定义表单收集信息的优点。其中,数据表示图提供了一个类似Excel的电子表格,使数据库一目了然。总之,MySQL作为关系数据库开发,有很多优势[13]。Web数据库访问技术是数据库技术与Web技术集成的新热点研究方向之一,Web数据库访问技术终端为用户提供了一种高效、方便的远程数据库服务[14]。2.2.2JSP简介Java服务器页面的JSP(JavaServerPages)是基于Java的技术,是用来支持动态的跨平台Web服务器访问的技术[15],JSP和微软的ActiveServerPages(ASP)在一定程度上相似,不同的是ASP在网页HTML文件中插入VBScript代码片段,而JSP在HTML文件中插入Java代码片段(Scriptlet)和JSP标记(tag),基于JSP的web应用具有良好的跨平台性[16]。与JavaServlet类似,服务器对客户端JSP请求中的Java代码进行处理后,返回客户端是一个包含处理结果的HTML文档,客户端只要使用浏览器就可以接收处理结果。JSP技术继承了Java技术的独立于平台性且安全可靠,具有面向对象的易于使用的特性[17]。3系统分析3.1可行性分析3.1.1经济可行性本系统是为拥有线下实体的教育机构开发的。传统线下模式的教育机构扩展业务的方法一般为用户的口口相传,或者有业务人员以发放小广告或去学校甚至上门推广的方式进行宣传。前者转化率极低,后者耗时耗力。微信小程序拥有包括扫码的60多种入口,微信甚至提供查看5KM之内小程序的入口,这无疑大大缩减了机构的宣传和推广成本。3.1.2技术可行性微信小程序前端开发与HTML开发的方法大同小异,相对于APP来说非常简单而且价格低廉,企业完全可以进行外包开发。后端开发采用Java,技术很成熟,而且即使外包开发,只要留有后台管理系统,企业也不需要专门招收或者派人学习相关开发技术,只需要熟悉后台管理系统的操作即可。该系统的难点一是将用户提交的需求表单与数据库内的教师信息进行匹配,为用户列出符合要求的教师列表。二是对异常订单的处理,系统应该安排什么样的策略处理用户取消订单的条件,教师取消订单的条件,无效订单和失信名单。本系统将采用模糊查询的方式提供教师列表,以解决用户与教师的匹配问题。3.1.3操作可行性本系统设定教师角色需要由管理员添加,即管理员可以将本机构任职的教师加入系统,管理员只需要注意后台提示的异常订单和课程周期结束时的数据即可,后台可以部署在腾讯云或者其他云服务器上,并不需要企业额外购买和维护服务器,用户可以直接通过微信登录,不需要繁琐的注册步骤,一切从简,方便易操作。3.2系统需求分析本家教预约小程序的主要功能是在线预约家庭教师,设计此系统的总目的是:利用网络通过数据库和新颖的小程序技术,让现有的工作人员从繁琐、低效率的工作中解放出来,以更高效率的网络技术扩展企业的用户群体。对于用户来说本程序把复杂的、重复性的筛选工作交给系统后台进行需求和人员属性的匹配。对于教师来说,可以放心地把教学次数、薪资结算交给系统后台统计,把多的精力放在教学本身上面。对于教育机构来说,可以将轻松地对教师和企业产品进行细致地管理,可以省时省力地拓宽用户群体,可以标记失信人员避免用户或者教师发生人身安全事故等。小程序子系统设计主要功能——教师预约用户按界面提示提交需求表单,如:年级、科目、上课时间、上课地点等。系统接收表单信息,将以上项目依次与数据库中教师的信息进行对比,筛选出年级科目完全符合,时间地点尽量符合的教师,随后将筛选出的教师列表按符合程度排序展示给用户。线下课程产品的展示与销售在小程序主页展示机构线下产品的信息,用户可以通过此界面直接购买并付款,无需线下当面交易,安全便捷。订单列表用户可以通过订单列表界面查看自己的所有订单。小程序用户应该有查看本人订单详情的权限,并能取消未支付的订单,或者申请取消已支付的订单。用户评价功能用户应有对教师进行评价和修改自己已发布的评价进行修改的权限。4系统设计4.1系统设计方案家教预约服务小程序应该面向全体微信用户开放浏览入口,用户通过扫码等入口进入小程序,系统通过微信提供的接口获取用户的信息即用户使用微信登录。本系统设置了多种角色:超级管理员、管理员、教师、客户。具体设计方案为:1)小程序页面:首页:顶端广告轮播图,轮播线下产品的广告图内置产品购买入口的超链接;产品列表;学习小知识等文章的分享。家教需求:用户通过该页面填写自身的补习需求,如:所在年级,补习科目,上课时间,上课地点,教师性别,补习类型等。我的:用户可以在这个页面查看自己的全部订单和订单详情,为已完成的订单添加评论或者修改已发布的评论。2)后台管理系统页面:数据统计页面:这个页面可以接受后台产生的数据,自动生成图表方便机构观察销售详情。人员管理页面:管理员可以在这个界面查看教师列表,并有一部分的修改教师资料的权限。用户管理页面:管理员可以在这个页面查看登录过的用户的列表,可以查看用户信息,或者标记用户为失信人员等。订单管理页面:管理员拥有普通用户在小程序页面上对订单的所有管理权限,并且可以在教师与用户同意的情况下取消订单。4.2系统功能模块划分本系统主要涉及如下功能模块:1.用户:浏览页面信息,注册成为会员,留言等。2.教师:可以登录后台网站,拥有查看订单信息和自己的预约统计的权限。3.管理员:超级管理员:拥有的主要功能和权限是:实现对普通管理员的增加、删除、修改;并且拥有普通管理员的全部权限。普通管理员:拥有的主要功能和权限是:查看用户列表,查看教师列表,,修改部分教师信息,修改自身信息;对首页文章板块进行添加、修改、删除;对轮播广告进行添加、修改、删除;实现对客户、教师信息的增加、删除、修改,实现员工与客户之间的匹配管理。(2)信息管理用户管理:实现对客户信息的浏览、审核。教师管理:实现对员工信息的浏览、删除。(3)私教服务管理管理员对教师信息的管理,和对订单信息的管理是实现管理员对异常订单管理的关键。当用户方面或者教师方面出现意外情况导致订单无法履行,教师或者用户可以发起取消订单的申请,当另一方面同意取消订单,管理员就获得取消订单的权限,可以取消已付款的订单,付款金额原路返回客户付款渠道。当遇到为取消订单但不履行订单内容,包括用户拒绝上课和教师不到场,累计一定次数后管理员可以标记其为失信人员将其拉入黑名单。4.3基本设计和处理流程家教预约服务系统的角色有后台管理员,教师和用户,这三个角色的流程图如下:图4-1系统管理员业务流程图图4-2教师业务流程图图4-3用户业务流程图
5数据库设计5.1概念数据模型设计根据需求分析和系统设计,规划出本系统使用的数据库实体如下:1.管理员实体属性:管理员编号、用户名、密码、确认密码。2.教师实体属性:教师编号、用户名、密码、确认密码、email、电话、性别、订单数、好评数。3.客户实体包括:用户编号、昵称、真实姓名、密码、确认密码、email、付款方式、服务类型、性别要求、电话号码、手机、当前地址。4.服务记录实体包括:教师编号、教师名、用户编号、用户名、补习类型、上课开始时间、上课结束时间、备注、订单编号。6.企业文化实体(1).公司新闻实体包括:公司新闻编号、发布人、发布时间、公司新闻标题、公司新闻内容、点击次数。(4).首页文章实体包括:文章编号、文章标题、文章内容。5.3逻辑数据模型的设计(注:图中pi表示主键,M表示非空)图5-1信息管理、私教服务管理的局部E-R关系图图5-2文化管理、新闻管理的局部E-R关系图5.4数据库物理结构设计根据数据库概念结构和逻辑结构设计的设计,然后转化为物理结构可得到以下部分关键数据表表4-1管理员表tb_admin字段名字段说明数据类型是否为空主键或外键adminID管理员编号Varchar(50)否主键adminName管理员用户名varchar(50)否adminPwd密码varchar(50)否adminQrPwd确认密码varchar(50)否表4-2普通会员表tb_users字段名中文含义数据类型是否为空主键或外键userID普通会员编号int否主键userName会员名varchar(50)否userPwd密码varchar(50)否userqrPwd确认密码varchar(50)否emailemailvarchar(50)是telephone电话varchar(50)是续表4-2字段名中文含义数据类型是否为空主键或外键pwdProblem密码提示问题varcha(50)是pwdAnswer密码提示答案varcha(50)是bz备注varchar(50)是表4-3员工表tb_employees字段名中文含义数据类型是否为空主键或外键employeeID员工编号varchar(50)否主键员工序列号员工序列号varchar(50)否主键empName员工用户名varchar(50)否empTruName真实姓名varchar(50)否emailemailvarchar(50)否sex性别varchar(50)否电话号码电话号码varchar(50)否家庭地址家庭地址varchar(50)否身份证号身份证号varchar(50)否人员状态人员状态varchar(50)否表4-4客户表tb_customers字段名中文含义数据类型是否为空主键或外键customerID客户编号varchar(50)否主键客户序列号客户序列号varchar(50)否主键cusName客户会员名varchar(50)否cusTruName客户真实姓名varchar(50)否cusPwd密码varchar(50)否cusqrPwd确认密码varchar(50)否emailemailvarchar(50)是pwdProblem密码提示问题varchar(50)是pwdAnswer密码提示答案varchar(50)是续表4-4字段名中文含义数据类型是否为空主键或外键付款方式付款方式varchar(50)否性别要求性别要求varchar(50)否电话号码电话号码varchar(50)否手机手机varchar(50)是家庭地址或公司地址家庭地址或公司地址varchar(50)否服务日期服务日期varchar(50)否服务地点服务地点varchar(50)否备注备注varchar(4000)是是否通过审核是否通过审核varchar(50)否是否安排是否安排varchar(50)否表4-5企业文化表tb_culture字段名中文含义数据类型是否为空主键或外键adminID管理员编号varchar(50)否外键title文化标题varchar(50)否cultureContent文化内容varchar(4000)否updateTime更新时间varchar(50)是表4-6工作类型表tb_jobType字段名中文含义数据类型是否为空主键或外键jobID工作编号int否主键服务类型服务类型varchar(50)否是否空缺是否空缺varchar(50)否备注备注varchar(50)是表4-7公司新闻表tb_firmnews字段名中文含义数据类型是否为空主键或外键ID公司新闻编号int否主键faburen发布人varchar(50)否fabutime发布时间varchar(50)否title公司新闻标题varchar(50)否newsContent公司新闻内容varchar(4000)否hit点击率varchar(50)否表4-8行业新闻表tb_hynews字段名中文含义数据类型是否为空主键或外键ID行业新闻编号int否主键faburen发布人varchar(50)否fabutime发布时间varchar(50)否title行业新闻标题varchar(50)否newsContent行业新闻内容varchar(4000)否表4-9生活小常识表tb_knowledge字段名中文含义数据类型是否为空主键或外键ID生活小常识编号int否主键title生活小常识标题varchar(50)否content生活小常识内容varchar(4000)否表4-10留言板表tb_leaveWord字段名中文含义数据类型是否为空主键或外键ID留言编号int否主键Name留言者会员名varchar(50)否wordContent留言内容varchar(4000)否liuyantime留言时间varchar(50)否reply管理员回复varchar(100)是表4-11公司连接表tb_link字段名中文含义数据类型是否为空主键或外键linkID链接编号int否主键linkName链接公司名称varchar(50)否linkAddr链接地址varchar(50)否表4-12公司联系表tb_contractUs字段名中文含义数据类型是否为空主键或外键ID联系编号int否主键contractContent联系内容varchar(4000)否updateTime更新时间varchar(50)是表4-13服务记录表tb_serRecord字段名中文含义数据类型是否为空主键或外键employeeeID服务员工编号varchar(50)否主键customerID被服务客户编号varchar(50)否主键服务类型服务类型varchar(50)否开始服务时间开始服务时间varchar(50)否结束服务时间结束服务时间varchar(50)否备注备注varchar(50)是表4-14分类信息表tb_FL字段名中文含义数据类型是否为空主键或外键ID编号int否主键私教供应私教供应varchar(4000)否私教求职私教求职varchar(4000)否招商合作招商合作varchar(4000)否私教培训私教培训varchar(4000)否私教需求私教需求varchar(4000)否5.5公共类实现后台java程序与数据库的连接使用jdbc。而他们之间的交互即数据传递被写在controller层中,controller是Java分层开发中四层结构的一个层面,其他层面还有dao层;service层,这个层面主要实现一些系统业务逻辑;UI层即表现层,在HTML开发中主要是servlet+JSP,而在微信小程序中也是大同小异,微信小程序卡法工具提供了一种wxml和wxss对应web开发中的html和css文件。在系统开发过程中使用分层结构将可以多次使用的代码写在各层的公共类中,在重复的时候选择继承公共类或者直接调用公共类,可以大大节省代码量,缩减工作量。以下为controller层的基础控制器,其他各个控制器都继承自基础控制器。publicclassBaseController<T>{ protectedBaseDaodao=null; publicvoidsetBaseDao(BaseDaobaseDao){ this.dao=baseDao; } //查询方法 @RequestMapping(params="list") @ResponseBody publicMap<Object,Object>get(HttpServletRequestrequest){ Map<Object,Object>queryMap=newHashMap<Object,Object>(); Enumerationen=request.getParameterNames(); while(en.hasMoreElements()){ StringparamName=(String)en.nextElement(); StringparamValue=request.getParameter(paramName); if(paramValue.equals("")){ }else{ //形成键值对应的map queryMap.put(paramName,paramValue); } } //System.out.println(JSON.toJSON(queryMap)); Stringpage=request.getParameter("page"); Stringrows=request.getParameter("rows"); //如果没有page和rows则不传到SQL语句中 if(page!=null&&rows!=null){ queryMap.put("pageIndex",(Integer.parseInt(page))); queryMap.put("rows",(Integer.parseInt(rows))); } Map<Object,Object>map=newHashMap<Object,Object>(); try{ List<T>list=dao.get(queryMap); map.put("rows",list); map.put("total",dao.getCount(queryMap)); map.put("success",true); map.put("page",page); map.put("msg","查询成功"); }catch(Exceptione){ //TODO:handleexception map.put("success",false); map.put("msg","查询失败"); returnmap; } returnmap; } //根据多个id查询记录 @RequestMapping(params="getMore") @ResponseBody publicMapgetMore(HttpServletRequestrequest) { Map<Object,Object>queryMap=newHashMap<Object,Object>(); Enumerationen=request.getParameterNames(); Stringid=request.getParameter("idlist"); List<String>listId=newArrayList<String>();String[]arrId=id.split(",");for(inti=0;i<arrId.length;i++){ listId.add(arrId[i]);}queryMap.put("listId",listId); while(en.hasMoreElements()){ StringparamName=(String)en.nextElement(); StringparamValue=request.getParameter(paramName); if(paramValue.equals("")){ }else{ //形成键值对应的map queryMap.put(paramName,paramValue); } } Stringpage=request.getParameter("page"); Stringrows=request.getParameter("rows"); //如果没有page和rows则不传到SQL语句中 if(page!=null&&rows!=null){ queryMap.put("index", ((Integer.parseInt(page))-1)*(Integer.parseInt(rows))); queryMap.put("rows",(Integer.parseInt(rows))); } Map<Object,Object>map=newHashMap<Object,Object>(); try{ List<T>list=dao.get(queryMap); map.put("rows",list); map.put("total",dao.getCount(queryMap)); map.put("msg","查询成功"); map.put("success",true); }catch(Exceptione){ //TODO:handleexception map.put("msg","查询失败"); map.put("success",false); returnmap; } returnmap; } //根据id删除记录 @RequestMapping(params="del") @ResponseBody publicMap<Object,Object>delete(Stringid){ Map<Object,Object>map=newHashMap<Object,Object>(); try{ dao.deleteByPrimaryKey(id); }catch(Exceptione){ e.printStackTrace(); map.put("msg","删除失败"); map.put("success",false); returnmap; } map.put("msg","删除成功"); map.put("success",true); returnmap; } //根据id批量删除 @RequestMapping(params="delMore") @ResponseBody publicMap<Object,Object>deleteMore(Stringid){ Map<Object,Object>map=newHashMap<Object,Object>();try{ List<String>listId=newArrayList<String>();String[]arrId=id.split(",");for(inti=0;i<arrId.length;i++){ listId.add(arrId[i]);}if(listId.size()>0){ System.out.println("listId:::::::::::::::::::::::::."+listId); dao.deleteMoreByPK(listId); map.put("msg","操作成功");map.put("success",true);}else{ map.put("msg","缺少删除条件");map.put("success",false);}returnmap;}catch(Exceptione){e.printStackTrace();map.put("msg","删除失败");map.put("success",false);returnmap;} } //根据id批量删除 @RequestMapping(params="delMoreh") @ResponseBody publicMap<Object,Object>deleteMoreh(Stringid){ Map<Object,Object>map=newHashMap<Object,Object>();try{ List<String>listId=newArrayList<String>();String[]arrId=id.split(",");for(inti=0;i<arrId.length;i++){ listId.add(arrId[i]);}if(listId.size()>0){ dao.deleteMoreByPKh(listId); map.put("msg","操作成功");map.put("success",true);}else{// map.put("msg","缺少删除条件");map.put("success",false);}returnmap;}catch(Exceptione){e.printStackTrace();map.put("msg","删除失败");map.put("success",false);returnmap;} } //批量添加 @RequestMapping(params="addMore") @ResponseBody publicMap<Object,Object>addMore(Stringparams){ Map<Object,Object>map=newHashMap<Object,Object>();try{ JSONArrayjsonArray=JSONArray.fromObject(params); List<Map<String,Object>>mapListJson=(List)jsonArray;if(mapListJson.size()>0){ dao.insertMore(mapListJson); map.put("msg","保存成功");map.put("success",true);}else{ map.put("msg","保存失败");map.put("success",false);}returnmap;}catch(Exceptione){e.printStackTrace();map.put("msg","保存失败");map.put("success",false);returnmap;} } //批量修改多个参数 @RequestMapping(params="updateMore") @ResponseBody publicMap<Object,Object>updateMore(Stringparams){ Map<Object,Object>map=newHashMap<Object,Object>();try{ JSONArrayjsonArray=JSONArray.fromObject(params); List<Map<String,Object>>mapListJson=(List)jsonArray;if(mapListJson.size()>0){ dao.updateMore(mapListJson); map.put("msg","修改成功");map.put("success",true);}else{ map.put("msg","修改失败");map.put("success",false);}returnmap;}catch(Exceptione){e.printStackTrace();map.put("msg","修改失败");map.put("success",false);returnmap;} } //根据id单个修改 @RequestMapping(params="updMoreByPkId") @ResponseBody publicMap<Object,Object>updMoreByPkId(TparamT){ Map<Object,Object>map=newHashMap<Object,Object>(); try{ dao.updateByPrimaryKeySelective(paramT); }catch(Exceptione){ e.printStackTrace(); map.put("msg","修改失败"); map.put("success",false); returnmap; } map.put("msg","修改成功"); map.put("success",true); returnmap; } //根据id批量修改 @RequestMapping(params="updMore") @ResponseBody publicMap<Object,Object>updateMore(Stringid,TparamT){ Map<Object,Object>map=newHashMap<Object,Object>(); try{ Map<String,Object>param=newHashMap<String,Object>(); List<String>listId=newArrayList<String>();String[]arrId=id.split(",");for(inti=0;i<arrId.length;i++){ listId.add(arrId[i]);}if(listId.size()>0){param.put("obj",paramT); param.put("listId",listId); dao.updateMoreByPK(param);} }catch(Exceptione){ e.printStackTrace(); map.put("msg","修改失败"); map.put("success",false); returnmap; } map.put("msg","修改成功");map.put("success",true); returnmap; } /** *将前台的时间字符串转化为Date类型 **/ @InitBinder publicvoidInitBinder(HttpServletRequestrequest, ServletRequestDataBinderbinder){ //不要删除下行注释!!!将来"yyyy-MM-dd"将配置到properties文件中 //SimpleDateFormatdateFormat=new //SimpleDateFormat(getText("date.format",request.getLocale())); SimpleDateFormatdateFormat=newSimpleDateFormat( "yyyy-MM-ddHH:mm:ss"); //dateFormat.setLenient(false); binder.registerCustomEditor(Date.class,newCustomDateEditor( dateFormat,true)); }}除此之外本系统还设计了如下各个公共类或工具类以供调用:adminManage.java:1.系统自动生成管理员编号;2.根据编号获取管理员实体对象,实现对该实体的修改与删除;3.在管理员对象map末尾添加一个实体对象,根据传回参数实现添加新的管理员。userManage.java:1.接收前端传回的用户参数;2.根据用户编号实现对该实体属性的修改。Order.java:1.获取订单信息,根据信息生成对应的实体类;2.根据订单编号查找订单或对订单进行修改与删除。AES.java加密算法、MD5.java加密算法、date.java判断日期、day.java判断今天是周几等。
6私教服务公司小程序系统的详细设计6.1管理员登陆本项目采用云开发,使用某平台的商业框架提供的数据接口较为简单便捷的制作了后台管理网站,此处输入平台用户名、密码等,登陆平台进入管理系统:6.2注册/添加用户微信提供了授权微信登录,获取用户基本信息功能的接口,普通用户可直接选择微信登录;教师账户需要管理员分配,不可注册,管理员账户由超级管理员分配或添加,不可注册,6.3首页左边是菜单栏,右边是具体的展示区域,首页默认显示数据统计页面:此处实现了商品销量排行,后端使用Java为教师用户和商品添加了成交量等参数,小程序系统前端或管理系统前端请求展示商品列表、教师列表和销售数据时,后端调取数据库后根据成交量等参数进行排序然后将列表发送至前端进行展示。此处因为个人账户无权调用微信支付接口所以支付数据全部为0。6.4商品管理本系统除预约具体家教之外还有各类补习产品,管理员有权更改商品信息:6.5商品信息修改编辑好名称,点击保存即可,如下图所示:6.6类型管理这里以列表的形式展示所有的类型信息,如下图所示:无论是商品还是预约家教都设置了类型参数,用户可以根据类型删选商品和教师列表6.7订单管理普通用户和教师用户可以通过小程序里的订单列表查看自己的订单,并且在未支付状态下用户可以无条件取消订单,次功能稍后会在小程序页面另外说明。管理员可以查看所有订单数据,并可以进行添加备注、删除订单和强制取消等操作,订单支付以后用户和教师不可以单方面取消订单,双方协商同意之后可向管理员说明情况,然后由管理员进行强制取消订单。如下图:6.9评价管理管理员可以查看,并有修改删除用户评价的权限,如下图所示:6.10用户/员工管理管理员可通过本页面查看教师用户并可以一定程度的修改编辑教师权限,:管理员
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 深度解析(2026)《GBT 30082-2013硫化铜、硫化铅和硫化锌精矿 批料中金属质量的测定》
- 深度解析(2026)《GBT 30013-2013城市轨道交通试运营基本条件》
- 深度解析(2026)《GBT 29886-2013棉包回潮率试验方法 微波法》
- 深度解析(2026)《GBT 29856-2013半导体性单壁碳纳米管的近红外光致发光光谱表征方法》
- 《GBT 8309-2013茶 水溶性灰分碱度测定》(2026年)合规红线与避坑实操手册
- 四川省巴中市巴州区川2024-2025学年六年级下学期英语期中测试试卷(4月)(含答案)
- 2025北京八十中高二12月月考化学试题及答案
- 2025北京三十五中高一10月月考化学试题及答案
- 分布式发电与微电网应用技术 微电网运行与控制技术
- 《 工程制图基础习题集 第2版》课件 第1章 基本知识(习题答案)
- 摩根士丹利 -半导体:中国AI加速器-谁有望胜出 China's AI Accelerators – Who's Poised to Win
- 2026中国广播影视出版社有限公司高校毕业生招聘3人备考题库含答案详解(完整版)
- 2025-2030非洲智能汽车零部件行业市场供需理解及投资潜力规划分析研究报告
- 2026季华实验室管理部门招聘3人(广东)建设笔试模拟试题及答案解析
- 广东省广州市2026年中考模拟数学试题七套附答案
- 《眼科临床诊疗指南(2025版)》
- 无人机防汛巡查监管规范
- 三年级数学下册第一单元两位数乘两位数导学案教学计划教案教学设计(2025-2026学年)
- 髋关节翻修术课件
- 科研伦理与学术规范答案(一)
- 第5课+森さんは七時に起きます+课件-【知识精讲+拓展提升】高中日语新版标准日本语初级上册
评论
0/150
提交评论