基于微信小程序的校园导览系统的设计与实现

校园导览紧贴校园生活,已有诸多高校人员对其开展应用研究。但现有校园导览模式仍然存在以下问题:一方面,校内活动人员尚不能高效便捷地主动获取导览信息,信息单一;另一方面,高校管理上没有对应的导览管理渠道,存在管理成本高,管理效率低下,导览信息滞后等问题。针对校园导览目前存在的弊端,本论文详细阐述了基于微信小程序的校园导览系统的设计思路、实现过程和测试方法结合校园实际需求分析,借助独特场景理念的微信小程序,本课题将系统共分为微信小程序用户端和管理人员管理端,旨在提供更为轻便和优质的校园导览服务,让用户通过导览小程序主动方便地获取校园地点信息、进行路线导航;让管理人员通过管理平台进行校园导览相关服务管理。基于微信小程序的校园导览系统,开发架构采用MVC三层模型,降低了代码耦合度。小程序端以微信小程序为访问入口,采用MINA开发框架实现;管理端以浏览器为访问入口,采用SSM开发框架实现后台逻辑,采用My SQL对系统数据进行管理与存储,采用Bootstrap完成用户交互页面的开发,结合j Query技术和Ajax技术实现访问页面无刷新操作,采用JSON格式进行使用端与服务器之间的数据传输,嵌入地图API,实现两个用户端的各项操作。系统经过测试和评估,证实系统运行平稳,可投入使用。本文基于微信小程序轻量应用优势,研究了一种更为便捷的校园导览方式,功能实现和测试均符合预期,提高了导览的识别性,降低了需要使用人工导览、智能硬件导览的成本,能够协助相关人群了解校园;提供了使用端和管理端的对话途径,弱化了导览信息的滞后性;提供了导览管理平台,优化了校园管理结构,对于校园形象的推广也颇有裨益。

一、引言

1.1研究背景及意义

近几年来,在“共建、调整、合并、联合”的方针指导下,高校校园的新建、扩建、改建、合并应运而生并如火如荼得进行着,将高校校园建设推向了新的高潮(李晓慧,2017)。我国高考人数的逐年增加,促使高校校园逐渐扩建,另外,高校丰富多彩的活动使得高校与国内外的校际交流人数和机会也在不断增多,因而长期活跃在高校校内的人员越来越多,校园内部的设施和服务的品质提升已不容忽视。导览,即导航加浏览。现在高校的导览模式还是以传统导览为主,方式包括张贴标语、立指示牌,对于新生和参观人员等初次进入校园的人员,均需经过问路、看地图或者指示牌等一系列繁琐流程后才能到达目的地。这种方式不仅耗费人力物力,更很有可能因为缺少对高校的了解,几经周折仍旧无法达到目的地,从而会降低高校在社会人员心中的整体印象,影响学生择校。另外,定期更新和维护导览标识牌也需要消耗一笔不小的费用。现在,一些高校也在逐步普及通过基于web端和移动端的导览方式,这种方式基于网络查询,具有实时性与主动性,但也缺乏实际便捷效果,相关人群需要先下载应用或者登陆校园内网才能获取信息,开发成本高,下载安装占据移动端内存过大,这些方式在低频、非刚需的应用场景中均非最佳选择。因此,为方便校内师生的出行,促进校园形象的提升,深化高校管理服务水平建设,开发一套集便捷查询校园信息、自动定位导航服务、校园管理为一体的系统很有必要。针对高校校园潜在的特殊应用场景和高校用户使用微信客户端高频次的特点,本文提出的基于微信小程序的校园导览系统,接入了地图API,依托微信小程序的用完即走的开发理念,满足新生和参观人员进入校园后快速了校园陌生环境的需求,提供管理人员对相关信息进行管理的平台,操作简单极具实用性,为高校及相关人群带来便利。

1.2国内外研究现状

