基于SSM的网络教学系统设计与实现

2024-03-11 21:04

本文主要是介绍基于SSM的网络教学系统设计与实现,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目 录

摘 要 I
Abstract II
引 言 1
1 相关技术 3
1.1 B/S架构技术 3
1.2 Ajax技术 3
1.3 JavaScript 4
1.4 jQuery 4
1.5 SSM框架 4
1.5.1 Spring 5
1.5.2 Spring MVC 5
1.5.3 MyBatis 5
1.6 本章小结 6
2 系统分析 7
2.1 需求分析 7
2.2 系统用例分析 8
2.3 非功能需求分析 10
2.4 本章小结 10
3 系统设计 11
3.1 系统总体设计概念 11
3.2 数据库设计 12
3.3 本章小结 18
4 系统实现 19
4.1 开发环境 19
4.1.1 软件 19
4.1.2 服务器 19
4.2 功能实现 19
4.2.1 数据显示功能实现 19
4.2.2 添加数据功能实现 20
4.2.3 删除数据功能实现 22
4.2.4 修改数据功能实现 23
4.3 本章小结 24
5 系统测试 25
5.1 测试计划 25
5.2 测试用例 25
5.3 测试结果 26
5.4 本章小结 26
总结与展望 27
致 谢 28
参考文献 29

摘 要

一直以来教学的方式大多都是在教室中学习,教师与学生的交流也多是在教室中,一旦来到课下,学生和教师的沟通就受到限制,不能很好的沟通与学习知识,由于网络的发展,学习方式也在发生改变,人们开始利用网络学习,利用每一个短暂的时间进行学习成了一种流行的学习方式,这种方式打破了时间和空间的约束,使人们在不同的地方都可以进行交流与学习。
通过了解教学业务流程,以及考虑到用户的需求等多种因素,本文系统使用SSM框架与B/S架构,并采用MySQL为后台数据库。该网络教学系统主要功能包含用户信息管理,文件资料管理,课程管理,论坛交流管理,系统公告管理,视频资料管理。本系统的突出之处在于实现了不同功能的分层管理,管理员和用户所设计的功能不同,功能与功能之间的关系梳理。通过使用本项目系统进行网络教学工作,可以使得业务的可操作性、实用性大大增强。具有运行效率高,操作灵活,使用方便等优点。
本文详细介绍了B/S架构、JavaScript以及SSM框架结构。文中系统不仅扩展性较强,还具有较高的重用性。网络教学系统在功能实现、测试运行后,每个部分的功能都进行了实现,满足用户的功能需求,这些都表明,本文网络教学系统所使用的功能结构可操作性强,运行稳定,适合并满足用户的操作需求。
关键词: 网络教学; B/S架构; SSM框架

Abstract

Teaching way has been mostly learning in the classroom, teachers and students of communication also is in the classroom, once came to class, the students and teachers’ communication is limited, can’t very good communication and learning knowledge, due to the development of the network, learning styles are also changed, people began to use network to study, use of each a short time to learn to become a popular way to learn, break the time and space constraints, this way can make people in different places to communicate and study.
By understanding the teaching business process, and considering the needs of users and other factors, the system in this paper USES SSM frame and B/S architecture, and MySQL as the background database. The main functions of the network teaching system include user information management, document information management, course management, forum communication management, system announcement management, video information management. The outstanding point of this system is to realize the hierarchical management of different functions, administrators and users designed different functions, the relationship between functions and comb. Through the use of the project system for network teaching work, can make the business operability, practicality greatly enhanced. It has the advantages of high operation efficiency, flexible operation and convenient use.
This article describes the B/S architecture, JavaScript, and SSM framework in detail. The system not only has strong expansibility, but also has high reusability. After the function realization and test operation of the network teaching system, the functions of each part have been realized to meet the functional needs of users. All these indicate that the functional structure used by the network teaching system in this paper is highly operable, stable in operation, and suitable to meet the operational needs of users.
Keywords: Network teaching; B/S architecture; SSM frame

引 言

随着教育领域信息化的迅速发展,以及生活环境的突发事件的影响,网络教学系统靠着不受时间和空间的约束,而越来越受到大家的喜爱,一个使用方便并且性能稳定的网络教学系统不仅能提高人们的工作与学习效率,也能让人们更加愿意去学习,从而达到提高知识水平的目的。
当前,在国外有许多的网络教学相关的软件,有的是商业化的软件,也有的是开源免费使用的软件,网络教学在美国、英国和德国等发达国家己经发展多年,而且已经发展的比较成熟。据调查了解,澳大利亚网络教学的发展水平是比较高的,属于世界领先者。在整个国家中小学中差不多1/3的人在网络上不断学习,而达到适龄的学习人员中有超过1/5的人在网络上学习。网络学习已经成为了他们生活的一部分。
根据调查信息可知,网络的应用在信息化的现在占有很大的地位,它是在不断的改变着人们的生活方式,顺着趋势才能发展,而教育的信息化网络化是必然的国际发展方向。而对于国内的发展情况而言,近几年网络教学系统发展的确比较快速,但是总体使用上不如国外普遍,但有着比较大的发展潜力。为推进网络教学的快速发展,国家政府相关的教育部门在筹备和执行许多的规划,而且给予了高度的重视,把这视作是提高全民素质的重要举措。
现在大多网络教学系统的开发都会去采用较好的框架技术,这些框架技术整合在一起并且互相之间还要进行通信访问。所以,如何保证网络教学系统开发程序的简单高效编写;如何保证整个网络教学系统的安全性等;如何拥有简单的开发与扩展形式;如何去适应复杂的Web 环境,而且要满足多种多样的用户需求,并且提高系统效率,框架构建方案的探讨和实现就变得非常重要和有意义了。
使用J2EE开源框架开发的系统有成本低、容易扩展、耦合降低、便于维护的优点,它的应用非常广泛。因此使用J2EE开源框架搭建网络教学系统是一种有效的解决方案。现在J2EE开源框架的运用能实现系统的简易开发、维护方便。
通过对现有的相关系统的业务分析,可以将设计的网络教学系统分为几个模块:用户、课程、学院、公告、作业测试、课程资料、论坛。在这些模块当中所有相关系统都有用户与课程资料模块,在实际的教学机构中系统用户角色是管理员、教师与学生[13],不同的角色负责不同的功能:管理员负责整个的教务信息管理,整个系统的维护功能;教师负责自己所属课程的相关内容的管理,并对参与课程的学生反馈信息进行管理;学生只有学习与反馈学习问题的功能。
本文第1章是对系统采用的技术进行简单说明,其中主要有B/S架构、JavaScript、jQuery和SSM框架,并对SSM框架中的Spring、Spring MVC和MyBatis分别进行描述;第2章是系统分析,包括需求分析、系统用例分析等,系统用例分析中包括三个角色的工作流程图;第3章是系统设计,其中主要有系统总体设计概念和数据库设计,数据库设计是对这个系统的涉及到的实体进行分析来确定的;第4章是系统实现,其中包括功能代码实现与开发环境要求;第5章是系统测试,其中包括系统测试计划、测试用例、测试结果,测试用例中对部分功能测试[22]。

