一种基于组件模块的教育开发系统的制作方法

文档序号:16086833发布日期:2018-11-27 22:32阅读:219来源:国知局

本发明涉及的是一种基于组件模块的教育开发系统,属于软件发开技术领域。



背景技术:

近年来随着人们生活水平的提高,对于教育方面的关注日渐增强,而智能手机的普及无疑加速了在线教育的发展。在线教育类APP的出现,使得学生在学习时可以享受更多的优质资源。

传统的做题类APP多采用MVC(model-view-controller模型视图控制)的模式进行开发并且对于多题型的支持少之又少,一般是采用HTML(超文本标记语言)网页的解决方案来实现题目的展示与交互。

现有方案大多采用的是传统的MVC(model-view-controller模型视图控制)模式,该模式在业务变得复杂后会显得十分臃肿,使得开发的成本增加并且项目难以维护,同时对于传统的做题类软件,大都采用HTML(超文本标记语言)网页技术来解决,使用体验较差并且耗费资源。



技术实现要素:

针对上述缺陷,本发明提供了一种基于组件模块的教育开发系统,采用组件化的方案实现业务的解藕,采用CLEAN MVP(简洁型模型视图展示结构)的方式实现逻辑代码的解藕。能够支持课本点读功能、在线课程多媒体视频加载播放和多种题型(选择、填空、点选、连线等)的文本解析、展示以及交互,解决了在不同国产定制ROM(read-only memory只读存储器)中适配的问题,降低了开发和维护的成本,并且有效提高了用户做题的体验。

为达到上述目的,本发明通过以下技术方案来具体实现:

本发明提供了一种基于组件模块的教育开发系统,该系统包括:

均依赖于组件化Service(服务程序)的启动组件、课程组件和工具组件;其中,组件化Service,依赖于基础库,用于提供组件间的交互服务;启动组件,用于完成启动操作;课程组件,用于题型解析和展示;工具组件,用于组件模块间的解藕和模块调用;

组件的架构采用MVP(model-view-presenter)方式,分为Model层、View(视图)层和Presenter(展示)层,其中,Model层为数据模型层,View(视图)层负责UI展示给用户,Presenter(展示)层负责与View(视图)层和Model层交互并且完成逻辑操作。

所述基础库,包含Model数据模型和Library(应用程序拓展)库文件,用于支持每一个组件独立运行调试。

每一个组件对其公开的页面以页面Uri(Uniform Resource Identifier,统一资源标识符)的方式进行注册,每一个Uri对应唯一的页面。

所述每一个组件对其公开的页面以页面Uri(Uniform Resource Identifier,统一资源标识符)的方式进行注册,包括:

组件的路由管理器CourseRouter(课程路由)实现了IComponentRouter(组件路由)接口,IComponentRouter(组件路由)接口中核心的跳转页面包含了跳转页面Uri(Uniform Resource Identifier,统一资源标识符)、跳转传递数据、跳转请求码以及页面启动Flag,其中,CourseRoute(课程路由)根据页面Uri(Uniform Resource Identifier统一资源标识符)与保存的路由表对比来判断跳转页面。

所述启动组件,包含闪屏页、引导页、登录页、绑定手机页和完善信息页,启动组件的流程包括:

首先启动闪屏页,优先判断是否是APP第一次启动,如果是第一次启动则进入引导页,否则判断是否已登录账号,如果未登录账号则进入登录页进行登录注册操作,在登录完成之后进行绑定手机号判断,如果未绑定手机则进入绑定手机,已绑定手机或者绑定完成之后则判断是否用户信息完善,如果完善则进入首页,否则进入完善页并在完善信息之后进入首页。

所述工具组件,包括:工具页、科目练习、听写、单词、口算、口语、听力、练字、知识点、作文、字典、错题本、PK、讲故事和课本点读,均可作为单独的模块被其他组件调用。

所述工具组件实现单模块被调用的技术方案为:

a、创建通用的IFragmentBehavior(周期行为)接口、用于处理模块的行为(例如暂停状态、开始状态以及设置模块回调等);