传统的导览方式以人工更新和维护为主,在提供导览服务的区域内,树立指示牌,信息化程度较低,获取信息的方式还处于被动式获取的阶段,缺乏互动性,不仅是时间、人力上的耗费,服务质量也难以保证,远不能够满足日常的导览需求。在国内外,导览系统的开发技术已经趋于成熟,导览终端形式多样,部分已经投入商用。这些导览系统大部分采用基于物联网技术,采用GPS技术的定位方式,也有采用红外线定位、蓝牙定位以及RFID定位的(卢伟琳,2012)。另外,随着智能终端的大规模普及,4G甚至是5G时代的到来,让移动端的应用开发将成为持续的发展趋势,使得导览系统在移动端的发展成为了可能。借助于定位、地图API的技术支撑,国内外的学者们在关于校园导览方面的研究上做了大量的工作。基于Android平台的校园导览软件设计,针对Android操作系统,以上海海事大学临港校区校园为例,在校园内部通过Wfii方式接入互联网,通过Google maps提供的数据实现电子地图的功能,实现了自我定位、位置查找、路径查询、对学校主要设施的介绍功能等功能(沈文瑞,曾连荪,杨臻,2012)。该软件基于Android平台,需要下载安装,占用手机内存,据现在的技术发展趋势已经不是校园导览最好的解决方式。基于无线网络的校园个人化行动导览系统的设计与实现,针对中山大学校园导览方式的弊端,搭建了中山大学校园个人无线行动导览平台,开发了面向上网本、平板电脑、移动智能手机的web程序,同时开发了基于Android和Apple i OS的客户端应用程序,对用户提供地图浏览定位、中大校园资讯查询与导航、路径导引等功能(何海洋,2012)。该系统实现了基本预期功能,但没有考虑校园管理和维护的需要。基于百度地图API的校园综合信息服务系统的设计与实现,以云南师范大学呈贡校区空间信息为基础数据,利用百度地图API,结合ASP.NET、Ajax、数据库等技术,采用B/S架构,实现了校园信息查询、校园全景图展示、校园生活服务及校园路径导航等功能(潘安宁,杨昆,2016)。该系统采用B/S方式可以实现跨平台,客户端零维护,但是个性能力低、响应速度慢是B/S方式的普遍劣势。基于微信公众平台的校园智能导游系统设计,完成了校园讲解和介绍、当前位置、指定路线以及其他周边服务信息的设计,实现了访客动态实时的校园自助导游导览过程(田忠,江梨,杨建华等,2017)。系统基于微信接口实现跨系统操作,利用微信分享到群、朋友圈的信息传递性,实现了校园宣传。这种设计紧跟应用发展趋势,但依然没有考虑到校园管理的需要。基于移动物联网的校园导览软件的设计与实现,基于安卓平台,使用第三方导航SDK实现校园导航定位功能。但在实现过程中,笔者直接借助Bmob云建立数据库表格,调用Bmob的API直接实现了数据的增删改查和文件的上传与下载,并未自己搭建后台,尽管具有很多局限性,依然给以后的开发人员提供了设计方案思路(戴维,2017)。根据目前国内外校园导览的研究现状,可以总结出有以下存在的问题:首先现有校园导览模式为单向被动式;其次,基于安卓或者PC端的导览访问流程比较繁琐,硬件导览设施不利于维护,耗费人力物力;最后,信息管理没有统一规范的平台,不能良好提升校园形象,更不能促进智慧校园的建设。由此可见,目前,解决这些普遍性的问题是本系统在设计和实现的过程中所面临的挑战。
1.3主要研究内容