1 相关技术

1.1 B/S架构技术
B/S架构是为了满足全球网络互连、信息共享和随时随地信息可见而产生的,它在浏览器端的界面设计要简洁。浏览器请求与服务器响应是它的工作形式。用户直接在浏览器上访问web服务器返回展现出的数据;而web服务器通过不同的方式与数据库连接,数据的实际存储多数都是在数据库中。整个工作模式简化了开发,而且减轻了用户使用电脑时的负荷,这也让软件后期的维护比C/S架构简单一些,从而在一定程度上减少了整个成本。
该架构开发的软件维护与升级较为简单,现在软件的升级改进是比较频繁的,整个软件的管理只有服务器,浏览器不需要软件开发者去管理。在这种架构下,用户只需要在构建的初期进行一次性的成本花费,不过在服务器的选用时要注意:当应用系统的用户不断增多时,应用范围变得的广泛,需要对其服务器的数量进行增加 ,不过总体比C/S架构节省了大量成本,这也在很大程度上代表着软件将来发展的趋势,B/S 结构也将是未来信息技术的主要发展方向。通过之前已有的分析,可得结论:B/S架构取代C/S架构的主要原因在于B/S架构维护软件方便,适用环境多,成本花费较低,适用于大用户群。
1.2 Ajax技术
Ajax技术是支持异步的[2],更新部分页面数据,且不需要刷新页面,其中不需要任何的插件,但是需要浏览器支持运行JavaScript。面对如今过多的数据、超重的网络负载、用户的长时间等待的问题,通过使用Ajax技术和Web应用程序模式,数据可以通过异步交互直接传输,有效地补充传统的数据交互 。
它通常使用JS脚本将接收端连接到后台,实现后台通信功能。它不仅不会影响运行速度,而且不会阻止对象的响应,而且用户可以很容易在不等待页面过载的情况下与服务器交互。这项技术的优点是它对用户友好,更容易安装、维护和开发。Ajax技术能够最大可能的减少冗余请求和服务器响应时间;此外,它的优点还有,在处理数据时不需要重新加载整个Web页面,程序首先响应用户的操作,并避免向网络发送未更改的消息;此外,与其他工具不同,它不需要任何站点上的插件。
1.3 JavaScript
JavaScript这种基于对象的解释性脚本语言有着诸多灵活的特点,例如,它无需提前编译,变量的数据类型也可以改变。而且JavaScript的语句也是非常简单容易理解的,在与浏览器连接和交互时,可以编写一些修改过的更简单的语法,API接口也有非常丰富的功能 。
用户可以在浏览器端直接查看代码,它会显示出页面的完整HTML标记。如果为了减少代码的重复,将部分源码提取放入到了外部文件中,也可以使用脚本标注属性src,如此用户一样可以在浏览器看见代码。正是因为这个特点,所以在JavaScript中最好不要使用专用或者不便公开的算法。它是一种直译式的脚本语言,它不需要特定的环境进行开发,它都是基于浏览器运算和支持分布式运算的[5]。
1.4 jQuery
jQuery是众多JavaScript 库之一,它在很大程度上简化了JavaScript 编程,是对JavaScript的再次封装,是一个轻量级JavaScript函数库。它的功能主要有:实现对HTML元素选取与操作[8],实现对CSS操作,HTML事件函数,JavaScript特效和动画[24],HTML DOM遍历和修改等,还有大量的插件。因此它能提供大量的扩展。jQuery的操作和处理可以让用户的使用感更强。jQuery适应能力非常好,需要JavaScript应用的地方都可以使用它,而且它对Ajax的一些操作进行了较好的封装,在使用时只需简单的一行代码就可实现Ajax功能,这使得应用开发更加简单化。
1.5 SSM框架
SSM框架是由三个分支框架组成的整体,将服务器端分成三层,Spring框架在业务层中,SpringMVC是在表现层中,则MyBatis是在持久层中,框架大体流程如图1.1所示。
在这里插入图片描述

图1.1 SSM框架流程
1.5.1 Spring
开源框架Spring提供了一个简易的开发方式,该框架能适应多种呈现技术;它还提供了面向切面编程[17]。该框架实现了表现层、业务层、持久层三层间的整合,为开发提供了灵活性。它的优势是:方便解耦,简化开发,通过Spring提供的IOC容器,可以将对象间的依赖关系交给Spring进行控制[13];AOP编程的支持,有Spring的AOP功能,使之能更加方便的进行面向切面的编程;声明式事务的支持,通过声明式的方式灵活的进行事务管理,提高开发效率和质量;降低JavaEE API的使用难度,Spring对JavaEE API进行了薄薄的封装层,简化了开发者对数据库的操作。
1.5.2 Spring MVC
Web模式的应用在Java程序中较多,作为轻量级JavaEE框架的Spring,有着自己的Web层的展示,那就是Spring MVC Web框架,是非常好的MVC框架。在Spring MVC之前,社会上的中小型企业主要应用的框架为SSH;而现如今将Spring MVC框架代替了SSH,该框架主要用于构建基于Java的Web应用程序。Struts框架针对JSP技术提供了一套补充的标签库来完成页面中的动态功能,提升了JSP开发者的开发效率。
Spring MVC是具有很高配置的主流框架,是Spring框架的一个子框架,在企业级开发中使用较多,可以根据开发人员的需求定制相应的功能,且可以通过注解的方式进行分离控制。它作为MVC框架是属于SSM框架中的一部分,它的作用是处理相应请求,还可以获取表单参数,添加注解,定义拦截器的功能,大大的减少了前端和后端的耦合度,提高了页面开发的灵活性,可以提高代码的整合度[21]。
1.5.3 MyBatis
MyBatis是持久层框架,它使用XML或注解来配置和映射原生信息[4],它能很好的进行数据访问,支持定制化,它能提供SQLmap框架与数据访问对象。它的存在导致JDBC代码从手动写入到自动搜索;MyBatis运用专属的配置方法及其映射,通过接口自动保存,这样记录就可以很容易地映射到数据库,从而进行后续操作。
它的优势是,在主配置文件和映射配置文件之间对配置文件进行划分,而且配置文件被用来减少大量的JDBC代码。MyBatis的原理方面会稍微复杂一些,需要设置和定义不同的配置文件,而且要对每个映射配置文件声明。虽然它对于SQL语句的执行在许多不同的地方的变化会比较繁琐,但在输出结果方面的速度会比较快,实例可以执行相对应的SQL指令,而且能实现数据库访问。由于该框架中开发者能实现自由编写SQL语句,因此能提高整个数据的读写能力与整个的响应速度。
1.6 本章小结
本章主要描述了在系统开发当中所使用到的核心技术,其中有B/S架构技术、Ajax技术、JavaScript、jQuery、SSM框架中的MyBatis、SpringMVC等技术,从系统的前端的技术到后台的框架以及数据库的连接等,都进行了详细的描述。

