web单词记忆软件的开发自考计算机及应用专业毕业论文(编辑修改稿)内容摘要:
相同等特点,方便和计划了程序设计。 ,以配合本软件所需要的在线功能。 (3) ,也赋予了本软件足够的扩展能力以适应以后业务的发展。 NoSQL技术简介 引言NoSQL(Not Only SQL)指非关系型数据库。 ,传统的关系型数据库在应对新型网站或网站应用,尤其是超大规模和高并发类网站应用时,已经显得力不从心。 暴露出了很多难以克服的问题,非关系型数据库则因为其本身的特点,得到了迅速的发展。 NoSQL的特点(1) 可以处理超大量的数据。 传统SQL数据库在针对每秒上万次的查询操作时,还勉强可以应付,但是对于每秒上万次的写入操作所要求的磁盘IO性能来说,就力不从心了。 而对于新兴的社交网络,或者搜索引擎,要求的往往是数十万次的高要求。 (2) NoSQL可以很方便的运行在廉价PC集群或者云服务器上。 因为NoSql的松散组织特点,更利于分布式应用。 而利用廉价PC集群更能降低企业成本。 (3) 没有过多的操作。 NoSql支持者也承认关系数据库提供了无可比拟的功能集合,而且在数据完整性上也发挥了稳定,但是很多情况下企业对于这些的要求可能没那么多。 (4) NoSql的项目大多数是开源的,缺乏供应商的正式支持,一般从社区寻求支持。 . NoSQL和本课题的联系(1) 因为本课题软件采用JavaScript实现,而JavaScript的内部存储的最好方法就是使用JSON对象。 JSON作为一个离散的弱类型数据结构,或者说集合类型的对象格式,本身的结构和NoSQL的存储结构大同小异。 故选择NoSQL作为主要数据库技术可以更方便的配合JavaScript的技术特点。 (2) 本程序的主要数据库内容并非是安全保密的用户私人文件,而更多是单词信息和单词记忆信息这种对安全性和数据完整性要求不高的数据。 如果使用SQL数据库保存,反而会使得程序代码冗长,查询效率降低。 (3) 本程序的主要存储需求是客户端的,而主流浏览器中有部分并未皆实现WebSQL技术和IndexDB技术。 但因主流桌面浏览器和手机浏览器中已经都实现对LocalStorage技术的支持,故只能选择其作为数据存储的主要手段。 而LocalStorage要存储数据最好的方法就是使用NoSQL风格的JSON数据库。 MVP设计模式简介在面向对象软件的设计里,对象,或者说类是软件组成最基本的部分。 采用设计方法组合这些元素,得到构成面向对象系统的部件,同时这些部件的设计方法和组成方法在不断的完善,为了得到软件工程中关于分工的“高内聚”、“低耦合”的特征,最终这些设计方法逐渐演变发展,统称为设计模式(Design Pattern)。 本节介绍本课题软件所使用的MVP设计模式。 引言MVP(ModelViewPresenter)即把一个应用的输入、处理、输出流程按照Model、View、Presenter的方法进行分离,这样就分成了三个层:模型层,视图层,业务逻辑层(提供者层)。 MVP是从经典的MVC(ModelViewController)模式中演变来的,他们的基本思想相通,Presenter层类似于Controller层,最主要的区别在于MVP模式中的Model和View层不能直接通信,必须通过Presenter层作为中介;而MVC模式中是可以直接通信的。 视图(View)代表用户交互界面,对于Web应用来说,最主要的是指需要显示的HTML界面。 随着应用的规模不断壮大,界面处理的难度也加大了。 MVP的视图层主要工作是视图层面的数据采集和处理,对用户的请求进行响应,然后将响应信息传递给业务逻辑层进行处理。 模型(Model)的作用是保存软件所需要的数据模型,对于业务处理层指提供一些接口,而对视图层来说是透明的。 模型层的所有的操作都在内部完成,只需要在接口上返回处理结果即可。 业务逻辑层(Presenter)是介于视图层和模型层之间的一个层,用来接收来自视图层的用户请求,或者是将模型层的结果发送给视图层来显示,充当它们两者之间的一个桥梁。 在MVP设计模式中,应用程序的逻辑主要在业务逻辑层实现()。 MVP结构流程图 JavaScript下MVP的运行机制 如何在JavaScript下实现MVP构架,是一个技术难点,在这里,本课题的主要实现采取了参考文献[6]中提供的方法,配合作者综合参考其他方法而综合完善的一种独特方法。 主要的信号传递由作者编写的Event类实现的。 Event类的主要实现目的是为了让一个类中实现一个或多个可以绑定的接口,而其他类可以注册这些接口,当事件产生时,就通知这些接口,简介通知对这些接口进行注册的类。 在MVP模式下,JavaScript对应三个层首先要用三个对象(Object)分别表示。 在JavaScript中,没有C++/Java等语言中常见的类(Class)的定义,一种普遍看法是,JavaScript并不是一个传统的“面向对象”语言,而是一个“基于对象”的语言,总体更类似Lambda算子延伸之后的函数式编程语言。 也就是语言中的所有变量、函数、或者任何类型,都是一个对象。 当然JavaScript是可以使用面向对象方法进行编程。 首先的每个操作都表现在视图层的,如点击按钮,或者输入信息。 首先的一个技术难题是怎么样保证信息从视图层传递到业务逻辑层。 本软件使用了一个事件方法,首先定义一个事件类Event,由视图层定义多个事件,例如某个按钮的单击事件是ButtonEvent。 在业务逻辑层初始化时,对视图层的这个事件进行一次或多次注册,也就是说,注册之后,当视图类产生这个按钮单击事件之后,会通过事件类Event传递到业务逻辑层之中,业务逻辑层再根据这个事件类型进行数据处理或者调用Model的数据接口然后将返回的数据更新到视图层。 MVP设计模式的优点(1) 模型与视图完全分离,可以修改视图而不影响模型(2) 可以更高效地使用模型,因为所有的交互都发生在业务逻辑层(3) 可以将一个业务逻辑层用于多个视图,而不需要改变业务逻辑层的逻辑,因为视图的变化总是比模型的变化频繁。 (4) 如果把逻辑放到业务逻辑层中,就可以脱离用户接口来测试这些逻辑。 MVP设计模式与本课题的联系 MVP设计模式是并不是单纯为某种语言或者某种构架服务的,而是针对任何需要分层结构、有显示界面的程序设计都可以使用的。 MVP也正是从传统的三层结构,发展到MVC结构,再从MVC结构中发展进步而来的。 众所周知JavaScript语言是一种事件驱动语言。 而MVP设计模式的层次分明的思想,也可以很好的用事件驱动来描述,这正符合了本课题软件的基本编程思想。 MVP设计模式在实现上是比较难以掌握的,即便经验丰富的软件工程师也很难做到针对MVP设计模式的完美分层和调用,作者自知自己的经验与设计水平可能并没达到MVP设计模式所要求的地步,只是尽量实现了MVP设计模式。 但是从代码和测试的成果来看,已经凸显了MVP设计模式的优势,极大的降低了程序模块间的耦合性,已经基本完成了设计目的。 本章小结 第二章主要介绍了本课题软件在实现时所用到的各种技术简介、它们与本课题的联系。 本课题软件之所以使用这些技术正是因为这些技术的统一性,也就是说这些技术实际上每个之间都是有所联系的,共同组成了一个完整的技术链,为本课题软件服务。 具体这些技术的使用和实现细节等问题,将会在第六章的详细设计中更深入的探讨。 在这之前,本文首先在第三章介绍本课题软件作为一个单词记忆软件的总体软件需求分析。 第三章 软件需求分析本章介绍本课题软件的软件需求分析,为软件的实现做好基础准备。 本地应用程序功能 单词记忆软件的功能模块,代表着用户对单词进行记忆时所需要的功能,这些功能粗略的可以分为:管理单词书、管理生词本,对单词的初次记忆、对单词的复习、单词游戏。 这些部分可以分成独立的功能进行需求分析,而对这些模块进行初始化和总体调用的是“主程序”功能,还有对其他模块功能进行设置与修改的“选项设置”功能。 下面分别对于程序的这些部分进行需求上的详细说明。 主程序 主程序是软件初始化后的第一个主要功能模块,对其设计的主要需求包括:(1) 显示载入窗口,用来提醒用户何时完成了程序的初始化。 (2) 显示主界面,要求各种功能简单明了,一目了然,方便用户进行功能上的选择。 (3) 对各其他功能模块要有按钮或者其他方式连接,而连接处要有弹出式气泡窗的描述性提示,辅助用户对功能进行选择。 (4) 主界面在显示后,应有一个针对本程序功能的介绍性动画,对文字进行滚动以介绍本程序的特点和最简单的使用方式。 (5) 因为本课题软件是单词记忆软件,故在主界面上模仿其他一些单词记忆软件或者单词网站,显示一些关于记忆的小信息、小窍门,或者成语、例句来提高用户对单词记忆的兴趣,扩展用户的语言知识。 初记功能 初记功能,是单词记忆软件最主要的功能之一,其设计的主要目的是帮助用户进行初记,对其设计的主要需求包括:(1) 能读取单词库,优先读取生词本中的单词,如果不足一次单词记忆或者单词本中无单词,就读取当前用户选择的单词书中的单词,并按照用户要求是否打乱记忆顺序。 (2) 能显示要学习的单词信息,包括单词的词义、音标、例句、联想图片等信息,将单词的部分主要信息显示为红色,提高记忆率。 (3) 能按照用户要求跳过某个单词的学习。 (4) 如果用户对初记效果不满意,可以选择重新初记,或者停止初记。 (5) 在用户初记完成之后,可以把已经初记的单词写入数据库,提醒用户复习,为了符合Ebbinghaus记忆曲线,初记后的单词应该立即复习。 可以提醒用户是否进行立即复习。 复习功能 复习功能,是单词记忆软件最主要的功能之一,其设计的主要目的是帮助用户对单词进行回忆,记忆某样东西的唯一方法就是不断的重复记忆,这样才能保证记忆存储到大脑的远期记忆区域并不容易忘记。 单词复习功能的主要需求有:(1) 能判断出当前数据库中哪些单词需要复习,哪些单词现在还不需要复习。 (2) 取出需要复习的单词,并取出相应的单词信息,显示在屏幕上。 (3) 对每个单词的复习进行自动计分。 每个单词初始按照单词以前的错误次数不同分别计为0~10分,而一次拼写正确,就对当前单词增加相应的分数;如果错误,就显示出正确单词,但是此次正确后并不计分。 (4) 在复习结束时,能按照Ebbinghus记忆曲线自动计算下一次复习时间。 单词书管理功能 单词书管理功能,是单词记忆软件最主要的功能之一,其设计的主要目的是整理用户需要记忆的单词书,其主要的功能需求有:(1) 能添加单词书。 可以用户从本地导入单词书,也可以在线下载本课题软件自带的单词书。 可以用多种方式从本地导入单词书,可以用选择框进行选择,也可以将单词书拖拽到本程序中,而导入时要提醒用户导入了多少个单词,有哪些单词因为在本程序中没有单词信息而无法导入,因为本程序已经自带了5万个单词和词组的信息,已经足够任何目的的单词记忆要求,所以没有单词信息的几率是极小的。 (2) 能选择某个单词书为当前单词书,也就是说单词的初记会从此单词中获取单词。 (3) 因为从单词书中获取单词,会使得单词书中某些单词变为“已初记”的状态,故要显示单词书中有多少单词,其中又有多少单词是已经记忆的。 (4) 可以重置当前单词书中“已记忆”的单词数量,让用户能重新记忆某个单词书。 (5) 能对某个单词书进行删除操作,让用户去掉已经不用的单词书。 生词本功能 生词本功能,是单词记忆软件的重要功能,主要的目的是为了让用户能手动录入一些希望马上记忆的单词。 同时在本软件中,生词本也是一个迷你的简明词典,可以在这里查看单词的音标、词义和读音。 生词本功能主要的功能需求有:(1) 能在用户输入单词的同时显示单词信息,并可以对单词进行发音。 而在本程序的词库中没有信息的单词就无法添加到生词本。 (2) 当找到单词信息后,用户可以选择将当前单词添加到生词本中,这样在下一次初记时,就会优先记忆生词本中的单词。 (3) 用户可以选择单独删除某个生词本中的单词。 但是如果这个单词已经初记,并不会在背诵中的词库一并删除。 (4) 用户可以选择批量选择并删除生词本中的单词。 (5) 如果生词本中的单词较多,用户可以按页浏览所有生词本中的单词。 选项设置与存档读档功能 选项设置功能的存在是为了用户能控制本软件的各种参数,针对不同的用户进行不同的优化,而更好的帮助其记忆单词。 存档读档的功能是当用户不希望,或者无法进行在线的进度备份时,而采取的一种备用手段;即用户可以选择将单词信息备份在本地,或者从本地的备份信息恢复。 这样可以方式用户的背诵信息丢失或者当用户想迁移备份信息到其他终端。 选项设置与存档读档功能的主要功能需求有:(1) 显示能调节的各种软件设置信息,给予每个信息以一定提示,帮助用户选择。 (2) 在用户选择某个选项之后,能对用户设置了的信息进行存档。 (3) 能让用户进行手动的在线存档和读档功能。 (4) 能让用户将当前的背诵信息保存在本地,提醒用户将这些信息复制并存储在其他地方。 (5) 能让用户将将本地的存档信息恢复到程序中。 单词游戏功能 单词游戏功能的存在是为了用户在学习过程中方法,或者说以寓教于乐的方式帮助用户更好的记忆或者回忆单词。 单词游戏功能的主要需求如下:(1) 管理现有的所有单词游戏(2) 能让用户进行某些单词游戏,即初始化某些单词游戏并让用户可以进行游戏。 (3) 当用户退出单词游戏时,优先退出到单词游戏功能页面中,使用户可以选择其他游戏。 (4) 记录游戏的得分,提醒用户获得的得分并可以记录。 服务器功能需求服务器主要提供给本地客户端以联网支持,其基本功能应该有让客户端访问的功能、允许用户进行注册的功能,使用户能在线备份与恢复的功能,让用户下载单词语音的功能。 下面分别针对这些功能进行需求上的详细说明: Web访问服务 Web访问服务是服务器提供的一般性服务,如同其他例如Apache,Nginx,Ligd这样软件提供的服务,可以让用户来访问服务器。 用户注册登录服务 用户注册登录服务是服务端要响应客户端传送过来的注册和登录请求,完成注册并将用户数据保存在服务器。web单词记忆软件的开发自考计算机及应用专业毕业论文(编辑修改稿)
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。
用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。