本文针对现有问题,结合在校用户的使用特点,运用前后端开发技术,设计并实现一套基于微信小程序的校园导览系统,旨在为在校用户带来便捷高效的导览体验,为校园管理发展提供便利,满足现代智慧校园理念。本系统预期功能包括:让用户通过导览小程序主动、方便地获取校园和地点信息,在校园内部进行自动定位,以本位置为起始点、选择想要去的地点为目的点进行路线导航,可以发表用户反馈向管理端的管理人员反映小程序需要改进的地方;让管理人员通过管理平台进行地点类别管理、校园地点管理、角色管理、用户管理、反馈管理;通过这些与校园导览服务相关的管理,更能优化校园管理结构,为在校用户和游览人员提供更为优质的出行体验。本文首先在需求层面对本系统进行了分析,分析得出系统应包含管理端、小程序端两种使用用户群体,根据不同使用需求,将系统共分为管理端和小程序端。在进行系统整体设计后,针对不同的用户端,分别对其重点功能模块进行了具体设计,配置搭建云服务器,申请域名,实现小程序端和服务器之间的通信,借助较为流行的SSM开发框架、小程序MINA开发框架、以及较为成熟的前端开发技术等实现预期功能,并与现有导览模式进行了设计方案上的对比分析,然后对系统进行测试和性能评估。

二、系统关键技术介绍

2.1微信小程序
2.1.1微信小程序优势

微信“小程序”是依托微信平台开发的应用程序,与其他应用程序大不相同。用户安装原生态应用软件需要安装较大的APP文件,而目前微信用户拥有多种小程序入口方式,比如:微信搜索栏搜索、扫二维码、附近小程序、分享小程序等,用户进入小程序后直接进行交互行为,非常方便和快捷,用完即可退出,也无需卸载,不用担心应用安装过多,体现了“无需安装,用完即走”的理念。开发者无需考虑软件的兼容性,所编程序可运行在i OS、Android不同平台。针对下载大量APP导致手机硬件存储空间占用过高、APP使用繁琐、界面难趋一致等问题,微信小程序凭借轻量不占内存、界面基本一致的优势,降低了这两个问题的难度,已经在低频非刚需的一些小众应用开发上取得了一席之地,并且还给一些高频的生活应用场景提供了一些新的选择,促进互联网时代的发展和进步。基于微信小程序的校园导览系统,非常贴合校园导览这类低频、非刚需的应用场景。用户无需安装,通过扫一扫、搜一搜、或者聊天分享就能获得入口,在高校群体中普及面大,使用高效便捷,能有效缓解使用者移动端的CPU占用过高的问题。

2.1.2小程序MINA开发框架

小程序MINA开发框架是微信提供的作为开发微信小程序的专属开发框架。该框架可以说是MVC三层架构框架的延伸应用,因为它不仅拥有视图层,还提供了逻辑层框架,并在这两个层级之间提供了数据传输和事件系统,让开发者聚焦于数据与业务逻辑上。MINA。视图层和逻辑层相互作用,视图层进行数据和响应结果的页面渲染,并向逻辑层发送用户事件,逻辑层接受并处理视图层发送过来的请求后,返回结果给视图层。视图层由.wxml文件和.wxss文件构成,wxml文件负责集合基础组件、数据绑定渲染、事件响应,并引入.wxss文件中的页面样式表来描述和构建出页面结构。逻辑层的功能集中由.js文件实现,相较于传统Java Script增加了App方法和Page方法。App方法在小程序主体部分,在整个小程序内有且仅有一个,用于注册小程序并指定小程序的生命周期函数。Page方法存在于每个page的js文件中,用于注册页面,每个页面有且仅有一个,指定页面的初始数据,并通过每一个方法对应控制页面,如可通过on Load方法监听页面加载,通过on Show方法监听页面显示,通过on Ready方法监听页面初次渲染完成等。系统层负责数据的临时存储、数据缓存、网络请求等。page中可以在逻辑层和视图层之间传输临时缓存数据,通过使用set Data和get Data方法。小程序与后端服务器交互使用安全超文本传输协议(Hyper Text Transport Protocol Server,HTTPS),并且前后端数据传输时使用JSON,小程序使用wx.request发起网络请求,设定请求地址url、请求参数data、请求方法method等,返回请求结果。小程序由一个app和多个pages页面组成。app为主体部分,且必须放在根目录,包含app.js、app.json、app.wxss三个文件,开发者可以在其中对应设置公共逻辑、全局配置、全局样式表。每一个page页面均由四个文件构成,后缀
为.js、.wxml、.json、.wxss,分别对应页面的逻辑、结构、配置和样式表。.js文件和.wxml文件必须存在,否则无法构成一个页面。