b、各模块创建各自的回调接口,该回调接口用于与调用组件的通信,口算为IArithmeticCallback(口算回调)、听写为IDictationCallback(听写回调)、听力为IListeningCallback(听力回调)、口语为ISpeakingCallback(口语回调)、单词为IWordCallback(词汇回调);

c、各个模块基于IFragmentBehavior(周期行为)接口分别创建各自的模块接口,口算为IArithmeticBehavior(口算行为函数)、听写为IDictationBehavior(听写行为函数)、听力为IListeningBehavior(听力行为函数)、口语为ISpeakingBehavior(口语行为函数)、单词为IWordBehavior(词汇行为函数);

d、每一个模块均实现ModuleInterface(模块交互)接口,该接口主要包含两个方法,一个getData()(获取数据)方法用于获取服务器题目数据,一个getType()(获取类型)方法用于返回模块类型;

e、凡是需要调用单独模块的组件均需要自行实现ModuleCallback(模块回调)接口,该接口包含了设置标题、显示隐藏加载动画、显示结果页和/或显示单模块页等能。

所述课程组件:用于根据与服务端约定的题型代号,在收到题目数据之后,CoursePresenter(课程演示)模块实现了模块回调接口ModuleCallback(模块回调),并且根据传入的题型信息生成ModuleInterface(模块交互),进行组件模块调用,实现了课程视频在线播放、题型解析展示和/或上课做题功能。

该系统前后端基本的数据交换格式是json格式的数据;后台所使用的主要技术框架是Django(开放源代码的Web应用框架),提供网络数据交互。

该系统的数据库查询中采用了B-Tree索引结构,这类索引是依赖于多路搜索树算法建立的。

本发明提供的一种基于组件模块的教育开发系统,采用组件化的方案实现业务的解藕,采用CLEAN MVP(简洁型模型视图展示结构)的方式实现逻辑代码的解藕。能够支持课本点读功能、在线课程多媒体视频加载播放和多种题型(选择、填空、点选、连线等)的文本解析、展示以及交互,解决了在不同国产定制ROM(read-only memory只读存储器)中适配的问题。使用的CLEAN MVP(简洁型模型视图展示结构)模式相较于传统方案采用的MVC(model-view-controller模型视图控制)模式,能够让项目在可以接受的代码文件增加的前提下将开发的成本降低,更易维护和迭代。加之本发明引入了组件化的思想,将整个项目拆分为可独立的小组件项目,让各小组的开发人员能够更加专注于自己的工作,有效的提高项目的开发效率。本发明通过与后端的配合约定采用自建标签来标记并实现与原生解析题目,使得体验和性能上与传统的HTML网页实现都带来质的飞跃。

附图说明

图1所示为本发明提供的一种基于组件模块的教育开发系统的框架图。

图1-2所示为本发明提供的IComponentRouter(组件路由)跳转接口示意图。

图1-3所示为本发明提供的课程组件CourseRouter(课程路由)实现示意图。

具体实施方式

下面对本发明的技术方案进行具体阐述,需要指出的是,本发明的技术方案不限于实施例所述的实施方式,本领域的技术人员参考和借鉴本发明技术方案的内容,在本发明的基础上进行的改进和设计,应属于本发明的保护范围。

实施例一

如图1所示,本发明实施例一提供了本发明提供了一种基于组件模块的教育开发系统,该系统包括:

均依赖于组件化Service(服务程序)的启动组件、课程组件和工具组件;其中,组件化Service(服务程序),依赖于基础库,用于提供组件间的交互服务;启动组件,用于完成启动操作;课程组件,用于题型解析和展示;工具组件,用于组件模块间的解藕和模块调用;

组件的架构采用MVP(model-view-presenter模型视图展示结构)方式,分为Model层、View(视图)层和Presenter(展示)层,其中,Model层为数据模型层,View(视图)层负责UI展示给用户,Presenter(展示)层负责与View(视图)层和Model层交互并且完成逻辑操作。

所述基础库,包含Model数据模型和Library(应用程序拓展)库文件,用于支持每一个组件独立运行调试。

