基于Android 的学生校园系统的研究与实现

作者: 王培刚

基于Android 的学生校园系统的研究与实现0

摘要:随着移动通信技术进入5G时代,以及高校学生需求的日益多样化,用于智慧校园的学生校园系统变得越来越复杂。高校师生日常最为关注的是学习、教学以及学校相关的各类信息。基于此,文章整合校园中教学及生活的常见功能,设计并开发了一个基于Android的学生校园系统,以便利本校学生的校园日常生活。

关键词:Android;校园系统;校园App;数字化校园

中图分类号:TP311 文献标识码:A

文章编号:1009-3044(2025)01-0051-03 开放科学(资源服务) 标识码(OSID) :

1 关键技术介绍

Android是一款基于Linux内核的、可用于手机、平板等移动终端的操作系统,其开发语言为常见的Java 语言。由于Android的发布规则宽松且简单,并且允许任何人进行自主研发,因此在移动App开发领域受到广泛青睐。Android之所以能成为市场占有率第一的移动操作系统,主要原因在于[1]:1) 开源及开放。An⁃droid是开放源代码的,允许任何厂商及个人使用,不受运营商约束,因此比其他平台更具移植优势。2) 功能丰富,二次开发方便。Android内部集成了浏览器、虚拟机、数据库等组件,支持多种移动通信技术,且包括开发环境、调试工具以及相关分析工具等,有利于二次开发。3) 对谷歌应用程序的兼容性好。谷歌发布An⁃droid这一先天优势使得谷歌平台上的多数应用程序都可以直接兼容Android平台的各种操作,从而使移动终端用户可以享受谷歌开发的各种应用。

移动应用的开发并非一蹴而就,需要对其进行不断迭代,学生校园系统在迭代过程中其体量会不断增大。过大体量的移动应用可能会影响用户的使用选择,即使使用也可能因安装包下载及安装过程过长而影响用户体验,为此有必要对学生校园系统进行瘦身。对移动应用APK包分析后发现,通过优化res目录下的资源文件、动态链接库文件等可以显著减少App体量。

Android 应用开发平台从下至上可分为如下层次:Linux内核层、系统库及运行时库层、应用程序框架层和应用程序层。其中,Linux内核层是Android应用开发平台的核心,负责协调管理移动终端的内存、网络通信以及安全权限等;系统库提供对Java虚拟机的支持,使Java语言编写的程序可以运行在Android 系统上;运行时库提供对C语言程序、多媒体文件以及UI界面等各种组件的支持;应用程序框架层为An⁃droid应用的开发提供了常用功能的API接口。

Android 应用开发平台的基本组件包括[2]:活动(Activity) 、服务(Service) 、广播接收器(Broadcast Re⁃ceiver) 以及内容提供器(Content Provider) 。每个应用程序都由多个Activity构成,不同模块或组件可以设计为单独的Activity。Service是一种后台服务,例如各种应用中的消息通知功能,当处于离线状态而不能及时接收消息时,服务会自动接收消息,待在线后再进行显示。Broadcast Receiver可以接收其他应用的广播信息,Content Provider的作用是解决无法以显示方法访问其他应用的Activity的问题。

2 需求分析

为实现一个使用友好且功能完善的学生校园系统,本研究基于模块化思想进行系统的需求分析,将基于Android的学生校园系统分为师生端模块、学工端模块以及后勤端模块等。

师生端模块主要是用于方便本校师生使用,使师生的校园生活更加便捷,节省师生在各种校园事务上的流程化时间。基于此,师生模块需要具有课程表、成绩查询、图书借阅、请假及考勤等功能。各功能的需求是[3]:1) 课程表功能。此功能用于显示本教学周的课程安排,点击课程表任意天的某一节课,应当能够显示出课程名称、任课教师、上课时间和地点、课程简介以及考试安排等详细信息;课程表页面还应提供编辑功能,在上课时间或地点等信息发生变化时,学生能够手动修改信息并保存。2) 成绩查询功能。每学年各个学期的所有课程成绩,都可以通过此功能进行查询;除了简单的查询之外,还应该提供课程成绩的计算及排序功能,例如计算同一学生不同课程的平均绩点、指定班级某课程的平均分、某课程的最高分等。3) 图书借阅。当师生登录到图书借阅模块后,系统需要能够显示登录用户的个人信息、当前借阅信息、借阅历史以及图书收藏等。4) 请假及考勤。重要的课程需要登记学生的考勤,考勤页面要能够查看不同的考勤状态,例如某一天是正常考勤、请假、缺勤以及补签等。为避免师生浪费大量的时间在线下请假流程上,请假功能会使学生的请假申请自动推送至审批人员的手机上,可以显著节省请假审批时间。