2.1.3微信小程序开发流程

(1)申请App ID,成为开发者使用浏览器打开https://mp.weixin.qq.com/点击立即注册,按照指示填写小程序的相关信息,即可完成注册获取App ID。(2)下载安装开发者工具在小程序官方开发文档找到下载地址,根据自己的操作系统下载对应的安装包,双击安装。小程序开发工具在Windows上支持Windows7及以上版,在Mac上支持OSX10.8及以上版本。(3)创建项目运行开发者工具,使用开发者微信扫码登录,新创建小程序项目,按照界面提示依次填写项目名称,选择项目文件在本地的存储路径,填写小程序App ID,选择开发模式和后端服务,点击新建按钮,完成项目的创建。创建后,会看到微信给提供初学者学习建立的Demo项目。(4)创建页面,编写代码一个小程序项目主体是app文件,页面由pages创建。根目录下主要有app.js、app.json、app.wxss三个文件,是用来描述项目整体的全局文件。在pages目录下创建每一个小程序页面,页面下都会自动生成.js、.wxml、.wxss、.json四个初始文件。创建页面的路径必须在app.json文件中配置,配置后可以在pages目录下看到生成的文件夹,展开可以看到对应四个文件,否则预览将无法看到。(5)编译预览编译代码,点击预览或者真机调试生成临时二维码,使用微信扫描,即可看到编写的小程序在自己手机端上的效果展现。

2.2 Bootstrap介绍

Bootstrap是一个用于快速开发web应用程序和网站的前端框架,基于HTML、CSS、Java Script三种前端页面开发语言,简洁灵活可扩展,是目前最为流行的前端开发框架。开发者可以基于Bootstrap自行设定元素及样式,使用其提供的多种组件和插件,修改其提供的预定义类,根据系统需求开发页面,大大提高开发效率。

2.3 SSM框架

SSM(Spring+Spring MVC+My Batis)框架集由Spring、Spring MVC、My Batis三个开源框架整合而成,Spring掌管整个应用中所有Bean生命周期行为;Spring MVC主要负责展示页面,接收并通过Controller层转发用户的请求,并作出应答;My Batis负责持久化数据,通过Dao层封装数据库中各个表的增、删、改、查等基本交互功能。

  1. Spring
    Spring是一个开源的轻量级Java EE开发框架,其核心是Io C(Inversion ofControl,控制反转)和AOP(Aspect Oriented Program,面向切面编程)。与其它单层框架不同,Spring提供的是一个整体式的、并且可以将单层框架集成在一起的连贯体系。Io C使程序组件或类之间以松耦合的结构存在,Io C容器控制创建实例,从设置好的配置文件中读取Java Bean的定义信息后创建实例对象,并注入其依赖的属性,从而管理Bean的整个生命周期。AOP是一种思想,所有符合其思想的技术都能看做是AOP的具体实现。切面实际上是一段从不同的功能模块中提取出的交叉业务逻辑代码,封装之后成为一个切面,充分利用代码的重用,省去不必要的开发工作,再将其注入到具体业务逻辑。Spring框架有七个核心模块,这七个核心模块既能独立存在又能相互配合实现。下面重点介绍三个核心模块:(1)Spring Core模块:是整个Spring的核心。Spring的所有功能均依赖于该库。该库提供Io C需要的Bean Factory组件,将代码之间的耦合度降低,实现了设计模式中的工厂模式,使项目的实现更加灵活。(2)Spring Dao模块:是Spring框架操作数据库的模块。提供对于JDBC(Java Data Base Connectivity)的支持,面向Dao的统一异常体系,方便开发者定位代码错误。对于数据持久层的不同体系都能处理异常信息,让用户能够自主选择数据持久层的框架,不必担心异常体系不兼容的问题。(3)Spring Context模块:提供核心配置文件,为Spring框架提供上下文信息;提供Bean访问方式,其它程序可以通过Context访问Bean资源。
  2. Spring MVC