2 系统分析

2.1 需求分析
在本文的网络教学系统主要是对用户上传的数据进行管理分析再展现,也就是数据库的读取与写入。用户的整体需求主要是进行学习与资料相关的管理以及学习的反馈,要考虑到整个系统中的角色,从而有以下几个主要需求点。
管理员登录:管理员[21]登录后在系统中对教师和学生的信息进行管理,实现教师与学生的添加修改删除,也可实现批量导入,但是需要有一定的格式要求,不过再导入教师学生之前需要填学院信息,教师是有对应的学院的,添加完学院与教师之后,对课程进行添加,还有系统公告的管理,如何时开课,添加新的课程等。
课程资料管理:教师登录后,对自己课程进行管理,上传自己的课程的资料,资料包括课程视频与课程文件资料,视频是学习相关,文件是学习的补充或者是作业等,教师对视频学习发起讨论,让学生参与到这个话题讨论当中,查看学习的情况,还有对作业测试的发布,学生进行测试检验学习效果。
论坛管理:教师登录后进行论坛的发布与查看参与,在发布时添加讨论主题与主要的内容,教师还可以对这个讨论进行修改删除和查看学生回复状态。学生登录后查看论坛,进入论坛参与到讨论中。其中主要是涉及到知识的学习状态情况反馈。
作业测试:作业测试主要是对学习情况的检测,教师登录到主页后,进入作业发布,该课程作业发布后添加对应的题目,进行题目添加,教师也可以进行题目的修改与删除。学生登录跳转到主页后,进入完成作业,对应课程的作业发布情况展示出来,选择对应的作业测试进入,提交后将会看见自己的测试情况。
学生登录:学生登录后进入主页后能进行课程的选择,选择相应的课程添加到自己的课程中,在自己的课程中就能选择它的课程视频,进入课程视频后选择进入观看,就能实现在线观看视频,还有论坛与测试,完成了对应视频的学习之后,可以去进行讨论回复与作业测试,测试完之后可以查看自己的测试情况。最后可以对自己的信息进行修改。整个系统的功能概述,如图2.1所示。
在这里插入图片描述

图2.1 系统功能概述
2.2 系统用例分析
系统用例分析以管理员、教师和学生三个角色用例为例,描述系统的总体用例实现。在系统总体用例图中:管理员能够进行学院管理,课程管理,公告管理,教师管理,学生管理,话题讨论管理;教师进行课件资料管理,实现课程资料与视频的上传,作业测试管理,论坛讨论管理,个人信息修改,参与讨论;学生可以进行作业测试,学习课程视频与资料下载,参与讨论。如图2.2所示。
在这里插入图片描述

图2.2 总用例图
在系统用例图中共有三个角色:管理员、教师、学生。管理员能实现对学院信息的增删修查,可对教师学生信息进行批量导入以及信息的修改删除查看,可对个人信息进行修改,可对课程信息进行增加删除修改查看,可对系统公告编辑删除查询,还可对论坛内容查看浏览等。管理员用例如图2.3所示。在这里插入图片描述

图2.3 管理员用例图
教师用例图,教师根据管理员添加的课程信息,在所属的课程下添加课程文件和课程视频,查询删除所属的课程文件和课程视频,并且新增讨论的主题与内容,还可对其进行内容上的修改与删除,作业测试管理,对题目进行录入以及修改,个人信息修改等。如图2.4所示。
在这里插入图片描述

图2.4 教师用例图
学生用例图,根据查看课程信息添加课程到自己的课程中,在课程中进行课程视频资料的查看,选择相应的课程视频后进行在线观看,对上传的课程资料进行下载,查看公告信息,参与论坛讨论以及查看回复,完成作业测试,测试后查看自己的测试成绩,对自己的个人信息进行修改。如图2.5所示。
在这里插入图片描述

图2.5 学生用例图
2.3 非功能需求分析
操作可行性:本系统主要用来管理教学,在操作界面的设计上非常简单,使其操作起来非常清楚明白。整个系统对数据库的操作都是基础性的,数据库的设计同样的简洁,没有过于复杂的方式,使其维护时能更加方便。整个系统非常方便操作,用户只需要在电脑上安装一个浏览器,访问地址即可进行系统操作,而且对浏览器的要求很低,对电脑的配置也基本没有要求,整个系统只需要很少的内存空间,就可以运用本系统,简单、快速、有效的实现教学的管理学习。
技术可行性:技术的可行性是指在当今所拥有的技术条件之下,计算机软件和硬件的发展能否够满足发展的要求。本系统是用Java语言进行开发的,一般的电脑就能够满足系统的开发要求,主要原因是它占用内存较少,用MySQL 服务器数据对软件的开发以及设计在理论上没有问题的原因是:它占用的内存是相对较少。
2.4 本章小结
本章在需求分析中主要描述了课程管理功能、学生管理功能、教师管理功能、作业测试功能的需求,在满足教学需求方面,提高系统的可操作性。在系统用例分析对主要的角色进行了描述。