学工端模块主要用于负责学工及行政工作教师的日常工作,以更高效地为学生服务,此模块的功能应主要包括[4]:1) 设备报修管理。如果在学校内部发现任何损坏的公共设备,都能够通过此模块完成设备报修相关流程;2) 招聘管理。在毕业季可以发布各类招聘公告,方便学生求职;如果学校有教师招聘需求,亦可在此发布。3) 校园黄页。此功能可以集中展现各个院系部门的联系方式,以便学校师生在遇到事项时可以联系对应人员解决。

后勤端模块是连接学生及学校后勤人员的纽带。对学生而言,最主要的后勤人员是宿舍管理员,使用好后勤模块可以更好地关心学生,使学生保持一种良好的生活风貌;其次是维修人员,为师生提供维修服务。因此,后勤端模块中需要具有卫生评比、卫生评分查看、维修管理等功能。

3 设计及实现

3.1 概要设计

综合上述对学生校园系统的需求分析,可以得到系统的功能层次结构图,如图1所示。

学生校园系统的用户不仅包括任课教师、学生,还包括学工及行政老师、后勤人员等,不同用户均有其对应的功能页面,且不同类用户间的功能业务彼此分离。这种设计使各个模块能够实现相互独立,在开发测试时可以并行分别进行编译、调试,而在集成模式下可以将所有模块“组装”为完整的学生校园系统。

在整体架构上,基于Android的学生校园系统可以从上至下分为三层:模块层、基础功能层和核心依赖层,如图2所示。

其中模块层直接面向学生校园系统的用户,不同用户拥有不同的登录入口,模块层中不同的模块会展现出登录用户具有的所有功能;每个模块均相互独立,因此不同开发人员完全可以只负责单个模块的功能逻辑,从而避免协作开发过程中的代码冲突。基础功能层是实现具体模块功能的基础,例如各种功能的数据请求需要通过网络请求事项,系统展现的各种结果需要通过图片处理功能来完成,消息推送服务提高了大量业务处理的实时性[5]。依赖层是实现整个学生校园系统的“地基”,Android移动应用开发过程中通常会涉及模块依赖、本地依赖和远程依赖三类依赖关系,其中本地依赖主要指的是本地jar包依赖;这些依赖关系会添加到工程模块的build.gradle文件中,该文件会自动处理依赖关系。

3.2 详细设计

3.2.1 基础功能设计

基于Android的学生校园系统包括服务端及客户端两大部分,二者之间的数据交互需要基本的网络请求功能。客户端的网络请求框架使用的是OkHttp,创建一个OkHttp客户端对象后即可用其管理诸如连接池、缓存以及超时时间等网络参数;随后创建一个Re⁃quest对象即可描述网络请求,例如是GET请求还是POST请求,网络请求的请求参数头、参数体以及请求URL等;网络请求最终会返回由学生校园系统服务端预先定义的JSON数据。

学生校园系统中有很多功能会涉及图片,图片处理功能主要包括图片的显示及压缩。图片显示时使用的是Picasso图片显示框架,选择此框架的原因在于它可以完美兼容网络请求框架OkHttp,且图片体积会显著降低。图片压缩主要用于卫生评比、设备报修等场景,若不压缩上传的图片,不仅会影响用户使用体验,也会导致服务端的存储压力。

消息推送方面本研究使用极光推送(JPush) ,其推送通道相对稳定且提供丰富而开放的API接口,已集成主流移动终端厂商的推送通道。实际使用时需要先将极光推送的jar包保存至工程libs目录中,并注册相应的消息推送服务,随后即可接收推送的消息。学生校园系统的用户在使用相应业务时,服务端即会推送对应消息到其移动终端。

3.2.2 业务功能设计

本研究使用开源的PostgreSQL作为学生校园系统的数据库,综合考虑系统中与学生相关的业务功能后,主要设计了课程表、教师表、学生表、成绩表以及假勤表。其中课程表存放一个学期内的课表,即各门课程的基本上课信息,主要字段包括课程名称、任课教师、班级、教室以及上课时间等;其中任课教师存放的是教师ID,为外键,引用的是教师表中的ID字段。教师表保存教师的基本信息,主键为教师ID,其他字段包括姓名、性别以及学历等;学生表存放学生基本信息,包括学生ID、姓名、性别、年级以及院系等;成绩表是成绩查询功能使用的主要数据库表,包含课程ID、学生ID、学期以及成绩等字段,其中课程ID和学生ID分别为引用课程表和学生表相关主键的外键。

