您好, 访客   登录/注册

基于Android的图书馆座位查询系统

来源:用户上传      作者:

  摘要:为了帮助读者快速寻找空位和图书馆管理员及时处理占位情况,本文介绍了基于Android的图书馆座位查询系统的开发过程。该系统运用计算机算法、人体红外感应模块、数据库等技术,实现向用户实时反映空位信息的功能,减少一定程度的占位现象,提高图书馆公共资源的智能化和使用率。
  关键词:图书馆座位管理;座位查询系统;安卓;人体感应
  0 引言
  目前使用的定位方法一般都是衛星定位。通过卫星定位的信息,能实时地告诉用户出行时的位置和道路的交通情况,很大程度上方便了用户的出行。类比这类软件,本文中的图书馆座位查询系统使用的是人体传感器定位,呈现给用户的是更精确的位置信息,方便用户掌握图书馆座位的使用情况。相信这种能结合生活不同场合和人体感应技术,并能提供精确的定位信息的软件在以后的生活需求中会有更多更好的发展方向。除了图书馆座位查询,本系统的研发也可投入到其它领域使用,为更多的人带来方便,创造更多的社会价值。
  1 系统总体设计
  系统总架构主要由三部分组成,硬件端、服务器端以及Android平台移动端。硬件端是以STM32为核心的单片机,负责数据源的信号采集并向服务器发送必要的数据,增加了人体感应模块和ESP8266的WiFi模块,单片机的开发环境主要是KeiluVision5.服务器端使用的是MyEclipse 10开发工具,和以SpringBoot+MyBatis为核心的java框架,其工作是负责对硬件端发送过来的数据进行处理并保存在MYSQL数据库中,以及向硬件端返回必要的数据,另外还会和Android移动端进行数据交互。Android开发工具则是Android Studio 3.0,其功能包括对不同区域的座位信息的查询和对用户个人信息的注册、登录、修改等。
  2 系统详细设计
  2.1 座位信息查询
  座位信息查询是整个系统中的核心功能,在Android移动端,呈现给用户的查询结果是座位的实时使用情况。在查询之前,用户要先选择某个区域或某个房间,以确定查询其中的座位信息,点击查询按钮就会开始查询。工作流程如下。
  首先在选择区域的页面中。会有三个下拉列表可以对将要选择的区域进行筛选。首先是对图书馆的选择,然后是楼层的选择。因为不同的图书馆有不同的楼层数,而且也不是每一层楼都有供读者使用的座位。所以有必要在用户选择图书馆后立即更新一下楼层数据。因此当用户选择好图书馆时,当前页面会以异步提交的方式向服务器的数据库中获取对应的楼层数,并且会立即修改选择楼层的下拉列表中的数据。区域选择页面的工作流程如图1所示。
  同样的方法。当选择好楼层之后,对应的房间号或区域名称就会显示在第三个下拉列表中,这些数据都是存在于数据库中的。在选择房间后,点击查询进入新的页面,至此,选择区域的工作就已完成。
  2.2 座位表的呈现
  在座位表页面,用户可以看到座位的使用情况。而且用户查询到信息会因为不同时间而得到不一样的结果,即座位信息能进行实时更新。如何友好的向用户呈现座位表的信息将是一个难点,因为必定涉及到Android中的绘图,还要结合从数据库中获得的座位表数据来绘图。如果从零开始实现这个页面,无疑是一个很大的工程,因此这里使用了一个类似于淘票票选座位的模板,然后对模板进行改进,从而实现比较可观的界面。
  图2是对淘票票模板改进前后的对比。红色的座位表示已经被使用,白色的座位表示是空座位,绿色的表示用户点击选中的。图中左上角部分是整个区域的缩略图,用户可以很清晰自己在浏览的区域。另外图中的座位是可以放大或缩小的,这样就不会因为座位的多少而影响用户的浏览。
  2.3应用主界面
  进入主界面时,页面上显示选择区域的页面,但其并不是主界面的全部。因为这里应用了Android的Fragment(碎片)技术,选择区域界面只是其中的一个Fragment。在Android中,一个页面就是一个Activity。而一个Fragment就是一个属于某个Activity下的子页面。本文中提到的主界面就是一个Activity,个人信息界面和选择区域页面等都是主界面下的子页面。主界面中还用了左侧向右滑打开菜单的框架,从菜单中可以切换到个人信息页面或设置页面,这两个页面都是主界面中的Fragment。使用Fragment技术的好处是可以减轻系统的内存开销,提高软件的运行速度。在主界面中结合菜单列表和Fragment技术可以实现一些频繁使用的页面之间的快速切换,提高应用的灵活性。菜单中也可选择退出,然后进入登录界面,登录界面则是另外一个Activity。
  2.4 应用的注册与登录界面
  注册页面分为两个,第一个页面输入手机号码,当前页面会对用户输入的手机号码进行严格的数据验证,如果用户输入有误的手机号码,页面会弹出相应的提示告诉用户错误信息。另外,页面还会对手机号码进行唯一性的检测,这里要连接网络访问数据库,如果检测到这个手机号码在数据库是已经存在的,那么页面也会给出提示不能注册。注册的第二个页面就是输入注册密码和确认密码,另外还增加了对密码格式的约束,两次输入的密码都正确并且相同之后方可正常注册,然后页面会提交注册数据到数据库中,再提示注册成功并且会跳转到登录页面。
  登录页面使用了Android自身的数据存储技术,在用户退出应用之后,会保存上一次登录成功的用户名和密码,用户不需要每次进入应用时都输入用户名和密码,只要点击登录按钮即可进入主界面。
  2.5 服务器端的设计
  服务器端的工作比较单一,其负责接收硬件端或Android移动端发来的请求和给二者返回数据,还有就是处理用户上传的头像图片。上传的图片会保存在服务器的某个目录中,然后使用最新的时间给图片生成一个新的文件名并在数据库中保存此文件名,以便以后的访问。另外,如果用户做了修改头像的操作,那么在上传新的图片的同时,服务器会先删除保存在服务器中的旧图片以防止浪费服务器的内存资源。在完成删除旧图片的操作后,再继续做上传图片的操作,并修改数据库中的数据。
  服务器端的开发使用了SpfingBoot+MyBmis框架,这种框架是一种微服务框架,使用其可以很快完成一些小型服务器的开发。SpfingBoot在服务器端相当于一个控制器,负责与其它两个工作端的交互,而MyBmis则负责与MySQL数据库的交互,完成对数据的访问和修改。
  2.6硬件端的设计
  硬件端是系统中的主要数据来源。用户需要的座位的实时数据全靠硬件端的工作来获取。其组成部分是以STM32开发的核心主板、红外线人体感应模块和ESP8266的WiFi模块。人体感应模块负责检测座位上是否有人,信号将会传到核心主板上,而主板负责计算在一段时间内是否都能收到检测到有人的信号,如果是就判定是有人使用了座位,那么其就使用WiFi模块连接局域网向服务器发送相关数据。发送数据时使用HTTP协议进行连接网络,以GET的方式与服务器进行数据交互。以上是硬件端主要工作,并会一直循环地做这些工作。在工作之前,需要对WiFi的连接进行初始化和对自身定位信息的初始化,确定网络连接成功并初始化完成后才正常工作。
  3APP运行截图
  图3中左图是选择区域的界面。右图是左则的滑动菜单,点击菜单中的查找空位,界面就会显示选择区域的页面了,菜单也会向左侧隐藏。
  图4中左图是登录界面。图片上的用户名和密码均已存储在手机自身的数据库中,在登录页面可以点击注册用户进入注册页面。右图是个人信息界面,在个人信息界面中,点击某个信息项可以对其进行修改。修改姓名和修改性别的操作都是在当前页面弹出窗口进行修改,而登录密码和手机号码的修改则是要进入另一个页面进行修改。
  4 结束语
  图书馆座位查询系统是基于Android移动平台进行设计的,整个系统比较简单,因而APP的使用界面也比较容易掌握。此系统研究的目的是方便学生或读者在图书馆里快速寻找空座位,为人们在图书馆就座时减少麻烦。期待此系统今后能在现实生活中发挥作用,也希望这样的系统在今后会有更多更好的发展方向和实现更大的实用价值。
转载注明来源:https://www.xzbu.com/8/view-15125483.htm