版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
大学英语四六级学习app设计【摘要】现如今,随着移动设备的发展和普及,利用手机app来进行学习已经成为当代大学生最主要的学习方式之一,而英语学习则是众多学习软件中占比最多的一类学习app。本次大学英语四六级学习app的开发主要是基于C/S结构,在Android手机操作系统的环境下运行并测试通过的,数据库则选择采用的是安卓自带的SQLite数据库,采用java语言来进行app的设计与开发。【关键词】C/S结构,app,英语学习,java开发技术前言近年来,随着世界经济逐渐走向全球化,英语作为一门国际上最为广泛使用的语言,使用的人数以及范围也在逐年递增。学习英语对于我们大学生而言可以丰富自己的语言技能,增加一项语言能力;可以有利于我们找工作,例如很多外企,对于英语四六级都是有严格要求的;学习英语还有利于我们学计算机的大学生更好的阅读代码,更好的阅读国外的优秀期刊,更快的掌握国际上最先进的计算机理论以及技术。对于咱们大学生而言,英语四六级等级考试也是尤为重要,甚至能够影响大学生的毕业以及就业。因此,开发一款有助于大学生学习英语并通过大学生英语等级考试的app显得尤为重要。1绪论1.1研究目的及意义随着时间的推移,科学技术在不断的向前发展,社会生活的信息化程度不断提高,经济发展也逐渐将全球连成一个整体,这种趋势使得英语这门国际上最为广泛使用的语言的重要性日益突出。英语承担着国际上最为广泛使用的语言载体的重任,它已逐渐成为人类社会生活绝大部分领域和场景中使用最为广泛的语言。而对于中国的大学生而言,英语四六级考试是每个大学生都必须面对的英语等级考试。市面上的英语学习app虽然数不胜数,令人眼花缭乱,但并没有专门针对大学生英语四六级考试的app。因此,我选择开发大学生英语四六级学习app作为我的研究方向。该app能够帮助大学生快速的记忆英语四六级考试中的大纲词汇,众所周知,学习一门新语言的基础就在于词汇量,因此该app可以通过提高大学生英语词汇量的方式在很大程度上帮助大学生提高英语等级考试的通过率。1.2研究目标以及主要内容我选择的这个毕业设计课题,英语四六级学习app的开发主要是针对大学生的英语四六级等级考试,旨在通过大学生对这个app的使用,提高大学生英语四六级考试的成绩以及通过率。英语作为国际最为广泛使用的一门语言,它的重要性早已不言而喻,而要很好的掌握一门语言,则必须从最基本的词汇开始学习。全国英语等级考试对于学生的考察主要有听力,阅读,翻译以及写作四个方面。而这四个方面的基础都是词汇量,而市面上并没有一款针对四六级英语词汇学习的App,因此,这个App的设计与开发主要为了方便大学生对英语四六级大纲词汇的学习。本App主要实现了以下几个主要的功能模块:1.词库管理:用户可以根据自身的考级情况在App中选择英语四级大纲词汇或者英语六级大纲词汇作为词库进行学习。2.词汇学习:App会根据用户设置的每天的词汇学习量,从用户所选择的词库中选取单词供用户学习。3.词汇复习:App会从用户已学习过的词汇中根据用户设置的每天需要复习的词汇量随机选择词汇供用户进行复习。4.系统设置:用户可以这这个界面设置每日学习和复习的词汇量。本App操作界面简洁清晰,没有任何广告,使得用户使用起来会感觉更加方便,快捷。这款大学生英语四六级学习app所适用的群体非常具有针对性,能够满足大学生英语等级考试的词汇要求,对于提高大学生英语等级考试的通过率有着重要作用。2系统分析2.1需求分析本软件是一款基于Android系统平台下的应用程序,进入app后首先会出现一个欢迎界面,然后会切换到默认的首页即词汇学习界面。本app主要有以下四个界面,每个界面分别实现了不同的功能。1.词汇学习界面:该界面的左上角会提示用户今天该学习的词汇量(词汇量由用户自行设置),右上角会显示该单词是今天要学习的第几个单词/今天学习的总词汇量,页面正中间会出现四级或六级的大纲词汇(根据用户所选择的词库进行调整),单词旁边有单词的发音,单词正下方有单词的中文翻译,中文翻译下面有单词的例句,界面下方有“上一个”和“下一个”的按钮,单击会切换到下一个单词或上一个单词的学习界面,同时左上角的提示用户今天该学习的词汇量会-1(单击上一个单词则不变)。当时间进入到第二天则重新切换到词汇学习的界面,或者当用户在系统设置中增加了今日需学习的词汇量时,也会重新切换到词汇学习的界面。2.词汇复习界面:该界面的左上角会提示用户今天该复习的词汇量(词汇量由用户自行设置),右上角会显示该单词是今天要复习的第几个单词/今天学习的总词汇量,页面正中间会出现已学习的四级或六级的大纲词汇(根据用户所选择的词库进行调整),单词下方有提示用户读出单词的中文释义的消息,单击屏幕,会显示该单词的发音,中文释义及例句并出现下一个单词的按钮,点击会进入下一个单词的复习界面。当时间进入到第二天则重新切换到词汇复习的界面,或者当用户在系统设置中增加了今日需复习的词汇量时,也会重新切换到词汇复习的界面。3.词库管理界面:该界面会显示当前所学习的单词是四级还是六级以及两个菜单栏,一个是大学英语四级大纲词汇,另一个是大学英语六级大纲词汇。单击菜单栏会把隐藏在该菜单下的单词显示出来(如果是单击四级大纲词汇则出现四级大纲词汇列表,六级则出现六级大纲词汇列表),单词右边会显示已学习或未学习。点击我正在学界面下方会出现选择四级词汇或六级词汇的按钮,单击则可实现词库的切换,且词汇学习和词汇复习界面会跟着切换。4.系统设置界面:该界面是一个列表,用户可以在此界面设置今天应学习的词汇量及今天应复习的词汇量。2.2可行性分析1.技术可行性分析:对于当代的大学生而言,毕业设计以及毕业论文的完成是从校园向社会过渡的第一道门槛,毕业设计和毕业论文的完成工作不仅是对大学四年所学知识的一个检测,更加考验了我们的自我学习能力以及和同学老师在各个领域的沟通能力。其中更重要的是,和老师的沟通。在交流的过程中,老师会告诉你很多你没有注意到的事情并教给我们,如果你遇到技术问题,老师无疑是第一选择。老师可以帮你分析错误在哪里,应该如何修改这个bug,应该考虑哪些功能等等,当然除了老师之外,我们还应该与同学进行交流,加深对课程的理解,解决今后类似的技术问题。2.经济可行性分析:由于该app的设计与开发是作为个人毕业设计项目的,从预期的效果以及后续的开发成本来说,该项目的经济投资必然不会太大。如果该app能够上架的话,甚至能够带来一定的经济效益,但是带来的效益可大可小,这是很难猜测的。该项目的费用与目前社会上主流的开发项目来说无疑是九牛一毛的,以我目前的经济情况来看是完全可以接受的。无论是从人员还是费用支出来说,这些内容的开支并不大,金钱的投入不会太多,所以该大学英语四六级app的开发在经济上是完全可行的。3.操作可行性分析:在学校里我们所学习的开发技术虽然非常全面,但并不深入。所以一开始我对于操作方面是有些担心的。不过在自己尝试了一段时间之后,我发现一个人独立开发项目会更有积极性,在操作每一个细节的时候都可以查阅资料,来弥补自身技术方面的不足。此外,学校图书馆的文献资源也是非常丰富,在绝大部分情况下都能查询到自己想要收寻的内容和资料。除了翻阅资料文献之外,还可以多问问老师或者同学,去深入了解这个功能是如何实现的,运用了哪些原理和方法,老师和同学都会非常热心的进行解答。自己也可以列出计划,一步一步的按照计划来执行,同时还有导师进行辅导和讲解,如果有哪个功能难以实现的话,也可以参考网上类似的功能案例进行开发实现。因此,对于我来说该项目在操作上是完全可行的。3相关技术及开发工具简介3.1AndroidstudioAndroidStudio是Google基于Intellij思想开发的Android集成开发工具。与EclipseADT一样,AndroidStudio提供了用于开发和调试的嵌入式Android开发工具。Google推出了一个新的Android开发环境AndroidStudio,并用五个新功能增强了开发控制台。AndroidStudio是Google推出的一个新的Android开发环境。开发人员在编写程序时可以在不同大小的屏幕上看到他们的应用程序的外观。AndroidStudio是第一个发布的开发工具,它也将促进基于Android的开发人员的开发。首先要解决的问题是多分辨率。Android设备有大量不同大小和分辨率的屏幕,新的Studio开发人员可以轻松地将其应用程序适应不同分辨率的设备。多语言版本(但不是中文版本)和翻译支持使开发人员能够更好地适应全球开发环境。Studio还提供收入记录。最大的变化是beta测试的功能。Studio提供beta测试,使开发人员能够轻松地测试它们。3.2SQLite数据库SQLite是一个简单的数据库,是一个与acid兼容的关系数据库管理系统,包含在一个相对较小的C库中。它是由D.RichardHIPP创建的一个公共项目。他的设计目标是嵌入,它可以支持Windows/Linux/Unix等主流操作系统,可以与C、PHP、Java等多种编程语言相结合,可以在许多嵌入式产品中使用。它还提供ODBC接口,比MySQL和PostgreSQL这两个世界著名的开源数据库管理系统还要快,SQLite的第一个Alpha版本诞生于2000年5月,自2021年创建至今已有近21年,SQLite也推出了一个版本,SQLite3已经发布。3.3TTS技术TTS是从文本到语言的缩写,即从文本到语言。它是允许机器说话的人机对话的一部分。这是一项很好的工作,同时,运用语言学和心理学的方法,在嵌入式芯片和神经网络设计的支持下,将文本智能地转换成自然语言流。TTS技术可以实时转换文本文件,转换时间以秒为单位计算,独特的智能语音控制和流畅的文本输出节奏,让听者在听到信息时感到自然,没有机器语音输出的冷漠和脆弱,TTS语言合成技术将很快覆盖国家标准的一、二级汉字。实现了120~150个汉字/分钟的快速合成和3~4个汉字/秒的读写速度。所有的发音都是真正普通话的标准发音。有些MP3随身听具有TTS功能。TTS是一个语言合成应用程序,它存储在计算机文件(如帮助文件或网站)中,并以自然语言输出。TTS不仅帮助视力受损的人阅读电脑上的信息,而且TTS应用程序还包括语言控制的电子邮件和语音敏感系统,这些系统通常用于语言识别程序。4系统设计4.1系统目标对于《大学英语四六级学习app》这个基于C/S架构的应用程序,为了能够满足用户使用方便、操作灵活等等的设计要求。本app的设计主要应该重点注意:1.app界面尽量要做到整洁、美观。2.app要重视用户与计算机的交互。3.词汇的发音以及中文释义要准确。4.能准确的区分出已学习和未学习的单词。5.app能够稳定运行、在安全性方面有保障。6.app的实现必须尽量做到操作起来十分方便,如果需要维护,维护起来也十分简单。4.2app功能模块设计该大学英语四六级学习app主要实现了以下四个功能模块:1.词汇学习模块:该模块主要实现了英语四六级大纲词汇的展示,并提供了单词的发音,中文翻译以及单词的例句来帮助用户更好的学习单词,理解该词汇的用法,并且能提示用户今日该学习的词汇量,让用户每天都能够按照计划来学习英语单词并且持之以恒,提高学习效率。2.词汇复习模块:该模块主要实现了对用户已经学习过的词汇进行复习的一个功能,并且能够提示用户今天应当复习的词汇量。通过让用户看英语单词来回忆该单词发音和中文释义的方式来帮助用户巩固所学的单词,让用户对于学习过的单词更加记忆深刻。3.词库管理模块:该模块主要实现了不同用户对于不同的英语等级考试词汇学习的需求,包括大学生英语四级考试以及大学生英语六级考试,用户能够在该模块根据自身情况选择大纲词汇进行学习。并且点开大纲词汇后,会显示大纲词汇中详细的单词,并在单词的末尾显示该单词的学习情况(已学习或未学习)4.系统设置模块:该模块主要实现了今日所需学习的词汇量以及今日所需复习的词汇量的设置。用户可以根据自身的学习能力调整每日学习和复习的词汇量。4.3数据库设计本次英语四六级学习app的数据库设计使用了LitePal数据框架,LitePal是一款开源的Android数据库框架,它采用了对象关系映射(ORM)的模式,并将我们平时开发最常用到的一些数据库功能进行了封装,使得不用编写一行SQL语句就可以完成各种建表和增删改查的操作。在本次英语四六级学习app的开发中,我设计了两个表来存储app中所有的单词数据,一个是VocabularyBean单词表,用于存放单词,一个是LearningBean学习进度表,用于存储学习的进度。两个表的数据类型定义如下图所示:图4.1单词表数据类型定义图4.2学习进度表数据类型定义然后将具体数据写入到ConstantList文件中,如下图:图4.3写入具体数据5系统的实现5.1词汇学习模块功能的实现5.1.1词汇学习模块界面该界面的左上角会提示用户今天该学习的词汇量,右上角会显示该单词是今天要学习的第几个单词/今天学习的总词汇量,页面正中间会出现四级或六级的大纲词汇,单词旁边有单词的发音,单词正下方有单词的中文翻译,中文翻译下面有单词的例句,界面下方有“上一个”和“下一个”的按钮(如果是今天学习的第一个单词则没有“上一个”)的按钮,词汇学习界面设计主要代码和页面截图如下:图5.1app词汇学习界面设计代码图5.2app词汇学习界面5.1.2词汇学习模块主要代码查询学习进度并判断是四级词汇还是六级词汇:
privatevoidinit(){
mBean=LitePal.findFirst(LearninngBean.class);//获取学习记录
Log.e("!!!!",mBean.toString());
intlevel=mBean.getWordLevel();//获取现在学习的词汇等级
study=mBean.getStudy();//获取每日学习量
learningNum=level==0?mBean.getLearning4Num():mBean.getLearning6Num();//获取今日学习量
intlearningOffset=level==0?mBean.getLearning4Offset():mBean.getLearning6Offset();//获取学习词汇偏移量
learningOffsetNow=level==0?mBean.getLearning4OffsetNow():mBean.getLearning6OffsetNow();//获取词汇定位
mList.clear();
List<VocabularyBean>list=LitePal.where("type=?",level+"").limit(study).offset(learningOffset).find(VocabularyBean.class);
mList.addAll(list);
判断如果未学习的词汇等于0则隐藏该界面的所有内容:
if(mList.size()==0){
btPrevious.setVisibility(View.GONE);
btNext.setVisibility(View.GONE);
tvShow.setText("您已学完全部词汇");
tvWord.setVisibility(View.GONE);
tvTranslate.setVisibility(View.GONE);
tvExample.setVisibility(View.GONE);
tvExampleTranslate.setVisibility(View.GONE);
tvState.setVisibility(View.GONE);
tvSpeak.setVisibility(View.GONE);
tvTitle.setVisibility(View.GONE);
return;
}如果在系统设置更改了今日所学的词汇量,则会将数据传入并刷新:
@Subscribe(threadMode=ThreadMode.MAIN)
publicvoidrefresh(Stringrefresh){
Log.e("1231",refresh);
if(refresh.equals("learning")||refresh.equals("level")){
init();
设置点击事件,如果点击朗读则执行TTS的语音播放:
@OnClick(R.id.tv_speak)
publicvoidonClick(){
Log.e("!!!","123123");
tts.speak(tvWord.getText().toString(),TextToSpeech.QUEUE_FLUSH,null);
设置单击事件,点击下一个单词,会显示上一个单词的按钮:
@OnClick(R.id.bt_next)
publicvoidonClickNext(){
btPrevious.setVisibility(View.VISIBLE);
判断是否为最后一个单词,是的话隐藏下一个单词的按钮:
if(learningOffsetNow>=mList.size()-1){//最后一个单词处理
btNext.setVisibility(View.GONE);判断学习的单词并更新两个表中的数据,更新今日还需学习的单词和单词的偏移量:
if(mList.get(learningOffsetNow).getStudy()==0){//未学习
ContentValuesvalues=newContentValues();
values.put("study",1);
LitePal.update(VocabularyBean.class,values,mList.get(learningOffsetNow).getId());
mList.get(learningOffsetNow).setStudy(1);
learningNum++;
ContentValueslearning=newContentValues();
learning.put(mBean.getWordLevel()==0?"learning4Num":"learning6Num",learningNum);
LitePal.update(LearninngBean.class,learning,mBean.getId());
if(study-learningNum>=0){
showWord();
if(mList.get(learningOffsetNow).getStudy()==0){//未学习
ContentValuesvalues=newContentValues();
values.put("study",1);
LitePal.update(VocabularyBean.class,values,mList.get(learningOffsetNow).getId());
mList.get(learningOffsetNow).setStudy(1);
learningNum++;
learningOffsetNow++;
ContentValueslearning=newContentValues();
learning.put(mBean.getWordLevel()==0?"learning4Num":"learning6Num",learningNum);
learning.put(mBean.getWordLevel()==0?"learning4OffsetNow":"learning6OffsetNow",learningOffsetNow);
LitePal.update(LearninngBean.class,learning,mBean.getId());
if(study-learningNum>=0){
showWord();
}
}else{
learningOffsetNow++;
ContentValueslearning=newContentValues();
learning.put(mBean.getWordLevel()==0?"learning4OffsetNow":"learning6OffsetNow",learningOffsetNow);
LitePal.update(LearninngBean.class,learning,mBean.getId());
if(study-learningNum>=0){
showWord();
}
}
}
设置单击事件,点击上一个按钮显示上一个单词的内容,此时只需要更新偏移量:
@OnClick(R.id.bt_previous)
publicvoidonClickPrevious(){
learningOffsetNow--;
ContentValueslearning=newContentValues();
learning.put(mBean.getWordLevel()==0?"learning4OffsetNow":"learning6OffsetNow",learningOffsetNow);
LitePal.update(LearninngBean.class,learning,mBean.getId());
if(learningOffsetNow>0){
showWord();
}else{
showWord();
btPrevious.setVisibility(View.GONE);
}
btNext.setVisibility(View.VISIBLE);
}显示左上角的提示信息及单词内容:
privatevoidshowWord(){
tvShow.setText("今日还需要学习"+(study-learningNum)+"个词汇");
tvWord.setText(mList.get(learningOffsetNow).getWord());
tvTranslate.setText(mList.get(learningOffsetNow).getTranslate());
tvExample.setText(mList.get(learningOffsetNow).getExample());
tvExampleTranslate.setText(mList.get(learningOffsetNow).getExampleTranslate());
Stringstr=mList.get(learningOffsetNow).getStudy()==0?"未学习"+(learningOffsetNow+1)+"|"+study:"已学习"+(learningOffsetNow+1)+"|"+study;
Log.e("!!!!",str);
tvState.setText(str);5.2词汇复习模块功能的实现5.2.1词汇复习模块界面该界面的左上角会提示用户今天该复习的词汇量,右上角会显示该单词是今天要复习的第几个单词/今天学习的总词汇量,页面正中间会出现已学习的四级或六级的大纲词汇,单词下方有提示消息,提示用户说出单词的发音及中文释义,词汇复习界面设计主要代码和页面截图如下:图5.3app词汇复习界面设计代码图5.4app词汇复习界面5.2.2词汇复习模块主要代码查询复习进度并判断是四级词汇还是六级词汇:
privatevoidinit(){
mBean=LitePal.findFirst(LearninngBean.class);//获取学习记录
Log.e("!!!!",mBean.toString());
intlevel=mBean.getWordLevel();//获取现在复习的词汇等级
review=mBean.getReview();//获取每日复习量
reviewNum=level==0?mBean.getReview4Num():mBean.getReview6Num();//获取今日复习量
intreviewOffset=level==0?mBean.getReview4Offset():mBean.getReview6Offset();//获取复习词汇偏移量
reviewOffsetNow=level==0?mBean.getReview4OffsetNow():mBean.getReview6OffsetNow();//获取词汇定位
mList=LitePal.where("type=?andstudy=1",level+"").limit(review).offset(reviewOffset).find(VocabularyBean.class);
Log.e("!!!",mList.toString());判断未复习的词汇如果等于0则隐藏单词的信息,不是则显示单词的信息:
if(mList.size()==0){
btPrevious.setVisibility(View.GONE);
btNext.setVisibility(View.GONE);
tvShow.setText("您已复习完全部词汇");
tvWord.setVisibility(View.GONE);
tvTranslate.setVisibility(View.GONE);
tvExample.setVisibility(View.GONE);
tvExampleTranslate.setVisibility(View.GONE);
tvState.setVisibility(View.GONE);
tvSpeak.setVisibility(View.GONE);
tvTitle.setVisibility(View.GONE);
return;
}else{
tvWord.setVisibility(View.VISIBLE);
tvTranslate.setVisibility(View.VISIBLE);
tvExample.setVisibility(View.VISIBLE);
tvExampleTranslate.setVisibility(View.VISIBLE);
tvState.setVisibility(View.VISIBLE);
tvSpeak.setVisibility(View.VISIBLE);
tvTitle.setVisibility(View.VISIBLE);
}
如果在系统设置中更改了今日复习的词汇量,则会将数据传入并更新:
@Subscribe(threadMode=ThreadMode.MAIN)
publicvoidrefresh(Stringrefresh){
Log.e("6456",refresh);
if(refresh.equals("review")||refresh.equals("level")){
init();
}
}
设置单击事件,如果点击朗读则执行TTS的语音播放:
@OnClick({R.id.tv_speak,R.id.bt_previous,R.id.bt_next,R.id.ll_mask})
publicvoidonClick(Viewview){
switch(view.getId()){
caseR.id.tv_speak:
tts.speak(tvWord.getText().toString(),TextToSpeech.QUEUE_FLUSH,null);
判断是否为最后一个单词,是的话隐藏下一个单词的按钮:
if(reviewOffsetNow>=mList.size()-1){//最后一个单词处理
btNext.setVisibility(View.GONE);判断复习的单词并更新两个表中的数据,更新今日还需复习的单词数及单词的偏移量:
if(mList.get(reviewOffsetNow).getReview()==0){//未复习
ContentValuesvalues=newContentValues();
values.put("review",1);
LitePal.update(VocabularyBean.class,values,mList.get(reviewOffsetNow).getId());
mList.get(reviewOffsetNow).setStudy(1);
reviewNum++;
ContentValuescontentValues=newContentValues();
contentValues.put(mBean.getWordLevel()==0?"review4Num":"review6Num",reviewNum);
LitePal.update(LearninngBean.class,contentValues,mBean.getId());
if(review-reviewNum>=0){
showWord();
}
llShow.setVisibility(View.GONE);
}
return;
}
if(mList.get(reviewOffsetNow).getReview()==0){//未复习
ContentValuesvalues=newContentValues();
values.put("review",1);
LitePal.update(VocabularyBean.class,values,mList.get(reviewOffsetNow).getId());
mList.get(reviewOffsetNow).setReview(1);
reviewNum++;
reviewOffsetNow++;
ContentValuescontentValues=newContentValues();
contentValues.put(mBean.getWordLevel()==0?"review4Num":"review6Num",reviewNum);
contentValues.put(mBean.getWordLevel()==0?"review4OffsetNow":"review6OffsetNow",reviewOffsetNow);
LitePal.update(LearninngBean.class,contentValues,mBean.getId());
if(review-reviewNum>=0){
showWord();
}
llShow.setVisibility(View.GONE);
}else{
reviewOffsetNow++;
ContentValuescontentValues=newContentValues();
contentValues.put(mBean.getWordLevel()==0?"review4OffsetNow":"review6OffsetNow",reviewOffsetNow);
LitePal.update(LearninngBean.class,contentValues,mBean.getId());
if(review-reviewNum>=0){
showWord();
}
}
break;
显示左上角的提示信息以及单词的信息:
privatevoidshowWord(){
Log.e("!!!",review+",,"+reviewNum);
tvShow.setText("今日还需要复习"+(review-reviewNum)+"个词汇");
tvWord.setText(mList.get(reviewOffsetNow).getWord());
tvTranslate.setText(mList.get(reviewOffsetNow).getTranslate());
tvExample.setText(mList.get(reviewOffsetNow).getExample());
tvExampleTranslate.setText(mList.get(reviewOffsetNow).getExampleTranslate());
tvState.setText(mList.get(reviewOffsetNow).getReview()==0?"未复习"+(reviewOffsetNow+1)+"|"+review:"已复习"+(reviewOffsetNow+1)+"|"+review);
}
5.3词库管理模块功能的实现5.3.1词库管理模块界面该界面会显示用户正在学习的词库和两个菜单栏,一个是大学英语四级大纲词汇,另一个是大学英语六级大纲词汇。单击菜单栏会把隐藏在该菜单下的单词显示出来单词右边会显示已学习或未学习,词库管理界面设计主要代码和页面截图如下:图5.5app词库管理界面设计代码图5.6app词库管理界面5.3.2词库管理模块主要代码使用二级列表来显示四六级的词库单词,用到了ExpandableListAdapter适配器:
@Override
publicViewonCreateView(LayoutInflaterinflater,ViewGroupcontainer,
BundlesavedInstanceState){
//Inflatethelayoutforthisfragment
Viewview=inflater.inflate(R.layout.fragment_word_manage,container,false);
unbinder=ButterKnife.bind(this,view);
mBean=LitePal.findFirst(LearninngBean.class);
tvType.setText(mBean.getWordLevel()==0?"英语四级":"英语六级");
List<VocabularyBean>list1=LitePal.where("type=?","0").find(VocabularyBean.class);
List<VocabularyBean>list2=LitePal.where("type=?","1").find(VocabularyBean.class);
WordListwordList1=newWordList("大学英语四级词汇",list1);
WordListwordList2=newWordList("大学英语六级词汇",list2);
mList.add(wordList1);
mList.add(wordList2);
adapter=newExpandableListAdapter(getActivity(),mList);
expandableListView.setAdapter(adapter);
returnview;
}
设置一个点击事件,判断点击的是四级词库还是六级词库然后在列表下显示该词库的单词:
@OnClick(R.id.rl_type)
publicvoidonClick(){
List<TieBean>datass=newArrayList<>();
datass.add(newTieBean("大学四级"));
datass.add(newTieBean("大学六级"));
DialogUIUtils.showSheet(getActivity(),datass,
"取消",Gravity.BOTTOM,true,true,newDialogUIItemListener(){
@Override
publicvoidonItemClick(CharSequencetext,inti){
Log.e("!!!!",i+"");
tvType.setText(i==0?"英语四级":"英语六级");
ContentValuesvalues=newContentValues();
values.put("wordLevel",i+"");
LitePal.update(LearninngBean.class,values,mBean.getId());
EventBus.getDefault().post(newString("level"));
}
}).show();
}
}5.4系统设置模块功能的实现5.4.1系统设置模块界面该界面是一个列表,用户可以在此界面设置今天应学习的词汇量及今天应复习的词汇量。系统设置界面设计的主要代码和页面截图如下:图5.7app系统设置界面设计代码图5.8app系统设置界面5.4.2系统设置模块主要代码从数据库中取出学习进度的数据:
mBean=LitePal.findFirst(LearninngBean.class);
study=mBean.getStudy();
review=mBean.getReview();
设置学习或复习词汇的数量并显示:
tvReviewNum.setText(review+"个");
tvStudyNum.setText(study+"个");
returnview;
}
设置点击事件,点击每日学习的词汇量会弹出小框提示用户设置:
@OnClick({R.id.rl_study,R.id.rl_review})
publicvoidonClick(Viewview){
switch(view.getId()){
caseR.id.rl_study:
finalReconfirmDialogdialog=newReconfirmDialog(getActivity());
dialog
.setSingle(true)
.setTitle("每日学习词汇量设置")
.setName("词汇量")
.setOnClickBottomListener(newReconfirmDialog.OnClickBottomListener(){
@Override
publicvoidonPositiveClick(){
Stringvalue=dialog.getMessage();
if("".equals(value)){
Toast.makeText(getActivity(),"请输入词汇量",Toast.LENGTH_SHORT).show();
return;
}查询数据库并更新数据:
LearninngBeanbean=LitePal.findFirst(LearninngBean.class);
ContentValuesvalues=newContentValues();
values.put("study",value);
values.put("learning4Num","0");
values.put("learning6Num","0");
values.put("learning4Offset",bean.getLearning4Offset()+bean.getLearning4Num());
values.put("learning6Offset",bean.getLearning6Offset()+bean.getLearning6Num());
values.put("learning4OffsetNow","0");
values.put("learning6OffsetNow","0");
LitePal.update(LearninngBean.class,values,mBean.getId());
EventBus.getDefault().post(newString("learning"));
tvStudyNum.setText(value+"个");
dialog.dismiss();
}下面是设置今日复习的词汇量,方法同上:
@Override
publicvoidonNegtiveClick(){
dialog.dismiss();
}
}).show();
break;
caseR.id.rl_review:
finalReconfirmDialogdialog1=newReconfirmDialog(getActivity());
dialog1
.setSingle(true)
.setTitle("每日复习词汇量设置")
.setName("词汇量")
.setOnClickBottomListener(newReconfirmDialog.OnClickBottomListener(){
@Override
publicvoidonPositiveClick(){
Stringvalue=dialog1.getMessage();
if("".equals(value)){
Toast.makeText(getActivity(),"请输入词汇量",Toast.LENGTH_SHORT).show();
return;
}
LearninngBeanbean=LitePal.findFirst(LearninngBean.class);
ContentValuesvalues=newContentValues();
values.put("review",value);
values.put("review4Num","0");
values.put("review6Num","0");
values.put("review4Offset",bean.getReview4Offset()+bean.getReview4Num());
values.put("review6Offset",bean.getReview6Offset()+bean.getReview6Num());
values.put("review4OffsetNow","0");
values.put("review6OffsetNow","0");
LitePal.update(LearninngBean.class,values,mBean.getId());
EventBus.getDefault().post(newString("review"));
tvReviewNum.setText(value+"个");
dialog1.dismiss();
}
6系统的测试众所周知,系统调试前最重要的工作是质量检查,即对系统进行测试,测试的作用不容忽视,在功能模块的测试用例设计和基于测试用例的系统测试中,许多以前被忽略的bug经常被发现,只有在系统发布之前对其进行测试,才能有效地保证系统的稳定性。为了发现很多以前忽略的bug,我在应用程序开发过程中也做了很多单元测试和周期性测试,应用程序开发完成后,我自然进行了一次全局集成测试,为了得到更好的结果,我主要使用黑盒测试,具体测试流程如下:6.1测试词汇学习功能点击打开app进入到默认的词汇学习界面,界面左上角会提示用户今天该学习的词汇量,右上角会显示该单词是今天要学习的第几个单词/今天学习的总词汇量,页面正中间会出现四级或六级的大纲词汇,单词旁边有单词的发音,单词正下方有单词的中文翻译,中文翻译下面有单词的例句,界面下方有和“下一个”的按钮,如下图所示:图6.1词汇学习模块测试-1点击下一个按钮,app会切换到下一个单词的学习界面,同时左上角今日还需学习的词汇量-1,由上角未学习的词汇会切换到第二个单词,总量不变,并且下方多出“上一个”的按钮,如下图所示:图6.2词汇学习模块测试-2此时点击上一个按钮,会切换回上一个单词的学习界面,但今日还需学习的单词数量不会发生变化,如下图所示:图6.3词汇学习模块测试-3点击发音,app会发出该单词的读音,至此,词汇学习模块的各功能测试完
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026海南省高校毕业生“三支一扶”计划招募备考题库含答案详解(完整版)
- 2026安徽铜陵市铜官区西湖医院招聘编外工作人员5人备考题库含答案详解(综合题)
- 2026甘肃酒泉金塔县总医院招聘聘用制工作人员招聘27人备考题库含答案详解(b卷)
- 2026宁夏银川市卫生健康委员会所属事业单位自主招聘博士研究生19人备考题库及完整答案详解1套
- 2026江苏无锡市外服人才科技有限公司招聘4人备考题库含答案详解(培优)
- 2026广东江门市江海区银信资产管理有限公司招聘2人备考题库附答案详解(综合题)
- 2026年物联网智能家居安全报告及未来五至十年发展报告
- 2026年法律常识基础理论考试题目
- 2026年智慧农业与数字乡村应用场景题库
- 2026年环境保护法规及实施措施解析
- 纺粘针刺非织造布制作工操作知识考核试卷含答案
- 2025年国防军事动员教育知识竞赛题库及答案(共50题)
- 泛光照明施工安全措施方案
- KPS评分表模板及使用指南
- 2025年专利代理师资格真题及答案解析
- 养老院组织架构及岗位职责说明
- 2025年1月浙江省高考技术试卷真题(含答案)
- 两办关于进一步加强矿山安全生产意见
- 2025年湖南邵阳市中考物理考试真题及答案
- 广东中考化学三年(2023-2025)真题分类汇编:专题06 金属和金属矿物(解析版)
- 钢构消防车库施工方案
评论
0/150
提交评论