在用户界面设计方面,Android平台提供了丰富的UI 界面组件,大多存放在widget 包或其子包an⁃droid.view内。Android平台所采用的MVC设计模式使界面组件与功能控制相互分离,不论是对用户界面还是程序代码进行修改均可单独进行。学生校园系统的功能模块较多,因此系统主界面采用的是常见的九宫格布局方式,九宫格内的每个图标均对应一个功能模块。师生端和学工端等模块的主界面Activity均需要路由注册,在登录首页点击指定模块的接口后即可跳转至对应模块的主界面Activity。

3.3 实现

在基础功能实现上,进行图片处理时需要根据调用接口的参数确认是进行图片显示还是压缩。若为图片压缩则调用图片压缩工具,并将要压缩的图片列表作为参数传递给图片加载方法;若为图片显示则调用显示框架。极光推送的接口封装后可以以单例模式创建对象,消息实体类的属性主要包括id、content 以及type等属性,分别表示消息的身份标识、消息内容以及消息类型(请假消息、报修消息等) ;消息的处理操作封装在单独的类中,接收到消息后会先存放至本地数据库,当用户点击消息按钮时会触发通知事件,转发消息方法会完成消息的发送。

课程表可以让学生根据下拉列表的选择来查询相关课程,因此实现为若干个下拉菜单,其中的菜单数据预先保存在数据字典中。前端程序获取到用户的选择后将数据传递给后端程序,随后从数据库中查询对应指定的课程;这一过程需要有两个布局文件,一个用于设计用户选择页面,另一个用于显示课程结果页面。

成绩查询的入口处需要输入用户名及密码,在通过检测后进入分数页面,该html页面经过HTML解析器的解析后用ListView显示,通过分析页面中的TR标签、TD标签等获取所需的结果信息。为保证安全性,使用HttpClient组件对用户名及密码进行验证,同时增加一个Application类存取不同的Cookie值。

各种查询操作得到的结果以Cursor(游标) 子类对象的方式返回,该对象能够实现对查询结果的向前、向后或随机访问,从而使数据库的读取效率较高。

多数Android应用的组件间通信数据量均较大,为了对学生校园系统的体量进行有效瘦身,本研究考虑对使用到图片的功能场景进行资源压缩,简单图片使用XML进行绘制,高清图片则考虑缩略显示,并在必要时进行间隔离散采样。

4 测试

在进行测试时,使用研究者的小米手机进行测试,主要配置为:Android版本为MIUI 14,处理器为高通骁龙8 Gen2 3.19 GHz,内核版本为5.15.74-an⁃droid13-8-00049,KMI版本为5.15-android13-8。

功能测试方面,测试项主要包括按钮与链接测试、页面跳转测试及分页查询显示测试。对系统所有的按钮和链接逐一点击测试后,发现点击所有按钮后均能得到预期响应,点击链接均可正确跳转至预期页面;在每个设置了分页显示之处,均能根据用户选择的数目分页显示。

性能测试方面,对系统的稳定性、容错性、安全性以及压力容量等方面进行了测试,测试结果如表1所示。

在对学生校园系统进行功能测试、性能测试后,从测试结果可以看出整体符合预期:功能方面满足基本使用需求,性能方面容错性良好、具有较高的安全性,且能够容忍高强度使用压力。

5 总结

在对学生校园系统进行功能测试、性能测试后,从测试结果可以看出整体符合预期:功能方面满足基本使用需求,性能方面容错性良好、具有较高的安全性,且能够容忍高强度使用压力。5 总结

参考文献:

[1] 刘锦.智慧校园故障报修信息管理系统开发研究[J].互联网周刊,2024(18):51-53.

[2] 郑居健,暴丰,傅成辉,等.一站式校内服务的校园通App[J]. 福建电脑,2023,39(10):67-72.

[3] 韦侯翼,黎津圣,赵洋,等.基于手机App“简易云”校园管理系统的设计[J].科技与创新,2023(16):119-121,124.

[4] 支乔.促进学生自主学习力发展的数字校园应用系统建设研究[J].现代教学,2024(5):32-33.

[5] 张秀璞,孟维航,时潇晴.基于互联网技术的校园学生管理系统设计[J].电子技术,2023,52(10):324-325.

【通联编辑:谢媛媛】

经典小说推荐

杂志订阅