【《“养老服务助手”微信小程序的设计与实现》7600字】_第1页
【《“养老服务助手”微信小程序的设计与实现》7600字】_第2页
【《“养老服务助手”微信小程序的设计与实现》7600字】_第3页
【《“养老服务助手”微信小程序的设计与实现》7600字】_第4页
【《“养老服务助手”微信小程序的设计与实现》7600字】_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

“养老服务助手”微信小程序的设计与实现目录TOC\o"1-3"\h\u摘要 11绪论 21.1设计背景和意义 21.2本文结构 22相关技术 32.1JavaScript介绍 32.2Pycharm介绍 32.3MySQL关系型数据库 32.4Ajax异步请求技术简介 42.5微信开发者工具简介 42.6B/S架构 43系统需求分析 53.1系统功能需求 53.2系统用例分析 54系统设计 64.1系统流程设计 64.1.1系统开发流程 64.1.2用户登录流程 64.1.3预约养老服务项目流程图 74.1.4后台操作流程 74.2系统数据库设计 84.2.1数据库信息设计 84.2.2数据库表设计 105系统实现 125.1管理员功能模块的实现 125.1.1管理员后台管理主界面 125.1.2管理员数据表界面 135.2老人用户功能模块的实现 145.2.1用户登录界面 145.2.2首页界面 155.2.3预约界面 166系统测试 206.1测试意义 206.2测试方法和结果 206.2.1预约功能测试、 206.2.2社区交流和提交反馈功能测试 206.2.3后台管理系统登录功能测试 21结束语 22参考文献 22摘要:自2000年迈入老龄化社会以后,我国人口老龄化的程度持续加深,在国内老龄化愈发严重的情况下,我国的养老行业拥有着广大的发展前景。本程序使用B/S架构,以微信小程序开发者工具作为前端开发的编译器,后台采用RBAC权限系统,使用Pychram与微信开发者工具完成养老服务助手微信小程序的开发。本系统实现了预约养老服务项目、订单管理、话题社区等功能,既能够解决老人们在日常生活遇到的不便,又可以满足老人们的精神需求,提升了养老服务质量。关键词:微信小程序;养老服务;老龄化1绪论1.1设计背景和意义在过去的几十年中,中国经历了生育力下降和寿命延长的两个人口统计指标,表明中国正在成为一个老龄化社会。截至2017年底,我国60岁以上老年人口有2.41亿人,占总人口的17.3%[1]。中国老龄化展现了前所未有的速度和趋势。随之而来的,是当代年轻人的养老压力越来越大,老人们的养老生活质量却没有明显的提高。这是国内现有养老服务体系发展的不足,却也是机遇。标准的养老服务体系依据服务主要提供主体可分为家庭养老服务体系,社区养老服务体系和社会养老服务体系;依据老年人生活居住形式可分为居家养老服务和机构养老服务[2]。就当前来看,中国现有的养老模式主要分为机构养老、医养结合机构、居家养老、居家养老与社会服务相结合以及居家养老和社区服务相结合这五种养老模式。目前国内的养老政策问题虽然得到了重视,但与市场并未很好的衔接。距离实现智慧养老全覆盖还遥遥无期,难以满足日益增长的养老保障需求。之所以形成现在这种供不应求的局面,一方面是因为国内养老产业的发展程度不高,而另一方面则是消费者和养老产业之间没有建立起一个高效的沟通渠道。随着移动互联网的发展,互联网背景下的“智慧养老”以移动互联网等信息技术为依托,整合了社区、居家、机构养老模式,可以使老人克服空间和时间的限制获得优质的养老服务,有利于传统养老行业的升级[3]。选择开发微信小程序,是因为微信小程序相对于App而言操作简单,界面简洁,降低了使用的难度,更适用于智慧养老主要的消费者—中老年人群,便于用户使用;微信小程序比该系统的移动客户端应用程序具有更低的成本和更快的开发优势,并且与下一代移动互联网行业的发展趋势相近,具有更广阔的市场前景[4] 。本系统基于B/S架构模式,后端基于RBAC权限模式,搭建了管理数据的后台管理系统。在充分分析了老人群体日常生活需求的基础上,通过网站与数据库的结合开发出一个适合老年群体使用的养老服务助手的微信小程序,可以满足老人群体在物质上和精神上的大部分需求。在这样一个前景广阔的领域,做一款养老服务助手微信小程序,不仅能够满足市场需求,更有利于国内智慧养老行业的发展。1.2本文结构本论文包含了七个部分,分别是绪论、相关技术、系统需求分析、系统设计、系统实现、系统测试和结束语,最后附带参考文献和致谢。第一部分的绪论内容包含设计背景和意义、本文结构;第二部分的相关技术内容包含JavaScript介绍、Pycharm介绍、Mysql关系型数据库、Ajax异步请求技术、微信开发者工具简介和B/S架构;第三部分的系统需求分析内容包含系统功能需求和系统用例分析;第四部分的系统设计内容包含系统开发流程设计和系统数据库设计;第五部分的系统实现内容包含管理员功能模块实现,老人用户功能模块实现和系统核心代码;第六部分的系统测试内容包含测试意义与测试方法和结果;第七部分是结束语;最后是参考文献和致谢。2相关技术2.1JavaScript介绍JavaScript(JS)是一种比较轻巧的解释性编程语言[5],并且可以实时刷新当前的状态,这对使用者十分友好。在它的使用中,可以对封装好的函数进行调用,JavaScript一样属于面向对象的语言,可以继承,可以多态。尽管它被称为开发网页的脚本语言,但它也用于许多非浏览器环境。当今网站时代,最流行的前端动态语言就是这个语言,它是可以让网页动起来的工具,并且也是最底层的语言,这也就意味着它执行的非常的快。但正因为它属于底层,所以当它实现一块功能大的函数时,需要编写给出多的代码,这就给程序员造成了很大的麻烦。在当今这个时代,VUE这个JS的框架已经占据了大半个中国市场,因为它几乎拥有了JS原生的所有优点还有一个双向绑定数据的特征,不用封装先取出数据再填写数据的函数,让程序更加的简便。2.2Pycharm介绍下载过Python的人都知道它有款自带的IEDE编译器,但是这款编译器敲的出代码不仅没有命令提示和缩进的自动归档,而且安装环境也非常不友好,而对于框架开发的编辑更是让人无奈。所以JetBrains就推出了一款方便强大的为Python量身定做的开发编译器,它不仅在安装依赖包以及开发代码上帮了Python很大的忙,并且为Python的框架提供了非常大的方便[6]。而安装依赖库更是简单,直接在settings里面进入依赖包界面点击加号即可安装,当使用Django开发时,我们不用每次都去调用启动命令,只要点击这款软件为我们提供的启动按钮即可开启端口访问,就可以启动Django内置的服务启动器。2.3MySQL关系型数据库MySQL数据库是一个集成于内核的多线程多进程的数据库服务器,非常适合用于网站或其他数据库应用程序的开发和数据库后台管理系统的开发。此外,越来越多的开发人员喜欢直接将关系数据库与MySQL结合使用,其应用范围也得到了扩展。它的速度快,使用方便。经过开发人员不断的努力,将MySQL封装好了自己的框架,让比较难记的数据库命令变成好记好用的命令,而数据库框架做的最突出的应该是ORM框架了,不管是连表查询,还是简单的增删改查都非常简洁,容易上手。2.4Ajax异步请求技术简介AJAX是异步JavaScript和XML的缩写。它是当用户在浏览器进行操作时,在后台进行一次请求数据,然后再将请求到的数据渲染到需要的标签上,这个强大的功能也是目前后端分离使用的前端技术。而它的出现也让双向绑定数据的VUE赶上了流行度与实用度。同步请求就是当用户点击按钮的同时请求也跟随发送出去,在这个同步的时间里网页都得停下运行,接着让同步请求到的数据渲染对应的标签,渲染完后网页再次进入运行状态,这个就好比,有十米宽的道路,但是有多少辆车都得在一条道上行驶,以至于“交通堵塞”--也就是所谓的网页卡死状态,只能等到数据渲染完后才能恢复,这个请求几乎没人用到,它虽然可以为网页的运行带来逻辑性,但是灵活性与能动性实在是太低,给用户一种不愉快的体验。异常请求则是相反,当用户点击按钮的时候,请求在后台发送接口请求,这个时候网页是继续运行的,它并不会出现卡死崩溃的状态,后台接收到接口请求判断对应的状态后进行对应的数据渲染,再利用好双向绑定数据就可以更轻松且巧妙的附上最新数据,这个过程中不会因为网络延迟、请求数据网慢或后端执行效率低下而造成网页的卡死、崩溃。这也是为什么现在的前端慢慢的从映射模板(也就是所谓的前端后不分离)变化到前后端分离,而前后端分离的好处是后台只需要写一次,前台只需要变换开发的工具即可,比如一个后台接口,其实就可以支撑起苹果、安卓、网站端的三个前台的请求,因为他们都是共用一个端口,非常的省时省力。2.5微信开发者工具简介开发人员可以使用微信开发者工具来完成小程序的创建和代码编辑,具体步骤如下:(1)在微信开发平台可以下载最新版本的微信开发者工具并安装。选择“创建项目”,填写上面获得的AppID,设置本地项目名称,这是小程序的名称,然后选择计算机的本地文件夹作为存储代码的目录。在创建过程中,如果所选本地文件夹为空文件夹,则微信开发者工具将提示是否需要创建快速启动项目。选择“是”后,微信开发者工具将生成一个简单的项目[6]。创建完一个项目后就可以开始开发微信小程序了,一些常用的接口在微信开发者工具中都可以调用,具体的调用方式可以在微信开发平台上的开发者文档中查看,这也是微信小程序的开发效率较高的原因之一。2.6B/S架构B/S结构主要是有3层的层次分明的结构,第一层是数据层,所有数据都会在这一层进行数据的封装。第二层是控制逻辑层,由程序控制数据传输的方向,比如向服务器请求对应的接口数据。第三层就是视图层,也就是用户所浏览的前端,展示一个视图给用户,让用户有更好的使用体验。这三层都是互相独立的,这样维护起来也方便,使用也安全,其中一层出了问题不会接二连三的影响到其他两层。这样的设计能够有效的提高数据交互的效率。3系统需求分析3.1系统功能需求本养老服务助手微信小程序包含老人和管理员两类用户。系统功能结构图如图3-1所示。图3-1系统功能结构图3.2系统用例分析系统用例如图3-2所示。图3-2系统用例分析图系统主要用例分析:用例名称:微信账号登陆执行者:老人用例说明:使用微信账号登录养老服务助手微信小程序前置条件:老人打开养老服务微信小程序并切换到个人中心页面基本事件流:老人点击登录按钮 异常事件流:如果是第一次授权登录,在数据库中添加用户信息。 后置条件:显示微信用户字样,登录成功用例名称:预约养老服务