Spring MVC基于Spring框架,是十分典型的MVC框架。MVC,其全称是Model、view、controller,即模型、视图、控制器(宦臣,2012)。这种分层架构思想旨在分离业务逻辑、页面展现、数据模型,有效降低代码程序之间的耦合度。Spring MVC有很多组件。Dispatcher Servlet是整个流程控制的中心,用于接收请求,响应结果。Handler Mapping根据用户请求的url去查找处理器,查找依据一般是项目的配置文件或者代码中表明的注解。Handler是通常所说Controller。Handler Adapter用于按照特定规则(Handler Adapter要求的规则)去执行Handler。View Resolver负责将处理结果生成View视图,首先根据逻辑视图名解析成具体的页面地址,再生成View视图对象,最后对View进行渲染将处理结果通过页面展示给用户。

  1. My Batis
    My Batis是一个数据持久层框架,支持定制化SQL、存储过程以及高级映射。My Batis支持对JDBC封装,使用配置文件来映射数据库原生信息,将接口和Java的POJOs(Plain Ordinary Java Objects,即普通Java对象)映射成数据库中的记录。本系统通过框架提供的映射标签实现了实例对象与数据库字段之间的关系映射,运用My Batis
    框架使sql语句独立于逻辑程序代码之外,将sql语句集中写在mapper.xml文件中,统一管理,简化设计,利于后期维护。2.4 Ajax技术Ajax(Asynchronous Java Script and XML步Java Script和XML),不是编程语言,是一种用于创建更好更快交互性的web动态网页技术。传统网页没有使用Ajax技术,而在更新页面内容和数据时必须重新加载整个页面,这不仅消耗网络带宽,还使网页响应时间过长。采用Ajax技术的网页,浏览器可通过JS的XMLHttp Request对象与服务器直接通信,发送异步请求,从而克服传统网页存在的缺陷,减少请求信息。Ajax最常用的语法$.ajax({name:value, name:value, … }),参数规定了Ajax请求的一个或多个名称/值对,参数中一般涉及到发送请求的url、请求的类型等。本文中页面用过Ajax技术访问服务器后台数据库,采用JSON格式传输Ajax中的数据,页面与后台进行数据交换的过程为局部更新,从而实现无刷新页面的访问效果,提升用户体验。

2.5 Maven简介

Maven是一个在web项目开发中使用尤为广泛的项目管理和整合工具。它基于POM(Project Object Model,项目对象模型)为项目服务,核心文件为pom.xml,用于管理整个项目的生命周期(汪佳佳,2018)。开发者可直接创建Maven项目,使项目结构规范化清晰化,提高了代码的可读性,实现高度自动化构建、配置、发布,实现对jar包的统一管理,提高开发效率。

三、系统可行性与需求分析

3.1系统可行性分析

可行性研究处于项目实施的最开端。在实际项目开发的过程中,会遇到诸如技术、经费、用户体验等问题直接或间接使整个系统腰斩,或者在运营过程中使得项目无法继续维持维护。在问题出现之前,对系统各个层面进行科学有效的深度剖析,能够有效的提前解决和规避问题,使人力、物力的损失消耗降低为零。系统的可行性至少需从下面这三个方面分析:

(1)技术可行性