数据模型Model层只负责数据的处理,包含数据模型的管理以及远程数据和本地数据的获取操作,但是它并不负责之后对数据的展示(展示属于逻辑控制Presenter(展示)层的工作)。用户界面UI层和逻辑控制Presenter(展示)层是双向的过程,即Presenter(展示)既可以改变UI层也可以响应对UI层的变化。这样的过程可以使得代码层面的逻辑更加清晰,不像MVC(model-view-controller模型视图控制)的模式逻辑和数据都混杂在一起,增加了开发的难度。

每一个组件对其公开的页面以页面Uri(Uniform Resource Identifier统一资源标识符)的方式进行注册,每一个Uri(Uniform Resource Identifier统一资源标识符)对应唯一的页面。

所述每一个组件对其公开的页面以页面Uri(Uniform Resource Identifier,统一资源标识符)的方式进行注册,包括:

组件的路由管理器CourseRouter(课程路由)实现了IComponentRouter(组件路由)接口,IComponentRouter(组件路由)接口中核心的跳转页面包含了跳转页面Uri(Uniform Resource Identifier,统一资源标识符)、跳转传递数据、跳转请求码以及页面启动Flag,其中,CourseRoute(课程路由)根据页面Uri(Uniform Resource Identifier,统一资源标识符)与保存的路由表对比来判断跳转页面。

进一步的,由于各组件都是独立的、互不依赖的,因此就会出现A组件无法直接显示跳转B组件页面的问题,为了解决这个问题,我们采用了页面路由的方案,具体是:每一个组件对自己公开的页面以页面Uri(Uniform Resource Identifier,统一资源标识符)的方式进行注册,每一个Uri(Uniform Resource Identifier,统一资源标识符)对应唯一的页面。以课程组件为例,课程组件的路由管理器CourseRouter(课程路由)实现了IComponentRouter接口,IComponentRouter中核心的跳转页面代码如下图1-2所示,包含了跳转页面Uri(Uniform Resource Identifier,统一资源标识符)、跳转传递数据、跳转请求码以及页面启动Flag,其中CourseRouter(课程路由)的实现如图1-3所示,根据页面Uri(Uniform Resource Identifier,统一资源标识符)与保存的路由表对比来判断跳转页面。

所述启动组件,包含闪屏页、引导页、登录页、绑定手机页和完善信息页,启动组件的流程包括:

首先启动闪屏页,优先判断是否是APP第一次启动,如果是第一次启动则进入引导页,否则判断是否已登录账号,如果未登录账号则进入登录页进行登录注册操作,在登录完成之后进行绑定手机号判断,如果未绑定手机则进入绑定手机,已绑定手机或者绑定完成之后则判断是否用户信息完善,如果完善则进入首页,否则进入完善页并在完善信息之后进入首页。

所述工具组件,包括:工具页、科目练习、听写、单词、口算、口语、听力、练字、知识点、作文、字典、错题本、PK、讲故事和课本点读,均可作为单独的模块被其他组件调用。

所述工具组件实现单模块被调用的技术方案为:

a、创建通用的IFragmentBehavior(周期行为函数)接口、用于处理模块的行为(例如暂停状态、开始状态以及设置模块回调等);

b、各模块创建各自的回调接口,该回调接口用于与调用组件的通信,口算为IArithmeticCallback、听写为IDictationCallback(听写回调函数)、听力为IListeningCallback(听力回调函数)、口语为ISpeakingCallback、单词为IWordCallback(词汇回调函数);

c、各个模块基于IFragmentBehavior(周期行为函数)接口分别创建各自的模块接口,口算为IArithmeticBehavior、听写为IDictationBehavior、听力为IListeningBehavior、口语为ISpeakingBehavior、单词为IWordBehavior;

d、每一个模块均实现ModuleInterface(模块交互)接口,该接口主要包含两个方法,一个getData()方法用于获取服务器题目数据,一个getType()方法用于返回模块类型;

e、凡是需要调用单独模块的组件均需要自行实现ModuleCallback(模块回调)接口,该接口包含了设置标题、显示隐藏加载动画、显示结果页和/或显示单模块页等能。

所述课程组件:用于根据与服务端约定的题型代号,在收到题目数据之后,CoursePresenter(课程展示)实现了模块回调接口ModuleCallback(模块回调),并且根据传入的题型信息生成ModuleInterface(模块交互),进行组件模块调用,实现了课程视频在线播放、题型解析展示和/或上课做题功能。