3 系统设计

3.1 系统总体设计概念
本系统使用的结构分布从用户界面到逻辑判断再到数据处理,其中用户界面处于表示层,这一层将为用户展示以网络教学为主题的页面及信息,而且要获得用户的请求信息;逻辑判断主要是是业务层的内容,对用户的操作进行验证并返回结果;数据处理则是在数据访问层,在这里能进行数据库的读取和数据存储。如图3.1所示。
在这里插入图片描述

图3.1 系统逻辑结构图
本文系统中主要有三个页面,其中第一个是面向学生的页面,第二个是面向教师的页面,还有最后一个是管理员页面。在学生页面中主要有观看课程视频、下载资料、作业测试、话题讨论、个人信息修改;在教师页面中主要有上传课程相关视频资料、发布作业测试、发布讨论;在管理员主页主要有学院管理、学生教师管理、课程管理、系统公告管理等。如图3.2所示。
在这里插入图片描述
图3.2 系统功能结构图
3.2 数据库设计
MySQL数据库的性能会受到一些因素的影响,比如使用的操作系统,硬件水平等,只是这些因素改变的范围比较小。但是数据库本身的结构在设计时可以自己控制,因此数据库在设计的时候要注意保证存储空间的尽量少,也需要保证数据的完整。但在设计数据库的时候首先需要清楚整个项目的需求,清楚项目中的整体关系,从而减少很多不必要的工作量。
在系统的功能结构确定之后,需要将概念层进一步具体化。从功能结构中确定整个系统中有多少实体,这些实体分别是管理员(admin)、教师(teacher)、学生(student)、学院(college)、课程(course)、视频(course_video)、文件(course_file)、公告(notice)、话题讨论(discuss)、讨论回复(discuss_post)、测试(task)、测试问题(task_question)、学生成绩(student_task),实体之间的联系可以根据具体的情况确定。同一个学院可有多名教师与同学,多门课程能同属一个学院。其中一门课程有多个课件视频与文档,也有多个讨论的话题。一个话题的讨论有多个回复。教师可以发布多门测试。如图3.3所示。
在这里插入图片描述

图3.3 系统实体关系图
根据系统的实体关系,能明确系统设计时的实体类,再根据需求设计出对应类应该有哪些属性和方法,在这些方法中就是对数据需要进行了一些实际操作,如增加删除查询等一系列操作。如图3.4-3.7所示。
在这里插入图片描述

图3.4 系统角色类图
在这里插入图片描述
图3.5 学院、课程、课件类图
在这里插入图片描述

图3.6 公告、讨论、讨论回复类图
在这里插入图片描述

图3.7 测试、问题、学生成绩类图
根据类图和系统实体关系图能确定系统设计数据表有:管理员信息表、教师信息表、学生信息表、学院信息表、课程信息表、视频信息表、文件信息表、公告信息表、话题讨论表、讨论回复表、测试信息表、测试问题信息表、学生成绩表。下面是部分表的详细信息。
教师信息表。教师信息数据表中共有10个字段,分别是教师id、姓名、性别、学院id、电话、身份证、账户、密码、教师编号、课程编号,教师id为主键且自增长,除身份证字段外所有字段均为非空。如表3.1所示。
表3.1教师信息表(teacher)
字段名 数据类型(精度围) 约束条件 其他说明
id INT(11) Primary key
Auto increment 教师id
name VARCHAR(50) Not null 姓名
gender INT(11) Not null 性别
college_id INT(11) Not null 学院id
telphone VARCHAR(50) Not null 电话
id_card_no VARCHAR(50) 身份证
account VARCHAR(50) Not null 账户
password VARCHAR(10) Not null 密码
num VARCHAR(50) Not null 教师编号
course_id INT(11) Not null 课程编号
课程信息表。课程信息数据表中一共有5个字段,分别是课程id、课程名称、学院id、课程编号、课程介绍,课程id为主键且是自增长字段,而且所有字段均为非空。如表3.2所示。
表3.2 课程信息表(course)
字段名 数据类型(精度围) 约束条件 其他说明
id INT(11) Primary key
Auto increment 课程id
name VARCHAR(50) Not null 课程名称
college_id INT(11) Not null 学院id
num VARCHAR(50) Not null 课程编号
intro TEXT Not null 课程介绍
话题讨论表。话题讨论数据表中共有6个字段,分别是话题讨论id、讨论主题、讨论内容、教师id、发表时间、课程id,话题讨论id为主键且自增长,讨论主题与讨论内容为非空。如表3.3所示。
表3.3 话题讨论表(discuss)
字段名 数据类型(精度围) 约束条件 其他说明
id INT(11) Primary key
Auto increment 话题讨论id
title VARCHAR(50) Not null 讨论主题
content TEXT Not null 讨论内容
teacher_id INT(11) 教师id
record_time DATETIME 发表时间
course_id INT(11) 课程id
学院信息表。学院信息数据表中共有3个字段,分别是学院id、学院名称、学院介绍,学院id为主键且自增长非空字段,在对学院名称与学院介绍字段没有进行非空的约束。如表3.4所示。
表3.4学院信息表(college)
字段名 数据类型(精度围) 约束条件 其他说明
id INT(11) Primary key
Auto increment 学院id
name VARCHAR(50) 学院名称
intro TEXT 学院介绍
测试信息表。测试信息数据表中共有4个字段,分别是测试信息id、教师id、课程id、发布时间,测试信息id是主键且自增长,而且所有字段均有非空约束。如表3.5所示。
表3.5 测试信息表(task)
字段名 数据类型(精度围) 约束条件 其他说明
id INT(11) Primary key
Auto increment 测试信息id
teacher_id INT(11) Not null 教师id
course_id INT(11) Not null 课程id
record_time DATETIME Not null 发布时间
视频信息表。视频信息数据表中共有5个字段,分别是视频信息id、路径全名称、课程id、录入时间、教师id,视频信息id为主键且自增长,所有字段为非空。如表3.6所示。
表3.6 视频信息表(course_video)
字段名 数据类型(精度围) 约束条件 其他说明
id INT(11) Primary key
Auto increment 视频信息id
path VARCHAR(50) Not null 路径全名称
course_id INT(11) Not null 课程id
record_time DATETIME Not null 录入时间
teacher_id INT(11) Not null 教师id
文件信息表。文件信息数据表中共有5个字段,分别是文件信息id、路径全名称、课程id、录入时间、教师id,文件信息id为主键且自增长,所有字段非空。如表3.7所示。
表3.7 文件信息表(course_file)
字段名 数据类型(精度围) 约束条件 其他说明
id INT(11) Primary key
Auto increment 文件信息id
path VARCHAR(50) Not null 路径全名称
course_id INT(11) Not null 课程id
record_time DATETIME Not null 录入时间
teacher_id INT(11) Not null 教师id
讨论回复表。讨论回复数据表中共有5个字段,分别是讨论回复id、回复内容、话题讨论id、学生id、回复时间,讨论回复id为主键且自增长,所有字段为非空。如表3.8所示。
表3.8 讨论回复表(discuss_post)
字段名 数据类型(精度围) 约束条件 其他说明
id INT(11) Primary key
Auto increment 讨论回复id
content TEXT Not null 回复内容
discuss_id INT(11) Not null 话题讨论id
student_id INT(11) Not null 学生id
record_time DATETIME Not null 回复时间
学生信息表。学生信息数据表中共有9个字段,分别是学生id、姓名、性别、学院id、电话、身份证、账户、密码、学生学号,学生id为主键且自增长,除身份证字段外所有字段均为非空。如表3.9所示。
表3.9 学生信息表(student)
字段名 数据类型(精度围) 约束条件 其他说明
id INT(11) Primary key
Auto increment 学生id
name VARCHAR(50) Not null 姓名
gender INT(11) Not null 性别
college_id INT(11) Not null 学院id
telphone VARCHAR(50) Not null 电话
id_card_no VARCHAR(50) 身份证
account VARCHAR(50) Not null 账户
password VARCHAR(10) Not null 密码
num VARCHAR(50) Not null 学生学号
学生成绩表。学生成绩数据表中共有5个字段,分别是学生成绩id、学生id、作业测试id、成绩、完成时间,学生成绩id为主键且自增长,所有字段非空。学生成绩表在数据库创建时没有使用物理外键,而是在开发中使用的逻辑外键。如表3.10所示。
表3.10 学生成绩表(student_task)
字段名 数据类型(精度围) 约束条件 其他说明
id INT(11) Primary key
Auto increment 学生成绩id
student_id INT(11) Not null 学生id
task_id INT(11) Not null 作业测试id
score INT(11) Not null 成绩
record_time DATETIME Not null 完成时间
测试问题信息表。测试问题信息数据表中共有9个字段,分别是测试问题id、题目、选项a、选项b、选项c、选项d、答案、作业测试id、分数,测试问题id是主键且自增长非空。如表3.11所示。
表3.11 测试问题信息表(task_question)
字段名 数据类型(精度围) 约束条件 其他说明
id INT(11) Primary key
Auto increment 测试问题id
title VARCHAR(50) Not null 题目
item_a VARCHAR(50) Not null 选项a
item_b VARCHAR(50) Not null 选项b
item_c VARCHAR(50) 选项c
item_d VARCHAR(50) 选项d
answer VARCHAR(50) Not null 答案
task_id INT(11) Not null 作业测试id
score INT(11) Not null 分数
3.3 本章小结
本章主要描述了系统总体设计,对数据库相关设计内容进行了描写,根据类图以及系统总体间的关系设置对应实体类的数据表。并且对主要的数据表设计详情进行了描述。