技术可行性是指采用所选的技术是否能顺利实现预期系统。本系统从实际需求出发进行系统设计,十分符合高校内部实际应用场景。系统的小程序用户端采用小程序MINA开发框架开发,开发工具运用微信团队提供的开发者工具,主
要使用Java Script和CSS开发语言。管理端开发主要在Intelli J IDEA工具平台上,使用Java为主要编程语言,结合SSM
框架,沿用MVC开发思想,使表示层、控制层、数据层的程序代码进行分层管理,实现松耦合,部署Tomcat运行项目,Maven进行项目管理。本系统所采用的技术和开发工具均较为可靠成熟,具有技术可行性。

(2)经济可行性

经济可行性是指系统的开发成本是否低于它存在的社会价值和收益。本系统在开发后,能够方便师生和参观人员了解校园环境,优化校园管理结构,在对其进行二次开发时,不仅能对接高校的现有管理系统,更能加入周边的吃、穿、住、行介绍模块,扩大高校圈的影响力。而本系统开发采用的框架都是开源的,不存在购买内容,并且在前期开发时可以在本地进行大部分的开发工作,只是在系统线上测试和以后运行维护时,需要在申请阿里云搭建服务器时向阿里云交纳少量的费用。由此可见,本系统实现后的社会价值远远大于其开发成本,因此本系统具有经济可行性。

(3)操作可行性

操作可行性是指用户操作流程是否流畅、界面的功能逻辑是否合理、用户体验是否良好。据2018年统计,微信活跃用户数在全球已达10亿。借助微信的发展趋势,小程序也广为人知,在2017年至2018年,小程序用户数亦处于稳升之势,市面上适用不同场景、具有不同功能的小程序层出不穷,用户对于小程序的使用早已熟知。本系统开发的微信小程序页面与市场上主流APP风格类似,但比APP页面更为简洁,操作流程更为简单,符合小程序的开发风格,入口方式多种,只需要手机安装了微信,直接搜索或者扫一扫即可。对于管理端,与高校内部已有的管理平台普遍类似,功能模块清晰,操作简单易上手。因而,本系统具备操作可行性。


3.2
系统需求分析

需求分析指客观分析用户和市场上的实际需求,必须在系统设计之前展开,它是设计并实现一个系统的起点。需求分析结果对后期开发至关重要,将会影响系统的合理性和实用性。本小节的主要内容以本系统解决的问题为中心进行分析,确定系统的使用范围、主要面向用户、主要功能、以及预留功能接口。本系统旨为在校师生、游客等相关人群提供一款校园导览微信小程序,方便其能够主动地获取学校相关信息,进行路线导航,同时为学校管理人员提供校园导览管理端,方便管理高校导览服务的相关信息。下面从系统的功能性和非功能性两类需求进行展开阐述。

3.2.1系统功能需求分析

通过对实际应用场景的体验和分析,结合国内外学者对于导览系统的研究和开发,最终确定了本文设计的系统的目标用户角色主要有两类,一类是小程序端用户即诸如在校师生这一类相关人群,另一类是管理端用户即诸如校园管理这一类管理者。之后的设计和开发过程均根据这两类人员的具体现实需求展开。

3.2.2系统非功能需求分析

非功能需求是衡量一个产品的用户体验好坏的基础标准。与功能需求围绕系统特定行为不同,非功能性需求关注的是依照一些条件和参数来判断系统运行时的状况。本系统在开发过程中所关注的非功能性需求包含以下几点:

1.易用性需求

系统的易用性以良好的用户体验为中心,要求界面以主流UI设计为主,合乎大多数使用者的习惯。因为前端页面是用户直接与系统进行请求交互的介质,是产品用户体验的第一个影响因素。在打开首页时,用户就能找到需要操作的功能模块,并且功能设计逻辑清晰,功能明确,控件布局合理。在用户进行关键功能步骤时,有必要给予用户一些明确清晰的操作提示。与此同时,还要求页面的颜色搭配合理不刺眼,美观简洁,一般每一个产品都会遵循一个主色调,对UI设计和美学标准提出了高要求。另外,易用性还需要考虑页面是否兼容所有的设备和浏览器。本系统采用小程序作为导览信息获取角色入口,小程序与常用APP界面相似,功能区明显,在易用性方面有着较为明显的优势。