课程组件中题型解析流程为:根据服务端返回的json格式题目数据获取题目类型type,根据type可知该题目是选择题、判断题、填空题、点选题还是连线题。依据与服务端约定的标签来编写标签处理器(TagHandler),标签处理器的作用是用于产生可替换字符Span(InputSpan(输入span标签)、ClickSetSpan(点击设置span标签)等),而可替换字符Span的作用是替换题目中的自定义标签部分,生成自定义可与用户交互的View(视图)并绑定到题目展现给用户,实现了题型从文字到人机交互的转换。

根据服务端返回的题目类型type判断应该使用哪种Module(模块),具体的对应关系是:口算为ArithmeticModule(口算模块)、口语为SpeakingModule(口语模块)、听力为ListeningModule(听力模块)、单词为WordModule(词汇我们)、练习为PractiseModule(练习模块)、考试为ExamModule(考试模块)、视频为VideoModule(视频模块)。在完成对ModuleInterface(模块交互)的赋值之后便可请求该Module(模块)的数据并进行展示和操作,完成了上课组件对工具子模块的调用。

该系统前后端基本的数据交换格式是json格式的数据;后台所使用的主要技术框架是Django(开放源代码的Web应用框架),提供网络数据交互。

其中,Django(开放源代码的Web应用框架)是一个开放源代码的Web应用框架,由Python写成。采用了MTV的框架模式,即模型模板视图框架模式。该系统后台主要为系统APP提供网网络数据传输的相关接口,为教学内容研究和开发提供平台及解决方案。具体以阿里云提供的云服务器和云数据库为平台实现相关的各项功能。

后台提供网络数据交互,前后端基本的数据交换格式是json格式的数据。基本的网络数据交互流程如下:

用户通过浏览器请求一个页面,请求到达Request Middlewares(请求中间件)中间件,中间件对request做一些预处理或者直接response(响应)请求。URLConf(Uniform Resource Locator config)通过urls.py文件和请求的URL找到相应的View(视图),View Middlewares(视图中间件)被访问,它同样可以对request做一些处理或者直接返回response,调用View(视图)中的函数。View(视图)中的方法可以选择性的通过Models访问底层的数据,所有的Model-to-DB(模型对数据库)的交互都是通过manager完成的,如果需要,Views(视图)可以使用一个特殊的Context,Context被传给Template用来生成页面。Template(模板)使用Filters(筛选器)和Tags(标签)去渲染输出,输出被返回到View(视图),HTTPResponse被发送到Response Middlewares(响应中间件),任何Response Middlewares(中间件响应)都可以丰富response(响应)或者返回一个完全不同的response(响应),Response(响应)返回到前端,再由前端页面呈现给用户。

该系统的数据库查询中采用了B-Tree索引结构,这类索引是依赖于多路搜索树算法建立的。

B树是为了磁盘或其它存储设备而设计的一种多叉平衡查找树。许多数据库系统都一般使用B树或者B树的各种变形结构。实际的索引建立过程是在数据库表结构之外再建立一张新的表来存储B-Tree查询关系,从而加速数据的查询。

本发明提供的一种基于组件模块的教育开发系统,采用组件化的方案实现业务的解藕,采用CLEAN MVP(简洁型模型视图展示结构)的方式实现逻辑代码的解藕。能够支持课本点读功能、在线课程多媒体视频加载播放和多种题型(选择、填空、点选、连线等)的文本解析、展示以及交互,解决了在不同国产定制ROM(read-only memory只读存储器)中适配的问题。使用的CLEAN MVP(简洁型模型视图展示结构)模式相较于传统方案采用的MVC(model-view-controller模型视图控制)模式,能够让项目在可以接受的代码文件增加的前提下将开发的成本降低,更易维护和迭代。加之本发明引入了组件化的思想,将整个项目拆分为可独立的小组件项目,让各小组的开发人员能够更加专注于自己的工作,有效的提高项目的开发效率。本发明通过与后端的配合约定采用自建标签来标记并实现与原生解析题目,使得体验和性能上与传统的HTML网页实现都带来质的飞跃。

以上公开的仅为本发明的几个具体实施例,但是,本发明并非局限于上述实施例,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1