基于Android的校园选座App的设计与实现
2020-07-14袁世龙李旭芳严天立
袁世龙 李旭芳 严天立
摘 要 近年来,随着互联网技术与移动端技术的高速发展,Android因为其在移动端上拥有格外的优势,更有利于构建“互联网+”的问题解决方案。利用Android平台开发“互联网+选座”的选座解决方案,可以优化或解决高校对于自习、考研学习、课程答疑,向学生分配座位,管理座位等问题。该系统采用Android(Java)客户端 + Java套接字服务器 + I/O文件数据存储 + Java 套接字管理客户端,构成系统。旨在快速实现平台搭建,并满足相关管理需求。
关键词 Android Java Socket 高校选座 选座App
中图分类号:TP311文献标识码:A
1背景
当前,在各大高校,为达到各种目的而分配的座位已成为一种重要的教育资源。虽然座位作为基本单位,但是承载的功能多种多样,可能是考研学生的自习座位,可能是一般学生的自习座位,也有可能是老师进行答疑的答疑座位等。因为多种多样的功能目的,同时教室的分配又具有较高的灵活性,在空间与时间上都会发生变化,所以相关座位的管理就成为了一大问题。然而,随着互联网技术的高速发展,高校对于自习教室的管理,可以借助互联网技术进行优化与解决。同时在教室选座这一问题上,用户灵活性高且管理对象变更速度快,因此Android移动端平台搭建可以说是最适合用于解决此类问题。
2需求分析
2.1功能需求
基于系统要实现的最终目标,我们整理得到以下几种基本功能需求:(1)能够区分、标识用户所在学校,并且能够对用户个体进行通知与识别;(2)能够从系统中获取座位实时信息,并通过Android端的app进行展示;(3)能够对教室座位与相关资源提供足够的信息来帮助用户参考、选座;(4)能够将教室或座位的通知、变更信息即时发送给用户,避免造成管理上的问题。(5)用户能通过一定的排序,来对可选教室进行过滤筛选,并且可以通过搜索、收藏与查看选座记录的方式对特定教室加以区别和搜索,方便再次选座和指定目标的选座。(6)能够按照学校的相关规定对系统用户的行为进行一定的约束或监督,以便管理。
2.2用户群体
我们把用户群体进行一定的分类:
(1)一般用户:
①学生:进行選座与被管理的用户对象。
②答疑老师:通过发送消息来通知学生用户前往对应教室进行答疑的用户对象。
(2)管理用户:
①教室管理人员:可以前往教室、对教室内的资源进行维护并对违规行为进行管理的用户对象。②系统管理人员:对系统的Android端、服务器端和管理客户端进行软件维护与数据维护的用户对象。
2.3性能需求分析
(1)突发性高并发:用户对于系统的访问多为周期性的高并发访问,而在多数期间属于静息期。高并发周期取决于校园的晚自习安排、下课后学生自习安排、节假日自习安排、老师答疑安排等等。并发峰值基于学校的人数决定,经调研系统最少需要支持500-700人的峰值并发使用。
(2)个体用户持续的TCP请求:用户App在线时为了能够及时刷新用户界面内容,定时会向服务器请求获取班级信息。因此,当人在线人数增加时,TCP并发量会成倍增加。这需要服务器对于高并发访问有着更高的性能。
3系统结构与系统设计
安卓客户端与Java服务端互相通过基于TCP/IP协议的Socket通讯,获取Android客户端所需的相关信息、用户信息与管理信息、用户端上传的密码修改、手机绑定与选组等操作信息。Socket通讯的内容采用JSON格式进行交付。客户端与服务端之间通过“对象->JSON文本->对象”的模式进行信息传递。
Android客户端搭载了SQLite数据库对相关数据进行存储。Java服务端采用Java语言原生的文本I/O流对数据进行读取、存储。客户端负责将得到的信息展现在用户面前,给用户提供选座的参考信息与通知等功能。Java服务端提供数据的汇总、处理与反馈等功能。Java管理客户端则负责管理用户中系统管理人员与教室管理人员对教室相关信息的变更、违规惩罚以及信息通知等内容发送给服务器,用于更新教室信息。
4系统实现
4.1客户端界面设计
Android客户端基于Androidx,API 21(Android5.0),OpenJDK8开发,开发环境Android Studio3.5.3。客户端内的数据为SQLite(Room库支持)。客户端大致结构与控件使用:
4.2 SQLite数据库设计
客户端内采用的Room数据库抽象来对数据库进行管理维护,并将数据交互的过程放置在其他线程来避免对主线程造成卡顿,从而影响用户体验。
4.2.1 Dao接口设计
定义interface注以注释@Dao将该接口定义为Dao,以实现对数据库的操作封装,使得Java对象能够抽象为特定表中的元组得以存储。对Dao接口内的抽象函数进行注释以声明数据库操作。@Insert注释方法为插入对象到表中。@Update注释方法为以主键检索表,更新对象到表中。@Delete注释方法为以主键检索表,将传入方法的对象在表中找到并删除。@Query()注释可以写入参数,参数为SQL语句,对表进行特定的操作,并且注释了该注释的函数带有返回值作为结果。客户端中主要采用“@Query”获取全表对象。
4.2.2 Entity 存储类设计
能够被Dao操作的Java对象是注以@Entiy的类,该类决定了数据库中表的设计。类中变量决定表中的属性名。注以@PrimaryKey(autoGenerate = true)的变量为主键,参数决定其为自动生成主键值,注以@ColumnInfo(name = "Column_name")的变量为设置该变量在数据库表中的属性名,而该属性的存储方式将与该变量的Java类型相同。
4.2.3 DataBase类设计
将类注释以@Database声明为DataBase类,其封装了数据库连接,作为一个对象方便访问。设计时对该类采用了单例模式,以避免反复创建数据库连接对象而产生的系统损耗或内存泄露。
4.3服务端设计
服务端使用Java原生的I/O文本流与TCP Socket技术搭建。通过TCP连接轮询实现等待TCP连接并响应。
5系统测试
5.1功能测试
(1)用户自动创建测试。用户首次登录App直接创建默认账号来进行登录验证。
(2)页面跳转测试。App端界面跳转应该流畅、正确。各个界面是否有提供返回到上一界面的按键。检测是否存在界面丢失而引发的空指针异常。
(3)检查各个按钮控件是否正常运行,功能完整,能够准确向用户表达其功能用途。
(4)检测页面数据是否正常,数据加载线程与UI线程通信是否正常。
(5)App端与服务器通信测试。
5.2性能测试用例设计
基于阿里云服务器,云服务监控。以加快单客户端TCP连接请求频率模拟并发访问。着重对服务器与客户端之间的网络情况:如服务器平均入网带宽、服务器平均出网带宽、TCP连接并发峰值,的测试。同时测试服务器的CPU平均使用率。
经过测试,服务器在峰值并发达到700次访问时运行平稳。在最高并发数下Java虚拟机堆内存稳定在10Mb左右。
5.3测试结论
系统测试各项指标良好,对于突发性高并发访问有较好的抗压能力。服务器内存运行情况持续、平稳。CPU使用率较低,网络带宽要求低,服务器部署运行良好,客户端接收情况良好。
6结论
随着互联网浪潮的来袭,互联网技术结合移动端平台给许多现实中的问题带来了新的解决思路。通过实验,可以看到本论文设计的校园选座APP能够充分利用功能性座位这种教学资源,改善传统的座位管理方式。并且该系统也拥有较好的可扩展性,可以扩充入物联网技术,大数据技术等,让选座的纪律管理与安排效果更好。但该系统也有一定的缺点,比如Java服务端可以进行优化,部署专业的Web服务器而不是Socket服务器,并且可以使用数据库存储相关信息,而不是IO文件流存储。不过当前系统的数据关系性较低,并发量并不是非常大,所以采用IO文件流存储会更加适合。
Android移动端平台发展至今,由于其开源而拥有良好的生态,用户群体庞大,市场前景可观。通过Android平台解决各大高校对于座位教学资源的管理的各种问题,是一个较为可观的方案。这将使得用户能够高效的寻找合适的位置,管理者也能够精准的实施管理。
參考文献
[1] 张红霞.基于Java Socket的一个简单Web服务器实现[J].电脑知识与技术,2015,11(18):52-53.
[2] 阳晖.高校图书馆自习室管理存在的问题与对策[J].办公室业务,2019(21):175-176.
[3] 王红伟,吴坤芳.Android手机App程序中SQLite数据存储应用[J].漯河职业技术学院学报,2018(05):30-32.
[4] 孙翠改.Android环境下主UI线程与子线程通信机制研究[J].数字技术与应用,2016(09):66-67
[5] 陈天超.单例设计模式研究[J].福建电脑,2016,32(08):14-15+20.
[6] 欧阳燊.Android Studio开发实战 从零基础到App上线(第2版)[M].北京:清华大学出版社,2018.