2020年10月10日第4卷第19期
现代信息科技
Modern Information Technology
Oct.2020 Vol.4 No.19
562020.10
收稿日期:2020-09-20
基金项目:广东省大学生创新创业训练项目(S201912620003)
基于Android阿拉伯语学习APP设计与实现
刘巨铭,温柔,赖益强,周海贝
(广东外语外贸大学南国商学院,广东 广州  510545)
摘  要:针对目前手机应用市场上关于阿拉伯语学习类APP 功能单一,无法满足学习者日常学习需求的
问题,同时为了广外南国商学院阿拉伯语学习者们能拥有一个具有自身特的学习APP ,设计并实现了口袋阿语APP 。该APP 基于Android 平台,使用了多线程、9Patch 、XML 、JSON 和SHA-256等技术实现了用户注册登录、单词学习复习、趣味学习、个人中心和打卡签到等功能。该APP 可以为学习者们在移动端学习阿拉伯语带来极大的便利和趣味性。
关键词:Android ;APP 开发;阿拉伯语;单词学习中图分类号:TP311.56
文献标识码:A
文章编号:2096-4706(2020)19-0056-06
Design and Implementation of Arabic Learning APP Based on Android
LIU Juming ,WEN Rou ,LAI Yiqiang ,ZHOU Haibei
(South China Business College Guangdong University of Foreign Studies ,Guangzhou  510545,China )
Abstract :Aiming at the problem that the functions of Arabic learning APPs in the current mobile application market are single ,and
cannot meet the daily learning needs of learners ,at the same time ,for the Arabic language learners of SCBC to have a learning APP with their own characteristics ,the Pocket Arabic APP was designed and implemented. Based on the Android platform ,the APP uses multi-threading ,9Patch ,XML ,JSON and SHA-256 technologies to realize user registration and login ,word learning and review ,fun learning ,personal center and check-in and other functions. The APP can bring great convenience and fun for learners to learn Arabic on the mobile terminal.
Keywords :Android ;APP development ;Arabic ;word learning
0  引  言
国内对于英语学习软件的开发起步较早,但与阿拉伯语相关的学习软件可选择范围较小且功能单一。针对此问题,口袋阿语APP 借鉴了各类外语学习APP 软件的功能特点,为阿语学习者们搭建了一个具有专业特的学习互动平台。该APP 通过查词、单词学习、基于艾宾浩斯遗忘曲线的智能单词复习、“消消乐”卡片复习和口袋阿语世界排行榜等功能模块构成了一个完整的学习流程和激励体系,用户在使用口袋阿语APP 学习时,可以有效提高用户的注意力、提升学习过程的趣味性、提高用户成就感并减少用户遗忘等效果。笔者通过对广东外语外贸大学南国商学院的阿拉伯语专业的师生进行需求调研,采用软件工程的开发方法,结合APP 设计理念针对口袋阿语APP 进行了近一年的设计与开发,本
文从APP 架构设计到具体的功能的设计与实现进行了详细的阐述,旨在为学习类APP 设计者和开发者分享设计与实现的思路和方法。
1  APP 架构
1.1  开发平台——Android Studio
Android Studio 是美国谷歌公司推出的一个基于IntelliJ IDEA 的Android 集成开发环境,谷歌公司在IDEA 的基础
上为其提供了基于Gradle 的构建支持、Android 专属的重构、优化小贴士和功能强大的可即时预览的布局编辑器等开发工具有效地提高了本项目开发和调试效率。
1.2  开发语言——Java
Java 是一种面向对象的语言,其语言特性是封装、继承和多态,这些特性使得在牺牲一定的性能情况下能设计出低耦合的系统,这样的系统还具有易维护、易复用和易扩展的特点。在减少代码量的同时还降低了系统维护成本。由于本项目的需求不断变化,因此这些特点为开发和维护带来了极大的便利。
1.3  开发框架
本项目采用Android 原生开发,原生开发模式开发的APP 具有运行速度快、性能高和兼容性好等特点。原生应用支持大量的图形以及动画,能更好操控手机硬件设备(比如多点触控、NFC 等),在开发中充分利用这些特点可以给予用户更好的体验。在本项目中以最为常用的MVP (Model View Presenter )架构搭建Android 端,以SSM (Spring +SpringMVC + Mybatis )框架搭建服务器后端与Android 端进行JSON 数据交互。基于MVP 设计的系统具有代码逻辑清晰、低耦合和方便维护等优点。项目部署在装有CentOS 7系统的云端服务器中,Android 端通过Web 请求实现前后端的数据交互,这样前后端分离的设计模式更加符合现代APP 需求快速变更的特以及海量数据需要存储的基本特征,同时降低系统的耦合度,对日后的维护工作具有深远意义。
DOI:10.19850/jki.2096-4706.2020.19.014
阿拉伯语arabic 用户当前词汇表
user_subject 字段中文名类型键默认值主键int pk 自增长用户id int fk —单词id int fk —词书id tinyint ——排除tinyint ——收藏tinyint ——已掌握tinyint ——缓冲位tinyint ——创建时间datetime ——修改时间datetime
数据库设计
通过前期的调研,根据需求分析说明书以及使用条件设范式的数据库。在本项目中采用了数据库是关系型数据库,其支持多种数据类数据库部分数据表如表所示。图2  单词详释页面图3  趣味复习页面
第19期现代信息科技
58
2020.10
数据库中文名阿拉伯语数据库英文名arabic 表中文名用户签到表表英文名user_signdate 字段名字段中文名类型长度描述键默认值必填signdate_id
主键int 0主键pk 自增长是uid 用户id int 0外键fk —是datetime 签到时间datetime —————day_count
总签到次数
int
32
数据库中文名
阿拉伯语数据库英文名arabic 表名用户表表英文名
user 字段中文名
字段中文名类型长度描述键默认值必填uid 主键int 0主键pk 自增长是user_name 用户名varchar 64————user_pwd 密码varchar 255————user_sex 性别varchar 32————user_icon 头像mediumblob ————user_mail 邮箱varchar 32————user_phone 手机号varchar 32————user_book 当前词书id varchar 32————user_chapter 当前章节tinyint 2——0—user_detail 当前进
度varchar 32————user_method 背词方法varchar 32————user_group 是否分组tinyint 1——0—gmt_create 创建时间datetime ————是gmt_modified
修改时间
datetime
表3  用户表
记录
属于
word_needagain
bg_id uid
word_buf_bit gmt_modified
gmt_create
bc_id
subject_id
word_already word_cut
word_like
book_group user
book_college
user_signdat
user_subject
bg_id book_image
book_name gmt_create gmt_modified
gmt_create uid user_name user_pwd
user_sex
user_detail
user_icon
user_book
user_phone
gmt_modified
user_group
user_method user_mail user_chapter antonym exp_chinese root nouns letter example chapter present
type gossip
chinese
word order bg_id bc_id synonym grammar gossipx gmt_create
gmt_modified
uid
day_count
datetime
signdate_id
1
N
N M
1N
图4  数据库E-R 图
表2  用户签到数据表
第19期
59
2020.10
3  功能实现
3.1  注册登录模块
注册模块采用了通过邮箱发送验证码的方式验证本次注册是一次“合法”的注册,这种方式可以有效限制“非法”的注册,如:编写恶意程序短时间进行多次注册或大量无用注册等等,“非法”注册会造成服务器拥挤甚至崩溃,导致损失大量用户关键数据。这种方式不仅保护了服务器,同时也为用户注册带来
了更多的便利,利用邮箱注册不需要用户记住新建的账号,只需要输入使用了多年的邮箱地址即可,更可以为健忘的用户提供了一个可靠的回密码的途径。登录功能的初衷是把每个用户的状态数据持久化到服务器,但是传统无免登录功能的方式却提高了打开这个APP 的时间开销,同时会间接地降低用户体验度。作为一个用户每天都需要使用的APP ,如果每次使用前都需要进行登录操作是一件极其不愉快的事情,因此,口袋阿语APP 在保证用户信息安全的前提下把用户登录设计为具有时效性的登录,即在一段合理时间内用户可以免登录使用APP ,如果用户长时间内处于不活跃的状态,系统会自动要求该用户下一次使用时必须进行登录。
用户密码是敏感信息,因为用户很有可能为了便利把所有APP 以及支付软件的密码都设置为同一个密码,一旦泄漏会造成用户个人信息泄漏甚至造成财产损失。因此用户密码加密是重中之重,口袋阿语APP 在应用层使用SHA-256加密算法,使用户密码在网络上传输时具有可靠的安全性。SHA-256是迭代的单向Hash 函数,可以处理消息以产生称为“消息摘要”的精简表示。在抵抗生日攻击和抵御已知差分攻击方面,SHA-256比现在广泛使用的MD 5和SHA-1等更具安全性。
3.2  查词模块
查词模块支持中文和阿拉伯语互查与模糊查询,用户在搜索框中输入部分阿拉伯语字母时,APP 会根据所输入的字母进行即时查询,并在搜索框下方提示符合输入内容的单词,以方便用户通过直接点击
提示的单词完成一次查询动作,而不需要用户输入完整的单词。用户对搜索框内容的每一次修改都会触发一次提示内容的更新,因此可以保证提示内容的实时性。用户在输入中文查阿拉伯语单词时会根据用户的输入进行中文智能组词,并在提示框中显示,每一栏中文词语后都会显示该中文词语的阿拉伯语近义词供用户参考。
3.3  单词学习复习模块3.3.1  当前课时
口袋阿语APP 默认按照课时是顺序为用户合理安排背词内容,设n 为每日必学单词量,即一组词,n ∈[15,25](单位:个)为一组词的合理区间。当一个用户学习完第五章才开始使用这个APP 的情况下,用户可以点开当前课时功能选择任意课时作为起点背诵。这个功能使得用户在背词内容选择上更加的自由。
3.3.2  章节学习情况
以章节为单位采用进度条的形式直观地展示了用户对当前词书学习的具体情况,同时,给用户制定未来学习计划提供了参考数据。
3.3.3  单词学习
单词学习以考核的形式学习,考核分为两种形式:
idea开发安卓app教程(1)提示阿拉伯语单词,从选项中选出正确的中文意思;(2)提示中文,从选项中选出正确阿拉伯语单词。这两种方式出现的比例为2:1。选项数量的设定为四个。在选项内容的设定上,系统会首先检测当前单词是何种词性,进一步筛选出同词性的单词作为干扰项。这样的设置方式可以使得干扰项更具有迷惑性。具体流程图如图5所示。
开始背词结束背词
进入背词模块
是否为中选阿
模式?
显示阿语单词选中文意思
显示中文意思选阿语单词
出现提示语并展示单词相关例句进入单词详情页面
筛选出当前单词同词性的单词作
为干扰项
用户选择是否正确?
是否为最后一题?
是否为第一次选错?
是是
否是
图5  背词功能
3.3.4  复习
复习提供了两种模式分别是正常模式和趣味模式。正常模式下几乎与“单词学习”模块中提供的考核模式相似,但在考核形式上两种方式出现的比例会对调。趣味模式详细的介绍在(3.4.2“消消乐”复习模式)中。复习的内容有两种:(1)用户自行选择任意章节(可多选)作为复习内容;(2)系统会根据用户的每日学习内容并依据艾宾浩斯遗忘曲线为用户智能地规划出当前需要复习的内容。
3.4  趣味模块
3.4.1  阿拉伯语短视频
短视频的素材来源于阿拉伯本地的经典动画片、电视剧、电影、新闻和学术讲座等视频的剪辑。剪辑的内容经过阿拉伯语言专业人士挑选,其内容为一小段(1~5句)对话和单人讲述等,经过如此筛选的内容是具有一定教学意义的,在短视频中也提供了考核方案和激励措施。
(1)考核方案。
用户可以反复观看一个短视频,在点击“开始回答”的按钮后,界面出现两个选择按钮以及一个倒计时器,倒计时的时长系统会根据当前视频的时长设定。考核的形式分
刘巨铭,等:基于Android 阿拉伯语学习APP 设计与实现
图6  完成一张卡片后
其中关键算法和难点是在对用户点击事件进行判断后的动画播放期间仍能对用户的再次选词提供准确和即时的判断下文为代码描述。
定义一个内部类记录下需要进行判断的数据
private class JudgeBlock{
Button judgeBtn=null; //用户第一次点击的按钮
;      //judgeBtn中的单词

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。