2.页面响应需求
页面响应需求是系统效率的直观体现。响应时间是从用户发出请求到收到应答刷新页面的过程,这段时间需要限制在用户可承受的范围内。页面跳转是用户进行功能操作过程中最常出现的情况,也是用户比较关注的因素,如果响应时间过长,不仅降低了用户使用的舒适度,也反映了服务器端处理用户请求的速度过于缓慢。数据交互是用户与系统进行信息交流的主要步骤,如果数据上传和获取延迟太久,除了同样会影响用户体验,还可能会导致数据丢失。本系统要求响应时间以秒为单位衡量。响应时间的快慢与网络时延、服务器的请求处理能力、前端页面加载时间因素密切相关。本项目部署在阿里云Centos服务器上,将后端逻辑服务和数据库服务部署在同一云平台上,保证了与服务器通信时的响应高效性。为节省页面加载时间,本系统最大程度地压缩合并了Java Script文件和CSS样式表。

3.可扩展性需求

系统的可扩展性是指业务需求变更、或扩展系统功能时,系统能够支持二次开发,体现的是系统拓展功能的能力,关系到系统的未来成长与应用。这种需求的实现要求项目的基础代码之间耦合性低,即在系统需要增加新功能时,不需要对项目代码结构进行重新整合,只需增加实现某个功能的接口即可。开发者能够根据以前的接口进行二次扩展,能够基于以前的系统架构做出快速响应,快速响应实现系统的新增功能需求。本系统采用三层架构,实现了程序代码之间的分离,并且对于重点模块,保证了接口设计的合理性,有预留二次开发接口。

4.安全性需求
安全性一直是开发中考虑的重中之重。本系统首先需要保证的是用户信息不被泄漏,管理员密码在数据库中采用二次加密的形式存储,防止非法登录,管理员和用户需要完成特定的某种操作之前必须通过登录接口检验是否是登录状态。其次要保证系统服务端的资源、数据库不会被外部肆意篡改,保证系统受到恶意攻击时仍运行正常。另外,还需要注意SQL注入攻击、机器频繁登录等。

5.可靠性需求
系统的可靠性是指系统在规定的时间内及规定的环境条件下,完成规定功能的能力。在一些领域,可靠性是系统服务所必须的因素,如果在使用过程中,出现多次执行失效,那么系统就必须重新维护、测试以保证用户的正常使用。本系统要求服务器一直要处于运行状态,并且管理员端和小程序端的功能实现连续7×24小时不出错。另外,在某个时间段存在单个用户请求得到错误应答时,不能影响服务器对于其他响应的应答工作。

四、系统设计

通过上一章的系统需求分析,可以了解到本导览系统的主要目的是为在校师生和学校管理人员设计并实现一种基于微信小程序的校园导览系统。系统设计是继需求分析之后又一个重大步骤,要求开发者从框架、技术、功能、界面、数据库等层面上分析考虑,下面将对本系统设计的重点部分进行阐述。

4.1系统总体设计

系统的总体设计是一套自上而下的、面向全局问题的全面总处理方案,不仅关系到系统功能是否能如期实现,还关系到是否具有可扩展性。系统的总体设计需要满足系统目标使用者的使用要求,本论文中设计实现的导览系统包括了小程序端、管理端、服务器、数据库四大部分。小程序端的主要实现由微信端承担,用户通过微信小程序与系统进行交互,获取信息、查询信息的最终处理结果全都通过微信小程序的界面显示。管理端的主要实现体现在浏览器上,管理员用户只需要通过登录管理平台就可对数据进行增删改查的操作,操作的最终处理结果也均通过管理平台进行页面展示。服务器部署在阿里云Centos 7主机上,通过购买阿里云服务器,部署环境和接口代码,它向两个使用端的用户均提供了访问接口,接收并响应它们发送过来的请求。服务器上部署数据库,存储了系统运行产生的数据信息,使服务器的响应更加高效。图片资源的存储路径以字符串形式存储于数据库中,但其文件实体存储于在web项目外。本系统根据实现的不同内容可以划分为表示层、服务层和数据层。表示层主要是实现用户直接进行数据交互的页面,显示功能模块和数据信息,接收用户输入请求,渲染服务器响应数据,要求美观简洁;服务层是实现不同操作功能的关键一层,要求代码低耦合;数据层借助基础数据库实现数据持久层,是系统的基础层,抽象出实体类型,为系统提供数据存储服务。

