基于BS架构的网络教学平台的设计与实现毕业论文Word下载.docx
- 文档编号:6497532
- 上传时间:2023-05-06
- 格式:DOCX
- 页数:34
- 大小:626.97KB
基于BS架构的网络教学平台的设计与实现毕业论文Word下载.docx
《基于BS架构的网络教学平台的设计与实现毕业论文Word下载.docx》由会员分享,可在线阅读,更多相关《基于BS架构的网络教学平台的设计与实现毕业论文Word下载.docx(34页珍藏版)》请在冰点文库上搜索。
1.2国内外发展现状
这种教育方式具有开放性、共享性、永久性、便利性等特点,这样可以满足不同人群的需求,大大减低了教育的成本,在国内外都有这种发展趋势,并且在迅速地扩张中
1.3系统可行性分析
1.3.1技术可行性
本项目采用当前流行的前后端开发,前后端的项目是独立部署了,它们之间通过网络http协议进行通信,后端的实现叫微服务层。
采用springboot企业级框架加中间件进行开发,其中springboot对中间件支持较好,例如rabbitmq、elasticsearch等,所以说开发难度小。
好处:
针对不同用户提供不同的页面,例如对pc用户可以提供一个页面,移动端用户也可以提供一个页面,但是微服务层就不是这样了,没有必要针对不同的用户提供不同的微服务,因为前端可以满足这个需求,它调用服务层就可以实现需求,这为系统的维护和业务的扩展有很大的好处
1.3.2经济可行性
通过调查研究,本项目的建设、运用成本都在可接受范围内,其中项目上线后带来的经济收益非常可观。
项目的预算可以支撑整个项目的研发,其中,运行项目需要视频处理服务器,采用戴尔的一站式服务器处理方案,价格实惠。
网站的运营需要监管和维护人员多名,与一般网站运营人员配置中无太大的区别
1.3.3操作可行性
项目没有与国家政策相背离,没有会违反法律法规,符合社会的伦理道德,无侵权、无妨碍等责任问题,项目的运行方式在人员组织内可行,对如今的管理制度、人员的素质和操作方式的分析,得出的结果都显示可行
第二章系统开发工具与相关技术
2.1系统开发工具
2.1.1IntellIjIdea
这是一款功能强大,人性化的开发工具,且有很友好的代码提示功能
2.1.2MongoD
这是一个非关系型数据库,且具有分布式文件存储的功能,在wen中采用它可以获得高性能的数据存储方案而且第三方对它的支持也很丰富
2.1.3MySQL
MySQL数据库是一款关系型数据库,它小巧且运行效率高
2.1.4Maven管理工具
这是一款基于对象模型概念设计的软件管理工具,它的功能是方便用户导入jar包依赖,且IntellIjIdea对它集成很完善
2.2系统后台技术
2.2.1Spring
Spring是一个轻量企业级的开发框架,它可以把bean对象和dao组件和service组件都给容器处理。
这样做的好处就是把大量复杂的代码变得非常的简洁,大大降低了代码的耦合度。
在后期的维护、扩展和升级中可以非常轻松。
其中,springdata对操作MongoDB数据库十分方便,而SpringSecurityOauth2对系统的权限控制也十分优秀
2.2.2MyBatis
这是一款持久层框架,它内部实现了JDBC的功能,可以使用配置或者XML文件来配置映射信息,讲数据模型和对象一一对应
2.2.3RabbitMQ
它主要用于在分布式系统中进行消息转发
2.2.4ElasticSearch
它可以对系统的内容进行索引化,然后支持用户实时搜索内容
2.3前端开发技术
2.3.1Vue.js
这是一个js的渐进式框架
2.3.2Nuxt.js
这也是一个js框架,主要用于来服务器进行渲染
2.3.3Ajax技术
窗体顶端
Ajax是一个交互式网站开发技术,实现动态更新(局部)的内容
2.3.4Jquery
这是一个功能丰富的js库
2.2.5FreeMarker
这是一个模板引擎,主要用于做静态页面和页面展示
2.2.6Eureka
这是一个服务注册中心,用于管理微服务的
第三章系统分析
本章节将会结合前面所介绍的开发技术进行分析,从功能性需求与非功能性需求入手,并且进行详细的阐述,为今后的开发确立明确的目标
3.1系统功能分析
展望现在的教育模式真是多种多样,例如腾讯课堂、网易云课堂的B2B2C模式,这个模式是为教育机构提供平台授课,也为个人开发权限进行授课。
而中国大学MOOC则采用B2C模式,因为平台的严谨,它所提供的课程质量都比较优秀。
本项目采用B2B2C模式,为企业和个人提供服务。
本系统主要由前台模块和后台管理组成。
前台面对的是普通用户,即提供用户登录,搜索,学习,留言等功能。
后台管理分为页面管理和课程管理,课程管理面对的是教育提供者,教育提供者可以在后台管理页面进行课程介绍页面的信息的增伤改插、课程目录的编写、上传视频、上下架课程四个模块。
页面管理面对的是系统管理员,管理的是网站中的各个模块的创建修改和发布。
其中,功能模块示意图见图3-1所示。
图3-1系统功能模块示意图
3.2系统功能性需求分析
本小节从具体的功能模块入手,即从前台模块和后台模块两方面来进行详细的分析并且介绍其各点功能需求
3.2.1前台用户功能需求分析
(1)门户
门户即网站的主页,进入门户显示轮播图,课程推介等模块,用户不要登陆即可查看课程的详细信息,搜索课程,操作分类,游客点击查看视频或者登陆时跳转到登陆界面,并且在认证通过后才可以跳转到登陆前页面
(2)登陆
点击登陆按钮并填写登陆信息,当认证不通过时,提示“账号或密码错误”,当账号不存在时,提示“账号不存在”。
登陆成功后跳转到登陆前的页面
(3)注册
点击注册按钮进入注册页面,注册信息有用户名、年龄、性别、手机号码、邮箱信息等,其中邮箱和手机号码不允许重复,一个账号只能对应一个邮箱和手机号码。
上面信息给必填信息,其余字段信息可适当地进行添加
(4)收藏
当用户点击收藏按钮时,需要判断用户是否已经登陆了,已经登录则判断当前课程是否已经收藏,已经收藏则提示“已收藏,无须重复添加”,否则向数据库插入收藏信息,前台提示“已收藏”。
(5)留言
在视频下方留言前需要判断用户是否登陆了,未登录则跳转登陆页面,否则提交用户留言
(6)购买课程
购买课程前需要判断用户是否登陆了,未登录则跳转登陆页面,否则提示提示用户是否购买,确定购买后跳转视频播放页面
(7)课程分类
门户下有课程分类的信息,一共设置3个分类,一课程所属的类型,二年级分类,三按照行业分类。
随意点击某个分类字段则跳转到相对应的分类列表
(8)课程推荐
门户下有课程推荐的区域,这个推荐目前不做详细要求,可随机显示即可
(9)课程搜索
搜索课程名称时显示课程信息,这个搜索可以是精确查询,也可以是模糊查询,这里要设置分页显示
(10)课程播放
点击播放视频按钮跳转到播放页面,默认播放第一个视频
3.2.2后台用户功能需求分析
(1)页面管理
一个网站可以划分为很多个子站点,例如轮播图、分类导航栏、课程推介栏属于门户站点,课程播放属于课程站点,学习中心属于学习站点等等,所以需要一个管理这些页面的系统,方便后期对这些页面进行增删改查
(2)页面发布
通过事先增加好的页面,点击发布按钮,发送到远程服务器。
整个添加、发布的过程都是由程序来自动执行,不需要管理员登陆服务器来完成操作。
(3)页面预览
管理员通过页面预览可以预览页面最后部署到服务器的效果
(4)课程管理
制作一个课程管理系统,前端定义好模板,用户在模板内填写课程信息后即为课程详情页面。
这里要实现课程的增加、删除、修改、新增,这里需要分页显示。
其中,课程的添加操作需要包含的内容有,课程的各种详细信息,例如课程的简介,教师的简介、建议、评语等等;
课程目录信息,课程设置3级目录,分别是课程名称/课程章节/课程小节这样的目录结构;
课程的图片,必须为课程设置一张广告图,吸引学生点击;
课程的视频,这一步骤最关键,其中上传的视频必须按照目录结构逐一对于上传。
(5)课程预览
为了保证课程发布后的准确无误,发布前必须进行课程预览,而课程预览所显示的页面必须和课程发布后的页面保持一致
(6)课程发布
点击课程发布后,学生可以在前台页面看到课程信息并且进入课程页面学习
(7)文件系统
本项目中,需要上传图片、视频、文档文件,为了提高系统的可重用性必须制作一个文件系统的统一管理这些文件,提供上传、删除、查询功能
(8)视频处理
原始视频必须经过编码处理
第四章系统设计
本章节依据系统需求分析进行详细设计,其中对某些功能点进行更加具体的分析,做到完善和拓展。
4.1系统体系架构设计概述
UI层:
这个系统是独立部署的,这里也是前后端分离开发的分水线,这里属于前端,这里主要实现的是用户界面,它没有实际是数据的,就好比一个模型,通过ajax请求微服务层来得到数据,这里用到的协议是http协议,
微服务层:
这个系统也是独立部署的,这里属于后端。
可以划分很多个小块,即把服务的颗粒度分得很细,服务于服务之间的交互很少。
业务的可扩展性可维护性很好,例如双11到来了,我们可以把订单服务部署的服务器多一点,把用户管理部署的服务器少一点。
数据层:
提供数据持久化操作
这种技术架构的好处是,UI层可以针对pc用户可以开发一个模块,针对H5用户开发一个模块,即针对不同用户开发不同的界面。
而在微服务层也可以划分多个模块,每个模块可以单独对外提供服务,且不需要为不同的用户开发不同的服务。
这种架构和早期的单体式应用有很明显的优势(代码写到一个工程中,打包成war包部署到Tomcat中)
4.2系统数据库设计概述
4.2.1Monogdb数据库
edu_page页面信息
字段名
是否主键
是否为空
字段说明
_id
是
否
Id
siteId
站点id
pageName
页面名称
pageAlise
页面别名
pageWebPath
页面相对路径
path
页面物理路径
time
时间
template
页面所属模板id
dataurl
存储到GirdFs路径
edu_side站点集合
name
站点名称
port
端口
domain
域名
edu_config模板数据
模板名称
model
模板数据类型
Filesystem文件系统索引
filepath
文件路径
size
大小
名字
type
类型
4.2.2Mysql数据库
template页面模板
siteid
templatefileid
模板id
sys_dictionary数据字典
字典代码
名称
value
数据类型
course_pic课程图片
Pic
图片id
category课程分类
分类名称
label
标签
parentid
父结点
isshow
是否显示
orerby
排序字段
isleaf
是否孩子
Course_base
课程名称
mt
课程分类
status
状态
descriprtion
课程介绍
nt
小分类
第五章系统实现
5.1页面管理
需要多门户中的进行增删改查,首先需要建立页面查询的接口,接口基于HttpGet请求,响Json数据,目录结构如图5-1:
图5-1
其中api同一放在edu_api模块中,而接口的实现类放在edu_mange模块中。
这样做的好处是:
1.可以方便统一管理接口
2.将来微服务相互调用时,他们可以基于接口来远程调用,所有的微服务只要依赖api,那么就可以拿到任意微服务的接口了
3.以后换框架时只需要改实现类就可以了,不用在改接口
5.1.1分页查询实现
采用sprintdataMongoDB来操作数据库,先定义一个查询接口CmsPageRepository并且继承MongoRepository,这样就可以使用内置的api来操作数据库了,其中调用以下几个类和sprintdataMongoDBfindaAll方法实现分页操作
org.Spring.framework.data.domain.Page
org.springframework.data.domain.PageRequest
org.springframework.data.domain.Pageable
5.1.2自定义查询
输入查询条件,查询符合条件的页面的信息,其中,输入站点id,页面id来实现精确查询,输入页面别名来实现模糊查询,实现这个功能的关键在于定义条件匹配器,最后把匹配器放入findaAll方法,代码入表5-1-2所示
//条件匹配器
ExampleMatcherexampleMatcher=ExampleMatcher.matching();
//可以设置匹配方法,默认精确匹配,先把匹配的属性告诉匹配器,后选择匹配方法
exampleMatcher=exampleMatcher.withMatcher("
pageName"
ExampleMatcher.GenericPropertyMatchers.contains());
//包涵
//exampleMatcher.withMatcher("
ExampleMatcher.GenericPropertyMatchers.startsWith());
//前缀匹配
//定义Example,要放入条件匹配器,把EduPage放到Example中
Example<
EduPage>
eduPageExample=Example.of(eduPage,exampleMatcher);
findAll(eduPageExample,pageable)
表5-1-2
5.1.3增删改页面
增:
新增页面要求检查页面是否存在,存在则不新增可以利用sprintdataMongoDB的findBy方法实现,因为每一条记录的id是MongoDB数据库自行创建的无法事先得知,所以检查页面必须要有自己的唯一标识,我采用站点id,页面路径,页面名称定义索引从而设定了页面的唯一标识
删:
点击编辑按钮后修改页面信息,实现过程和上面大同小异,此处略过
改:
执行删除操作,实现过程大同小异此处略过
5.2页面预览
在MongoDB页面集合中,每一条记录都是一个页面,其中每个页面都有一个url信息,这个url是获取页面模板所用。
其中,模板由前台程序员提供
首先根据页面的id可以查询到具体页面的url,然后可以远程请求获得数据模型,然后程序把模板和数据结合并生成静态化数据,后利用MongoDB的gridfs进行分布式存储的,后把静态化后的数据响应给浏览器。
5.3页面发布
门户有多个站点,其中页面都有属于自己的站点,页面的发布应该部署到其所属的站点服务器上,例如要修改轮播图的图片,那么要改修改好的轮播图部署发到门户这个服务器上,而不去动学习中心这个服务器。
这里使用一个消息中间件(RabitMQ)来监听队列,每一个页面都有其所属站点的id
可以使用rabitmq的路由(routing)模式,监听每个站点的id,简而言之就是把站点的id作为routingKey。
这样就可以实现页面只会发布到其所属的服务器上。
5.4课程管理
这个模块面对的是教育机构和老师,在这一统一管理自己的课程。
这里实际用springdataJpa,Mybatis来操作mysql数据库。
其中springdataJpa用于表的基本增删改查,Mybatis用于复杂的多表连接查询,且使用druid来管理连接池(阿里巴巴提供的数据库连接池,它已经和spring整合到一起了)。
这里可以细分为:
查询:
这里涉及到多表关联查询,使用mybatis的Pagehelper分页插件,尅实现分页查询功能。
具体是拦截sql语句,添加分页语句来实现分页查询
分类:
课程必须选择分类信息,在门户的分类选择中需要显示对应类目的课程,所以要先建立分类查询接口,而接口的响应格式按照前端的要求来定义。
数据字典:
课程中有很多信息,为了信息的易管理和维护,可以通过建立数字字典集合来实现。
这样做的好处是,对业务可以分类管理,并且解决硬编码的问题。
例如,在添加课程选择分类信息时,如果采用固定的写法,那么后期需要更改这个信息就要修改页面。
这样明显是不符合易维护的需求的。
所以这里从数据字典来获取,如果以后要修改则修改数据字典即可,提高系统的维护性。
这个数据字典在MongoDB中创建,详细信息见数据库设计
新增课程:
点击新增按键,调用前端页面,填写信息,实现过程和页面管理实现的操作大同小异,这里不再进行说明。
修改课程:
进入管理页面,编辑课
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 BS 架构 网络 教学 平台 设计 实现 毕业论文