基于艾宾浩斯记忆曲线的单词记忆系统的设计与实现毕业论文.docx
- 文档编号:9550300
- 上传时间:2023-02-05
- 格式:DOCX
- 页数:52
- 大小:1.47MB
基于艾宾浩斯记忆曲线的单词记忆系统的设计与实现毕业论文.docx
《基于艾宾浩斯记忆曲线的单词记忆系统的设计与实现毕业论文.docx》由会员分享,可在线阅读,更多相关《基于艾宾浩斯记忆曲线的单词记忆系统的设计与实现毕业论文.docx(52页珍藏版)》请在冰豆网上搜索。
基于艾宾浩斯记忆曲线的单词记忆系统的设计与实现毕业论文
毕业设计
中文题目
基于艾宾浩斯记忆曲线的单词记忆
系统的设计与实现
英文题目
DesignandImplementationof
theWord-MemorySystemBasedon
EbbinghausCurve
摘要
当前英语地位日趋重要,词汇量成为制约大部分人英语能力的障碍。
为帮助人们更加轻松、高效的完成单词记忆过程,本次项目将结合心理学原理设计开发一个基于B/S架构的单词记忆系统。
系统主要实现记忆单词的基本功能,如:
基于艾宾浩斯记忆曲线的任务进程初始化、进程参数动态更新、记忆曲线每日修正、任务列表动态初始化、动态调整任务推送次序等核心功能。
与其他同类系统不同的是,该系统采用了心理学的研究成果,更符合人类的记忆活动,并能够根据用户的操作不断地更新用户的记忆曲线使之更符合用户个性化的记忆能力。
系统采用java编程,核心技术涉及:
数据库编程、Strut2框架、轻量级数据交换格式JSON、ExtJS的Ajax数据代理模式及界面显示技术。
关键词:
艾宾浩斯;单词记忆系统;记忆曲线更新
ABSTRACT
Englishhasbeingbecomemoreandmoreimportant,Limitedvocabularyisabarriertosomanypeople.Tohelppeoplerememberwordscomfortableandmoreefficient.Thisprojectappliedthepsychologicalprinciples,designandimplementationofsystembase-onB/Sarchitecture.Thesystemachievebasicfunctionofrememberwords.
Thecorebusinessincludesthefollowingfunctions.Initializeauserforgettingcurvebase-onEbbinghausCurve.Curve’sparametersupdatedynamicallybyuseroperation.Refreshusercurve.Generateareviewplanbyuserforgettingcurve.
Unlikeotherwordmemorysystem,Thissystemisbase-onEbbinghausCurvesoitcanupdateCurve’sparametersdynamically.Itmeansthatitbecomesmoreinaccordancewithhuman’smemorylevel.ThissystemcodeinJavaanditappliedtechniquelike:
SQLprogramming,Struts2,JSON,Ajax,ExtJS.
KeyWords:
EbbinghausForgettingCurve;WordMemorysystem;Refreshusercurve
第1章开发背景
1.1目的和意义
目前英语地位日趋重要,单词的词汇量是一个人英语能力及水平极大的重要体现,而背单词依旧是困扰许多人的地方,原因如下:
英语单词多而繁杂,面对整整一本的单词词典人们总是望而却步,不从何入手。
开始记忆以后没有安排恰当计划,零散的记忆,效率低下,久而久之看不见成果,便缺乏动力。
根据双重遗忘理论,人们不仅仅是忘记了单词本身,还会忘记了今天自己该复习什么单词[1],双重遗忘让我们错失了将单词从短期记忆转化成长期记忆的机会。
背单词的行为本身涉及到两个概念“记忆”和“遗忘”。
记忆是将需要记忆的元素在大脑中形成一种记忆的链结。
它是学习的过程。
艾宾浩斯曾提出,记忆可以分为瞬时记忆、短时记忆和长期记忆[2]。
遗忘是指记忆元素之间的链结弱化甚至消失,导致人们对某个记忆元素不再回忆起来。
记忆和遗忘相互制衡并存,但它们是有规律的,这就是著名的“艾宾浩斯遗忘原理”也就是“记忆曲线”或者“遗忘曲线”。
众所周知,要记住一样东西必须反复的复习重复,才能达到牢记状态,而艾宾浩斯遗忘原理告诉我们遵循记忆与遗忘的规律进行复习,将会事半功倍。
鉴于以上种种原因,本次项目设计了基于艾宾浩斯记忆曲线的单词记忆的系统,通过它,可以解决人们背单词的困扰,系统能够每天提供新增单词交由用户记忆,可以动态的根据“记忆曲线”将你最该复习的单词呈现给你,将极大的提高人们记忆效率。
1.2设计思想
该系统为Web项目。
将采用MVC的设计模式,基于B/S架构,使用Eclipse作为开发工具、MYSQL作为数据库实现。
其实现语言涉及:
Java、SQL、Javascript、html等等。
项目涉及的技术思想包含:
三层架构、Struts2框架、JSON数据格式、ExtJS、Ajax、前台数据代理技术。
后台项目的设计采用三层架构,将业务逻辑与数据库操作做分层处理,业务逻辑层不直接参与数据库操作的相关工作,它将通过调用数据库操作层实现对数据库的访问[3]。
业务流程的具体实现则通过业务逻辑层方法的相互调用实现。
前台的项目的实现采用Struts2框架,通过核心过滤器过滤页面请求,使其调用相应后台业务逻辑进行数据采集与处理,再通过Struts2流转控制机制进行页面流转控制反馈给用户显示。
1.3开发目标
该系统将主要实现以下几个目标与功能:
1.帮助用户实现信息化管理自己记忆单词的日程安排。
2.提供友好的界面供用户复习浏览单词、查看数据分析。
3.根据艾宾浩斯记忆曲线原理生成用户记忆曲线。
4.根据用户操作动态修正用户记忆曲线参数。
5.根据用户记忆曲线动态调整复习计划。
6.根据用户复习计划初始化任务列表。
7.实现任务单词推送次序调整动态更新。
系统通过实现以上几个核心功能,达到提高用户记忆效率的效果。
并在开发过程中使用较为新颖的技术及设计思想。
力求项目的创新性与可靠性。
第2章使用技术说明
2.1Struts2
本系统中前台UI的控制流转全部由Struts实现,故而在此对其进行简单的介绍。
Struts2是Struts与WebWork合并后的产物,它的最大亮点便是抛弃了Struts1中惹人厌的ActionFormBean。
Struts2对MVC模式的诠释更加的干净利落,HTTP请求到达核心控制器之后,经过处理直接找到Action对象,执行完相应代码,然后返回设定好的视图回到浏览器。
整个流程清晰明了,简单易懂,只要学会了配置struts.xml文件。
就可以轻松的完成UI页面流转的控制。
同时Struts2提供了丰富的标签库,可以更高效的完成数据的处理[4]。
2.2SQL编程
考虑到业界对ORM组件效率的质疑[5]。
本次毕业设计将所有的数据库操作都使用SQL编程,故在此对其进行简单介绍。
SQL如今被广泛的采用很好的证明了它的价值,SQL是非过程化语言,这里提到的非过程化、过程化不同于面向对象和面向过程的概念,所谓过程化就是,我们必须告诉机器每一步需要干什么,该怎么干。
开发人员虽然没有参与计算,但是机器执行的流程开放人员都了如指掌,而非过程化语言只需要告诉机器做什么即可,具体机器如何实现,开发人员不必关心,比如最简单的查询语句,我们只需要告诉机器我们要查什么,具体怎么查?
交给机器去实现。
所以非过程化语言在完成复杂任务的检索的时候具有不可比拟的优势,我们只需要告诉机器我们想要的东西就可以了。
而过程化语言我们必须事必躬亲,去安排具体的流程和实现过程[6]。
前文提到ORM组件的效率问题,这里不得不提到SQL的另一个特性,轻松嵌套,每条SQL语句的输入输出。
并且其输入输出的都是同一种类型的对象(记录集),这意味着SQL语句具有嵌套的特性,可以通过多个SQL语句嵌套完成更为复杂的功能,而这些功能若是用其他语言将会极其繁琐。
综合上述几点,本次项目中决定采用SQL编程完成所有与数据库的相关的操作。
2.3AJAX与ExtJS
ExtJS是一种用于创建前端用户界面的框架,它同时也是一种基本与后台技术无关的前端Ajax框架。
他提供了几乎所有的对于列表的操作,另外它有着良好的界面和一系列封装好的组件供你使用[7]。
它同时提供了利用AJAX技术读取数据的数据代理功能,支持JSON格式的读取功能。
2.4JSON轻量级数据格式简介
JSON(JavaScriptObjectNotation)它其实是一种轻量级的数据交换格式。
它是基于JavaScript的一个子集。
JSON采用了完全独立于语言之外的一种文本格式,但也包含了一下C家族的某些习惯(包括类似C++,C,Java,JavaScrip等等)。
这些特性使得JSON理所当然的成为一种理想的数据交换语言。
因为它不仅仅易于人的阅读和编写,同时也易于机器的解析和生成[8]。
第3章系统需求分析
3.1引言
3.1.1项目背景
随着英语的地位日趋重要,很多人为了学好英语而绞尽脑汁,单词的词汇量是一个人英语能力及水平极大的重要体现,如何提高词汇量,如何提供记忆的效率成了人们关注的重心,大家都在寻找最省时最省力的方式来记忆单词。
德国实验心理学家艾宾浩斯早在上世纪初就通过实验心理学的方式参透了人类记忆与遗忘的规律,并且发布了他的研究报告。
但是却并没有被大多数人所了解,所以许多人在找寻的完美的记忆方式,其实前人已经给出了答案,时代变迁,如今的科技已经可以让机器帮我们解决许多问题,如何通过程序让百年前前人的智慧绽放光芒,解决现在人们的困难成了程序员的任务。
为了帮助人们更加轻松高效的完成单词记忆的过程.本次项目将结合心理学原理设计开发一个基于B/S架构的单词记忆系统。
本系统主要单词记忆将实现以下几个功能:
一、用户记忆曲线生成、调整功能。
二、用户复习计划生成、调整功能。
三、用户任务列表生成、调整功能。
四、用户单词复习、浏览功能。
同时,为了提高自身能力,在系统设计的整个过程中,将尽可能的合理使用新的技术和未曾使用的框架组件。
例如:
通过ExtJS的数据代理利用Ajax实现部分前后台数据JSON格式交互等等。
3.1.2假定和约束
开发期限:
系统预期的开发期限为60天。
开发环境:
JDK1.6。
开发工具:
Eclipse。
数据库:
MYSQL。
操作系统:
MicrosoftWindow7。
3.2系统总体结构图
单词记忆系统由词库模块、复习计划维护模块、复习模块、浏览模块、用户模块等子模块构成。
每个子模块都具有特殊的操作方法和其特有的业务逻辑。
系统总体结构图如图3.1所示:
图3.1系统总体结构图
3.3系统功能模块分解
3.3.1用户模块
模块描述:
用户模块提供了用户登录验证等基本功能,用户可以通过用户名及密码登录系统、可以设置每日新增单词数量等等。
用户模块用例图如图3.2所示:
图3.2用户模块用例图
3.3.2词库模块
模块描述:
管理员通过词库模块进行词库的浏览、添加和修改操作,管理员可以选择手动添加单个单词,也可以使用XML文件进行批量添加,内部业务逻辑会自动判断词库中是否已经有该单词内容,若该单词已在词库中存在将跳过该单词继续插入下一个单词。
管理员还能对词库中的单词进行修改删除这些基本操作。
词库模块用例图如图3.3所示:
图3.3词库模块用例图
3.3.3记忆曲线模块
记忆曲线模块用例图如图3.4所示:
图3.4记忆曲线模块用例图
模块描述:
记忆曲线的相关操作(如:
初始化、参数修正、曲线更新)均由系统完成,触发相应业务逻辑时自动执行,用户不参与其中。
(具体业务的实现参见“第5章核心业务逻辑介绍”)。
3.3.4复习计划模块
模块描述:
复习计划模块是指复习计划中单词的管理工作,与处理复习行为的功能模块是两种不同概念,请注意区分。
用户登录后,可以执行的操作有:
浏览词库中没有加入自己复习计划中的单词,添加词库中的单词到复习计划,删除自己复习计划中的单词。
这里不提供修改复习计划的功能,若提供用户修改复习计划功能,与系统的业务逻辑不合。
复习计划中单词复习进度等信息的调整由系统根据用户复习单词时的操作自动更新(复习计划的调整更新操作将在“第五章核心业务逻辑介绍”中详细阐述)。
复习计划模块用例图如图3.5所示:
图3.5复习模块用例图
3.3.5复习模块及浏览模块
此部分内容为核心模块,其内容及流程,将在第5章“核心业务逻辑介绍”中详细阐述。
第4章系统概要设计
4.1系统设计思想
采用敏捷迭代式开发,使得该系统的开发是一个逐步求精的过程[9],即开发随着需求和新的业务变化而不断完善。
由于该项目是以学术学习为目的,将不考虑商用因素,在合理的情况下将选择当前最新的技术(项目所有引用的第三方组件框架等,皆是官网下载的最新版本),目的是以便成文后,可为他人在开发类似项目时提供绵薄的帮助与借鉴。
所以整个项目的设计过程中,贯彻如下的设计思想:
创新:
将选用时下最新的技术、工具、框架、组件,使得该系统在一定时间内有一定的学术讨论价值。
求精:
一个好的方法和流程设计,比无数个System.out.print();要更有价值。
将更多的精力投入到代码的设计上去而不是功能的简单堆砌、重复。
4.2系统总体设计
本系统采用时下非常流行的三层架构(MVC)设计,可以这样说几乎所有的Web应用开发都是基于MVC设计模式的[10]。
在MVC设计模式中C(Controller)即控制器负责接收(监听)所有的请求(消息),M(Model)模型,用于表示要被显示的数据和操作,V(View)视图,就是页面可以是html也可以是jsp等等,它负责将Model以某种形式呈现给用户。
在本次项目中的MVC三层架构设计中,struts2扮演着Controller的角色,service层和其调用的数据模型,数据库操作类都属于Model。
前台页面就是View层。
4.3系统工程分离
本次系统采用前后台系统分离的开发方式,将前后台分离成两个工程,WordMemory是后台工程,WordMemoryUI是前台工程。
前台工程通过引用后台工程来处理数据,它只提供页面流转控制和业务逻辑调用,所有数据的具体实现及操作将在后台工程中实现。
系统工程分离的好处:
这意味着在实现前台的时候不需要关心后台的实现,若是多人开发,将大有裨益。
必要时,更换前台工程就可以以另一种方式呈现UI及前台页面流转方式。
此外,将前后台分离后,出现BUG时易定位出错位置。
前后台工程分离结果如图4.1所示:
图4.1工程目录图
4.4系统类结构设计
4.4.1数据模型
本次项目将所有需要操作的实体抽象成数据对象,也称之为数据模型。
该包存在于后台工程中,该包中存放着系统中所有数据模型,为其他层提供抽象过后的类。
将该包中的类实例化后便可以操作对象的方式进行数据操作。
每个model类中都提供了属性的get(),set()方法(接口)供程序访问。
Model包内容如图4.2所示:
图4.2model包
4.4.2DAO层
本次项目中将所有与数据库操作相关的方法都集成在该包的类中,DAO层将与数据库的交互集中管理,方便业务逻辑层的调用。
该包存在于后台工程中,包含针对不同数据模型的数据库操作类,提供了诸如:
增删查改等相关的与数据库操作有关的方法。
将其独立分包有利于厘清层次结构,将DAO层完成后,将不需要再操心底层数据库操作的方法。
调用即可。
DAO层中的类如图4.3所示:
图4.3Dao层
考虑到每次对数据库的操作都需要创建与数据库的连接,为了降低系统负担及遵循代码复用的原则,将建立、使用、释放数据库连接的方法集成成一个数据辅助类,它为DAO层各类提供数据库连接和获取Statement、PreparedStatment对象,关闭连接等方法。
DAO层访问数据库辅助类方法如图4.4所示:
图4.4数据库辅助类
4.4.3业务逻辑层
本次项目将系统涉及的业务逻辑集成在一个层次中,称之为业务逻辑层。
该层存在于后台工程中,包含了系统所有业务流程,每个类中的方法均代表了该业务逻辑的各项操作,将其组合就可以完成需求中要求的功能,如:
提供单词复习的TestProcessService类中调用了MissionService中的Init()方法用于在单词复习前对任务列表初始化等等。
业务逻辑层中的类如图4.5所示:
图4.5业务逻辑层
4.4.4控制层
控制层的主要实现依托于Struts2提供的方法,它的主要功能是控制页面的流转及根据用户操作选择相应的业务逻辑层中的方法处理数据,并将处理结果返回给预习定义好的返回页面,完成人机交互过程。
该包在前台工程中,利用Struts2框架控制页面流转,调用业务逻辑层中的方法处理数据。
控制层中的类如图4.6所示:
图4.6控制层
4.5数据库设计
4.5.1E-R模型
根据前文对系统需求和业务逻辑的分析,可以了解单词记忆系统中实体与实体之间的关系。
而实体联系图(E-R图)正是直观表现这种关系的好方法[12]。
本系统中的实体联系图,如图4.7所示。
图4.7单词记忆系统实体-联系图
实体图可以展示各个实体中所包含的属性[12]。
为开发数据库提供依据。
下面将利用实体图一一介绍系统中的各个实体,不再用文字赘述:
用户实体图如图4.8所示。
图4.8用户实体图
词库中的单词实体图如图4.9所示:
图4.9词库中单词实体图
用户单词实体图如图4.10所示:
图4.10用户单词实体图
任务单词实体图如图4.11所示:
图4.11任务单词实体图
记忆级别实体图如图6.6所示:
图4.12记忆级别实体图
4.5.2物理模型
经过上述的分析和设计,结合数据库设计的相关原则,设计出如下几张表结构:
用户表(_user)主要用于存放用户信息及基本参数,主要结构如表4.1所示。
表4.1用户表
字段名
字段类型
字段大小
是否可为空
关键字
说明
id
int
11
否
是
用户编号
name
Varchar
45
否
是
用户姓名
password
Varchar
45
否
用户密码
hasinit
datetime
最近一次更新任务时间
newwordnum
int
11
每天新增单词数
单词表(_word)主要用于存放单词最基本的信息,其中包括了单词、翻译、音标。
系统中所有可使用的单词都必须存在其中。
使用单词时根据单词的id到该表中查询单词的相关内容,其主要结构如表4.2所示
表4.2单词表
字段名
字段类型
字段大小
是否可为空
关键字
说明
id
int
11
否
是
单词编号
word
Varchar
45
否
是
单词内容
trans
Varchar
500
单词翻译
phonetic
Varchar
10
单词音标
用户单词表(_userword)如表4.3所示,用于存放与用户相关的单词,该表中的单词相当于进入了用户的复习计划,它通过wordid与单词表连接,以便获取单词的内容。
表4.3用户单词表
字段名
字段类型
字段大小
是否可为空
关键字
说明
id
int
11
否
是
用户单词
userid
int
11
否
用户编号
wordid
int
11
否
单词编号
testtimes
int
11
复习次数
righttimes
int
11
正确次数
level
int
11
记忆等级
startdate
datetime
进入复习计划的时间
nextdate
datetime
下次复习的时间
任务单词表(_mission)如表4.4所示,用户存放当天复习任务。
表4.4任务单词表
字段名
字段类型
字段大小
是否可为空
关键字
说明
userwordid
int
11
否
是
用户单词编号
userid
int
11
否
用户编号
priority
int
11
否
任务推送次序
sort
Varchar
45
新旧单词标识
firsttime
int
1
是否是当天第一次出现
记忆级别表(_level)如表4.5所示,用于存放用户记忆级别的相关信息。
表4.5记忆级别表
字段名
字段类型
字段大小
是否可为空
关键字
说明
id
int
11
否
是
用户单词编号
userid
int
11
否
用户编号
level
int
11
否
记忆等级
字段名
字段类型
字段大小
是否可为空
关键字
说明
testtimes
Varchar
45
测试次数
righttimes
int
11
答对次数
count
int
11
该级别下次出现时间的偏移量
第5章核心业务逻辑介绍
5.1核心业务逻辑层简述
涉及的核心业务逻辑的类有:
LevelService、MissionService、TestProcessService、UserwordService。
LevelService.java(记忆曲线的业务逻辑):
该业务逻辑提供所有对用户记忆曲线的参数调整,曲线更新等业务需求的操作方法和流程,这些方法通过调用Dao层相应的实现完成业务逻辑内容。
图5.1展示了LevelService中的方法:
图5.1LevelService中的方法
MissionService.java(任务列表的业务逻辑):
该业务逻辑集成了任务列表的业务需求。
提供了相应的实现方法,系统只需要调用相应的方法即可实现想要的业务逻辑。
图5.2展示了MissionService中的方法:
图5.2MissionService中的方法
TestProcessService.java(单词复习行为的业务逻辑):
该业务逻辑实现了复习单词的业务需求,它其中的许多方法是通过调用MissionService中的方法实现的。
控制层在执行复习单词的业务需求时不需要直接调用MissionService层中的方法,该业务逻辑相当于对MissionService做了业务流程上的二次封装,从而简化了控制层Action中繁琐的调用。
它还实现了复习过程中动态调整推送顺序的主要业务逻辑。
图5.3展示了TestProcessService中的方法:
图5.3TestProcessService中的方法
UserwordService.java(复习列表操作逻辑):
该业务逻辑是MissionService、TestProcessService中涉及复习计划操作的基础。
所有涉及更新到复
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 艾宾浩斯 记忆 曲线 单词 系统 设计 实现 毕业论文