4 系统实现

4.1 开发环境
4.1.1 软件
本文系统开发所使用的操作系统是Windows10,在Windows10系统中能实现分屏操作,因此在开发的时候能更加方便一些。本文系统使用的开发软件eclipse4.6.3,eclipse是一个应用开发平台,它是基于java语言的,而且开发源码,它还具有很好的扩展性,它能安装不同插件从而能进行多种语言的开发,如果想要进行其他语言开发,只需要下载对应语言的插件即可,添加的对应功能就是以插件的形式存在于它的核心上,eclipse的核心主要包括插件开发环境、java语言开发环境插件、图形API等[21]。eclipse自带有Java开发工具JDK,但是在本项目开发中使用的是另外下载使用的JDK1.8。当JDK版本过低时会使整个系统启动出现问题,Web服务器会出现问题。在eclipse中可是使用很多快捷键,能提高开发效率,整个软件都是开源的,因此成本就会降低。
4.1.2 服务器
Web服务器使用的是Tomcat 8.0,Java开发工具与Web服务器之间存在版本匹配的问题,否则实际开发中会出现问题,JDK1.8至少需要Tomcat8版本,而如果是使用JDK1.7,则必须要使用Tomcat8以下,不能使用Tomcat8版本。数据库服务器使用的是MySQL 5.7,MySQL数据库是关系数据库,它的体积较小,运行速度快,主要它还开源。在使用MySQL数据库时为了使操作更加方便,可以使用Navicat,Navicat是一个MySQL数据库的管理工具和开发工具[25],使用这个图形化工具还因为它是基于Windows系统的,在整个开发中能让开发者对数据库的操作更加方便,提高效率。当Web服务器启动后可以使用经常使用的浏览器进行客户端操作,该系统开发时是使用Internet Explorer11来验证效果。
4.2 功能实现
4.2.1 数据显示功能实现
数据显示。当学生用户登录成功后,将跳转进入到学生主页面当中,之后点击左侧导航栏中的查看课程信息,将会显示所有课程信息,里面将会显示所有课程的详细信息。如图4.1所示。
在这里插入图片描述

图4.1 数据显示图
下面是如何实现展现相关课程信息的核心代码。第一部分是控制器中查看功能的核心代码,第二部分是业务层中查看功能的核心代码,第三部分是数据持久层中查看功能的核心代码,最后是JavaScript实现跳转。
@Controller
@RequestMapping(“/searchCourseInfo”)
public ModelAndView searchCourseInfo() {
ModelAndView mav = new ModelAndView();
mav.addObject(“courses”, indexService.searchCourse());
mav.setViewName(“searchCourseInfo”);
return mav;
}
@Service(“index”)
public List searchCourse() {return courseMapper.searchEntity();}
Mapper:CourserMapper.xml

