以节省高校人力资源为目标,开发出基于SSM框架技术的教学任务管理系统。开发所选语言是Java语言,所用技术是当下流行的B/S构架的整体WEB应用架构模式。在前端用户界面使用了基于JSP的页面显示,采用HTML5语法进行编写。后端使用了传统的Spring+Spring MVC+Mybatis框架技术,前端采用了JQuery和Bootstrap框架。项目中有权限管理功能,在实现权限管理功能时,使用了Apache Shiro安全框架,主要实现了用户管理、用户授权、身份验证等功能。为了应对数据缓存问题,使用了Ehcache缓存框架技术。为了防止学生选课人数超过开课人数而导致系统出现bug,在系统中还采用了zookeeper+dubbo进行分布式调用与协调服务。系统选择使用关系型数据库MySQL来对系统数据进行管理。
1.2系统开发背景
为了解决上述的问题,一个功能完善的数字化管理系统是必不可少的。系统方便快捷的功能使得管理员不再需要逐条录入各个教师的教学任务,不再需要逐条下发通知,只需将教学任务录入到系统中,系统将会自动匹配下发每个教师的教学任务。教师们也不再需要盯着一张Excel表格将自己的教学任务记录在笔记本上,只需登录教学任务管理系统,点击教务查看就可以看到自己所分配到的教学任务,还可以按照时间等条件分类统计。数据保存在数据库中,安全不怕丢失,教师们不再需要将自己所属的教学任务记录到笔记本上,也不用再担心笔记本丢失问题导致自己教学任务数据丢失。同时还拓展了学生选课系统,使用了分布式锁,实现了防抢课问题,内置学生成绩管理,教师可以更方便给学生录入修改成绩。解决了传统教学任务管理中数据量庞大、人工处理困难,教师在记录与保存自己所负责的教学任务数据困难的问题,实现数字化管理,大大减少了人工工作量,极大地方便了管理员与教师。
1.3目的与意义
为了协助管理员进行对教师与学生的管理工作,教师教学任务下发,教师的教学任务工作量的统计与查询工作,便捷的系统业务功能,有助于更加高效地完成各项工作,优美的人性化界面能提高使用者的使用效率,通过系统化的管理更方便管理员、老师和学生的使用。开发出便捷完善的系统功能使得学校的教务管理更加完善,较普通的管理系统实现更多更好的功能,让用户拥有更美好地体验。
2可行性分析
2.1经济可行性分析
开发教学任务管理系统,使用的都是目前免费的开源框架,整个系统由设计人员设计完成,开发人员使用的都是目前免费的开源框架,在开源框架的基础上进行功能模块的自主开发,数据库使用的是免费的MySQL数据库,在后期发布的时候使用的是华为云服务器,配置为2核8G内存附带100GSSD内存,价格为3年1300元。系统本身的功能能极大的节省人工成本,方便管理员与教师,同时采用模块化开发,留下了二次开发的机会,对后期的运营与维护也是极为便捷的。降低了后期维护的成本,总的来说节约出来的人工成本,远比开发与维护成本要高。由此可见在经济方面,开发是可以进行的。
2.2技术可行性分析
首先选择使用Java语言作为开发语言,那么开发人员应具有扎实的Java语言基础,有良好的面向对象编程思想,能熟练使用MySQL数据库,熟练地使用Maven仓库进行项目管理。熟练使用Spring+SpringMVC+Mybatis框架,理解SpringMVC核心工作流程。理解IOC、AOP,熟悉DIV/CSS布局、HTML、CSS、JS、JQuery等前端技术。熟练使用bootStrap等前端框架,熟悉zookeeper、dubbo等互联网新技术。
使用的都是开源框架,在开发过程中遇到bug等问题,需要自己思考解决,或者通过网络搜索解决问题,使用了Maven仓库进行项目管理,在框架的配置就不会显得很繁琐,大大减少代码冗余量,开发技术人员所需要做的工作主要是功能逻辑上的实现,综合来说,在开发人员技术方面可能存在技术不熟练的问题,但是这个问题是可以通过在开发过程中不断学习新技术来弥补这方面的不足的。所以开发在技术方面是可行的。
2.3社会可行性分析
高等学校的信息化管理方面的建设不仅仅是高等学校需要努力的方向[1],同时也是当前时代的技术发展的方向,高等学校信息化管理系统能为各个高等学校节省下非常多的人工成本,同时也提高的各个部门之间业务处理效率,而需要付出的仅仅是一些系统开发成本和后期维护成本。从长远来看,所付出的成本是远远低于信息化管理系统所带来的收益的,所以开发出信息化管理系统是当前势在必行的任务。
3需求分析
3.1用户需求分析
通过对学校当前的校园网网站和教学管理系统做了一些调查,发现目前的教学管理系统还没有为老师提供人性化的教学任务数据保存,老师们在评职称或者其他场景需要自己以前的教学任务数据时,往往会记不太清楚自己曾经究竟分配到了哪些教学任务。这样对于老师而言是不太方便的。
同时,教学任务的数据量显然是非常大的,在浏览的老师提供的一些学院的教学任务数据之后发现,一个学院在2018—2019年春季学期就有着162条教学任务记录,每一条教学任务还包含着十几个必要信息,这还仅仅是一个学院,更不用说整个学校范围内还有多少个学院。同时这些数据还需要保存起来,以方便以后有需要时的查询数据档案,而管理员在下发教学任务的时候,是将教学任务整合到一张Excel表格上,然后下发给各个教研室的老师,让老师们自行寻找并记录自己的教学任务,这样可能导致老师们往往会看错,或者记录下错误的教学任务,可能会导致以后数据混乱的现象发生。而且使用Excel表格保存数据是非常不方便的,试想一下,当需要找一条数据,就需要在成百上千张Excel表格中寻找数据,这显然是一件事情非常繁琐的。还有在学生选课方面曾经发生了一次选课人数超过预计开课人数,而导致了当时管理员要按照选课顺序一个一个将后选的同学退课的事情发生。这样显然是非常的麻烦的。
3.2功能需求分析
1.登录功能模块:用户通过账号密码登录。
2.用户管理功能模块:用户能修改自己的密码以及一些自己的信息。
3.通知功能模块:管理员可以下发通知。
4.教学任务功能管理模块:管理人员可以对教学任务数据进行操作,也可以通过规定的Excel表格数据样式来进行数据导入。
5.日志管理功能模块:记录修改数据的账户信息。
6.教师操作页面功能模块:可查看分配给自己的教学任务,并且可以按条件查询统计,还可以给选择了自己课程任务的学生进行成绩管理的操作。
7.学生操作页面功能模块:学生用户可以对管理员发布的课程进行退/选操作。
4系统建模
4.1用例图
普通用户-学生页面操作的用例图如图4-1所示:
图4-1学生页面操作的用例图
普通用户-教师操作功能的用例图如图4-2所示:
图4-2教师操作用例图
管理员用户操作的用例图如图4-3所示:
图4-3管理员用户操作用例图
4.2数据流图
普通用户-学生页面操作的数据流图如图4-4所示:
图4-4普通用户-学生页面操作的数据流图
普通用户-教师页面操作的数据流图如图4-5所示:
图4-5普通用户-教师页面操作的数据流图
管理员用户-管理员页面操作的数据流图如图4-6所示:
图4-6管理员用户-管理员页面操作的数据流图
4.3系统总体流程分析
系统整体页面操作的流程图如图4-7所示:
图4-7系统整体页面操作的流程图
5总体设计
5.1系统开发目标
通过与数据库的交互,来进行角色权限管理,不同权限角色通过登录后进入不同的功能页面,管理员用户能对其他用户进行权限分配与调整,能新建或者删除用户,下发并管理教学任务,协调用户之间的业务问题。教师用户能够查看并按条件查询自己的教学任务,并能给所选了自己课程的学生进行成绩录入与修改。学生用户能够进行选课退课操作。
开发目标功能除了体现在管理模块方面,在设计方面也使用了目前较为领先的分布式锁技术来防止学生进行抢课行为,前端采用layui的人性化设计模板,在界面上不仅有传统设计风格,也使用柔和的对话框风格,协调的色彩分配,还采用json进行数据解析与交互,提升数据解析效率,让系统反应更流畅,提高用户体验效果。
5.2系统设计特点与思想
经过功能分析及业务流程分析,本次开发应的系统该具备以下特点与思想:
1.系统经过权限判断,对权限不同的用户能分别登录到不同的操作页面中进行操作,管理员能管理所有用户以及所有的业务。
2.系统之间各个模块之间应该高内聚低耦合。
3.在数据处理时,相应快,查询准确。
4.使用Zookeeper+dubbo技术来实现分布式锁,用来防止学生抢课事件的发生。
5.简洁典雅的UI设计,不额外添加其他与业务无关功能,能让用户简单学习就能上手熟练使用。
5.3功能模块设计
根据前文所述进行的需求分析,将系统分成不同的功能模块来进行依次开发,模块与模块之间不能够进行直接的业务交互,而是需要通过特定的接口才能进行业务交互,这样可以有效地降低每个模块之间的耦合度。
经过设计之后,我将系统分成以下几个不同的功能模块,如图5-1所示。
图5-1系统功能模块设计思维导图
1.用户管理:每个用户都能修改自己的信息,不同权限用户登录后会进入不同的功能页面。管理员能管理教师用户和学生用户,可以给不同的用户赋予不同的权限。
2.菜单管理:只有管理员才能管理菜单,可以选择菜单是否显示,并赋予菜单链接功能,新添加的菜单选择显示后,会在菜单栏刷新出来。
3.角色管理:只有管理员能使用的功能,新增、删除、修改角色,可以赋予不同角色不同的权限,也可称作权限管理
4.字典缓存:对数据进行限制,可以添加关键字,管理一些固定值的数据。
5.登录日志:对登录者进行记录
6.操作日志:对数据修改者进行记录
7.管理员角色:通知公告发布、教学任务发布、修改、删除、批量导入、教师信息管理、学生信息管理、用户角色权限管理
8.教师角色:教学任务查询、教学任务按条件统计、学生成绩管理
9.学生角色:选课、退课、成绩查询
经过设计构思后,系统功能结构图入图5-2所示:
5-2教学任务管理系统功能结构图
5.4概念设计
根据前文所述的各项分析情况以及分析设计图,可以得出与数据结构准确映射的实体关系。实体类的设计如下图所示(矩形为表示实体类对象的本身,用椭圆形表示其属性):
1.用户实体E-R图如图5-3所示
图5-3用户实体E-R图
2.角色实体E-R图如图5-4所示
图5-4角色实体E-R图
3.菜单实体E-R图如图5-5所示
图5-5菜单实体E-R图
4.学生信息实体E-R图如图5-6所示
图5-6学生信息实体E-R图
5.教师信息实体E-R图如图5-7所示
图5-7教师信息实体E-R图
6.教学任务实体E-R图如图5-8所示
图5-8教学任务实体E-R图
7.学生成绩实体E-R图如图5-9所示
图5-9学生成绩实体E-R图
6开发技术选型介绍及开发文件配置
6.1系统开发环境介绍
系统开发环境如表6-1所示。
表6-1系统开发环境
6.2系统开发技术选型
系统开发前端技术选型如表6-2所示。
表6-2系统开发前端技术选型
系统开发后端技术选型如表6-3所示。
表6-3系统开发后端技术选型
6.3系统开发环境配置介绍
6.3.1开发语言Java
1946世界上出现了第一台计算机,从1946年到现在,计算模式第一阶段是集中计算模式,第二阶段是分散计算模式,第三阶段是网络计算模式[2]。而互联网的出现,给网络计算模式下的各种信息化运算和信息处理提供了非常便捷快速的平台。但是,平台的计算效率与计算功能是受到平台的运行环境制约的,想要最大化的利用好平台的资源,那么就需要在运行环境方面想办法,而Java语言和Java技术则是解决这一问题的最佳途径[3]。
6.3.2 JDK(Java Development Kit)配置
在项目进行开发之前,选择哪种语言来进行开发,以及将项目开发的基础开发环境搭建并配置好是非常重要的事情,JDK是由sum公司针对Java开发人员发布的免费开发工具包[4]。JDK可以说是整个Java语言开发的最重要的核心,JDK中包含了Java语言程序运行时所需求环境,还有Java基础开发工具,还包括了Java语言开发基础类库[5]。本系统开发所选择的是JDK1.8版本。
JDK1.8版本在Windows10 64位的系统下配置步骤如下:
新建一个JAVA_HOME变量,路径指向JDK安装目录。
图6-1新建JAVA_HOME变量
接着将JAVA_HOME加入系统环境变量中。
图6-2 JAVA_HOME配置
6.3.3 Apache-Tomcat服务器介绍与配置
Apache-Tomcat服务器是一个在中小型系统中普遍使用的一个轻量级Web应用服务器,还常用于同时访问的用户并发量并不大的一些开发场景,最主要的是Apache-Tomcat是一个免费的开源项目,在开发人员之间得到广泛的使用,是传统开发和调试JSP程序的首选[6]。
打开IDEA编译器,点击“Edit Configurations”
图6-3进入Tomcat配置页面
图6-4 Tomcat配置页面
接着将服务器版本、路径、端口配置好即可。
6.3.4编译器IntelliJ IDEA 2019.3.4 x64
IDEA全称IntelliJ IDEA,是用于java语言开发的集成环境,IntelliJ在业界被公认为最好的Java开发工具之一。IDEA相对于其他开发平台,在界面上的设计风格可以说是非常的人性化的,相对于目前来说使用人数最多的开发平台Eclipse来说,可能是IDEA的界面风格更加的符合现代人的审美风格,在IDEA中提供了很多种开发风格,开发人员可以根据自己的习惯、喜好来选择自己的风格,甚至可以个性化的制作属于自己的风格界面。
在其他方面IDEA也同样强大,在我们需要打开某个配置文件或者类代码的时候,往往很难在一堆英文字符中准确地找到那个文件或类名,这时只需按两次shift键就可以打开精确查找模式,输入文件名或者类名,即可准确打开。在IDEA中,运行的时候会自己自动编译打包成一个war包或者jar包,而且因为Tomcat是事先配置好的,也不用再次将war包或者jar包放入tomcat中运行,只需点击运行按钮,即可直接运行。还有更多其他更强大的功能,极大的方便程序员的开发,可以说目前IDEA是最强大的开发工具了。
6.3.5 Spring、Spring MVC与Mybatis的介绍
Spring:Spring,顾名思义——春天,程序员的春天。之所以拥有这样的名称正式因为Spring是百花齐放的Java开源世界里一朵芬芳馥郁的奇葩。Spring是分层的Java SE/EE应用一站式的轻量级开源框架,是Java应用首选的Full-Stack开发框架。Spring以IOC(Inverse Of Control)和AOP(Aspect Orirnted Programming)为内核,藏含Web层SpringMVC和数据持久层JDBC以及业务逻辑层事务管理等诸多技术。它的出现对传统EJB重量型框架的思想产生了颠覆性的革新,它Spring提供了一种对象管理方法,有效的组织系统中间层对象。是框架的完美“粘合剂”。Spring框架通过依赖注入和面向接口实现松耦合,能够基于切面和惯例进行声明式编程,通过切面和模板减少样例代码。更广泛意义上的来讲,Spring是一个管理Bean如何创建与使用的容器。归根到底,Spring的使命只有一个:简化Java开发。因为上述特点。Spring早已占据了Java开发人员的视线,获得了开源社区浪潮洪涛般的赞誉[7]。
Spring MVC:Spring MVC是Spring框架下的一个模块。顾名思义,Spring MVC有3大模块:Model(模型)、View(视图)、Controller(控制器)。SpringMVC包含的接口:DispatcherServlet接口(核心),HandlerMapping接口(完成客户请求到Controller映射),Controller接口(处理用户请求)等。Spring MVC运行原理如图6-5所示
图6-5 Spring MVC运行原理
Mybatis:Mybatis,是轻量级的与实体映射并持久化框架。其具有二级缓存机制。MyBatis可以进行详细的SQL优化设计。对比其他数据持久框架来说,它的轻便性不容小觑,组装SQL语句非常灵活,能对数据库进行的增删改查的执行过程有一种质变的效率提升。[8]。
6.3.6 Spring+Spring MVC+Mybatis框架整合
IDEA中搭建SSM框架主要依赖于XML核心配置文件。首先搭建的是Spring的XML配置文件。核心配置过程如下:
1.Spring MVC核心配置文件Spring-MVC.xml配置如图图6-6所示。
图6-6 Spring核心配置文件
2.Spring核心配置文件spring-config.xml配置如图6-7所示。
图6-7 Spring MVC核心配置文件
3.Mybatis核心配置文件mybatis.xml配置如图6-8所示。
图6-8 Mybatis核心配置文件
7数据库设计
7.1数据库需求分析
数据库在任何一个包含信息处理的系统中都是非常重要的存在,数据库可以说是一个系统的底层,是一栋摩天大楼的地基,地基打得越牢固,后续开发就越顺畅。从原则上来说,数据库一旦设计完毕,是不能通过改变数据库原有的设计来适应开发过程遇到的问题的,数据库设计的好坏与产生的影响可以将之比喻为“蝴蝶效应”,最终开发出来的系统的性能和效率是与数据库直接相关的。所以,在开发之前,谨慎与合理的数据库搭建是非常重要的,不仅仅能够明确开发时期的编码方向,一个好的数据库还能使得数据在持久化过程中效率提升若干,减少其冗余程度,保证独立性。
开发所选择使用的数据库是MySQL数据库,MySQL是一种多线程的开源的关系型数据库管理系统,使用最常见的结构化查询语言来进行数据库管理。因为MySQL是开源的,因此任何人都可以去下载并根据自己的需求而个性化的去使用它。MySQL因为它的速度和可靠性、适用性等原因,使得很多人认为在不需要事务处理的情况下,MySQL是管理数据库最好的选择。
MySQL是世界上运行最快的SQL语言数据库之一[9],MySQL具有数据处理高效性和快捷性。它是一个多线程的数据库,多线程可以通过多个线程同时对数据进行处理,大大的提高了数据处理效率和数据处理量。而且它的操作也非常简单,即使是初学者也可以很快上手使用。
7.2数据库表结构设计
在系统开发过程中,为了保证数据的正确操作,和各个表之间合理的相关连接,主键由数据库外部程序使用UUID随机数生成策略。并且数据库每个表中都会有字段记录数据创建者、创建时间、修改者、修改时间、备注和删除标记。再根据概念设计中的E-R图来进行表结构的设计,并以表格的形式展示出来(P代表主键,M代表不可为空,0代表可以为空):
1.sys_user表如表7-1所示。
表7-1系统用户表
2.sys_role表如表7-2所示。
表7-2系统角色表
3.sys_menu如表7-3所示。
表7-3菜单配置表
4.sys_dic_group表如表7-4所示。
表7-4数据字典主表
5.t_student如表7-5所示。
表7-5学生信息表
6.t_teacher表如表7-6所示。
表7-6教师信息表
7.t_subject表如表7-7所示。
表7-7教学任务信息表
8.t_score表如表7-8所示。
表7-8学生成绩表
8详细设计与编码实现
8.1业务流程图
系统业务流程图,如图8-1所示:
图8-1系统业务流程图
8.2界面设计
根据系统功能模块设计与业务流程图分析与设计可以得出下面的界面设计方案:
1.所有用户通过登录页面进行登录
2.在登录页面进行权限判定后,不同权限用户进入不同的页面。
3.管理员页面功能有系统设置、教务管理、通知公告三个按钮选项,在系统设置按钮下还有用户管理、部门管理、角色管理、菜单管理、数据字典几个字选项,分别对应不同的操作选择。在教务管理选项下有教学任务管理、教师管理、学生管理三个子选项用于管理教学任务、教师和学生管理。通知公告下只有通知公告一个选项用来发送通知和查看通知记录。
4.教师页面只有教务管理选项,一个选项可以进行多种操作。
5.学生页面有课程管理选项,该选项下有选课、退课、成绩查询三个子选项。
8.3功能模块介绍
根据业务流程图和功能需求以及用户体验度可以设计出如下界面与各个功能模块相对应:
8.3.1系统登录界面
图8-2系统登录主界面
系统登录主界面如图8-2所示。系统主界面实现了用户的登录操作与权限判断,以及验证码验证防止恶意登录。只有一个登录框,所有用户都由此进行登录操作,通过系统后台进行权限判定,不同权限用户登录后进入不同的操作页面中进行操作。
8.3.2管理员操作界面
图8-3管理员页面
管理员登录后页面如图8-3所示,右方区域为功能选择区,点击不同选项回在左边空白区域弹出对应的操作页面,不会再重新生成一个浏览器新页面,这样显得更方便快捷,条理清晰。
图8-4数据字典管理页面
在管理员用户选择系统设置选项后,便会弹出如图8-4那样的管理页面,可以对部门、菜单、角色、用户、数据字典等相关系统设置进行管理,减少或丰富系统的功能业务组成。
8.3.3教师操作页面
图8-5教师操作页面
教师登录后操作界面如图8-5所示,已经点击了教学任务管理功能,左边便会出现教学任务统计项目,可以按课程名称、开设年级、开设学年、是否必修条件来进行查询与统计,方便教师了解自己负责的教学任务,不同的查询条件也方便任课教师对不同情况下使用的教学任务情况进行统计。
8.3.4学生操作页面
图8-6学生操作页面
学生登录后进入的操作页面如图8-6所示,右边菜单区域有选课、退课和成绩查询选项,选课可以按照不同的查询条件来查询课程、查询出符合自己需求的课程来进行选取,选错了的话,还可以在退课选项进行退课处理。
8.4项目技术亮点介绍
8.4.1系统权限管理
在开发过程中使用了权限管理将用户进行区分,通过用户-角色-菜单3个表进行关联来实现。每个用户必须确保手机号码唯一,用户与登录帐号信息通过手机号码进行匹配,手机号码相同则视为一个用户。管理员可以给每个用户授予不同的角色权限、菜单权限,即使是同等级角色权限,在菜单权限上也可以有所区别,实现了某些特定帐号的特殊管理。
8.4.2分布式锁
为了防止学生恶意抢课现象,系统中使用了分布式锁来实现防止抢单功能,保证了选课人数不能超过开课人数,从根本上防止了选课人数的溢出现象。该技术使用了Zookeeper+dubbo来实现。
实现分布式锁的主要代码如下:
1.Spring-dubbo,xml文件配置
图8-7 dubbo配置
2.运行时Zookeeper单机或集群配置
图8-8 Zookeeper单机或集群配置
3.分布式锁编码实现如图8-7、图8-8、图8-9、图8-10所示。
图8-9获取分布式锁
图8-10释放分布式锁
图8-9创建watcher事件
图8-10创建结点
9系统本地测试与服务器发布
9.1网络测试
本次开发的教学任务管理系统是一套基于J2EE的B/S架构模式的系统。其运作前提是部署于Apache Tomcat服务器上,并启动服务器。所以进行网络测试可在经部署并启动服务器之后用浏览器访问平台URL测试网络连通性。
本地测试URL:http://localhost:8888/admin/login
经测试,在服务器启动后,在浏览器输入测试URL后会跳转到系统登录页面,测试通过。
9.2功能测试
表9-1功能测试表
9.3项目发布
项目测试完毕后,就要将其发布到云服务器上,服务器为华为云服务器,配置为2核8G运行内存,附带100G的SSD内存,价格为3年1300元。发布环境选择的是linux操作系统环境下发布,发布步骤如下图9-1至9-6所示:
图9-1项目发布配置步骤第一第二步
执行命令界面如图9-2所示
图9-2环境变量配置追加命令
图9-3项目发布配置步骤第三第四步
图9-4查看JDK安装版本
5.安装Zookeeper,从官网下载zookeeper,解压执行命令tar-zxvf zookeeper.3.4.10.tar.gz
6.修改zookeeper conf目录中的配置文件zoo_sample.cfg为zoo.conf
7.执行zookeeper启动脚本:./zkServer.sh启动zookeeper客户端。
8.执行netstat-anp|grep 2181查看zookeeper单机启动情况,监听状态,若出现如图9-3情况,则说明启动成功。
图9-5 zookeeper启动情况
9.安装Tomcat,从官网下载apache-tomcat-8.5.53.tar.gz,执行解压命令解压tomcat:tar-zxvf apache-tomcat-8.5.53.tar.gz到/usr/local/tomcat目录。
10.修改/etc/profile增加Tomcat配置环境变量
11.执行命令:source/etc/profile使环境变量生效
12.删除Tomcat目录下的webapps下所有文件及目录
13.在项目中执行maven-clean-install打包项目成war包如图9-4所示
图9-6将项目打成war包
14.把该war包上传到服务器中Tomcat目录下的webapps目录下,在Tomcat的bin目录下执行sh startup.sh start命令,启动项目。
15.执行tail-1000f../logs/catalina.out查看启动日志,启动成功。
项目部署发布完毕,在电脑联网情况下浏览器访问地址:
http://121.36.222.101:8080/base-mp
总结与展望
到此本次的项目开发也算是告一段落了,开发出来的功能不算很丰富,但也是在我自己能力范围之内能做到的最好的结果了。虽然在开发上使用传统开发技术较多,但是在新技术这一块我也自己学习并且试着去使用了Zookeeper与dubbo技术,也实现了自己想要的结果,这种解除互联网新技术并进行学习进而能实际应用出来的感觉是非常让人愉快的。
开发语言选择了Java语言,架构是当下J2EE开发广泛使用的Spring+SpringMVC+Mybatis搭建起来的B/S架构,Spring框架负责管理Bean容器,SpringMVC负责前后台数据交互控制,Mybatis负责与数据库进行数据交互,包括数据的增加、删除、修改、查询。前端界面采用的是灵活的JSP动态页面技术,前端页面的渲染主要使用的技术有CSS、JQurey库、HTML5等;页面信息输入等效果主要有JavaScript代码实现。
参考文献
[1]史敏对高校信息化建设的思考[J],中国高教研究2005(02)
[2]尹友明Java语言与Java技术概述[J],中国新技术新产品.2011(06)
[3]周志明《深入理解Java虚拟机(第二版)》,机械工业出版社.2013年6月
[4]张卫琴.《Java面向对象编程》.电子工业出版社.2006年7月
[5]张卫琴.《Java开发专家》.电子工业出版社.2006年7月
[6]孙卫琴,李洪成.《Tomcat与Java Web开发技术详解》.电子工业出版社,2003年6月
[7]沃尔斯(Walls,C.).《Spring实战》.耿渊,张卫滨译.人民邮电出版社2013年6月

