论文方法介绍-基于微信和web的协同互动式教务管理平台-CNKI知网查重网站

论文方法介绍-基于微信和web的协同互动式教务管理平台

2021-05-31 11:53:17
作者:杭州千明

  随着互联网对各行各业的变革日益加深,早期享受第一代电子化红利的教务管理类系统却因为长时间的不更新导致其系统出现了或多或少的问题,例如高校使用数量最多的“正方教务系统”,其系统在设计上高度依赖数据库操作,使用数据库语言进行了大量判断,虽然这种方式可以有效降低环境配置当中除数据库外的要求,但是同时也加深了数据库系统的负载;除此之外,该系统在设计之初由于时间较早,设计人员对英文的理解不够,使用了汉语拼音作为数据库表名和列名,大大增加了后期维护的难度。

  与此同时,由于近年来移动互联网的大幅度发展,针对移动教务行业的应用也越来越多,例如学生课程表软件“超级课程表”、在线课堂管理软件“BlackBoard”、“墨迹云课堂”等。在目前移动课堂和在线课堂越来越普及的现在,传统的教务系统越来越难与这些移动软件进行“对接”,任课老师希望使用这些软件但往往使用之后这些软件所提供的成绩不能直接的进入教务管理系统,且教务管理系统无法直接提供信息和数据给这些软件,造成的直接后果就是教师往往需要手动创建班级并创建学生信息,在任课完成后又需要手动导出成绩并设置成绩到教务系统,而学生需要自行使用软件进行课程表解析,稍有不慎就可能导致数据出错。出现这样的问题不仅是因为系统架构设计落后的缘故,也有因为系统架构落后导致维护困难所造成的安全问题。目前大部分使用“正方教务系统”的高校原则上都将系统放入了内网当中,使公网无法直接访问,原因就是由于安全问题,不便于将教务系统直接暴露在公网当中。

  不仅如此,目前的教务管理软件与行政管理方面的管理概念也渐行渐远,造成管理方面的困难,例如“完全学分制”、“OBE教育理念”等,这些行政管理概念与教务系统的设计理念的契合是重要的,系统与这些概念不符将导致管理人员的管理困难。而在系统层面本身会导致整个系统针对教务管理没有细致化,出现“功能盲区”。

  因此,针对目前教务管理的体系和市场进行勘察,并针对需求和新概念而设计一款教务管理平台是有必要的。而且在系统的设计当中,我个人还可以了解到与教务系统相关的理念与新技术。

  1.2研究现状

  1.2.1移动互联网部分

  中国的移动互联网起源其实很早,早在2006-2007年左右就已经有了使用WAP的第二代移动通信技术进行上网的“移动网民”,而真正让移动互联网步入正轨的,是智能手机。而第三代移动通信技术(也称3G)的出现大大提升了移动设备接入互联网的质量,具体表现为速度和通信地域,使得用户得以在自己的移动设备上做到了原先需要使用笔记本或台式机的工作。同时,由于2007年推出的IPhone和其所搭载的MacOS(随后更名为IOS)和2005年推出的Android系统让移动智能设备领域出现了翻天覆地的变化。

  截止至2019年6月,中国的网民规模已达8.54亿,网民使用手机上网的比例达99.1%,移动宽带平均下载速率较5年前提升约6倍。可以说,移动智能设备的普及加上互联网技术的革新让更多的人享受到了互联网的“链接”性。

  1.2.2教务管理及互联网教育部分

  互联网教育管理软件和在线课堂类软件近年来层出不穷。截止至2019年6月,中国的在线教育用户规模达2.32亿,占据网站整体的27.2%。随着在线教育的发展,互联网与在线教育,以及实体教育的链接将更加紧密,例如目前的在线MOOC,智能互联网教室等。

  1.3研究目标

  本论文主要介绍通过MVC架构和现有WEB技术,为教务管理人员及师生提供一个管理平台,它结合了移动互联网的优势,并且利用MVC架构的优势使得平台更易进行二次开发和修改,方便与其他系统对接实现校园一站式云平台的搭建。该平台以WEB端(学生、教室、管理员)和微信小程序端(学生)的形式存在,WEB端只需访问网址即可使用,微信小程序端需要在安装了微信客户端的手机上扫码或搜索指定名称进入小程序。

  该平台根据不同角色,主要拥有以下几个模块:

  WEB和微信学生端:

  1、新生认证功能

  新生在第一次登陆之后完善其详细信息

  2、选课功能

  学生根据自己的需要(专业,人数,学分等)进行选课操作

  3、成绩查看功能

  在教室给予成绩之后学生可以查看自己的成绩

  WEB教师端:

  1、课程认领功能

  教师可以选择自己需要开课的课程进行认领,已经认领的课程才会在学生的选课界面显示。

  2、成绩设置功能

  针对已经认领的课程,选择该门课程的学生,设置他们的成绩。

  3、学生管理功能

  管理已经选择教师认领课程的学生。

  WEB管理员端:

  1、课程管理

  管理课程基本情况

  2、学生管理

  管理学生信息

  3、教师管理

  管理任课教师

  4、基础信息管理

  管理学院、专业、班级等信息

  5、管理员管理

  管理管理员

  1.3研究目标

  本论文大体分为五个章节

  第一章:绪论部分。此部分说明了本论文的背景和实际意义,分析当前移动互联网,教务管理及在线教育相关的研究。同时对构建的平台以及论文的总体结构进行简单介绍。

  第二章:本章节主要是针对构建的平台所使用的关键技术进行相关介绍,并分析其优劣性。

  第三章:这个章节主要分析平台实现的可行性以及平台的需求。

  第四章:本章节主要阐述说明了平台的整体设计情况。

  第五章:在这个章节主要介绍了系统的实现与测试。

  2关键技术介绍

  2.1微信小程序

  微信小程序,是小程序的一种,这种小程序可以不需要下载安装即可使用的应用,它实现了应用“触手可及”的梦想,用户扫一扫或搜一下就可以打开应用。

  微信小程序在开发上使用的框架与VUE框架类似,以前端为主,同时增加了一些微信独有的函数和功能,除此之外,微信针对原有的JS语言做出了略微改动,以更加适应小程序的要求。

  微信小程序是一项创新,经过近几年的发展,腾讯已经构造并完善了小程序的开发环境以及开发者生态。其运营模式类似于IOS的应用市场,但是相对于IOS的应用来说,小程序的应用开发更加简单方便,同时不需要下载可以直接应用的方式也非常符合用户“及等可取”的方式。腾讯针对微信小程序的解释是“小程序是一种新的开放能力”

  2.2 LNMP架构

  LNMP架构是指一组用来运行动态网站或服务器的自由软件名称的首字母缩写,一般情况下L代表Linux,N代表Nginx,M代表Mysql,P代表PHP。而LNMP发展到今天,也已经扩充了其架构的可能性,例如最开始为LAMP,A代表Apache,而后来Nginx的性能和扩展逐步开始体现优势而大部分人选择使用Nginx作为组合当中的一员。由于以上的软件都是免费或者开放源码的软件,因此使用这种方式不用花一分钱,或者是需要花费少量的人工成本,就可以建立起一个稳定,免费的网站系统。

  Linux部分:

  Linux系统是一套免费和自由传播使用的类Unix系统,由Linux Torvalds创建,至今已经有多达上百种不同的发行版本,比较流行的免费版本例如Debian,centos,Ubuntu等。

  Nginx部分:

  Nginx是一种WEB服务器,与Apache的重量级服务器相比,Nginx是一种轻量级的高并发服务器,在大容量高并发的状态下,它的性能损耗与Apache相比可以达到很少,Nginx与Apache最大的优势就在于此,一个是CPU占用率,另外一个是内存占用率。不仅如此,Nginx还可以作为反向代理服务器,对网站进行负载均衡。

  Mysql部分:

  Mysql是目前最流行的关系型数据库管理系统,在WEB应用方面MYsql是最好的关系型数据库管理系统的应用软件之一。关系型数据库将数据保存在不同的表中,而不是将数据放在一个大仓库内,这样不仅可以拥有更好的并发和速度,还可以根据不同情况针对不同的表提供不同的权限,提升了灵活性。

  Mysql使用SQL语言,这也是数据库最常用的标准化语言,同时,Mysql由于其体积小,速度快,总体拥有成本低和开发源码这一特点,使得中小开发者都会选择Mysql作为其网站的数据库。

  PHP部分:

  PHP的全称为PHP:HyperText Preprocessor,翻译成中文为超文本预处理器,是一种通用开源的脚本语言。PHP是一种在服务器端执行的脚本语言,与C语言类似,但中后期也混用了其他家独特的语法和特性,例如Java及其面向对象特性,Perl等。主要适用于WEB开发领域。

  在2019年的访问调查中,WEB语言市场的占比,PHP语言以79%的超高占比笑傲群雄,与排名第二的ASP.NET差距达到67.7%,是当之无愧的市场老大。PHP的优势在于它作为开源软件,成本低,速度快,可移植性好,内置丰富的函数库等优点,因此越来越多的企业使用PHP作为其网站开发的唯一或主要语言。

  2.3 MVC框架

  MVC的全名是Model View Controller,是模型-视图-控制器的缩写,是一种软件设计模型,采用业务逻辑、数据和界面显示内容分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新再编写业务逻辑,为其拓展性打下了坚实的基础。Model是整个框架当中用于处理应用程序逻辑的部分,它是操作的核心,通常由Model进行数据库的操作。View是整个框架当中处理显示的部分,也就是前端,它向用户展示直观的内容,但是不进行任何核心操作。Controller是应用程序中处理用户交互的部分,它作为链接Model和View的通道,将Model当中的结果(取的数据)放到View当中,或者是从View当中获取用户的输入,反馈的Model当中。

  MVC的分层有助于管理复杂的应用程序,因为可以再不同的时间只关注一个方面,或者是分配人员针对三个层面分别开发。在本文当中,LNMP架构当中的PHP将负责MVC当中的Model和Controller架构,View由Nginx的WEB服务器进行发送和解析,使用静态的HTML语言负责。

  MVC这种方式强制性的使应用程序的输入、处理和输出分开,使用MVC的应用程序都分为三个部件歌词处理自己的任务,图2.3.1就是MVC框架的操作模型:

  图2.3.1 MVC架构图

  2.4本章小节

  本章节中主要介绍了该平台主要使用的技术,重点在于描述了LNMP架构以及MVC框架的特点和起源,以及LNMP作为服务器端的框架如何应用MVC开发。

  3系统需求分析

  系统需求分析,本段主要进行研究和分析,了解用户和项目的具体需求,例如功能、性能、可靠性、可行性等。将用户的非正式需求表达转换为完整的绣球定义以确定系统必须做出什么功能,实现什么目标。而需求分析又分为功能需求分析和非功能需求分析。功能需求使我们将要实现的功能,非功能需求主要可以体现在安全、性能、外观上,总而言之,非功能需求更多的是靠近用户的交互体验而设定的,是用户和开发者重要且不可缺失的一部分,本章将就功能需求和非功能需求进行分析。

  3.1可行性分析

  可行性分析是对项目的需求是否能够达成目标的分析项目,可行性分析不仅包括经济角度的可行性分析,以及目前技术能否达成的可行性分析,同时对可能的结果进行预测,选择最佳的实行方案。实现资源的最下化,效益的最大化。

  3.1.1技术可行性分析

  本项目后端使用的主要是LNMP架构,是一个相对传统但普遍的解决方案,它的最大优势是架构内个体均为开源或免费软件,同时该组合在市面上已经有诸多组合包可以选择,例如PHPstudy,LNMP一键安装包等。由于这种开发组合非常常见,因此在此架构上出现无法开发的可能性非常低。

  前端使用的是HTML+JQ或VUE的组合,VUE的主要表达为微信小程序的制作。HTML+JQ的组合也是非常广泛的,JQ全称为Jquery,是一个优秀的Javascript框架,这类框架简化了针对Javascript和HTML的各种操作,例如DOM操作等,JQ作为JavaScript的早期框架之一,到目前为止依旧占有不低的市场占有率。VUE则是相对来说比较新的Javascript框架,是由国人尤雨溪制作的一款Javascript的渐进式框架,与其他大型框架不同的是,Vue被设计为可以自底向上逐层应用。Vue的核心库只关心视图层。目前被广泛作为小程序核心,微信小程序也是基于Vue的。

  3.1.2经济可行性分析

  在后端LNMP作为服务端,由于作为开源软件或免费软件,使用者完全不需要进行付费,且因为使用广泛的缘故很多爱好者已经做好了相关的组合包,部署非常简单。而前端的HTML+JQ或微信小程序也是完全支持直接开发的,没有任何门槛。但作为后端需要有承载,因此需要花费一些资金去购买服务器,本项目建设购买使用了腾讯云的北京云服务器作为服务端。

  3.2功能需求分析

  本项目设计开发的是一个基于微信和WEB端的协同互动式教务管理平台的设计与研发,前台为微信小程序学生端,WEB学生端和WEB教室端,后台为WEB管理员后台。微信小程序学生端功能由微信开发者工具与LNMP服务端作为架构,PHP+Mysql对小程序端提供数据支持,将小程序端作为MVC当中的V,PHP+MYSQL作为MVC当中的MC。WEB端同理。

  3.2.1用户流程图

  本平台的整体流程的细化出的实际功能需求是本平台主要实现的功能,由于本平台区分角色,以下是不同角色的用户流程图。

  首先是学生的用户流程图,如图3.2.1.1所示:

  图3.2.1.1学生用户流程图

  其次是针对学生角色的用例图,详见图3.2.1.2。

  图3.2.1.2学生用户用例图

  基于学生的用户流程图和用例图,总结其功能主要由以下几个分类:

  1、用户系统

  2、个人信息模块

  3、选课模块

  4、成绩查询模块

  5、新生信息填写模块

  接下来是教师的用户流程图,如图3.2.1.3所示:

  图3.2.1.3教师用户流程图

  基于教师的用户流程图,总结其功能主要由以下几个分类:

  1、用户系统

  2、个人信息模块

  3、课程认领模块

  4、成绩填写模块

  最后是管理员的用户流程图,如3.2.1.4所示:

  图3.2.1.4管理员用户流程图

  然后是管理员用户的用例图,详见图3.2.1.5.

  图3.2.1.5管理员角色用例图

  基于管理员的用户流程图和用例图,总结其功能主要由以下几个分类:

  1、课程管理

  2、学院管理

  3、学生管理

  4、专业管理

  5、教师管理

  6、教室管理

  7、班级管理

  8、校区管理

  9、用户系统模块

  3.2.2用户系统模块

  基于用户模块是针对用户信息管理的模块,其主要实现的功能为用户登陆、用户设定。根据本平台的信息和情况,仅管理员可以设定用户信息,学生的账户除了基本内容之外,还需要有详细信息,例如家庭住址,父母信息等详细内容。

  学生用户在新生状态下第一次登陆需要强制设定用户详细信息。学生的详细信息即为用户的个性化需求。

  管理员可以管理学生用户和教师用户的基本信息,例如用户名、密码、所属院系等内容,同时也可以修改学生用户的详细信息。

  图3.2.2.1是用户系统模块的用例图

  图3.2.2.1用户系统模块用例图

  3.2.3课程管理模块

  课程管理模块主要负责课程基础信息的维护,其主要实现的就是课程的添删改查,例如课程信息,课程所属院系,上课人数等。仅管理员可以对课程基础信息进行维护。该模块与教师用户中的课程认领模块与学生用户中的选课模块有关联。

  例如图3.2.3.1是课程管理模块的用例图:

  图3.2.3.1课程管理模块用例图

  3.2.4学院管理模块

  学院管理模块主要负责学院信息的维护,主要实现的就是学院名称和ID的添删改查。仅管理员可以对学院信息进行维护。学院信息与很多其他模块都有关联。

  如图2.3.4.1所示,为学院管理模块的用例图:

  图2.3.4.1学院管理模块用例图

  3.2.5专业管理模块

  专业管理模块主要负责的是专业信息的维护,主要实现的就是专业的添删改查。专业信息主要由名称、所属学院、总绩点、学位和毕业要求构成。总绩点为毕业要求总绩点,学位为学生可以拿到的学位,毕业要求表示学生需要在不同的课程类型分别需要拿到多少分。进管理员可以对专业信息进行维护。该模块拥有一个子模块,用来管理专业学位信息。

  例如图3.2.5.1所示,为专业管理模块的用例图

  图3.2.5.1专业管理模块用例图

  3.2.6教室管理模块

  教室管理模块主要负责的是教室信息的维护,主要实现的就是教室的添删改查。教室的管理信息主要由名称,日常容量,考试容量,教室类型,所在校区和所属学院构成。进管理员可以对教室信息进行维护。该模块拥有一个子模块,用来管理教室分类。

  例如图3.2.6.1所示,为教室管理模块的用例图

  图3.2.6.1教室管理模块用例图

  3.2.7校区管理模块

  校区管理模块主要负责的是校区信息的维护,主要实现的就是校区的添删改查。校区的管理信息主要由校区名称和ID构成。仅管理员可以对校区信息进行维护。校区信息与教室模块有关联。

  图3.2.7.1所示,为校区管理模块的用例图:

  图3.2.7.1校区管理用例图

  3.2.8班级管理模块

  班级管理模块主要负责的是班级信息的维护,主要实现的就是班级信息的添删改查。班级的管理信息主要由班级名称,所属专业,上级学院构成。仅管理员可以对班级信息维护。班级信息与用户模块中的学生基础信息有关联。

  如图3.2.8.1所示,为班级管理模块的用例图

  图3.2.8.1班级管理模块用例图

  3.2.9教师管理模块

  教师管理模块主要负责的是用户模块中的教师角色的信息管理,教师的信息主要由教师编号,教师名称,教师密码,入职日期,上级学院等构成。仅管理员可以维护教师信息。该模块的示例图包含在图3.2.2.1的用户模块用例图中。

  3.2.10学生管理模块

  学生管理模块主要负责的是用户模块中的学生角色的信息管理,包括学生的详细信息管理,学生的基本信息包括学号、姓名、性别、学院、专业、班级、入学日期、当前状态和详细信息。该模块包含一个子模块,主要针对学生的状态类型进行管理。该模块的示例图包含在图3.2.2.1的用户模块用例图中。

  3.2.11教师课程认领模块

  教师课程认领主要负责的是让教师在现有课程列表当中选择自己需要任课的课程。只有认领的课程信息才会显示在学生的选课列表当中。同时可以针对已认领课程进行取消认领。仅教师可进行课程认领。

  3.2.12教师成绩填写模块

  教师成绩填写模块主要是在教师自己已认领的课程当中选择该门课程的学生给与成绩。根据课程基础信息当中的考试占比,教师可以根据实际情况给学生的平时成绩和考试成绩进行打分。打分之后成绩会出现在学生的成绩查询模块当中。同时学生的指定选课和老师的指定选课会删除。

  3.2.13学生选课模块

  学生选课模块主要是学生选择自己需要的课程,仅教师认领的课程才可以选择。选择之后也可以取消选课。而课程的基础信息设定了可以选课的人数,当选课人数超出容量之后提示“选课失败”。

  如图3.2.13.1所示,为学生选课模块用例图

  图3.2.13.1学生选课模块用例图

  3.2.14学生成绩查询模块

  学生成绩查询模块主要是学生查询自己已选课程的成绩,成绩在老师进行成绩填写之后出现。学生只能查看该成绩。

  3.2.15整体系统用例图

  以上所有模块针对不同的角色合并而成的用例图如下图3.2.15.1所示。

  图3.2.15.1系统整体用例图

  3.3本章小结

  在这一章节中,本文主要介绍和分析了平台的各种功能需求以及可行性,在第一小结中,本文重点阐述和分析了该系统的可行性。主要在技术可行性和经济可行性上作了重点阐述分析。在第二小结中本文详细介绍了本平台各个模块的功能需求,以便为系统的设计提供支持,同时在最后总计了系统的整体用例图,让整个框架大致清晰明了。

  4系统设计概要

  在上一章中,主要分析了该教务管理平台的功能性需求和非功能性需求,细致阐述了各个模块的功能需求,在本章节中将就上一章的需求做出实际的设计分析,主要讨论的是后台功能的设计和后台数据库的设计。在此章节中将就用户模块,管理员学生管理模块,学生选课模块,教师课程认领模块和专业管理模块进行详细分析。

  4.1系统总体设计概要

  如第三章需求所示,本系统采用B/S架构,服务器端使用LNMP框架,是一种在WEB服务器中广泛采用的架构,作为WEB服务的承载端,整体平台架构采用MVC架构,系统整体用例图请参见上一章的图3.2.15.1所示,该图展示了系统整体的模块以及所属角色情况。

  4.2系统总体设计概要

  系统总体设计框架如图4.2.1所示:

  图4.2.1系统框架图

  4.3平台需求功能设计

  4.3.1用户功能设计

  用户功能设计主要是针对学生端、教师端和管理员端进行登陆,注销的模块,是检测用户角色以及验证用户信息的模块,主要功能有用户登陆、用户添加,修改和删除、学生用户详细信息编辑、和用户信息查看等功能。

  4.3.1.1用户登陆功能设计

  如图4.3.1.1.1所示,用户进入正式界面之前,系统将判断用户是否拥有账号,并且检查其角色,当进入学生角色后,系统将检查该学生是否为新生,如果是新生,需要填写详细信息才可进入指定页面。

  图4.3.1.1.1登陆流程图

  如图4.3.1.1.2所示,用户登录过程,系统将收集用户在登陆界面填写的角色信息以及编号、密码,并将该信息传递给API,并由API传递给Function,最后由function处理信息并将结果返回给API,并由API包装结果并返回给前台。

  图4.3.1.1.2用户登陆时序图

  4.3.1.2类图

  用户(登陆)类包括有用户名,密码和角色三个属性,与其他类或接口组成的关系的详细情况如图4.3.1.2.1所示:

  图4.3.1.2.1用户(登陆)类图

  4.3.2学生选课功能设计

  如图4.3.2.1,学生选课是教务管理平台当中不可缺少的一环,学生需要在教师已经认领的课程当中选择自己需要的课程,如果当前课程人数满足选课要求,那么允许学生选课,如果当前课程人数不满足需求,则不允许学生选课。

  图4.3.2.1学生选课、管理已选课程流程图

  4.3.3教师课程认领功能设计

  教师课程认领是教师在登陆后选择自己需要任课的课程,只有教师已经认领的课程才会出现在学生的选课列表当中,教师课程的流程图如图4.3.3.1所示“

  图4.3.3.1教师课程认领、管理已认领课程的流程图

  4.3.4教师成绩填写功能设计

  教师填写是教师在任课结束时给所有选择该门课程的学生,根据课程基础信息中的考核比例填写平时成绩和考核成绩。填写完成并确认后,成绩提供给学生,而整个教师的任课流程,以及学生的选课流程结束。教师填写功能的流程图如图4.3.4.1所示

  图4.3.4.1教师成绩填写功能流程图

  4.3.5管理员管理学生/老师功能设计

  管理员管理学生/老师的账户及信息,不仅可以控制学生/老师登陆教务系统的账号密码,也可以管理学生的详细信息,由于学生信息的管理大部分与老师相同,且学生信息的管理较于老师信息管理更加负责,这里以学生信息管理为主。管理员管理学生信息功能流程图如图4.3.5.1所示:

  图4.3.5.1管理员管理学生流程图

  4.4数据库设计

  本平台使用的数据库为MySql数据库,该数据库为关系型数据库,使用该数据库作为包括小程序端在内的后端数据库。

  4.4.1 E-R图

  本平台的核心流程为教师用户认领课程,学生用户选课,教师用户填写成绩,学生用户查看成绩,因此基本上包含的内容和实体分为学生、老师、课程,简要ER图请参考图4.4.1.1:

  图4.4.1.1老师-课程-学生ER图

  4.4.2数据库核心部分设计

  由于本平台的数据库部分内容需要很多辅助性表,这里为了论文整洁只介绍核心部分,主要的数据库如下:

  (1)学生表与学生详细信息表

  如题所示,学生表就是学生的基础信息,是学生登陆的凭证,学生详细信息表就是学生的详细信息,由于信息过长,因此分为两张表储存,同时学生可以仅拥有基础信息(仅在状态为新生的状态下),当学生填写新生信息后,详细信息才会创建。具体情况如表4.4.2.1、表4.4.2.2:

  表4.4.2.1学生表(Student)

  列名类型允许为空?默认值

  stuID Int否自增

  stuNum String否-

  stuPasswd String否-

  stuName String否-

  stuGender Int是NULL

  stuCollegeID Int是NULL

  stuMajorID Int是NULL

  stuClassID Int是NULL

  stuEntryYear Date否0000-00-00

  stuStatusID Int是NULL

  stuReportNum Int否-

  stuExamNum String否-

  stuFileNum String否-

  表4.4.2.2学生详细信息表(stuInfo)

  列名类型是否为空?默认值

  infoID Int否自增

  infoStuPic String是NULL

  infoStuID Int是NULL

  infoPerIdent Int是NULL

  infoBirthday Date是NULL

  infoGraduateGeoCodeID Int是NULL

  infoPolStatID Int是NULL

  infoPostCode Int是NULL

  infoGeoCodeID Int是NULL

  infoAddress String是NULL

  infoPhoneNum String是NULL

  infoHomeNum String是NULL

  infoHealthyStatus String是NULL

  infoGraduateSchool String是NULL

  infoFatherName String是NULL

  infoFatherWorkingPlace String是NULL

  infoFatherPhoneNum String是NULL

  infoMotherName String是NULL

  infoMotherWorkingPlace String是NULL

  infoFatherPhoneNum String是NULL

  (2)学生成绩表

  学生成绩表就是在学生选课后,老师填写成绩之后所体现的表格,该表格仅老师可以改动,学生只能获取到自己的成绩。具体情况如表4.4.2.3

  表4.4.2.3学生成绩表(stuGrade)

  列名类型允许为空?默认值

  gradeID Int否自增

  gradeCourseID int否-

  gradeStudentID int否-

  gradeCount int是NULL

  gradeTermID int是NULL

  gradeDate timestamp否INSERT-timestamp

  gradeValue string否-

  (3)学生选课表

  学生选课表就是承载学生从老师任课的表中选择的课程。具体情况如表4.4.2.4所示:

  表4.4.2.4学生选课表(stuSelectCourse)

  列名类型允许为空?默认值

  courseID Int否自增

  courseStudentID int否-

  courseCourseID int否-

  courseSelectTime timestamp否INSERT-TimeStamp

  courseStatusID int是0

  (4)教师表

  教师表是存储老师信息的地方,同时也是老师登陆的依据,教师表具体情况如表4.4.2.5所示:

  表4.4.2.5教师表(Teacher)

  列名类型允许为空?默认值

  tchID Int否-

  tchNum String否-

  tchName String否-

  tchPasswd String否-

  tchSuperiorCollegeID Int是NULL

  tchMajCodeID Int是NULL

  tchPic String是NULL

  tchEntryYear Date否0000-00-00

  tchDegreeID Int是NULL

  tchStatusID Int是NULL

  tchLvID Int是NULL

  tchDescription text是NULL

  (5)教师课程认领表

  教师课程认领表就是教师从课程表当中认领的课程,仅该课程会出现在学生的选课列表当中。教师课程认领表详细情况如表4.4.2.6所示:

  表4.4.2.6教师课程认领表(tchTeachingCourse)

  列名类型允许为空?默认值

  courseID int否自增

  courseTeacherID int否-

  courseCourseID int否-

  courseClassID int否-

  courseTeachingYear year否0000

  (6)管理员表

  管理员表是管理员登陆时的认证凭据,管理员表的详细情况如表4.4.2.7所示:

  表4.4.2.7管理员表(Admin)

  列名类型允许为空?默认值

  adminID int否自增

  adminName string否-

  adminPasswd string否-

  adminLvID int是9

  adminTeacherID int是-

  (7)课程表

  课程表就是存放课程基础信息的表,只有放在课程表当中的课程才可以被教师认领,课程表的详细情况如表4.4.2.8所示:

  表4.4.2.8课程表(Course)

  列名类型允许为空?默认值

  cID int否自增

  cNum string否-

  cName string否-

  cMajID int是NULL

  cPoint int否0

  cTermID int是NULL

  cExamType int否0

  cTypeID int是NULL

  cCapacity int否0

  cExamGradeRatio floot否1.00

  cCollegeID int是NULL

  cSuperiorCourseID int是NULL

  4.5数据库关系一览

  在本章当中将使用数据库关系图表方式展示核心数据表之间的关系,如图4.5.1所示:

  图4.5.1数据库关系图表

  这张图片主要展示的是数据库的理论关系,由于Mysql的表格特性,MyISAM的表格没有关系系统,而InnoDB是有的,这里使用了混合表格格式的关系,因此无法直接使用关系图展示,这里使用的是模拟的关系图标进行的。

  4.6本章小结

  在本章节中本文主要针对各个模块的功能需求做了详细的设计,在第一小节当中本文主要介绍了一些主要功能的用例图,第二小节文章主要展示了系统功能的框架图,第三小节文章主要详细介绍了设计架构,并展示了流程图、时序图、类图等设计图,最后一个小节主要讲述了核心数据库的设计,包括ER图的设计以及几个核心数据表的结构设计。在最后展示了整体核心数据库的关系图表。

  5具体实现以及测试

  具体实现以及测试是将平台运行的结果和预想结果与平台代码展示出来,以了解代码实现的效果和原理。由于本平台功能较多,这里以几个核心点来作为主要讲解内容。

  5.1用户登陆模块实现

  输入指定网址或打开小程序,在第一次进入平台或者是中途系统检测发现用户已经推出登陆的情况下会进入到登陆界面。如图5.1.1和图5.1.2所示:

  图5.1.1 WEB登陆界面

  图5.1.2微信登陆预想界面

  登陆模块

  在登陆模块中,在WEB端会有选择角色的选择按钮,以及用户名和密码输入框,微信小程序由于主要针对学生用户因此不需要有选择按钮。当点击确定,微信小程序端点击下方按钮后,系统会将内容发送给后台的API,由API判断内容是否为空,以及他们的角色是什么,并交由function当中的指定函数判断信息是否正确,若正确,则给网站添加一个SESSION,表明用户已经登陆,并返回一个true,后台API接收到TRUE后,会包装一个status的参数,若登陆成功则为islogin,若登陆失败则为unlogin,最后转换为JSON方式返回给前端。

  前端拿到参数后会判断是否成功,如果成功则导向进入对应主页面并弹出“登陆成功!”弹窗,若失败则弹出“登陆失败!”弹窗,如图5.1.3所示。

  图5.1.3登陆成功弹窗

  具体的关键代码如下(FUNCTION部分,以学生登陆为例):

  关键代码

  5.2前端界面跳转以及程序获取

  前端WEB界面使用HTML+JQ的方式直接通过Javascript的get以及post与后端的API进行通信。并根据结果选择输出内容。而前端的跳转界面和用户角色检测也是重要一环。WEB端教师、学生、管理员登陆后界面如图5.2.1、图5.2.2和图5.2.3所示:

  图5.2.1学生登陆后主页

  图5.2.2教师登陆后主页

  图5.2.3管理员登陆后主页

  前台的主页在确定登陆成功后,会加载index_frame的html文件,该文件负责判断并载入不同角色的后台主页。具体加载和判断使用js解决。具体到本例当中则是使用了一个openIndex的switch函数,并将按钮绑定该函数来达到打开关闭功能的效果。而具体到openIndex函数内,则使用读取内容并放置在Div的方式达到该效果。详见对应的关键代码:

  关键代码(以两个case举例)

  关键代码中,userAuth是前面代码中的userType,这个type是前后端对应的,当前端执行什么函数的时候,后端会在执行前检测该函数对应的执行权限,如果当前用户达到了这个执行权限,则会执行,否则直接返回false。同时,根据整个平台的文件框架,和设置,当登陆之后,function会自动读取指定用户类的function文件,当一个低级用户登陆后,尝试去执行高级用户的函数时,由于function文件不会读取高级用户的函数,那么低级用户就自然无法执行该函数导致前端找不到函数而出错。做到一个双保险的作用。

  5.3学生选课功能设计实现

  作为教务系统关键的一环,学生的选课功能的设计实现也是很重要的,学生用户在进入选课功能后,会看到所有已经列出的教师认领的课程,包括课程的详细信息,以及任课老师,还有就是课程的剩余可选数量。学生可以查看当前已选课程,或者是单选或批量选课,选课成功的课程会在已选课程当中出现,同时学生用户可以管理已选课程,比如删除该门课程。

  具体情况如下图所示:

  图5.3.1学生选课主页

  图5.3.2选课成功提示

  图5.3.3已选课程管理

  该功能的关键代码如下:

  关键代码(获取选课课程)

  *由于数据库部分代码过长这里不进行过多截取,单独放在这里:(这里的代码stuID被指定为了0)

  关键代码(学生选择指定课程)

  关键代码(获取学生已选课程)

  *由于数据库部分代码过长这里不进行过多截取,单独放在这里:(这里的代码stuID被指定为了0)

  5.4教师课程认领功能设计实现

  教师在整个教务管理平台流程当中,也是必不可少的一项功能,教师需要先认领该门课程之后,学生才能选择指定课程。本例当中,教师需要先进入选课界面,选择希望选取一项或多项的基础课程,然后选择认领即可认领指定课程,如果需要取消认领,可以选择选课界面当中的“管理已选课程”即可查看已选课程,以及取消一项或多项课程。

  具体情况如下图所示:

  图5.4.1教师课程认领界面

  图5.4.2教师课程认领界面

  具体的关键代码如下:

  关键代码(获取教师认领课程)

  关键代码(获取教师已选课程)

  关键代码(教师认领指定课程)

  5.5管理员管理学生功能设计实现

  管理员管理学生和老师的功能是学生角色和老师角色可以登入平台的重要点之一,只有管理员设置(添加/删除)了对应角色的账户,对应角色才可以登陆/无法登陆平台。而管理员管理学生和老师的功能大体相同,这里以管理学生功能作为例子。

  具体的实现效果如下图所示:

  图5.5.1管理员学生管理主页

  图5.5.2管理员编辑学生基础信息

  图5.5.3管理员管理学生状态

  图5.5.4管理员编辑学生详细信息

  具体的核心代码如下:

  关键代码(编辑学生详细信息)

  function modifyStudentInfo($infoID,$infoStuPic,$infoStuID,$infoPerIdent,$infoBirthday,$infoGraduateGeoCodeID,$infoPolStatID,$infoPostCode,$infoAddress,$infoPhoneNum,$infoHomeNum,$infoHealthyStatus,$infoGraduateSchool,$infoFatherName,$infoFatherWorkingPlace,$infoFatherPhoneNum,$infoMotherName,$infoMotherWorkingPlace,$infoMotherPhoneNum){

  checkUserAuthority(7);

  $infoID=(int)$infoID;

  $infoStuPic=htmlspecialchars($infoStuPic,ENT_QUOTES);

  $infoStuID=(int)$infoStuID;

  $infoPerIdent=(int)$infoPerIdent;

  $infoBirthday=htmlspecialchars($infoBirthday,ENT_QUOTES);

  $infoGraduateGeoCodeID=(int)$infoGraduateGeoCodeID;

  $infoPolStatID=(int)$infoPolStatID;

  $infoPostCode=(int)$infoPostCode;

  $infoAddress=htmlspecialchars($infoAddress,ENT_QUOTES);

  $infoPhoneNum=htmlspecialchars($infoPhoneNum,ENT_QUOTES);

  $infoHomeNum=htmlspecialchars($infoHomeNum,ENT_QUOTES);

  $infoHealthyStatus=htmlspecialchars($infoHealthyStatus,ENT_QUOTES);

  $infoGraduateSchool=htmlspecialchars($infoGraduateSchool,ENT_QUOTES);

  $infoFatherName=htmlspecialchars($infoFatherName,ENT_QUOTES);

  $infoFatherWorkingPlace=htmlspecialchars($infoFatherWorkingPlace,ENT_QUOTES);

  $infoFatherPhoneNum=htmlspecialchars($infoFatherPhoneNum,ENT_QUOTES);

  $infoMotherName=htmlspecialchars($infoMotherName,ENT_QUOTES);

  $infoMotherWorkingPlace=htmlspecialchars($infoMotherWorkingPlace,ENT_QUOTES);

  $infoMotherPhoneNum=htmlspecialchars($infoMotherPhoneNum,ENT_QUOTES);

  $sql="UPDATE stuInfo SET

  infoStuPic='".$infoStuPic."',

  infoPerIdent=".$infoPerIdent.",

  infoBirthday='".$infoBirthday."',

  infoGraduateGeoCodeID=".$infoGraduateGeoCodeID.",

  infoPolStatID=".$infoPolStatID.",

  infoPostCode=".$infoPostCode.",

  infoAddress='".$infoAddress."',

  infoPhoneNum='".$infoPhoneNum."',

  infoHomeNum='".$infoHomeNum."',

  infoHealthyStatus='".$infoHealthyStatus."',

  infoGraduateSchool='".$infoGraduateSchool."',

  infoFatherName='".$infoFatherName."',

  infoFatherWorkingPlace='".$infoFatherWorkingPlace."',

  infoFatherPhoneNum='".$infoFatherPhoneNum."',

  infoMotherName='".$infoMotherName."',

  infoMotherWorkingPlace='".$infoMotherWorkingPlace."',

  infoMotherPhoneNum='".$infoMotherPhoneNum."'

  WHERE infoID=".$infoID."";

  //echo$sql;

  $result=mysqli_query($GLOBALS['con'],$sql);

  if($result){

  return true;

  }else{

  return false;

  }

  }

  5.6整体平台系统框架以及前后端衔接设计

  本例使用的是MVC架构进行的系统设计,因此前端,也就是View使用的是纯HTML+JS的设计,这样做可以很方便的与Model和Controller进行分离。前端使用的架构为index.html通过main.js调用template当中的不同前端文件实现不同的效果。后端使用API.php调用function.php来实现实际内容应用,而function根据登陆与否以及登陆角色情况选择调用的实际函数并链接数据库。前端具体架构如图5.6.1,后端具体架构如图5.6.2

  图5.6.1前端架构一览(图中黄色标记的为前端文件)

  图5.6.2后端以及衔接层API架构一览(图中黄色标记为后端文件)

  而API.php部分实际上就是一个超大的switch,除了通过get和post接收前端发过来的内容之外,简单检测前端发过来的内容是否合法,以及接收到的结果的格式化都是经过api.php来处理的。整体架构图如下:

  图5.6.3系统整体架构图

  5.7整体平台系统测试

  系统测试是为了验证平台系统的可用性和稳定性,在程序开发的阶段,难以避免的情况就是有些时候逻辑是错误的,但是结果有限正确,这是系统测试变得尤为重要,只有经过测试的平台,才能真正的实战使用,因此本章节将对平台系统的一些核心功能做出测试

  (1)用户模块测试

  用户模块测试,主要测试其登陆,选择角色是否正确,测试用例如下表

  表5.7.1登陆测试表

  项目内容

  测试用例编号T-01

  测试用例名称用户登陆

  目的测试登陆功能是否完整,是否可以按照选定的角色进行登陆

  测试用例级别功能性测试

  测试流程1、输入非法账号尝试登陆

  2、输入学生账号尝试学生登陆

  3、输入学生账号尝试其他角色登陆

  4、输入教师账号尝试其他角色登陆

  5、输入教师账号尝试教师登陆

  6、输入管理员账号尝试其他角色登陆

  7、输入管理员账号尝试管理人员登陆

  8、输入一个在后台已经删除了的账户尝试登陆

  预期结果

  1、登陆失败,角色错误

  2、登陆失败,用户不存在

  3、登陆成功

  结论通过

  (2)学生选课功能测试

  学生选课功能主要体现在学生是否可以通过该系统进行选课,或取消选课。

  表5.7.2学生选课功能测试表

  项目内容

  测试用例编号T-02

  测试用例名称学生选课测试

  目的学生选择课程或删除课程,整体功能是否正常

  测试用例级别功能性测试

  测试流程1、单选或多选指定课程

  2、进入管理已选课程界面

  3、在管理已选课程界面当中单选或多选取消课程

  预期结果1、提示“选课成功”

  2、打开已选课程界面

  3、提示“取消成功”

  结论通过

  (3)教师课程认领功能测试

  教师课程认领功能体现在教师认领课程是否正常,如果不正常,将影响学生选课

  表5.7.3教师课程认领功能测试表

  项目内容

  测试用例编号T-03

  测试用例名称教师课程认领测试

  目的教师选择认领课程或删除已认领课程,整体功能是否正常

  测试用例级别功能性测试

  测试流程1、单选或多选指定课程并认领

  2、进入管理已认领课程界面

  3、在管理已认领课程界面当中单选或多选取消认领课程

  预期结果1、提示“认领成功”

  2、打开已认领选课程界面

  3、提示“取消成功”

  结论通过

  (4)教师成绩填写功能测试

  教师成绩填写是整个教务系统当中接近结尾的流程,如果整个流程出现问题,那么流程不能成为闭环将出现严重错误。

  表5.7.3教师成绩填写功能测试表

  项目内容

  测试用例编号T-04

  测试用例名称教师成绩填写功能测试

  目的教师针对自己认领课程当中选择这门课程的学生填写成绩

  测试用例级别功能性测试

  测试流程1、填入一个整体情况可以及格的平时成绩和考试成绩

  2、填入一个整体情况不能及格的平时成绩和考试成绩

  3、在两个框的任意一个当中填写非数字

  4、点击提交

  预期结果1、成绩的结果应为预期数字,且背景颜色为白色

  2、成绩的结果应为预期数字,且背景颜色应为红色

  3、提示“请您输入数字!”

  4、提交后教师的该门选课重新出现在认领界面,指定学生的选课当中该门课程消失,重新出现在选课界面,指定学生的成绩列表当中增加一项当前课程的成绩,成绩数字为预期数字

  结论通过

  (5)管理员管理学生功能测试

  管理员管理学生功能是确定学生可以登陆以及其数据正确性的功能,该功能出现错误轻则学生信息错误,重则让学生无法登陆。