1. 引言
针对于课程管理系统存在的问题,人们对其进行了一些相关研究,如:贾文琦等人通过Springboot框架设计了课程表管理的微信小程序[1],但没有课程提醒功能,仅能查看管理课程信息;伍敏君设计了一款智能课程表管理系统[2],添加了菜单功能适用于不同的课表管理系统;陆杨迪结合了学校通知信息热点,设计了智能课程表与学院信息热点系统[3],辛世龙利用Android平台设计一款面向学生使用的课程信息软件[4],提供了课程信息查询与调整功能。
当前,针对高校智能课程表的研究尚处于匮乏状态,而国内传统的教学辅助手段,诸如纸质课程表,已难以适应当前快节奏、高效率的学习生活需求。纸质课程表存在的易丢失、更新不便等局限性日益凸显。现有的课程管理系统功能相对单一,主要局限于学生课程信息的查询、修改、增加及删除等基本操作,仅作为课程信息的管理工具,对于提供课前提醒、消息推送等增值服务的研究尚显不足。鉴于此,开发一款基于Android平台的智能课程表应用显得尤为重要。该应用不仅能够便捷地进行课程管理与详情查看,更具备课前提醒、计划提醒等智能化功能,允许学生根据个性化需求灵活设置提醒方式,从而有效提升学习效率,优化时间管理策略。
本软件的创新点在于:
(1) 利用Jsoup技术[5],从原有的学生信息平台网页上提取了课程表的关键信息,并在手机端进行了重新排版和展示。
(2) 学生可根据自身需求设置相应的提醒周期,包括每日提醒、课前提醒、计划提醒。
(3) 学生在下载完此软件后,只需要每学期输入一次学号密码,就可下载完该学期的课程表信息,操作方便直观。
总体而言,通过智能化课程表的设计与实现,学生可以更轻松地规划自己的学习时间,避免课程冲突,确保学习计划的顺利执行。同时,智能课程表还可以提醒学生上课时间、地点及所需携带的学习材料,从而帮助他们更加专注于课堂,提升学习效率。
2. 总体设计
2.1. 需求分析
近年来,随着移动互联网技术的飞速发展,越来越多的研究者开始关注并投入到智能课程表系统的开发中。现有的研究成果中,一些基于Web的课程管理系统如Blackboard、Moodle等,虽然功能强大,但往往受限于平台,无法随时随地访问[6]。而基于移动平台的课程表应用,如微信小程序、iOS应用等,则因其便捷性受到了广泛关注。
与现有的课程管理系统相比,本研究开发的基于Android平台的智能课程表管理系统具有显著优势,全面的课程管理功能:本系统不仅实现了课程信息的添加、查看、编辑和删除等基本功能,还特别设置了学期课表与周课表两种展示模式,以满足不同学生的学习习惯与查看需求。创新的消息提醒功能:本系统创新性地加入了消息提醒功能,允许学生灵活地自定义提醒方式,包括每日提醒、课前提醒和计划提醒等,有效解决了传统课程管理方式中信息更新不及时、提醒功能不足等问题。高效的数据存储与查询:采用SQLite数据库进行本地数据存储,保证了课程表数据的存储和查询效率。同时,SQLite数据库的轻量级、无需服务端部署等特点,也使得本系统更加适用于移动平台。良好的用户体验:本系统界面设计简洁明了,操作便捷直观,用户在使用过程中能够获得良好的体验。
同时本系统满足以下三个特性:
(1) 兼容性:该系统设计专为Android平台客户端打造,鉴于Android手机日益普及且其运行环境稳定、用户交互界面友好,这极大地促进了软件的广泛传播与便捷应用。
(2) 时效性能:系统确保了数据传输的高效性,网页HTML内容的下载速度以及数据库查询响应时间均能满足广大用户的日常需求。
(3) 数据准确性:所有信息均通过教务处网页精确抓取,确保了数据的准确无误。
2.2. 总体设计
在Android Studio平台下,本文设计了一款基于Android平台的智能课程表管理系统,用于大学生课程信息的存储。在本系统下,学生可以根据自己的实际需要,按照周、学期查询课表信息,查看课程的安排情况、上课时间、地点、老师等信息,除此之外,学生可以进行课程消息提醒设置。根据实际的课程表管理需求,本文设计的基于Android系统平台课程表管理系统,按功能划分为五个模块:学期课表模块、周课表模块、课表查询模块、课程详情模块、消息提醒模块,系统功能模块图如图1所示。
Figure 1. Diagram of functional modules
图1. 功能模块图
3. 关键技术
基于Android的智能课程表设计融合了多项关键技术,包括使用Android Studio平台与JDK工具包进行开发,采用SQLite进行本地数据存储,利用LinearLayout等布局管理器构建用户界面,结合Ajax技术与SSM框架实现前后端数据交换[7],实现课程管理、提醒、详情展示等功能模块,并通过性能优化与全面的测试确保应用的稳定性和可靠性。
3.1. Android Studio开发平台
Android Studio是Android的官方集成开发环境(IDE),基于IntelliJ IDEA构建[8]。它提供了丰富的功能,旨在帮助开发者快速、高效地开发Android应用。Android Studio支持多种编程语言,包括Java、Kotlin等,并提供了实时的效果预览和多种语言支持[9],使得开发者能够轻松应对不同设备和市场的需求。本系统使用Android Studio具有集成开发调试、代码编辑以及软件检测,并且提供了Android API接口,通用性强,软件能在大多数安卓手机上运行,结合Android SDK和Java语言,实现智能课程表App的各项功能。
3.2. SQLite数据库
SQLite是一款轻量级的关系型数据库管理系统[10],它以库文件的形式存在,使得Android应用能够方便地进行数据存储和管理。由于其轻量级、无需服务端部署、操作简便以及对SQL标准的良好支持,SQLite在Android应用中得到了广泛的应用,用于存储各种数据。
SQLite可以存储用户的基本信息,如用户名、密码、头像、联系方式等,方便应用程序进行用户认证和信息管理。Android应用程序可以使用SQLite来存储应用设置[11],如界面主题、字体大小、通知设置等,以便在应用程序重新启动时恢复这些设置。对于需要离线访问的数据,如课程数据,SQLite可以提供一个可靠的本地存储解决方案[12]。为了提高应用程序的响应速度,开发者可以使用SQLite来缓存一些常用的数据,如用户最近的课程查询记录、浏览历史等。
3.3. Ajax技术
Ajax (Asynchronous JavaScript and XML),即异步JavaScript和XML,是一种用于创建交互式网页应用的网页开发技术[13],Ajax技术实现前后端数据交换流程如图2。
Figure 2. Ajax data exchange diagram
图2. Ajax数据交换图
Ajax的应用场景包括表单验证、动态加载内容、搜索建议、购物车更新、实时聊天等。Ajax最大的优点之一是无刷新更新数据,它能在不刷新整个页面的前提下与服务器通信并维护数据,使得Web应用程序更为迅捷地响应用户交互,减少了用户等待时间,带来了非常好的用户体验[14]。Ajax使用异步方式与服务器通信,不需要打断用户的操作,具有更加迅速的响应能力,减少了不必要的数据传输、时间以及网络上的数据流量。Ajax是基于标准化并被广泛支持的技术,不需要下载插件或者小程序,这使得它在各种环境中都能得到良好的支持[15]。
4. 功能实现
在Android studio开发环境下,本文设计和实现了一款基于Android平台的智能课程表,主要功能界面包括学期课表界面、周课表界面、课表查询界面、课程详情界面以及消息提醒界面。
4.1. 学期课表
在进入智能课程表应用程序后,用户默认会被引导至学期课表页面,如图3所示,该页面全面展示了当前学年及学期的所有课程详情。整个用户界面的布局遵循垂直排列原则,首要步骤是引入一个LinearLayout布局管理器[16]。在此布局中,顶部行集成了星期与日期信息,而左侧首列则标注了课程节次,这些元素均通过添加了自定义边框的TextView组件来实现。
Figure 3. Semester schedule interface
图3. 学期课表界面
在学期课表视图模式下,界面的右下方区域采用了TableLayout布局管理器进行组织。该区域内的每个元素均被设计为Button组件,用于显示该时间段的课程信息,包括课程名称和上课地点。例如,周一的第1~2节课所对应的Button组件,会精准地定位在TableLayout的第1行第1列。
值得注意的是,每个Button组件都与一个唯一的课程ID相关联,这一设计确保了课程信息的唯一性和可追溯性。而所有课程信息的存储则依赖于SQLite数据库,该数据库中的特定表格详细记录了每门课程的多种信息,包括但不限于课程ID、课程名称、授课教师、课程起始周次以及课程结束周次等关键数据。这种设计不仅提升了数据管理的效率,也为后续的课程信息检索与更新提供了坚实的基础。
4.2. 周课表
点击位于界面上方的“第一周”标签,即可触发跳转至周课程表视图模式,具体界面布局如图4所示。在成功跳转至周课程表页面后,页面的右上角会呈现一个Spinner组件。用户可通过操作此Spinner组件来选定特定的周次。随后,系统会根据用户的选择,访问SQLite数据库,检索所有课程的起始周次与结束周次信息。在此基础上,系统进行筛选处理,仅展示那些落在所选周次范围内的课程信息,而对于不属于该周次范围内的课程信息,则进行隐藏处理。
Figure 4. Weekly timetable interface
图4. 周课表界面
4.3. 课表查询
点击“课表查询”右侧的图标,进入课表查询界面,如图5,该界面展示出本学期的全部课程,包括已安排的课程和未安排的课程。整个布局采用LinearLayout布局管理器,在课表查询界面中,系统通过清晰且直观的方式展示出课程的相关信息,包括课程名称、上课时间、节次、上课地点、任课老师以及学生数量,帮助用户轻松掌握本学期所有课程的总体情况,了解课程概况,从而更好地进行个人的学习规划和时间管理。
Figure 5. Timetable inquiry
图5. 课表查询
4.4. 课程详情
在学期课表界面中,用户通过点击特定的星期与节次,能够触发相应Button组件的响应机制,进而实现向课程详细信息页面的跳转,如图6,此课程详情页面作为信息展示的界面,详细列出了单条课程的具体内容。具体而言,该示例界面所展示的课程名称为“流行病学”,授课地点被明确标注为雪莲山校区教学楼C311教室。该课程覆盖了第一与第二节的时段,授课时间为上午10:00至11:50。此外,该课程的主讲教师为王倩老师,参与该课程学习的学生人数达到了46人。在页面的下方,还清晰地标注了该课程的周期信息,即该课程自本学期第一周起,至第十三周止。
Figure 6. Course details
图6. 课程详情
4.5. 消息提醒
消息提醒界面展示出系统的消息提醒功能,界面主体部分是一个列表,列出了多个设置选项,如图7。其中,“每日提醒”选项允许用户设置每天接收课程提醒的时间,当前已经设置为前一天的20:10,这样用户就可以在晚上收到第二天课程的提醒。而“课前提醒”选项则允许用户设置在每节课上课前接收到提醒,当前设置为课前30分钟,有助于用户提前做好准备。
此外,“计划提醒”选项则提供了更加灵活的设置方式,用户可以根据自己的需要,在特定时间设置消息或提醒,通过“设置计划”选项,用户详细设置自己的课程计划,包括每周上课的天数等,消息提醒功能易于操作,而且设计美观、实用性强,适合用户对课程进行管理。
为了实现推送通知,使用Firebase Cloud Messaging第三方推送服务实现推送逻辑,首先在Firebase控制台中创建项目,并添加Web应用,下载Firebase SDK,并在前端项目中集成。最后,使用Firebase提供的API发送推送通知。
Figure 7. Message alerts
图7. 消息提醒
5. 结语
本文根据当前大学生对课程表管理的实际需求,设计并实现了一款基于Android平台的智能课程表应用。通过利用Jsoup技术,成功从原有的学生信息平台网页上提取了课程表的关键信息,并在手机端进行了重新排版和展示。此外,本系统还具备个性化设置功能,允许学生根据自身需求设置相应的提醒周期,包括每日提醒、课前提醒和计划提醒。在数据存储方面,选择使用SQLite数据库进行数据管理,保证了课程表数据的存储和查询效率。
该系统从课程管理、提醒、数据处理到用户体验等多方面都能达到较好的效果,切实满足用户在学习、教学等场景中对课程表管理的实际需求。不仅优化了学生的学习时间管理,还提高了学习效率,为大学生的日常生活和学习带来了极大的便利,为师生营造便捷、高效、有序的教学环境,助力教育信息化与个性化发展。
基金项目
2023年校级大学生创新创业训练计划项目经费资助(X202310760084)。
NOTES
*通讯作者。