[8]刘京华.《Java Web整合开发王者归来》.清华大学出版社.2010年1月
[9]郑智方魏恺乐李彬谢易壮MySQL得到广泛使用的原因以及它的嵌入应用[J],科技风2020(05):114
Statistics and query of teaching tasks based on SSM
Pan Mengxi
Abstract:This system development,mainly to save human resources in Colleges and universities as the goal,developed a teaching task management system based on SSM framework technology.The selected language for development is Java,and the technology used is the overall web application architecture mode of the current popular B/S architecture.In the front-end user interface,JSP based page display is used and HTML 5 syntax is used.The back end of the system uses the traditional Spring+spring MVC+mybatis framework technology,and the front end uses jQuery and bootstrap framework.The project has rights management function.When realizing the rights management function,the Apache Shiro security framework is used,which mainly realizes the functions of user management,user authorization,authentication,etc.In order to deal with the data caching problem,ehcache caching framework technology is used.In order to prevent the number of students selecting courses from exceeding the number of students starting courses,which leads to bugs in the system,zookeeper+Dubbo is also used in the system for distributed call and coordination services.The system chooses to use the relational database mysql to manage the system data.
Keywords:SSM;shiro;Ehcache;Bootstrtap;Distributed lock
致谢
时光荏苒,大学四年如白驹过隙,眼前还仿佛浮现着大一刚入学时的一幕幕,四年时光真是让人难以忘怀。
在这即将离别之际,请让我在此对所有老师表示感谢,正是因为老师您们的辛勤付出,让我们在知识的海洋里遨游,让我们收获了知识的硕果。四年前我非常幸运的怀揣着对美好大学生活的憧憬踏入广西师范大学,四年后带着一身老师传授的知识满载而归,即将迈向社会。梦从广西师范大学开始,在这洒下青春的汗水,也在这留下些难忘的泪水。课堂上老师板书的身影深深印在我的脑海中,同学们的欢声笑语也让我难以忘怀。在大学生活期间结识的良师益友已经在我人生轨迹道路上树立了重大的里程碑。让我在这里对广西师范大学,对我最敬爱的老师们表示真诚地感谢!
在这里,我还要特别地感谢感谢指导老师汤谷云老师。在从选题开始,到作品完成与论文的完成,汤老师不厌其烦地指导我们去进行毕业作品的设计,与论文的撰写,在我遇到问题的时候,老师都能及时地给予帮助。在每个阶段,汤老师都及时的通知和实施指导,让我在毕业设计方面少走了很多弯路,作品质量得到了提升。在这里对汤老师表示最崇高的敬意和感激,衷心的谢谢您!
广西师范大学本科毕业论文(设计)学生诚信保证书
本人郑重承诺:毕业论文(设计)《教学任务管理系统》的内容真实、可靠,系本人在汤谷云指导教师的指导下独立完成。如果存在弄虚作假、抄袭的情况,本人愿承担全部责任。
学生签名:潘蒙曦
2020年4月5日
广西师范大学本科毕业论文(设计)学生诚信保证书
广西师范大学本科毕业论文(设计)学生诚信保证书
广西师范大学本科毕业论文(设计)学生诚信保证书
广西师范大学本科毕业论文(设计)学生诚信保证书
广西师范大学本科毕业论文(设计)学生诚信保证书
广西师范大学本科毕业论文(设计)学生诚信保证书
广西师范大学本科毕业论文(设计)学生诚信保证书
广西师范大学本科毕业论文(设计)学生诚信保证书
广西师范大学本科毕业论文(设计)学生诚信保证书
广西师范大学本科毕业论文(设计)学生诚信保证书
本科生毕业论文(设计)
(2016)届
论文(设计)题目:软件测试技术在网站软件开发中的应用
学院(部):计算机科学与信息工程学院/软件学院
专业:计算机科学与技术
学号:201612300004
学生姓名:黄成才
指导教师姓名及职称:李建华副教授
目录
1前言1
1.1研究意义1
2测试对象介绍1
2.1系统概述2
2.2系统结构设计2
2.3系统前台主界面3
2.4用户登入界面4
2.5管理员模块5
2.6数据库设计简介6
2.7数据库表设计8
3测试工具及测试流程10
3.1测试工具简介10
3.2 QTP工作原理10
3.3 QTP自动化测试流程10
3.3.1制定测试计划10
3.3.2创建测试脚本12
3.3.3增强测试脚本14
3.3.4运行测试16
3.3.5分析测试结果17
3.4人工手动测试流程17
3.5结果分析18
4总结18
参考文献20
英文摘要21
致谢22
广西师范大学本科毕业论文(设计)学生诚信保证书23
软件测试技术在网站软件开发中的应用
专业:计算机科学与技术学号:201612300004学生姓名:黄成才指导老师:李建华
【内容摘要】本文着重于探讨自动化测试工具QuickTest Professional对于Web网站测试的优势,介绍测试的流程,利用测试工具对网站进行回归性测试以及重复性操作测试,可以为工作人员节省大量时间,提高办事效率,并且将利用工具测试的效率以及手工测试的效率进行了对比,体现出自动化测试工具在软件测试上的优势。
【关键词】QuickTest Professional;自动化测试;测试工具;Web网站测试
1前言
1.1研究意义
现如今计算机行业的发展非常迅速,行业内的各类软件、网站层出不穷,而对于这些软件的完整性以及安全性来说,若是对于产品的测试只能由人工进行,这无疑需要花费大量的时间和精力进行繁杂琐碎并且很多都是重复性的工作,这会大大降低我们的工作效率,增加软件开发的成本。据相关统计资料表明,软件测试阶段投入的成本和工作量往往要占软件开发总成本和总工作量的40%到50%甚至更多[1]。因此,软件自动化测试工具QuickTest Professional的诞生很大程度上帮助工作人员节省了的大量不必要浪费的时间,我们可以利用QTP来执行我们在人工对网页进行的重复性的测试工作,使得测试工作变得更加有效率,降低软件开发过程中需要的成本。
2测试对象介绍
本次用于测试的系统是本人在大三第一学期学习《PHP Web开发》时和同学一起制作的课程设计作品,作品名称为《网络学习系统》。该系统以PHP(超文本处理器)为主要开发技术,实现了一个可以在线学习的平台。网络学习系统分为三大模块,用户模块可以进行个人资料管理、课程学习等;教师模块可以进行个人资料管理、发布课程等;管理员模块可以进行用户管理、系统管理等。通过这些前台、后台功能模块的设计,基本上实现了整个系统的功能。在设计方面,系统使用PHP技术进行动态页面的设计,从系统的安全性和代码的可重用性方面考虑,对程序的关键代码进行封装,后台数据库选用MYSQL数据库。
2.1系统概述
网络学习系统基于Web服务模式,是一个适用于Internet环境下的模型结构。只要用户能连上Internet,便可以在任何时间、任何地点使用。系统工作原理图如图2-1所示:
图2-1系统工作原理图
2.2系统结构设计
系统架构的整体设计是一个将一个庞大的任务细分为多个小的任务的过程,这些小的任务分段完成后,组合在一起形成一个完整的任务。它具体的工作步骤是:
1、系统被分解多个子模块
2、对各个子模块的功能进行预先的设计
3、对各个子模块之间的逻辑关系进行设计
4、对各个模块的界面以及模块间信息的传输进行设计
在整个设计过程,以确定可能的具体方案达成每一个小的最终目标,对于每一个小的目标而言,我们必须先了解一些相关的需求分析的信息。然后对系统进行初步的设计,并对其逐渐进行优化,设计出一个具体可实现的系统框架。
网络学习系统的整体结构设计如图2-2所示:
图2-2系统结构图
2.3系统前台主界面
当用户登录网站时,会来到系统的主界面,主界面主要有登录信息、推荐课程信息,主要功能选项等。
其界面如图2-3所示:
图2-3网站首页界面
2.4用户登入界面
用户可以点击登录按钮进行登陆,输入用户名和密码,选择类型后便可以进入用户界面。用户登入模块也是本文侧重用于测试的点,也着重在这里设计测试用例。
其界面如图2-4所示:
图2-4用户登录界面
用户打开系统,首先进入系统登录界面,用户需通过正确的用户名、密码进行登录,系统会进行检查用户登录信息,信息正确则进入对应用户功能界面,可进行功能操作处理,否则提示信息错误,登录失败。
网络学习系统操作流程如图2-5所示:
图2-5系统操作流程图
2.5管理员模块
管理员的功能是对所有新注册的用户进行审核,只有通过审核的用户才可以正常登录系统,管理员登入界面如图2-6所示:
图2-6管理员登录界面
登录后的管理员主界面如图2-7所示,对学生用户的审核在学生管理功能选项中,对老师的审核在教师管理功能选项中,此外,管理员还可以修改所有用户的信息,以及课程信息等。
图2-7管理员主界面
2.6数据库设计简介
数据库是计算机信息系统的基础。信息的收集、整理、存储、检索、更新、加工、统计和传播等操作必须在数据库管理系统的支持下才能进行。目前,电脑系统的关键与核心部分就是数据库。数据库开发的优劣对整个系统的质量和速度有着直接影响。
系统的E-R图如下图所示:
1、管理员实体E-R图如图2-8所示:
图2-8管理员信息实体图
2、公告实体E-R图如图2-9所示:
图2-9公告实体图
3、课程信息实体属性图如图2-10所示:
图2-10课程信息实体属性图
4、教师实体属性图如图2-11所示:
图2-11教师实体属性图
5、学生实体属性图如图2-12所示:
图2-12学生实体属性图
2.7数据库表设计
本次测试对象的系统采用了MYSQL数据库管理系统,下面介绍数据库中的各个表的详细信息。
admin管理员信息表见表2-1:
表2-1 admin管理员信息表
列名数据类型长度主键允许空说明
id int 4是否编号
username varchar 50否是用户名
password varchar 50否是密码
type varchar 30否是权限
new公告表见表2-2:
表2-2 new公告表
列名数据类型长度主键允许空说明
id int 4是否编号
title varchar 50否是标题
teacherid varchar 50否是老师id
content varchar 50否是内容
addtime varchar 50否是时间
content1课程信息表见表2-3:
表2-3 content1课程信息表
列名数据类型长度主键允许空说明
id int 10是否编号
title varchar 50否是标题
续表2-3
img varchar 50否是照片
content varchar 50否是描述
teacherid int 10否是教师id
apv varchar 50否是点击量
desc1 varchar 200否是详细
video varchar 50否是录像
addtime varchar 50否是时间
teacher教师信息表见表2-4:
表2-4 teacher教师信息表
列名数据类型长度主键允许空说明
id int 4是否编号
username varchar 50否是用户名
password varchar 50否是密码
type int 2否是类型
img varchar 50否是照片
sex varchar 10否是性别
begintime varchar 50否是注册时间
desc1 varchar 200否是描述
tname varchar 10否是姓名
tel varchar 50否是电话
isno varchar 50否是是否审核
user学生信息表见表2-5:
表2-5 user学生信息表
列名数据类型长度主键允许空说明
id int 4是否编号
account varchar 50否是用户名
nickname varchar 50否是姓名
password varchar 50否是密码
email varchar 50否是邮箱
addtime varchar 50否是时间
dianhua varchar 50否是电话
status varchar 50否是状态
isno varchar 50否是是否审核
img varchar 50否是图片
3测试工具及测试流程
3.1测试工具简介
QuickTest Professional(以下简称QTP),是Mercury Interactive(以下简称MI)公司研发的一种自动化测试工具,MI公司是软件测试工具领域的领先者,其开发的软件测试工具在市场上占据绝对的主导地位,现在已经被HP公司收购。QTP是一种先进的自动化测试解决方案,用于创建功能和回归测试。它能自动捕获、验证和重收用户的交互行为,比如键盘输入和鼠标的点击。QTP是企业级自动化测试工具针对功能测试和回归测试自动化提供业界最佳的解决方案,采用关键字驱动(keyword-driven)测试的概念,能完全简化测试的创建和维护工作,适于所有主要软件应用程序和环境的测试[2]。
3.2 QTP工作原理
QTP在录制的时候,将我们鼠标和键盘的所有操作对象都记录下来,保存在对象库object repository中,记录的形式是一个逻辑名加上若干识别属性。运行脚本时,QTP分析该脚本要执行的那个对象的操作,即获取每个对象的所有层面的属性,然后根据该语句中的逻辑名,在对象库中查找该对象的详细记录,看其是否与对象库里的属性相匹配,若匹配则应用,并找到需要操作的对象,把语句规定的操作施加在该对象上,从而来继续运行脚本。若不匹配,则智能识别重新启动识别过程,过滤出一些符合条件的,进行判断后找到唯一匹配项来获取每个对象,否则脚本运行失败。
3.3 QTP自动化测试流程
QTP进行功能测试的测试流程大致分为制定测试计划、创建测试脚本、增强测试脚本、运行测试和分析测试结果五个步骤[3]。下面将以课程设计作品《网络学习系统》中的登录功能为例来进行测试,以此来介绍QTP自动化测试的基本流程。
3.3.1制定测试计划
首先要打开测试的系统网站,确保它能正常运行,这次测试主要以登录模块为重点,所以要先分析登模块的功能,用于本次的测试的是本人参与开发的系统,所以功能比较熟悉。在常见的操作过程中,登录模块一般会出现登入成功和登录失败两种情况:
登陆成功:输入正确的用户名和密码,成功登入系统。
登录失败:
1)用户名或密码输入错误;
2)类型选择错误。
根据以上信息设计登录模块测试用例如表3-1:
表3-1测试用例如表
项目/软件网络学习系统编制人黄成才
功能模块login编制时间2020-4-10
用例编号Login_01功能特性用户的合法性验证
测试目的为确保系统的安全性,需要验证输入的信息是否合法,阻止非法登录
预置条件数据库中已经实现存储了一些用户信息
测试数据用户名=account(学生)/,密码=password(数据库表中有相对应的信息),类型=学生/老师;
操作步骤操作描述数据期望结果实际结果测试状态(P/F)
1输入用户名和密码,选择类型,点击“提交”按钮用户名=account
密码=password
类型=学生登录成功,进入系统登录成功,进入个人信息页面P
2输入用户名和密码,选择类型,点击“提交”按钮用户名输入错误
密码=password
类型=学生提示:账号错误或未审核弹出提示框:账号密码错误或未审核P
3输入用户名和密码,选择类型,点击“提交”按钮用户名=account
密码输入错误
类型=学生提示:密码错误或未审核弹出提示框:账号密码错误或未审核P
续表3-1
4输入用户名和密码,选择类型,点击“提交”按钮用户名输入错误
密码=password
类型=老师提示:账号密码错误或未审核弹出提示框:账号密码错误或未审核P
5输入用户名和密码,选择类型,点击“提交”按钮用户名=username
密码=password
类型=老师登录成功,进入系统登录成功,进入个人信息页面P
6输入用户名和密码,选择类型,点击“提交”按钮用户名=username
密码输入错误
类型=老师提示:密码错误或未审核弹出提示框:账号密码错误或未审核P
7输入用户名和密码,选择类型,点击“提交”按钮用户名输入错误
密码=password
类型=老师提示:账号错误或未审核弹出提示框:账号密码错误或未审核P
8输入用户名和密码,选择类型,点击“提交”按钮用户名=username
密码=password
类型=学生提示:账号密码错误或未审核弹出提示框:账号密码错误或未审核P
3.3.2创建测试脚本
测试脚本的创建步骤有以下几个:
1)打开QTP测试工具;
2)新建测试任务有两种方式,第一种:点击工具栏左上角的“文件”选项,在“新建”选项中选择“测试”;第二种:直接点击QTP左上方工具栏中的“录制”按钮。
3)新建测试任务后,在弹出的录制和运行设置框里填写信息,在地址栏中填写测试软件所在的本地存储地址或网站根目录地址;在浏览器上选择用哪个浏览器来运行;最后勾选“不在已经打开的浏览器上录制和运行”选项,因为如果不勾选掉,QTP可能会识别到其他的浏览器上,最后一个选项可选可不选,效果如图3-1所示。然后点击“应用”,最后再点击“确定”,QTP就会自动打开要测试的软件或者网站。
图3-1录制和运行设置图
4)在打开的网站中点击“登录”选项,并将正确的用户名和密码输入到对应的输入栏中,选择正确的用户类型,点击提交后成功进入个人信息页面,最后点击“退出登录”按钮,点击网页提示的确定按钮回到登录界面。
5)此次记录一次登陆失败的操作,输入用户名和密码,输入的用户名错误或者密码错误,选择用户类型,点击“提交”按钮,接着点击网页提示的“确定”按钮回到登录界面。
6)回到QTP,在工具栏中点击“停止”按钮结束录制。
以上步骤录制成功后便会生成如图3-2以及图3-3所示的结果,图3-2是关键字视图(Key-word View),在这个视图中可以看到我们在测试过程中所有在界面上操作的关键步骤;图3-3是专家视图(Expert View)界面,里面的代码也就是我们常说的测试脚本。
图3-2关键字视图
图3-3专家视图
3.3.3增强测试脚本
这个步骤主要包括优化测试脚本、将脚本参数化、插入检查点、添加注释、添加测试输出信息等。对于录制下来的测试脚本,需要进一步修改和调整,这些工作可以在关键字视图中进行,也可以在专家视图中进行,对于新手而言,关键字视图可能会更容易理解和使用,因为它不需要理解和熟悉测试脚本语言[4]。
首先要进行对测试脚本进行一些简单的优化,去除掉一些不必要的操作步骤,例如本次我们在测试登录模块功能的过程当中鼠标点击了与我们测试的内容无关的步骤,但是QTP也将它记录了下来,所以我们在生成的脚本当中可以将它删掉,如图3-4所示。
图3-4简单优化后的脚本
接下来就是可以给我们的脚本进行参数化,第一种方法是直接在测试工具的最下方数据表中双击选中列表名,在弹出的提示框中直接进行参数列表重命名username,然后在列表中填入测试用例中的参数;第二种是在关键字视图下,先在左边的项目列表中找到需要参数化的步骤,然后在对应的“值”这一列中点击,选中的内容右边会出现一个“<#>”的按钮,点击以后会出现“值配置选项”设置框,选择“参数”选项,在名称中输入username,并选择“全局表”,最后点击确定。往后的密码password等列表的参数化操作也是以上操作步骤。
除了要将输入内容参数化,还要在登录成功或失败后的信息提示框的提示信息处,插入一个文本输出点,在最下方的Active Screen窗口中,右键选中提示信息,选择“插入输出值”,接着在类型中选择“text”属性类型,点击“修改”按钮,在输出选型框中更改列表名称text_out,选择全局表,最后点击确定就可以在数据表中穿件一列用来接收的表格。“文本输出点”用于获取在测试过程中信息框中的实际的提示信息然后输入到数据表text_out中,该信息可以与我们之前设定的预期值status里的参数进行对比,在测试结束后生成测试报告表格,该提示信息在测试运行的时候可以在数据表中看到,但是运行结束后会自动清空,也可以在测试结果Test Results中点击“当前参数表”查看测试过程所有的参数。