获取项目源文件,技术交流与指导联系Q:1225467431
摘 要
论文从网络教学综合平台的背景和意义开始,阐述了网络教学综合平台的发展趋势,采用MVC设计模式,以JavaEE开发平台技术为基础,提供了基于java的JSP、JavaBean、Struts技术实现组件化的Web程序和B/S三层体系开发的基本思想。从业务需求、模块功能需求等方面,分别对系统中教师、学生、管理员三种角色的体系结构和功能作用进行了分析。从表示层、业务层和数据层三层逻辑层,进行了具体设计和实现。
系统主要实现的效果是教师可以管理课程,如添加某门课程,添加教学大纲、教师计划,还可以实现在线观看视频、发布课后作业等。教师可以查看授课班级学生信息及作业成绩,同时可以发布公告和发布日记。学生可以查看公告、教师信息及课程的相关信息,还可以提交课后作业,对于不懂的问题可以进行网上答疑。管理员可以对教师和学生进行有关操作,同时管理网上答疑模块。通过这个系统,学生可以方便的获取所学课程的学习资料,触发的学习积极性。老师能够在线辅导学生,通过课后作业,了解学生的学习情况。
关键词:网络教学综合平台,JavaEE,MVC设计模式,Struts
Abstract
From the network background and significance of education platform, paper has explain the trends in network education platform, using the MVC design pattern for JavaEE development platform technology, provides a java-based JSP, JavaBean, Struts technology components of the Web programs and B/S three-tier system, developed the basic idea. Demand from the business requirements, functional requirements and other aspects of the module, analysis system structure and function of the teacher, student, and administrator three roles. From the presentation layer, business logic layer and data layer three-layer, the specific design and implementation.
This system to achieve the effect is that teachers can manage courses, such as adding a class, add a syllabus, teaching plan, but also can be achieved online watch videos, publish homework. Teachers can view students of the teaching class information and score, and also can publish the Announcement message and diary. Students can view the Announcement message, teacher information and course information. Students can also submit homework and solve the unknown problems by online Q & A. Administrator can operate teachers and students, and also manages the online Q & A module. Through this system, students can easily obtain the information of the courses, and can be triggered the enthusiasm for study. Teacher can help student on Internet,, and understand students‘ learning situation by homework which is submitted.
Keywords: The Network Education Platform, JavaEE, MVC Design Pattern , Struts
目 录
摘 要 I
Abstract II
1 绪论
1.1研究背景及意义 (1)
1.2网络教学综合平台的发展 (2)
1.3网络教学综合平台存在的问题及原因分析 (3)
1.4本章小结 (4)
2 相关技术简介
2.1 JavaEE平台 (5)
2.2 MVC设计模式 (5)
2.3 Struts2技术 (7)
2.4 UML建模语言 (8)
2.5本章小结 (9)
3 系统需求分析
3.1业务需求分析 (10)
3.2功能需求分析 (14)
3.3功能模型分析 (17)
3.4本章小结 (20)
4 系统设计
4.1系统总体体系结构 (21)
4.2数据库设计 (22)
4.3表示层设计 (26)
4.4业务逻辑层设计 (26)
4.5数据层设计 (29)
4.6本章小结 (31)
5 系统实现
5.1开发环境部署 (32)
5.2表示层的实现 (32)
5.3系统有关逻辑功能的实现 (35)
5.4数据层的实现 (39)
5.5本章小结 (41)
6 系统测试
6.1单元测试 (42)
6.2功能测试 (43)
6.2本章小结 (44)
致 谢 (45)
参考文献 (46)
1 绪论
1.1研究背景及意义
在知识大爆炸的现代,怎样才能更好地学习摆在大家面前的一个难题。随着计算机技术和宽带网络的飞速发展,网络教学综合平台为学校教学提供了一种新的手段和方式。一定意义上说,网络教学综合平台的使用对于学校教学是一场革命。20世纪90年代中后期到现在,网络在学校得到了普遍的应用,各高校的校园网也相继出现,但是校园网络在教学方面的发展相对较缓慢,未能起到其应有的作用。在教学对象上,偏重于更加功利的远程教育,不够重视学校的教育。大力开展网上教学,注重学生对教学资源的真实需求,推动信息技术与课程信息的集合,是推动教学改革,培养创新人才的有效途径,也是教育技术在教学中充分应用的体现[1]。
网络教学不仅取代传统方式的课堂教学,而是将网络教学模式和课堂教学融合在一起,吸收传统课堂教学的优点,并克服其时间时空限制等弱点,发挥网络教学的优点,构建一种全新的教学模式。网络教学综合平台的实现主要有以下几点意义。
(1)消除学习的时间和空间的限制,提高学生学习效率,并且极大限度的激发学生的学习潜能
通过建立此平台,可以使学生在任何有网络的地点学习知识。消除了学习在时间和空间上的限制。学生不必再因为没有听清楚内容或者忘记内容而耽误学习,极大的提高了学生的学习效率。教学平台的应用,使得教学资源可视化,这是对传统学习的一种颠覆,一场革命。学生通过教学资源,可以根据自身情况,自身特点和需求来学习,可以发散自己的思维,而不是一味的跟随老师的思想,这样激发了学生对学习的兴趣,有助于学生创新能力的提高,并极大限度的激发了学生的学习潜能。
(2)促进教育教学结构的改革
以往的教学改革,都是教学内容、教学手段和教学方法的改革,但是对于教学模式的改革却很少,这对于教学作为一个系统说是不合理的,这点已得到众多专家学者的认同,对于教学结构的改革,在观念和体制的束缚下难以推进,而观念的改变是一个渐进的过程,开展网络教学可以促进这一过程的进行,让教师和学生逐渐从习惯课堂教学过渡到接受网络教学,他们需要心理的准备,也需要信息技术素养的准备
(3)汇总大量的教学资源及教学信息,促进高校整体的管理
如大家所知,教学资源数量类别庞大,建立网络教学平台可以更好的管理它们,还可以将它们汇总,并分门别类整理,为学生提供了方便快捷的学习资源。由于教学是一个长期的活动,将教学资源信息整合为以后的教学平台还提供了学生、老师信息的汇总管理,新闻的发布以及最新的通知事宜,这也促进了高校在整体上的管理。
1.2网络教学综合平台的发展
20世纪90年代中期,为了满足网络教学的发展需要,一些教育和商业机构开始开发专门的教学系统。这些系统从最初帮助教育机构开发教学资源库,到后来支持和管理网络教学,都是围绕教学资源的管理和网络教学活动的管理两方面的功能发展起来的网络教学综合平台。
网络教学综合平台大体经历了四个发展阶段:
第一阶段:普通的学习资源库,也成为内容管理系统。在网络技术发展的初期,一些大学、公司和培训机构开始有意识地开发专门的网络资源库,用来存储和管理教学资源,从而减少开支,使学习者可以自主地学习,也丰富了知识的传播途径。但其功能仅限于资源管理,资源格式与管理技术不统一,难以广泛共享。
第二阶段:学习管理系统。学习管理系统源于自动化系统,具有用户注册管理、课件目录管理、学习者的信息数据记录等功能,但一般不具备教学内容制作的功能。
第三阶段:学习内容管理系统。学习内容管理师最初为高等教育开发的传统课件管理系统的发展版,旨在帮助没有技术经验的教师或资源专家设计、创建、发布和管理网络课件。同时它能够对用户进行管理,可以跟踪学生的学习进度并及时调整以适合学习者的学习需要。学习内容管理系统使学习的共享和教学系统的交互成为可能。
第四阶段:通用网络教学综合平台[2]。通用网络教学综合平台在既有教学系统的基础上,从对教学过程(课件的制作与发布、教学组织、教学交互、学习支持和教学评价)的全面支持,到教学的管理(用户与课程的管理),再到与网络教学资源库及其管理系统的整合,集成了网络教学需要的主要子系统,形成了一个相对完整的网络教学支持环境。
1.3网络教学综合平台存在的问题及原因分析
(1)网络教学综合平台不符合高校的教学模式
传统的网络教学综合平台大都是按学科体系,重理论的讲授,平台按学科体系进行教学内容的讲解及理论,没有以能力或技能的为 主线的模块化课程内容,没有按案例或任务驱动的教学模式。
(2)网络课程注重教学内容的传授,缺乏学习环境设计
纵观大部分的网络教学综合平台都非常重视教学内容的简单传授,提供诸如课程介绍、课程内容、教学大纲、教学录像等功能。虽然大部分网络课程的教学内容讲解与演示都比较到位,提供了大量教学的讲义PPT文件和上课的视频录像,但基本都是书本、课堂教学的简单搬迁。但是课程一开始就进入知识教学,没有为学习者设计相关的情景导入环节,完全忽略了教学环境的设计,将学习者置身于一个空洞的学习环境之中,学习者的知识学习和真实的生活环境脱节,更无从谈起使学习者获得实际的、能解决问题的技能相关联起来。
(3)网络教学综合平台对学习者的高要求与学生现有水平存在矛盾
网络教学对学习者的能力提出了很高要求,如良好的自我监控能力、计算机操作技能、与他人交互与协作的能力,以及信息的检索、分析、处理能力等等。但在长期应试教育的影响下,学生缺乏学习主体性意识,自主思考、探索、创新的精神不足,因而表象出对自主性学习方式适应不良。自制能力较差的学生容易沉溺于非学习性质的网络空间,造成学习的止步不前。
(4)网络教学综合平台课程资源库建设滞后,学习者不能参与资源库的建设
目前很多网络教学平台学习资源较少,不能及时更新。资源建设不足,表现为:一是量的不足:二是质的欠佳。不少网络教学平台明显有“赶活儿”的嫌疑,在一段时间内集中添加资源,时间紧、任务重,难免就有资源的选择与取舍不当之处,更缺乏资源的导学,又或者其他可能的问题,导致资源不是最合用的,而且资源库仅仅靠开发者自身的力量完成建设,也许不是最好的方式。
1.4本章小结
本章从网络教学综合平台的背景及意义、网络教学综合平台的发展和网络教学综合平台存在的问题做了简要的分析。
2 相关技术简介
随着计算机的高速发展,Web技术也在不断的提高。本章将对系统中应用的一些技术(如:JavaEE、MVC模式、Struts等)进行简单的介绍。
2.1 JavaEE平台
Java平台共分为三个主要版本JavaEE、JavaSE和JavaME。JavaEE(Java Platform,Enterprise Edition)是sun公司推出的一种全新的容器概念模型,是一个基于Java组件技术的企业级应用程序版本。这个版本以前称为J2EE[3]。JavaEE能够为我们帮助开发和部署可移植、健壮、可伸缩且安全的服务器端Java应用程序。JavaEE是在JavaSE的基础上构建的,它提供Web服务、组件模型、管理和通信API,可以用来实现企业级的面向服务体系结构(service-oriented architecture,SOA)和Web2.0应用程序。
JavaEE的基础核心是在标准版“编写一次、随处运行”、JDBC API等特性的基础上,能够进一步对JSP、XML技术提供全面支持。其最终目的就是成为一个能够使企业开发者大幅缩短投放市场时间的体系结构。它具有以下特点。
一是规范了标准的运用开发体系结构,使与基础结构服务相关的问题以及底层分配问题都由运用程序容器或者服务器来处理。二是提供的中间层集成框架,可满足运用系统高可用性、高可靠性以及可扩展性的需求。三是基于组件技术规范定义的标准开发平台,支持应用程序的集成,降低多层应用开发复杂性。JavaEE体系结构如图2-1所示。
图2-1 JavaEE体系结构图
2.2 MVC设计模式
MVC是一种目前广泛流行的软件设计模式[4]。随着网络应用的快速增加,MVC模式对于Web应用的开发无疑是一种非常先进的设计思想,无论你选择哪种语言,无论应用多复杂,它都能为你理解分析应用模型时提供最基本的分析方法,为你构造产品提供清晰的设计框架,为你的软件工程提供规范的依据[5]。
(1)MVC设计思想
MVC英文即Model-View-Controller,即把一个应用的输入、处理、输出流程按照Model、View、Controller的方式进行分离,这样一个应用被分成三个层——模型层、视图层、控制层。
视图(View)代表用户交互界面,对于Web应用来说,可以概括为HTML界面,但有可能为XHTML、XML和Applet。随着应用的复杂性和规模性,界面的处理也变得具有挑战性。一个应用可能有很多不同的视图,MVC设计模式对于视图的处理仅限于视图上数据的采集和处理,以及用户的请求,而不包括在视图上的业务流程的处理。业务流程的处理交予模型(Model)处理。
模型(Model):就是业务流程/状态的处理以及业务规则的制定。业务流程的处理过程对其它层来说是黑箱操作,模型接受视图请求的数据,并返回最终的处理结果。业务模型的设计可以说是MVC最主要的核心。
控制(Controller)可以理解为从用户接收请求, 将模型与视图匹配在一起,共同完成用户的请求[6]。划分控制层的作用很重要,它清楚地告诉你,它就是一个分发器,选择什么样的模型,选择什么样的视图,可以完成什么样的用户请求。控制层并不做任何的数据处理。一个模型可能对应多个视图,一个视图可能对应多个模型。MVC设计模型体系结构如图2-2所示。
(2)MVC拥有以下几个优点:
①最重要的是应该有多个视图对应一个模型的能力。这样减少了代码的复制,即减少了代码的维护量,一旦模型发生改变,也易于维护;
②由于模型返回的数据不带任何显示格式,因而这些模型也可直接应用于接口的使用;
③一个应用被分离为三层,因此有时改变其中的一层就能满足应用的改变;
④它还有利于软件工程化管理。由于不同的层各司其职,每一层不同的应用具有某些相同的特征,有利于通过工程化、工具化产生管理程序代码。
图2-2 MVC设计模型体系结构
综合上述,MVC是构筑软件非常好的基本模式,至少将业务处理与显示分离,强迫将应用分为模型、视图以及控制层, 使得你会认真考虑应用的额外复杂性,把这些想法融进到架构中,增加了应用的可拓展性。如果能把握到这一点,MVC模式会使得你的应用更加强壮,更加有弹性,更加个性化。
2.3 Struts2技术
Struts2 是一个web应用框架。它不是一个Struts的新的发布版本,而是一个全新的框架。Struts2是第二代基于Model-View-Controller (MVC)模型的web应用框架。 Struts2是java企业级web应用的可扩展性的框架[7]。它是WebWork和Struts社区合并后的产物。它继承了MVC的各项特性,并更具JavaEE了相应的变化和扩展。
Struts2工作时使用拦截器作为处理,以用户的业务逻辑控制器为目标,创建一个控制器代理。控制器代理负责处理用户请求,处理用户请求时回调业务控制器的execute方法,该方法的返回值决定了Struts2将怎样的视图资源呈现。
Struts2框架的大致处理流程如下:
(1)浏览器发送请求,例如请求showcourse.action、 .action等;
(2)读取配置文件(struts配置文件中的Action);
(3)核心控制器FilterDispatcher根据请求决定调用合适的Action;
(4)Struts2的拦截器链自动对请求应用通用功能;
(5)处理业务,回调Action的execute方法,该execute方法先获取用户请求参数,然后执行某种数据库操作。实际上,因为Action只是一个控制器,它会调用业务逻辑组件来处理用户的请求;
(6)返回响应(通过execute方法将信息返回到FileterDispatch);
(7)查找响应(FileterDispatch根据配置查找响应的信息跳转页面);
(8)响应用户(jsp→客户浏览器显示,采用struts2标签库)[8]。Struts2的体系结构如图2-3所示。
图2-3 Struts2的体系结构图
2.4 UML建模语言
UML是一种Language(语言),是一种Modeling(建模)Language,是Unified(统一)Modeling Language。它已进入全面应用阶段的事实标准,它的应用领域正在逐渐扩展,包括嵌入式系统建模、业务建模、流程建模等多个领域,而且它还成为“产生式编程”的重要支持技术:MDA、可执行UML等。它定义了易于表达、功能强大、普遍适用的新思想、新技术和新方法。它是面向对象分析与设计的一种标准表示形式,主要用于对软件面向对象的分析与设计,还支持从需求分析开始的软件开发的全过程[9]。
UML组成,由以下三部分(构造块、规则、公共机制)构成:
(1)构造模块。包含三项:①UML中的建模元素:元素又分为结构元素、行为元素、分组元素和注解元素; ②UML中的关系:UML中有四种关系,分别为关联关系、依赖关系、泛化关系和实现关系;③UML中的图:UML中的图主要有用例图、组件图、对象图、类图、时序图、活动图、状态图 、配置图等[10]。
(2)公共机制。公共机制中规定的描述就是对构造块的语句和语义的描述;修饰就是指对一些细节的符号修饰。
(3)规则。规则的命名就是元素的名字;规则的范围就是类似类的作用域;规则的可见性有:public、protected、private、package四种。UML的组成结构如图2-4所示。
图2-4 UML的组成结构
2.5本章小结
本章对JavaEE结构、MVC模式、Struts和UML做了详细的分析,为开发奠定了基础,确定了JavaEE为软件架构的标准平台,MVC为软件架构的设计模式的开发理念。
3 系统需求分析
在系统工程或软件工程中,需求分析指的是在建立一个新的或改变一个现存的系统或产品时,确定新系统的目的、范围、定义和功能时所要做的所有工作。需求分析是软件工程中的一个关键过程[11]。在这个过程中,系统分析员和软件工程师确定顾客的需要。只有在确定了这些需要后他们才能够分析和寻求新系统的解决方法。本章将从业务需求、功能需求和功能模型对系统进行分析。
3.1业务需求分析
3.1.1业务需求
业务需求是指客户对产品开发商的系统的关系需求,反映组织机构或客户对系统、软件产品的基本的目标要求[12]。该系统的客户所涉及的业务主要分为三个部分:
(1)教师业务需求,参与者为任课教师。主要从五个方面展开,一是教师可以发布公告,对自己的公告可以改和删的操作。二是教师可以增加课程,对课程执行相关的操作,还可以布置作业。三是教师可以查询学生信息、作业成绩等。四是教师可以上传资源,对于自己的资源拥有删除的权限。五是教师可以网上答疑,回答学生的问题。
(2)学生业务需求,参与者为学生。主要从五个方面展开,一是学生可以查询作业成绩和个人信息。二是学生可以下载相关教学资源。三是可以查询教师和课程的相关信息。四是对于不懂的问题,学生可以进行网上答疑。五是学生可以看的教师发布的一些公共消息。
(3)管理员业务需求,参与者为管理员。主要从方面展开,一是管理员可以添加删除学生信息。二是管理员可以添加删除教师信息。三是管理员可以对网上答疑进行相关的操作。
3.1.2业务流程
(1)教师业务流分析
教师业务活动图和课程活动图如图3-1和3-2所示,教师登录网络教学平台系统后,可以拥有以下几个主要功能。①发布公告,教师可以根据需要发布上课、考试、作业等信息;②学生管理,教师可以查看授课班级的学生信息,还可以查看学生作业完成的情况和成绩的情况;③课程管理,教师可以根据自己的情况,添加新学期的课程,并添加该课程的有关信息,包括课程介绍、课程大纲、课程计划、课程教材、教学录像等,同时还可以布置作业;④资源管理,教师可以上传教学资源,可以删除自己上传的资源,下载资源;⑤日记管理,教师可以发布日记,对日记设置查看权限,同时对日记有增、删、改、查的功能;⑥网上答疑,当学生在网上答疑平台上提出疑问,教师可以帮助解答。
图3-1 教师业务活动图
图3-2 教师业务之课程管理活动图
(2)学生业务流分析
学生业务活动图如图3-3所示,学生可以在没有登录时可以拥有以下的功能:①查看教师信息,包括教师的基本信息以及授课信息;②查看课程信息,可以包括课程的基本信息,课程的一些相关信息(教学大纲、教学计划、课程教材等);③查看公告信息,学生可以在主界面看到新发布的公告消息,也可以在自己的界面看到主修课程的公告消息;④资源的下载,学生可以对课程的资源或者其他资源进行下载;⑤网上答疑,学生可以在网上提出疑问。
学生在登录后拥有的功能:①作业管理,学生可以查看老师布置的作业,并提交作业,还可以查看作业的成绩;②个人信息管理,学生可以操作自己的个人信息。
图3-3 学生业务活动图
(3)管理员业务流分析
管理员业务活动图如图3-4所示,管理员登录后可以拥有的功能:①学生管理,管理员可以添加学生信息(单个或批量),删除学生信息(单个或批量),修改学生信息;②教师管理,管理员可以添加教师信息(单个或批量),删除教师信息,修改教师信息;③网上答疑管理,管理员可以对该模块进行查看、删除。
图3-4 管理员业务活动图
3.2功能需求分析
网络教学综合平台系统,是为师生提供一个良好的教学平台,打造一个完整的网络教学体系。按角色可以分为教师、学生、管理员,每个角色赋予不同的权限,满足各个角色的业务需求,形成一个科学的合理的网络教学模式[13]。具体系统功能结构如图3-5所示。
图3-5 网络教学平台系统的功能层次结构图
根据系统的需求分析,可以根据角色把系统分层三个子系统,即:教师子系统、学生子系统、管理员子系统。
(1)教师子系统
教师子系统主要由六个大模块组成,即学生管理、课程管理、资源管理、公告管理、辅助答疑、日记管理。
①学生管理。教师可以对选修本门课的学生进行管理,包括查看学生的基本信息、作业成绩。
②课程管理。课程管理是网络教学平台的重点,它是连接学生与教师的枢纽。课程管理包括了课程介绍、教学大纲、教学计划、课程教学、教学录像等。教师还可以布置作业。学生可以很清楚的了解该课程的信息以及能把握学习的方向。学生还可以从中下载老师的课件、一些相关的教学资源。方便学生学习,为学生提供广阔的平台。
③资源管理。教师可以上传与课程有关的资源,还可以上传一些其他的资源,例如:素材、软件、源代码等。教师可以对自己的资源进行管理。
④公告管理。教师可以发表一些公共消息。例:通知什么时候要考试,什么时候要交作业。教师也可以发表一些关于学习上的通知。教师对自己发表的公告拥有控制权限。
⑤网上答疑。网上答疑,为学生提供了一个很好的解决疑惑的平台。学生可以在该平台提出任何疑问,包括学习和生活上的问题。教师可以在网上进行回应,帮助解决问题,或找到解决的方法。
⑥日记管理。教师可以发表日记,同时可以设置发表权限。
(2)学生子系统
学生子系统主要由查看公告、查看教师信息、查看课程信息、资源下载、网上答疑等五模块构成。
①查看公告。学生可以查看教师发表的公告消息。
②查看教师信息。学生可以查看教师的个人信息。
③查看课程信息。学生可以查看所有课程的课程信息,包括课程介绍、教学大纲、教学计划、课程教材等,还可以下载关于该课程的一些资源,在线看视频。学生可以提交所学课程的课后作业。
④资源下载。学生可以在资源下载中心,下载有关的资源。
⑤网上答疑。对于不解的问题、或者是生活中的未能解决的烦恼。可以在该平台提出。学生和教师都可以给予解答。
(3)管理员子系统
管理员子系统包括学生管理、教师管理、资源管理、公告管理、网上答疑管理等五个模块组成。
①学生管理。管理员可以添加学生和删除学生。添加学生可以单个添加和批量添加。删除学生也可以单个删除和批量删除。管理员还可以更改学生的某些信息。
②教师管理。管理员可以添加教师和删除教师。添加教师可以单个添加和批量添加。删除教师只能是单个删除。管理员对教师的某些信息有更改的权限。
③网上答疑管理。管理员可以对网上答疑中的帖子进行管理。
3.3功能模型分析
为了能够更加清楚的分析系统功能,采用用例图来解释相应的功能。用例图采用面向对象的思想,又是基于用户角度,采用简单的图形表示[12]。用例图表示了角色和用例之间的关系。它描述了系统、子系统和类的功能集合,表现为系统与一个或多个角色的消息交互动作关系和扩展关系。所以,用例图是非常重要的。
网络教学平台系统主要有三种角色:教师、学生、管理员。以不同的角色登录,将显示不同的功能界面,从根本上保证系统使用者个人信息的安全性。
3.3.1 网络教学平台中教师用例
教师登录后,主要有学生管理、公告管理、课程管理、日记管理、资源管理、个人信息管理等功能。教师用例图如图3-6所示。布置作业用例规约如表3-1所示。
图3-6 教师用例图
表3-1布置作业用例规约表
用例名称 |
布置作业 |
|
角色 |
教师 |
|
用例说明 |
该用例主要是实现发布作业的功能,起始于教师点击“发布习题”按钮 |
|
前置条件 |
进入课程界面 |
|
基本事件流 |
参与者动作 |
系统响应 |
1.教师输入发布系统的基本信息(包括作业标题、作业备注、上传文件)。 |
系统把数据插入到数据库内,若成功则进入查看作业页面,失败则显示失败页面。 |
|
备选事件流 |
参与者动作 |
系统响应 |
2.1 未输入标题 |
2.1 提示用户输入标题 |
|
2.2 未上传文件 |
2.2 提示用户上传文件 |
|
后置条件 |
作业发布成功 |
3.3.2 网络教学平台学生用例
学生登录后可以下载资源、查看成绩、网上答疑、查看教师信息、查看课程信息、完成课后作业等功能。学生用例图如图3-7所示。提交作业用例规约如表3-2所示。
图3-7 学生用例图
表3-2 提交作业用例规约表
用例名称 |
提交作业 |
|
角色 |
学生 |
|
用例说明 |
该用例主要是实现作业提交功能,起始于学生点击“上传作业”按钮 |
|
前置条件 |
学生登录后,进入课程界面,再进入查看作业的详细信息界面 |
|
基本事件流 |
参与者动作 |
系统响应 |
1. 点击“上传作业”按钮,进入上传作业界面。 2. 输入上传作业的相关信息(作业标题、作业备注、上传文件)。 |
系统把数据插入到数据库内,若成功则进入查看作业页面,失败则显示失败页面。 |
|
备选事件流 |
参与者动作 |
系统响应 |
2.1 未输入标题 2.2 未上传文件 |
2.1 提示用户输入标题 2.2 提示用户上传文件 |
|
后置条件 |
作业提交成功 |
3.3.3 网络教学平台管理员用例
管理员登录后,可以对人员进行管理,包括学生管理和教师管理。管理员还可以对公告、资源、网上答疑进行管理。管理员用例图如图3-8所示。添加用例规约如表3-3所示。
图3-8 管理员用例图
表3-3 添加教师用例规约表
用例名称 |
添加教师 |
|
角色 |
管理员 |
|
用例说明 |
该用例主要是实现添加教师的功能,起始于教师点击“增加教师”按钮 |
|
前置条件 |
管理员登陆,进入管理员界面 |
|
基本事件流 |
参与者动作 |
系统响应 |
1. 输入教师的基本信息(教师编号、教师姓名、登陆密码) |
系统首先查询数据库,查看是否存在该教师,若有则添加失败,则进入2.2。若没有则把信息插入到数据库中,并转到成功页面 |
|
备选事件流 |
参与者动作 |
系统响应 |
2.1 未输入教师编号 2.2 未输入教师姓名 2.3 未输入登陆密码 |
2.1 提示教师编号、教师姓名、登陆密码不能为空。 2.2 提示该教师已经存在。 |
|
后置条件 |
教师添加成功 |
3.4本章小结
本章从系统的业务需求、功能需求、功能模块三个方面,利用功能层次结构图、活动图、用例图,来对网络教学综合平台系统进行详细的需求分析。
4 系统设计
系统设计是系统的物理设计阶段,主要是确定系统的逻辑模型和功能要求,还包括数据库的设计。本章主要是介绍系统的总体结构体系,再分别细致地对每一层进行详细介绍。
4.1系统总体体系结构
4.1.1系统的分层结构框架
网络教学综合平台系统是基于JavaEE的架构,该技术是一种利用java来简化企业解决方案的开发、部署和管理相关的复杂问题的体系结构。根据功能的不同,把应用程序按逻辑划分成表示层、业务层、数据层。分层结构框架如图4-1所示。
图4-1 分层结构框架图
4.1.2系统的分层结构的工作原理
首先用户在表示层发出HTTP请求,然后把请求移交给控制器Servlet,控制器Servlet接受请求并进行校验,合法的请求将转到业务层,业务层根据请求内容访问数据层相对应的数据表,找到数据后封装成JavaBean,JSP文件获取JavaBean对象获得数据,以HTML的格式显示请求信息,这样完成了一次数据请求。
4.2数据库设计
4.2.1数据表间的关系
数据库的概念设计是在需求分析的基础上,用概念数据模型如常用的E-R数据模型表示数据及其相互间的关系,是准确表达现实世界数据间关系的重要环节。数据库的设计是允许数据库访问的Web应用程序开发的非常重要的环节。数据库设计是允许数据库访问的Web应用程序开发的非常重要的部分,它将直接影响系统的长期有效性和产品化程度。
系统中的数据表间都有着相互连接的关系,如图4-2所示,学生与教师之间的关系是系统的主要关联关系。主要是通过学生选课表来建立联系,在学生选课表中有教师Id、班级、课程Id字段,它们单独则作为该表的外键,一起则作为主键。这样学生可以通过班级和老师、课程建立联系。
由图4-2中可以看出,在系统中,对数据表间的关系做了清晰的标识,表与表直接可能存在一对一、一对多、多对多的关系,大大提高了系统的访问请求的能力。
图4-2 学生与教师之间关系E-R图
4.2.2数据库表结构
系统中学生信息、教师信息、管理员信息、课程信息等都是存在数据库内,因此,数据库设计的合理性和优越性直接影响到整个系统开发的成败以及系统的可维护性。在系统的开发中,需要使用的表很多,针对一些比较重要的表进行介绍。
(1)学生信息表
学生信息表主要是用来记录学生的信息,包括学生的学号、密码、姓名、性别等一些基本信息。学生信息表如表4-1所示。
表4-1 学生信息表(teacher)
字段名称 |
字段类型 |
描述 |
stu_Num |
varchar |
学生学号(主键) |
stu_Psw |
varchar |
学生密码 |
stu_Name |
varchar |
学生姓名 |
stu_Birthday |
varchar |
学生出生日期 |
stu_Class |
varchar |
学生所在班级 |
stu_Tele |
varchar |
学生联系电话 |
stu_Mail |
varchar |
学生邮箱 |
stu_Address |
varchar |
学生家庭住址 |
stu_Self |
varchar |
学生自我描述 |
(2)教师信息表
教师信息表主要包括用户编号、用户密码、用户名称以及用户的简介。教师信息表如表4-2所示。
(3)管理员信息表
管理员信息表主要是记录管理员的一些基本信息,如管理员编号、管理员姓名、管理员密码等。管理员信息表如表4-3所示。
(4)消息公告表
消息公告表主要是记录发布的消息主题、消息内容、消息发布者、消息发布时间等。消息公告表如表4-4所示。
表4-2 教师信息表(teacher)
字段名称 |
字段类型 |
描述 |
tea_Num |
varchar |
教师编号(主键) |
tea_Psw |
varchar |
教师密码 |
tea_Name |
varchar |
教师姓名 |
tea_Tele |
varchar |
教师电话号码 |
tea_Mail |
varchar |
教师邮箱 |
tea_Self |
varchar |
教师简介 |
表4-3 管理员信息表(admin)
字段名称 |
字段类型 |
描述 |
adm_Num |
varchar |
管理员编号(主键) |
adm_Psw |
varchar |
管理员密码 |
adm_Name |
varchar |
管理员姓名 |
adm_Tele |
varchar |
管理员电话号码 |
adm_Mail |
varchar |
管理员邮箱 |
表4-4 消息公告表(message)
字段名称 |
字段类型 |
描述 |
mess_Id |
int |
消息编号(主键) |
mess_Title |
varchar |
消息主题 |
mess_Context |
varchar |
消息内容 |
mess_author |
varchar |
消息发布者(外键) |
mess_Date |
date |
消息发布时间 |
(5)文件上传表
文件上传表主要是存储资源的一些相关信息,包括资源的名称、资源大小、资源类型、资源提供者、资源上传时间等。文件上传表如表4-5所示。
表4-5 文件上传表(upload)
字段名称 |
字段类型 |
描述 |
file_Id |
int |
文件编号(主键) |
file_Name |
varchar |
文件名称 |
file_Size |
int |
文件大小 |
file_Type |
varchar |
资源类型 |
file_Parentid |
int |
文件的父节点 |
file_downcount |
int |
文件下载次数 |
file_author |
varchar |
文件上传者(外键) |
file_Time |
date |
文件上传时间 |
cou_Id |
varchar |
文件所属课程的Id(外键) |
cou_Info |
varchar |
上传文件的描述 |
file_Theme |
varchar |
上传文件的主题 |
file_score |
varchar |
教师的评分 |
file_scoreinfor |
varchar |
教师给的意见 |
(6)课程信息表
课程信息表主要是存储有关课程的信息。课程信息表如表4-6所示。
表4-6 课程信息表(course)
字段名称 |
字段类型 |
描述 |
cou_Id |
int |
课程Id(主键) |
cou_Name |
varchar |
课程名称 |
cou_Type |
varchar |
课程类型 |
cou_Teaid |
varchar |
授课教师Id(外键) |
cou_Place |
varchar |
授课地点 |
cou_Information |
varchar |
课程简介 |
(7)学生选课表
学生、教师与课程主要是通过表4-7取得联系,所以这张表的设计是关键。当以下三个字段合起来时是该表的主键,分开则为外键。课程信息表如表4-7所示。
表4-7课程信息表(course)
字段名称 |
字段类型 |
描述 |
cou_Id |
int |
课程Id(外键) |
cou_Class |
varchar |
选课班级(外键) |
cou_Teaid |
varchar |
授课教师Id(外键) |
4.3表示层设计
表示层就是用户界面。在某些方面,界面甚至可以被认为是业务应用程序中最重要的部分,因为对大多数用户来说,界面就是应用程序。一个设计良好的用户界面有助于保证业务应用程序的成功并被用户所接受。表示层在MVC模式中充当V模式(即视图模式),能与用户交互,它们向用户显示数据,从用户处获得数据,解释由用户操作所引发的事件,改变用户界面的状态,并帮助用户查看任务的进度。
系统中采用了两种界面风格,分为主界面和角色界面(用户登录后显示的界面)。主界面的JSP页面由页头、导航、主页面和尾页构成,页面的头部、导航和尾页形成了整个页面风格,能够给用户以整洁、美观的视觉享受。设计过程中采用JSP<include>标签,避免了很多代码片段的重复拷贝。角色界面采用html<frameset>标签方式,组织三个窗口(头窗口、导航窗口和主文档窗口),每个窗口存在独立文档,界面直观、简单能够清楚的表达业务需求功能,而且也提高了页面的可维护性。
4.4业务逻辑层设计
业务逻辑层实际上是根据业务需求,把一些方法重新组合和编排,绑定成一个流程,从而成为一个单独的应用程序。主要目的是完成对系统功能的具体实现,在该层通过调用DAO层,完成对数据的访问,同时实现系统中需要实现的各项功能。
由于该系统没有很复杂的业务逻辑,所以就和action融合,通过控制action中业务逻辑,调用DAO层方法。Action调用DAO层结构图如图4-3所示。
图4-3 Action调用DAO层的结构图
系统的业务逻辑层的架构可以通过需求分析得到,相应的功能设计可以利用业务流程图表示。下面以教师上传文件资源和作业成绩统计为例进行讲解。
(1)文件资源上传。网络教学综合平台中存在三种角色,教师、学生、管理员。其中教师拥有上传资源文件的功能。当教师登录后,进入教师界面,可以上传文件资源,输入文件上传界面需要的信息,提交后,通过验证是否符合界面输入要求,若通过则走到下一级判断是否文件已经重复上传,若重复了,则上传失败,若没有则再判断该教师的文件空间是否足够大,若不够就上传失败,否则就上传成功。教师上传文件资源活动图如图4-4所示。
图4-4 教师上传文件资源活动图
(2)作业成绩统计。教师统计学生的作业成绩,首先是判断该课程有哪些班级选修了,若没有班级选修这门课程,则就不可能有作业成绩,若有则统计选修该课程的班级,再分别统计每个班级的学生,如果该学生未提交作业,则成绩就为0分,该学生若提交了作业,但是教师未评分,那么他的成绩也为0分,统计每个班级的成绩,把成绩分为5个不同的阶段,统计每个阶段的人数,绘制成图标显示出来。通过这个图表可以很清楚的看出,班级与班级的对比,每个班级学生的学习情况。作业成绩统计活动图如图4-5所示。
图4-5 作业成绩统计活动图
4.5数据层设计
数据库层,也称作DAO层,DAO层的主要功能就是实现对持久化对象的CRUD访问,主流的数据库接口包括JDBC,hibernate,iBatis等。系统采用JDBC进行数据库的操作。接下来从以下两个方面进行讲解。
4.5.1JDBC数据访问
JDBC(Java Data Base Connectivity,java数据库连接)是为服务Java程序的数据库操作功能,而设计的专门Java数据库编程接口,在Java程序中使用数据库操作功能简化。JDBC专门提供与服务商无关的数据库连接,使用一种通用的方法来查询、更新关系型数据库表,同时把数据库操作的结构转换成Java的数据类型[15]。一个JDBC驱动跨平台支持完成与数据库建立连接、向数据源发送操作语句、处理返回结果和关闭连接等任务。
有了JDBC,向各种系数据发送SQL语句就是一件很容易的事。换言之,有了JDBC API,就不必为访问Sybase数据库专门写一个程序,为访问Oracle数据库又专门写一个程序,或为访问Informix数据库又编写另一个程序等等,程序员只需用JDBC API写一个程序就够了,它可向相应数据库发送SQL调用。同时,将Java语言和JDBC结合起来使程序员不必为不同的平台编写不同的应用程序,只须写一遍程序就可以让它在任何平台上运行,这也是Java语言“编写一次,处处运行”的优势。
4.5.2DAO层的设计
系统DAO层的设计原则分为接口层和实现层。通过使用了JDBC连接数据库,完成数据库的增删改查操作。实现层实现接口层的所有方法,若在开发的过程中需要一些其他的方法,这些方法没有必要定义在接口内,可以在实现层直接添加方法,简单、方便,还大大提交了代码的编写效率。下面以upload对象为例。upload实现关系图如图4-6所示。
图4-6 upload实现关系图
实现类uploadDAOImp实现了uploadDAO接口的所有方法,两者直接的关系是实现关系。当教师提出上传文件的请求时,则进入action中进行业务处理,处理的过程中调用uploadDAOFactory类中的getDAO()方法,返回一个uploadDAOImp的实例,该实例又继承了uploadDAO的接口,接着执行相应的DAO内的具体方法。从数据库中的数据采用JavaBean进行封装,返回到页面显示出来。
用户提交JSP页面请求,通过控制器Servlet,将请求传送给响应的类,进而交给该类进行处理,调用相关的类和方法。文件资源上传的时序图如图4-7所示,当教师发出文件资源上传的请求时,则把请求提交给控制器Servlet,控制器Servlet根据请求调用相应的UploadAction类。再根据该类调用相应的业务处理层UploadDAOFactory和UploadDAO。执行完后,把得到的结果即对象返回到UploadAction类中,再返回给视图层,完成了请求任务。
图4-7文件资源上传的时序图
4.6本章小结
本章首先概括系统的总体体系结构,然后在分别介绍各层的设计思想,最后,通过这些思想,总结数据库的设计。
5 系统实现
通过上一章的系统分析,对系统的整体框架结构有了比较清楚的认识。现在主要是根据系统分析,实现代码功能。本章将从开发环境的部署开始,再分别介绍表示层、逻辑层和数据层的代码实现。
5.1开发环境部署
系统采用主流的Struts2框架,并使用Tomcat作为服务器,mysql作为数据库,Myeclipse IDE进行开发。使用Struts时,要加载相应的功能包,如:ognl-2.7.3.jar、commons-fileupload-1.2.1.jar、commons-io-1.3.2.jar、struts2-core-2.1.8.1.jar、xwork-core-2.1.6.jar等,Struts要添加的包如图5-1所示。同时,使用Struts,要配置struts.xml文件,源文件包目录结构如图5-2所示,为了使struts.xml文件能够发挥作用,要在web.xml文件中配置以下的信息。
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
5.2表示层的实现
系统采用两种界面方式,一是主界面,二是角色界面(用户登录后进入的页面)。
主界面采用jsp<include> 方式,将页面的不同部分组合在一起。如头标题、导航、中间内容和尾部内容四部分组成。减少了代码的冗余,同时也统一了风格。主要代码如下:
<jsp: include page="topIndex.jsp"/>
<jsp: include page="navigation.jsp"/>
<jsp: include page="MainContext.jsp"/>
<jsp: include page="bottom.jsp"/>
主页面显示效果如图5-3所示。
图5-1 Struts要添加的基本包
图5-2 源文件包目录结构
图5-3 主页面显示效果
角色界面采用html<frameset>方式,把窗口分层了三个窗口(顶部、导航、主文档),主要代码如下:
<FRAMESET id=index border=0 frameSpacing=0 rows=120,* frameBorder=no>
<!-- 顶部窗口 -->
<FRAME id=topFrame name=topFrame src="files/Top.jsp" noResize scrolling=no>
<FRAMESET border=0 frameSpacing=0 frameBorder=no cols=20%,*>
<!-- 导航窗口 -->
<FRAME id=leftFrame name=leftFrame src="files/Left.jsp" noResize scrolling=no>
<!-- 主窗口 -->
<FRAME id=mainFrame name=mainFrame src="files/personDetail2.jsp" noResize scrolling=no>
</FRAMESET>
</FRAMESET>
角色页面显示效果如图5-4所示。
图5-4 角色页面显示效果
5.3系统有关逻辑功能的实现
业务逻辑层主要是针对系统中的具体功能的实现,该层主要是控制执行流程,根据逻辑来执行DAO层的哪个方法。由于系统没有很复杂,所以Action中放入了业务逻辑,一般的业务逻辑都只是调用DAO层的方法,但是有几个是特殊的情况。以下介绍几个比较重要的逻辑功能代码。
(1)文件资源上传。文件资源上传采用的是InputStream的形式。UploadAction.java文件关键代码如下。
HttpServletRequest request = ServletActionContext.getRequest();
//自动获得服务器中文件应该上传的地址
File dirFile = new File(ServletActionContext.getServletContext().getRealPath("/upload")+"/"+fileName);
// copy函数主要是执行文件的输入流与输出流的操作,把src文件输出到dist文件
copy(file,dirFile);
// 把文件的相关信息保存到数据库中
boolean finish=uploadDAOFactory.getDAO().upload_insert(up);
// 更新教师空间容量大小
spaceDAOFactory.getDAO().space_update_teaNum(up.getFile_author(),file.length());
文件上传的效果如图5-5所示。
图5-5 文件上传显示效果
(2)批量添加教师。添加教师可以通过EXCEL批量的导入。这个导入是采用POI的防水。首先是上传xls文件,然后读取该文件内的内容,最后把该文件删除。以下一些是读取xls文件的主要代码。
HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream(fileToBeRead));
HSSFSheet sheet = workbook.getSheet("Sheet1");
int rows = sheet.getPhysicalNumberOfRows();//获取到Excel文件中的所有行数
for (int i = 0; i < rows; i++) {//遍历行
HSSFRow row = sheet.getRow(i); // 读取左上端单元格
if (row != null) { // 行不为空
long cells = row.getPhysicalNumberOfCells();//获取到Excel文件中的所有的列
String value = "";
for (int j = 0; j < cells; j++) {//遍历列
//获取到列的值
HSSFCell cell = row.getCell(j);
if (cell != null) {
// 单元格式公式类型
switch (cell.getCellType()){
case HSSFCell.CELL_TYPE_FORMULA: break;
case HSSFCell.CELL_TYPE_NUMERIC: value += cell.getNumericCellValue() + ","; break;
case HSSFCell.CELL_TYPE_STRING: value += cell.getStringCellValue() + ",";break;
default: value += "0";break;
}
}
}
批量添加教师效果如图5-6所示。
图5-6 文件上传显示效果
(3)作业成绩统计。系统中还有作业成绩统计并生成一个图表的功能,主要运用的是JFreeChart,当要查看某门课程的作业时,教师不只是可以看到单个人的成绩,还可以看到班级的总体成绩,以及班级的评价分,通过看图表,可以看到成绩等级的人数,同时,班级与班级还可以对比。代码的实现是通过三个函数实现的,主要的代码如下。
// createDataset()函数主要是获取要显示的数据,把成绩分为5个等级,然后分别统计每个班中每个等级成绩的人数。
public static CategoryDataset createDataset(String cou_Id) {
String []rowKeys = {"优","良","中等","及格","不及格"};
List<course> courses = // 选择该课程的所有班级courseDAOFactory.getDAO().querycourseall(cou_Id);
String []colKeys = new String[courses.size()]; //班级数
double [][] data = new double[5][courses.size()];//不同等级成绩的人数。
return DatasetUtilities.createCategoryDataset(rowKeys, colKeys, data);
}
//根据CategoryDataset生成JFreeChart对象
public static JFreeChart createChart(CategoryDataset categoryDataset){
StandardChartTheme standardChartTheme = new StandardChartTheme("name");
JFreeChart jfreechart = ChartFactory.createBarChart("班级成绩对比柱状图",
"班级", //categoryAxisLabel (category轴,横轴,X轴的标签)
"人数", //valueAxisLabel(value轴,纵轴,Y轴的标签)
categoryDataset, PlotOrientation.VERTICAL, true, false, false);
return jfreechart;
}
//把图表保存为png文件
public static void saveAsFile(JFreeChart chart, String outputPath, int weight, int height) {
FileOutputStream out = new FileOutputStream(outputPath);
ChartUtilities.writeChartAsPNG(out, chart, 600, 300); //保存为PNG文件
out.close();
}
课后作业成绩统计效果图如图5-7所示。
图5-7 课后作业成绩统计效果
(4)文件资源下载。资源文件下载主要是要配置Struts的内容。主要代码如下。
Struts.xml文件中的配置。
<action name="down" class="com.action.DownfileAction">
<result name="success" type="stream">
<param name="contentType">application/octet-stream;charset=UTF-8</param>
<param name="inputName">inputStream</param>
<param name="contentDisposition">attachement;filename="${fileName}"</param>
</result>
</action>
DownAction.java中的主要功能代码。
fileName = uploadDAOFactory.getDAO().upload_Query_Id(fileId).getFile_Name();
return ServletActionContext.getServletContext().getResourceAsStream("/upload/" + getFileName());
文件资源下载显示效果如图5-8所示。
图5-8 文件资源下载显示效果
5.4数据层的实现
DAO层的主要任务就是实现对实体对象的CRUD操作,该层实现面向接口的编程,提高系统的可复用性。
XXX是实体名称的代表,系统中每个实体对象都有一个DAO层模块,每个DAO层内都是三个java文件,即XXXDAO.java、XXXDAOFactory.java和XXXDAOImpl.java。通过这种方式完成数据层的访问。下面分别介绍每个文件。
XXXDAO.java文件是一个接口文件,在接口内定义一些通用的方法。如增加记录,删除记录,查找记录等。以下是XXXDAO.java文件的代码。
public interface XXXDAO
{
public boolean XXX _insert(XXX xxx); // 增加记录
public List< XXX > XXX _Query_AuthorId(String author);
public boolean XXX _Delete_Id(int file_Id)throws Exception; // 删除记录
public XXX XXX _Query_Id(int file_Id); // 查找记录
public List< XXX > XXX _Query_CouId(String cou_Id, String type); // 查找记录
public List< XXX > XXX _Query_CouId(String fileId,String cou_Id, String type);
public List< XXX > XXX _Query_CouId(String type);
public boolean XXX _Delete_couId(String cou_Id);
public boolean XXX _update_score(XXX xxx); // 更新记录
}
XXXDAOFactory.java文件是一个工厂类,通过该类产生bean对象,通过这个工厂,就可以避免每次手动的生存bean,而是通过工厂类来实例化一个新的XXXDAO对象。主要代码如下。
public static XXXDAO getDAO(){
// 返回XXXDAO接口的实现类的一个实例
return newXXXDAOImpl();
}
XXXDAOImpl.java文件是一个XXXDAO的实现类,该类实现了XXXDAO.java的所有方法。通过该类,调用JDBC连接数据库,完成用户的请求。 该类是直接操作数据库,是代码的底层操作。主要代码如下。
public class XXXDAOImpl implements XXXDAO
{
static dbConnection conn;
PreparedStatement ps=null;
ResultSet rs=null;
String sql=null;
XXX xxx =null;
public boolean XXX_insert(XXX xxx)
{
……// 调用jdbc连接数据库,对数据库进行操作。
}
……// 省略XXXDAO.java接口所有方法的实现。
}
5.5本章小结
本章开头介绍系统的环境部署问题,然后是对各层的实现进行讲解,对于每一层,都给出实例加以理解。
6 系统测试
经过需求分析、设计和代码实现等阶段后,则开始进入软件测试阶段。软件测试就是利用测试工具对系统进行功能和性能测试[16]。根据编写不同测试用例能够覆盖更多的测试点,从而更能够找出系统中出现的错误。
系统的测试过程主要分为单元测试和功能测试。
6.1单元测试
单元测试又称模块测试,在软件开发过程中要进行的最低级别的测试活动,着重对软件设计的最小单位——软件构件或模块进行验证。单元测试根据设计描述,对重要的控制路径进行测试,以发现构件或模块内部的错误。单元测试通常采用白盒测试,并且多个构件或模块可以并行进行测试。
JUnit是一个开源代码的Java测试框架,用于编写和运行可重复的测试,它是由 Erich Gamma和Kent Beck编写的一个回归测试框架(Regression Testing Framework),继承了TestCase类,可以自动进行测试。下面以添加教师信息为例进行讲解。
public void testTea_Insert() {
// 创建一个教师对象
teacher tea = new teacher();
// 设置教师的相关信息
tea.setTea_Num("111111");
tea.setTea_Psw("111111");
tea.setTea_Name("杨振宇");
// 调用insert方法,把教师的信息插入数据库
teacherDAOFactory.getDAO().tea_Insert(tea);
// 通过查询,判断是否添加成功
assertTrue(null != teacherDAOFactory.getDAO().tea_Query(tea.getTea_Num()));
}
测试结果如图6-1所示。
图6-1 测试成功示例
图6-1是一个成功的测试,界面显示的是绿色横条。当测试结果失败,界面显示的是红色横条。如果JUnit报告了测试没有成功,它会区分失败(failures)和错误(errors)。失败是你的代码中的assert方法失败引起的;而错误则是代码异常引起的,例如:ArrayIndexOutOfBoundsException。如图6-1,Error为0,Failure为0,也可以说明测试成功。
6.2功能测试
功能测试主要是针对产品的各项功能进行验证,根据功能测试用例,逐项测试,检查产品是否达到用户要求的功能。下面以作业的发布为例进行讲解。
测试点:教师发布作业的功能。
测试输入数据:以教师的角色登陆,点击“课程管理”中的“授课班级”,选中一门课程点击“查看详情”,进入课程界面,点击“作业管理”中的“发布作业”,输入界面需要的相关信息后,提交。作业上传输入界面如图6-2所示。
图 6-2 作业上传输入显示界面
测试预期输出:当提交作业后可以查看到提交了的作业信息。
测试实际输出:作业上传成功输出显示界面如图6-3所示。
图 6-3 作业上传成功输出显示界面
6.2本章小结
本章通过对系统开发过程中一些实例进行测试,分别完成了单元测试和功能测试,通过测试找出系统中的存在的编译运行错误和逻辑错误。
致 谢
通过这一阶段的努力,我的毕业论文《基于JavaEE的信息学院网络教学综合平台》终于完成了, 这意味着大学生活即将结束。在大学阶段,我在学习上和思想上都受益非浅,这除了自身的努力外,与各位老师、同学和朋友的关心、支持和鼓励是分不开的。 在本论文的写作过程中,我的导师杨振宇老师倾注了大量的心血,从选题到开题报告,从写作提纲,到一遍又一遍地指出每稿中的具体问题,严格把关,循循善诱,在此我表示衷心感谢。同时我还要感谢在我学习期间给我极大关心和支持的各位老师以及关心我的同学和朋友。写作毕业论文是一次再系统学习的过程,毕业论文的完成,同样也意味着新的学习生活的开始。我将铭记我曾是一名九江学院学子,在今后的工作中把九江学院的优良传统发扬光大。
感谢所有关心和帮助过我的老师、同学和朋友,愿他们身体健康、工作愉快!
由于笔者经验不足、能力有限,论文中难免有缺陷和不足,恳请各位老师和同学多多指正。
参考文献
[1] 李香林.基于J2EE网络教学系统的研究与设计[J].电子科技大学,2007,(1):39~43
[2] 马玉桦.构建基于校园网环境的网络教学平台[J].大众科技,2005,(6):101~112
[3] 赵强.基于开源软件的J2EE企业级应用开发[M].北京:电子工业出版社,2006.30~34
[4] 秦小波.设计模式之禅[M].北京:机械工业出版社,2010.89~93
[5] 孙卫琴.基于MVC的JavaWeb程序设计与开发[M].北京:电子工业出版社,2004.24~27
[6] 冉春玉.MVC模式及Struts框架应用研究[J].武汉理工大学学报,2008, (6):53~60
[7] 曹广鑫,王谢华. Struts数据库项目开发宝典[M].北京:电子工业出版社,2006.43~50
[8] 巴沙姆,赛若,贝茨.深入浅出Servlet&JSP[M].南京:南京东南大学出版社,2008.123~124
[9] 蔡敏,徐慧慧.UML基础与Rose建模教程[M].北京:人民邮电出版社,2011.78~81
[10] 伍小荣,谢立宏.使用Rational Rose创建J2EE应用[J].微型机与应用,2002,(8):7~9
[11] 沙赫.软件工程面向对象和传统的方法[M].北京:机械工业出版社,2007.101~103
[12] 陈智勇,左仁详.基于Web的网络教学平台的设计[J].计算机与现代化,2004,(4):11~13
[13] Eckel B.Java编程思想[M].北京:机械工业出版社,2005.289~293
[14] 余胜泉,何克抗.网络教学平台的系统结构与功能[J].中国电化教育,2001,(1):21~24
[15] 泰勒,李东升.JDBC数据库编程与J2EE[M].北京:电子工业出版社,2004.24~26
[16] 钱乐秋,赵文耕.软件工程[M].北京:清华大学出版社,2010.158~160
原文地址:https://www.cnblogs.com/epoch211/p/12629559.html