4.2系统通信设计

通常来说,开发web应用和APP应用一般都采用HTTP协议(Hyper TextTransfer Protocol,超文本传输协议),但因本系统在微信小程序端采用MINA开发框架,进行网络请求时要求其与后端服务器交互的协议必须为HTTPS,并且要求访问的url接口必须是域名形式不能为IP形式。因此,系统的通信采用HTTPS协议。

4.3系统功能模块设计

依照第三章对于系统功能需求的分析,校园导览系统主要包括小程序端用户功能模块和管理员功能模块。

4.3.1小程序端功能设计

通过对小程序端用户功能模块的需求分析,本系统为其提供了校园导览微信小程序。用户只需要通过微信搜索或者扫一扫功能就可进入该微信小程序入口,就可以直接获取学校地点相关信息,并进行实时定位,浏览地图,也可以按照分类的地点集中获取想要到达的地点类型,通过点击校园地点就可以查看该地点图片和文字相结合的介绍,在需要导航的时候,点击目标地点将其设置为目的地点,就能看到一条清晰的导航线路,当发现导览小程序有错误时,可以进入用户反馈界面,发表反馈。

4.3.2管理端功能设计

管理员功能模块是支持小程序端功能实现的保障,方便校园管理人员对专属导览系统进行管理。管理员可以是多个管理员用户,可以形成对管理员的管理。管理员可以对校园地点的文字介绍、图片进行编辑,可以对接入的已有地图API进行地点标注,形成本校园的专属地图。管理员可以管理地点类别,可以为一个地点类别添加新的地点,在页面上可以浏览到该地点类别的所有地点。管理员可以浏览用户信息列表。并且管理员可以浏览和删除用户反馈信息。

4.4数据库设计

数据库是以一定方式储存在一起、能与多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合(朱鹏,李行行,2014),它是系统的基础,亦是系统的关键组成部分。数据库的健壮与否直接影响了系统后续的可扩展性,因此设计数据库是在初期设计调研时最为关键的一环。在设计数据库时,需要符合数据库设计原则,需要用高瞻远瞩的眼光看到各个功能实现所隐藏的二次开发潜能,认清各个实体、以及各个实体之间的联系,并为各个实体确定涉及功能实现时的属性从而建立数据库表,为每一张表确定主键和外键,为属性确定好数据类型。数据模型的建立,是对功能需求分析的结果展现,数据库表和字段的设计是对实体抽象的结果,本论文中采用关系型数据库My SQL。My SQL是中小型网站开发的优先选择,是主流的数据库管理系统。本地开发中的数据库可视化操作软件采用Navicat,部署到服务器时采用sql文件部署。现结合需求分析结果,依据数据库设计规范,设计E-R图,最终形成本系统数据库表结构。

4.4.1数据库E-R图设计

经过上述分析可知,本论文中设计的系统用户角色共有两类,分别是小程序端用户和管理平台管理员,实现的主要功能是校园地点信息的展示和查询、自动定位、路线导航以及信息管理。E-R图也称实体-关系图(Entity Relationship Diagram),它提供了表示实体类型、属性和关系的方法,用来描述现实世界的概念模型(丁爱萍,2005)。在本节中,参考了第三章系统功能需求分析中的用例,分析出本系统涉及的实体包括有:用户、管理员、地点类别、地点、路线、反馈。