SELECT u.id, u.name, u.num, c.name AS collegeName, u.intro FROM course
AS u JOIN college AS c ON u.college_id = c.id

JavaScript:
$(“.wk-main-menu-item”).each(function() {
$(this).on(“click”, function() {
var url = “”;
var id = $(this).attr(“id”).substr(19, $(this).attr(“id”).length);
$(“#mainFrame”).attr(“src”, “<%=basePath%>” + id + “.html”);
});
});
4.2.2 添加数据功能实现
添加数据。在教师登录跳到主页中后,首先点击作业信息查询,之后选择要添加作业的课程,选中后点击录入题目,就进行题目信息等内容的添加,题目等内容添加完毕后点击提交。如图4.2所示。
在这里插入图片描述

图4.2 添加数据图
下面是如何实现添加作业测试的核心代码。第一部分是控制器中添加功能的核心代码,第二部分是业务层中添加功能的核心代码,第三部分是数据持久层中添加功能的核心代码。
@Controller
@RequestMapping(“/saveQuestion/{id}”)
public ModelAndView saveQuestion(@PathVariable(“id”) Integer id,
TaskQuestion taskQuestion) {
taskQuestion.setTaskId(id);
indexService.saveTaskQuestion(taskQuestion);
return new ModelAndView(“redirect:/createQuestion/”+id+“.html”);
}
@Service(“index”)
public void saveTaskQuestion(TaskQuestion taskQuestion) {
taskQuestionMapper.saveEntity(taskQuestion);
}
Mapper:TaskQuestionMapper.xml











INSERT into task_question (title, item_a, item_b, item_c, item_d, answer, task_id, score) VALUES (#{title}, #{itemA}, #{itemB}, #{itemC}, #{itemD}, #{answer}, #{taskId}, #{score})

4.2.3 删除数据功能实现
删除数据,当管理员登录跳转到主页后,点击左侧导航栏中的教师信息查询,进入界面后点击选中某位教师,再点击右上方的删除按钮,会弹出对话框,提示操作者是否删除。选择“确定”的按钮,经过后台数据库完成操作后,删除成功后刷新页面。如图4.3-4.4所示。
在这里插入图片描述

图4.3 删除数据图
在这里插入图片描述

图4.4 删除数据成功图
下面是如何实现删除教师信息的核心代码,在删除完成之后刷新了页面,相当于是进行了更新。业务层中的代码使用的是Spring中的IOC容器创建对象。第一部分是控制器中删除功能的核心代码,第二部分是数据持久层中删除功能的核心代码。
@Controller
@RequestMapping(“/deleteTeacher/{id}”)
public ModelAndView deleteTeacher(@PathVariable(“id”) Integer id) {
indexService.deleteTeacher(id);
return new ModelAndView(“redirect:/searchTeacher.html”);
}
Mapper:TeacherMapper.xml













DELETE FROM teacher WHERE id = #{id}

4.2.4 修改数据功能实现
修改数据。当教师登录跳到主页后,点击左侧导航栏中的个人信息修改,操作者对想要修改的信息进行改动,改动完成后提交数据,但是在修改数据时要注意三个地方是下拉列表进行选择,分别是所属学院、性别、课程,数据提交完成后自动跳入到课件上传页面,也就表示数据修改成功。如图4.5-4.6所示。
在这里插入图片描述

图4.5 修改数据效果图
在这里插入图片描述

图4.6 修改数据跳转图
下面是如何实现修改个人信息的核心代码,在接收浏览器端的请求之后获取数据执行数据库的更新。第一部分是控制器中修改功能的核心代码,第二部分是数据持久层中修改功能的核心代码。
@Controller
@RequestMapping(“/updateTeacherInfo”)
public ModelAndView updateTeacherInfo(HttpSession session) {
Teacher teacher = (Teacher) session.getAttribute(“user”);
ModelAndView mav = new ModelAndView();
mav.addObject(“teacher”, indexService.getTeacherById(teacher.getId()));
mav.addObject(“courses”, indexService.searchCourse());
mav.addObject(“colleges”, indexService.searchCollege());
mav.setViewName(“updateTeacherInfo”);
return mav;
}
Mapper:TeacherMapper.xml

UPDATE teacher SET name = #{name}, num = #{num}, college_id = #{collegeId},
telphone = #{telphone}, id_card_no = #{idCardNo}, gender = #{gender}, account = #{account}, password = #{password}, course_id = #{courseId} WHERE id = #{id}

4.3 本章小结
本章主要描述了系统的开发环境的配置和浏览器使用版本,以及涉及数据库增删改查的主要功能实现方法,在系统中进行功能操作后,通过抓图来呈现整体的功能实现效果;以及代码展现。

5 系统测试

5.1 测试计划
系统测试是将已经继承好的软件系统,作为计算机系统的一个元素,与计算机硬件、某些支持软件、数据和人员等其他系统元素结合在一起,在实际运行环境下,对计算机系统进行一系列的集成测试和确认测试。软件测试可以识别项目风险,它的主要目的是发现软件缺陷和漏洞[22]。基于SSM的网络教学系统,需要测试的是客户端与后台使用情况。主要测试用户登录角色不同后页面跳转情况,以及数据的增删改查。
5.2 测试用例
学生登录测试用例。当进入登录也首先会提示请登录,之后学生输入账号与密码选择学生角色登录会自动跳转到学生页面;如果选择不符合当前账户的角色时会显示用户名或密码错误。如表5.1所示。
表5.1 学生登录测试用例
测试编码 测试功能 测试点 是否通过
5.1学生用户登录测试 进入相对应角色页面 学生是否进入学生页面 通过
步骤:
根据拥有的学生账号123456和密码123456,进入登录页面输入账号和密码;选择学生角色;点击登录按钮。
测试预期:
点击登录按钮之后进入学生页面。
课程文档查询测试测试用例。学生登录成功后,在主页的左侧导航栏点击课程文档查询功能,进入显示所有文档的页面,在页面上方有发布教师选择栏,点击选择相应的教师,最后点击查询按钮。文档的显示表中就会显示对应教师的文档,如果为空,则是这个教师没有发布文档。如表5.2所示。
表5.2 课程文档查询测试用例
测试编码 测试功能 测试点 是否通过
5.2 课程文档查询测试 根据教师信息查询课程文档情况 课程文档显示是否变化 通过
步骤:
点击课程文档查询功能,进入显示所有文档的页面,在页面上方有发布教师选择栏,点击选择刘教师,最后点击查询按钮。
测试预期:
课程文档显示表中只显示出了“刘老师”的课程文档。
添加学生测试用例。管理员登录成功后点击左侧导航栏中的新增学生,进入学生信息录入页面,里面没有录入任何信息,直接点击提交,会显示信息不能为空,需要添加完毕才能录入。如表5.3所示。
表5.3 添加学生测试用例
测试编码 测试功能 测试点 是否通过
5.3 添加学生测试 添加学生信息 添加学生功能 通过
步骤:
管理员登录成功后点击左侧导航栏中的新增学生,进入学生信息录入页面,里面不录入任何信息,直接点击提交,查看录入情况。
全部信息按照格式录入,查看情况。
测试预期:
单击“提交”按钮后,有红框显示,不能为空。
单击“提交”按钮后,刷新跳转其他页面,并且录入的内容全部正确的填入后台数据表中。
文件下载测试用例。学生登录成功后,点击上方导航栏中的课程文件下载,先选择要下载的文件,在点击右上方的下载文件,点击完成后浏览器就会提示下载到哪里,成功后本地就可以打开文件。如表5.4所示。
表5.4文件下载测试用例
测试编码 测试功能 测试点 是否通过
5.4 文件下载测试 文件能下载 文件下载 通过
步骤:
学生登录成功后,点击上方导航栏中的课程文件下载,选择要下载的“软件需求分析”文件,在点击右上方的下载文件按钮。
测试预期:
浏览器提示下载到默认地址,下载完成后在桌面上能够打开。
5.3 测试结果
网络教学系统的运行和性能,具有良好的客观性、安全性和稳定性;该系统能基本实现预期的需求;系统整体使用的操作性能较好;数据库使用存在的风险系数低,功能比较完备,基本数据文件格式接收传递是准确的,符合系统设计的要求。
5.4 本章小结
本章主要描述了通过页面请求执行相应的功能,对主要的功能进行测试,如不同角色用户登录到不同界面、课程文件下载功能、学生信息添加功能等,通过使用例表的形式对展现这些功能中的部分功能来测试情况。

总结与展望

整个B/S架构的系统使用了SSM框架与MySQL,通过对该系统的实现,课题的主要研究成果包括:在课程管理方面,在系统中设置了学院管理,课程的通过需要管理员进行操作,随后教师才对对应的课程进行课程内容的添加。
在用户管理方面,在系统中设置了管理员,管理员能进行教师与学生的导入,而教师负责实现课程知识传授的工作,减少教师的工作。在系统开发与运行的软件及工具选择方面,主要采用的是开源、免费的技术与软件,节省了相关花费与系统的总体成本。
由于第一次独自进行整个项目的开发,技术的使用不是很熟悉,掌握程度有限,所以在整个系统的开发过程中,还有一些功能页面的转换和业务逻辑方面等做的不是很好,离理想的整体状态还是有一定的差距。系统的功能界面的设计不管是布局还是外观,因为设计水平的能力限制,不能达到理想的页面展示,还存在许多瑕疵。

致 谢

时光如白驹过隙,四年的大学生涯即将默默走过。回忆着那些美好的校园时光:老师们在课堂上认真讲授知识,同学们在不时埋头做笔记,课下同学间的打打闹闹。校园时而安静美丽,时而热闹非凡。这一切都让我充满感动,也将永远刻在心中。
在这里真诚的感谢陈思老师与董超老师对我的指导,在开始选题时自己有些迷茫,是指导老师在一旁引导我,让我有了整个项目的想法,在撰写开题报告时有很多不足的地方,指导老师都一一批注出来,并指导从何处着手修改,反反复复修改多次,老师每次都非常仔细的查看。在论文的整个编写中老师也仔细的告诉我注意的事情,在整个框架构建要注意细节。老师的认真负责也激励着我不断完善自己的论文,每一个细小的环节都包含指导老师的心血与无私奉献。老师的认真严谨都深深地影响着我,鼓励我不断前行,也将使我终生受益,铭记终身。
感谢在沈阳城市学院遇见的每位老师与同学。他们在我大学四年期间给予我无私的关怀和诸多帮助。最后,特别感谢我的家人和朋友。在生活和学习方面,都给我提供了极大的便利和支持,在背后默默地祝福着我支持着我,当我遇见困难时始终有一个让我倾诉的地方。感谢在我的人生中有你们的出现!

参考文献

[1] 刘德政.计算机网络教学平台设计与实现策略[J].无线互联科技,2019,16(23):70-71
[2] 祁晓鹏,吉陈力.基于AJAX的班组信息化系统的设计[J].信息系统工程,2020(02):66-68+70
[3] 王建,罗政,张希,张梦琪,张科,马文成.Web项目前后端分离的设计与实现[J].软件工程,2020,23(04):22-24
[4] 鞠宏军,佘春燕.基于SSM的高并发慕课网的设计与实现[J].电脑知识与技术,2020,16(02):54-56+90
[5] 胡雅丽.基于BootStrap+JavaScript语言简易计算器的实现[J].太原学院学报(自然科学版),2020,38(01):73-76
[6] Henrik Wessing, Pavel Skoda, Martin Nordal Petersen, et al. Alien Wavelengths in National Research and Education Network Infrastructures Based on Open Line Systems: Challenges and Opportunities[J].Journal of Optical Communictions and Networking,2019, 11(3):118-129
[7] 黄宇靖,陈嘉发,柯文婷.高校计算机课程网络教学平台的应用研究[J].电脑知识与技术,2019,15(35):160-161
[8] 戴文鑫,袁榕澳.基于HTML5的算法可视化编辑器研究[J].信息与电脑(理论版),2020,32(05):64-66
[9] R.C. Paiva,M.S. Ferreira,M.M. Frade. Intelligent tutorial system based on personalized system of instruction to teach or remind mathematical concepts[J]. Journal of Computer Assisted Learning,2017,33(4):370-381
[10] 孙媛媛.高校思政教学资源实践教学网络平台设计[J].微型电脑应用,2020,36(02):152-155
[11] 关德君.大数据应用于国家开放大学学习平台的探索与思考[J].电脑知识与技术,2020,16(01):106-107
[12] Erin Heinz. Book Review: Small Teaching Online: Applying Learning Science in Online Classes[J].Teaching Sociology,2020, 48(2):165-168
[13] 郑逸凡.基于SSM框架的在线教学系统的设计[J].长沙大学学报,2019,33(02):41-44
[14] Tracey Zhang,Lay-Chin Low,Poh-Sun Seow. Using online tutorials to teach the accounting cycle[J]. Journal of Education for Business,2020,95(4):
263-274
[15] 张工厂.MySQL 5.7从入门到精通(第2版)[M].北京:清华大学出版社,2019:47-94
[16] 天津滨海迅腾科技集团有限公司.Java Web应用程序开发[M].天津:南开大学出版社,2017:180-187
[17] 李艳鹏.互联网轻量级SSM框架解密[M].北京:电子工业出版社,2019:138-140
[18] 赵纯.基于B/S结构的网络教学系统的设计与实现[D].天津大学,2015
[19] 程程.基于WEB的网络教学系统设计[D].长春工业大学,2018
[20] 陈红.基于SSM框架的智能web管理系统的研发设计[D].北京化工大学,2012
[21] 赵永杰,马宝龙,包国强.基于SSM书香驿站平台的设计与实现[J].农家参谋,2020(06):188
[22] 董金艳,鲍胜文,肖小兵,赵飞,张承武,牛占云,刘冠超,周轩伊.浅谈嵌入式软件测试[J].电子世界,2019(23):208-209
[23] 赵国文,夏平平.基于JavaEE的人事管理系统的设计与实现[J].现代工业经济和信息化,2019,9(11):88-89
[24] 张丽.以HTML 5+CSS3+jQuery为基础的响应式布局网页设计探讨[J].计算机产品与流通,2019(11):195+198
[25] 赵光亮,舒小松.Navicat for MySQL平台中的SQL语言分析与应用[J].无线互联科技,2017(19):74-75

这篇关于基于SSM的网络教学系统设计与实现的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/799078

相关文章

不懂推荐算法也能设计推荐系统

本文以商业化应用推荐为例,告诉我们不懂推荐算法的产品,也能从产品侧出发, 设计出一款不错的推荐系统。 相信很多新手产品,看到算法二字,多是懵圈的。 什么排序算法、最短路径等都是相对传统的算法(注:传统是指科班出身的产品都会接触过)。但对于推荐算法,多数产品对着网上搜到的资源,都会无从下手。特别当某些推荐算法 和 “AI”扯上关系后,更是加大了理解的难度。 但,不了解推荐算法,就无法做推荐系

hdu1043(八数码问题,广搜 + hash(实现状态压缩) )

利用康拓展开将一个排列映射成一个自然数,然后就变成了普通的广搜题。 #include<iostream>#include<algorithm>#include<string>#include<stack>#include<queue>#include<map>#include<stdio.h>#include<stdlib.h>#include<ctype.h>#inclu

【C++】_list常用方法解析及模拟实现

相信自己的力量,只要对自己始终保持信心,尽自己最大努力去完成任何事,就算事情最终结果是失败了,努力了也不留遗憾。💓💓💓 目录   ✨说在前面 🍋知识点一:什么是list? •🌰1.list的定义 •🌰2.list的基本特性 •🌰3.常用接口介绍 🍋知识点二:list常用接口 •🌰1.默认成员函数 🔥构造函数(⭐) 🔥析构函数 •🌰2.list对象

【Prometheus】PromQL向量匹配实现不同标签的向量数据进行运算

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi

让树莓派智能语音助手实现定时提醒功能

最初的时候是想直接在rasa 的chatbot上实现,因为rasa本身是带有remindschedule模块的。不过经过一番折腾后,忽然发现,chatbot上实现的定时,语音助手不一定会有响应。因为,我目前语音助手的代码设置了长时间无应答会结束对话,这样一来,chatbot定时提醒的触发就不会被语音助手获悉。那怎么让语音助手也具有定时提醒功能呢? 我最后选择的方法是用threading.Time

Linux 网络编程 --- 应用层

一、自定义协议和序列化反序列化 代码: 序列化反序列化实现网络版本计算器 二、HTTP协议 1、谈两个简单的预备知识 https://www.baidu.com/ --- 域名 --- 域名解析 --- IP地址 http的端口号为80端口,https的端口号为443 url为统一资源定位符。CSDNhttps://mp.csdn.net/mp_blog/creation/editor

Android实现任意版本设置默认的锁屏壁纸和桌面壁纸(两张壁纸可不一致)

客户有些需求需要设置默认壁纸和锁屏壁纸  在默认情况下 这两个壁纸是相同的  如果需要默认的锁屏壁纸和桌面壁纸不一样 需要额外修改 Android13实现 替换默认桌面壁纸: 将图片文件替换frameworks/base/core/res/res/drawable-nodpi/default_wallpaper.*  (注意不能是bmp格式) 替换默认锁屏壁纸: 将图片资源放入vendo

C#实战|大乐透选号器[6]:实现实时显示已选择的红蓝球数量

哈喽,你好啊,我是雷工。 关于大乐透选号器在前面已经记录了5篇笔记,这是第6篇; 接下来实现实时显示当前选中红球数量,蓝球数量; 以下为练习笔记。 01 效果演示 当选择和取消选择红球或蓝球时,在对应的位置显示实时已选择的红球、蓝球的数量; 02 标签名称 分别设置Label标签名称为:lblRedCount、lblBlueCount

Kubernetes PodSecurityPolicy:PSP能实现的5种主要安全策略

Kubernetes PodSecurityPolicy:PSP能实现的5种主要安全策略 1. 特权模式限制2. 宿主机资源隔离3. 用户和组管理4. 权限提升控制5. SELinux配置 💖The Begin💖点点关注,收藏不迷路💖 Kubernetes的PodSecurityPolicy(PSP)是一个关键的安全特性,它在Pod创建之前实施安全策略,确保P

ASIO网络调试助手之一:简介

多年前,写过几篇《Boost.Asio C++网络编程》的学习文章,一直没机会实践。最近项目中用到了Asio,于是抽空写了个网络调试助手。 开发环境: Win10 Qt5.12.6 + Asio(standalone) + spdlog 支持协议: UDP + TCP Client + TCP Server 独立的Asio(http://www.think-async.com)只包含了头文件,不依