执行者:老人用例说明:老人通过填写预约信息并提交预约养老服务前置条件:老人打开养老服务助手微信小程序完成登录并切换到预约界面基本事件流:老人填写基本信息与预约信息后,点击提交按钮异常事件流:如果预约信息的填写不符合输入标准,则无法提交后置事件:预约信息录入对应的数据库,显示预约成功用例名称;交流信息管理执行者:管理员用例说明:管理员在后台系统中对社区交流信息进行管理前置条件:管理员通过账号密码成功登录到后台管理系统基本事件流:管理员点击交流列表模块,并对交流信息进行管理异常事件流:无后置事件:管理员对交流信息的操作保存到对应的数据库4系统设计4.1系统流程设计4.1.1系统开发流程 本系统在开发之前,先对市场进行调研,分析功能需求,设计系统总体的架构,确定具体要实现的功能并设计对应的数据库,将需要的数据都存储在数据库中;前期的准备工作完成以后,正式开始养老服务助手微信小程序的开发;开发完成后,还要对系统进行测试,如检测接口是否有问题,前端微信小程序界面是否正常显示以及系统功能是否完全实现。具体流程如图4-1所示。图4-1系统开发流程图4.1.2用户登录流程在使用微信账号登录微信小程序时,需要请求微信官方的请求接口进行授权,获取到对应的用户信息,具体流程图如图4-2所示。图4-2登录流程图4.1.3预约养老服务项目流程图老人用户登录后在预约界面填写姓名,手机号,地址,预约时间以及选择服务项目的类型,提交后可以预约养老服务项目。具体流程如图4-3所示。图4-3预约流程图4.1.4后台操作流程管理员用户打开后台管理系统登录界面后,输入用户名和密码登录到后台管理系统,在后台管理系统中可以管理用户信息和其他数据。具体操作流程如图4-4所示。 图4-4后台操作流程图4.2系统数据库设计系统动态数据需要控制,数据库是必不可少的,所以设计数据库是非常重要的,它会决定程序以后的扩展性,如果系统需要扩大那么需要继续添加数据表。4.2.1数据库信息设计E-R图用于说明实体之间的关系,本系统主要的数据库实体和对应的基本属性如图4-5所示。图4-5数据库主要实体E-R图4.2.2数据库表设计根据上述E-R图的设计,画出主要的数据库表:

(1)微信用户信息数据库表设计如表4-1所示。表4-1微信用户信息表描述字段名类型是否主键主键idintY姓名namevarcharN登录地址provincevarcharN登录时间timedatetimeN用户标识openidvarcharN(2)管理员用户数据库表设计如表4-2所示。表4-2管理员用户表描述字段名类型是否主键主键idintY密码passwordvarcharN上次登录时间provincevarcharN超级用户身份timedatetimeN名first_timevarcharN姓last_timevarcharN电子邮箱地址emailvarcharN用户名usernamevarcharN(3)预约信息数据库表设计如表4-3所示。表4-3预约数据表描述字段名类型是否主键主键idintY预约时间get_timevarcharN订单编号orderVarcharN下单时间timedatetimeN服务类型style_idintN用户IDuser_idintN地址addressvarcharN姓名namevarcharN电话号码phonevarcharN备注remarktextN用户权限数据库表设计如表4-4所示。表4-4权限数据表描述字段名类型是否主键主键idintY管理模块IDcontent_type_idintN权限类型codenamevarcharN功能注释NameVarcharN反馈信息数据库表设计如表4-5所示。表4-5反馈信息数据表主键idintY标题titlevarcharN反馈内容textvarcharN用户IDuser_idintN提交时间timedatetimeN交流信息数据库表设计如表4-6所示。表4-6交流信息数据表主键idintY交流内容textvarcharN用户IDuser_idintN发布时间timedatetimeN5系统实现5.1管理员功能模块的实现5.1.1管理员后台管理主界面管理员用户输入管理后台的账号跟密码后,登录到后台管理系统的首页,左侧是前台数据库的数据表模块,左侧下方是管理后台账户模块,右侧是详细的数据表分块,右侧下方记录后台管理系统所有登陆者操作记录。其界面如图5-1所示。图5-1管理员后台管理主界面部分代码如下:formodel_class,vinadmin.site._registry.items(): print(model_class)//打印的是每一个类<class'app01.models.UserInfo'> cls_name=model__class._meta.model_name//当前类名称的小写 app_name=model_class._meta.app__label//当前app的名称 val=url(r'^{0}/{1}/$'.format(app_name,cls_name),login,name="login") url_list.append(val)urlpatterns=[ url(r'^admin/',admin.site.urls), //admin.site这个对象里面有一个属性__registry={} //点击urls返回的是一个元组,元组的第一个元素是一个列表 url(r'^index/',([ url(r'^app01/userinfo/$',login,name="login"), url(r'^app01/roles/$',login,name="login"), ],None,None)),5.1.2管理员数据表界面该界面可以查看对应模块的信息,数据都可以在该模块中查看,编辑、删除、导出。其界面如图5-2所示。图5-2管理员数据表界面部分代码如下:articles=modelsGo.objects.all().order._by('id')//获取数据pg=PageNumberPagination()//执行分页函数pg.max_page_size=200//设置最大数据量pg.page_size_query_param="size"//设置最大数据量的参数pager_roles=pg.paginate_queryset(queryset=articles,request=request,view=self)//在数据库中获取分页的数据ser=PagerSerialiser(instance=pager_roles,many=True)//对分页数据进行序列化data["data"]=ser.data//返回数据5.2老人用户功能模块的实现5.2.1用户登录界面该界面为老人用户登录界面,可以通过微信账号完成注册登录。其界面如图5-3所示。图5-3用户登录界面部分代码如下:uni.getUserInfo({ provider.''weixin', success:functioninfoRes){ //console.log(infoRes) //赋值名称 _this.nickName=infoRes.userInfo.nickName;//昵称 _this.avatarUrl=infoRes.userInfo.avatarUrl:头像 _this.login_mark=true try{ uni.setStorageSyne(isCanUse'.false);//记录是否第一次授权false表示不是第一次授权 _this.updateUserInfoO; }catch(e){}; //获取用户ID uni.login({ provider:'weixin', success:function(res){ if(res.code){ //请求后台 uni.request({ url:'http://localhost:8000/api/wx/login', method:"POST", header:{ 'content-type':'application/x-www-form-urlencoded' }, data:{ code:res.code. name:infoRes.userInfo.nickName, head:infoRes.userInfo.avatarUrl, city:infoRes.userInfo.city, province:infoRes..userIvince, },5.2.2预约界面用户可以填写信息预约养老服务项目。其界面如图5-4所示。图5-4预约界面部分代码如下:前台请求代码:<script> exportdefault{ data(){ return{ name:"", phone:"", address:"", price:"", remark:"", time:'请选择预约时间', date:"请选择预约日期", picker:['跑腿代买','入户助餐','清洗衣物','上门理发','床上擦浴','陪同就诊',], index:-1, } },//发布 methods:{ release_task(){ uni.request({ url:'http://localhost:8000/api/task/release', method:"POST", header:{ 'content-type':'application/x-www-form-urlencoded' }, data:{ user_openid:uni.getStorageSync('user_openid'), name:, phone:this.phone, address:this.address, price:this.price, remark:this.remark, get_time:this.date+"-"+this.time, style:this.index, }, success:(ret)=>{ //console.log(ret) if(ret.data.code==200){ this.$refs.uToast.show({ title:'发布成功', type:'success', }) ="" this.phone="" this.address="" this.price="" this.remark="" this.date="请选择预约时间" this.time="请选择预约日期" } if(ret.data.code==444){ this.$refs.uToast.show({ title:'您还未登录', type:'error', url:'pages/mine/mine', isTab:true }) }; }, fail:(data,code)=>{ console.log('fail'+JSON.stringify(data)); }, }) }, //服务项目类型选择 PickerChange(e){ this.index=e.detail.value }, //时间 TimeChange(e){ this.time=e.detail.value }, //日期 DateChange(e){ this.date=e.detail.value }, } }</script>后端接口代码:importdatetimeimporttimeimporttracebackfromdjango.httpimportJsonResponsefromrest_framework.viewsimportAPIView//视图模块导入fromdatabaseimportmodels//数据表导入fromdjango.confimportsettingsclassListSubmit(APIView):defpost(self,request,*args,**kwargs):message={}try://用户IDuser_openid=request.data.get("user_openid")try:user_id=models.WxUserInfo.objects.get(openId=user_openid).pkexcept:message['code']=444returnJsonResponse(message)#其他字段参数name=request.data.get("name")phone=request.data.get("phone")address=request.data.get("address")price=request.data.get("price")remark=request.data.get("remark")style_id=int(request.data.get("style"))+1get_time=request.data.get("get_time")order=str(datetime.datetime.fromtimestamp(time.time())).replace("-","").replace("","").replace(":","").replace(".","")models.List.objects.create(user_id=user_id,name=name,phone=phone,price=price,address=address,style_id=style_id,get_time=get_time,order=order,remark=remark)message['code']=200returnJsonResponse(message)except:print(traceback.print_exc())message['code']=400returnJsonResponse(message)deftype(self,style):dict_f={"跑腿代买":1,"入户助餐":2,"清洗衣物":3,"上门理发":4,"床上擦浴":5,"陪同就诊":6}res=dict_f[style]returnres6系统测试6.1测试意义系统测试是开发一个完整程序设计的最后一个步骤,测试程序的功能是否达到了预期效果,是否可以带给用户良好的使用体验。如果系统没有满足用户的主要需求或者功能没有达到预期效果,更方便发现系统存在的不足,为提升系统的效率和质量开辟思路,更有利于减少或避免系统错误的发生。6.2测试方法和结果测试系统的主要功能是否能够正常运行,查看数据是否正常传输。6.2.1预约功能测试、在预约界面分别填写符合输入标准的预约信息和不符合输入标准的预约信息(如在预估时长栏输入乱码),观察输出结果,测试结果如表6-1所示。表6-1预约功能测试表输入/动作期望的输出/响应实际输出/响应填写标准预约信息并提交预约成功并可以在我的预约中查询预约成功并可以在我的预约中查询填写不符合标准的预约信息并提交无法提交无法提交6.2.2社区交流和提交反馈功能测试使用微信账号登录小程序,并测试社区交流功能和提交反馈功能的实际运行效果。测试结果如表6-2所示。表6-2社区交流与提交反馈功能测试表输入/动作期望的输出/响应实际输出/响应点击发布按钮,输入交流内容并确认提交显示编辑页面,点击确认提交后发布成功显示编辑页面,点击确认提交后发布成功点击提交按钮,输入标题和反馈内容后提交显示“提交成功,感谢你的反馈”显示“提交成功,感谢你的反馈”6.2.3

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论