基于java的教学管理系统设计(含源文件)

欢迎添加微信互相交流学习哦!

二维码

项目源码:https://gitee.com/oklongmm/biye

目录
第1章  绪  论    1
1.1 课题背景    1
1.2 国内外现状    1
1.3 发展趋势    2
第2章 技术及开发工具介绍    3
2.1 系统开发涉及的技术    3
2.1.1 SERVLET技术简介    3
2.1.2 JSP及其特点    4
2.1.3 JDBC技术    4
2.2 系统开发所用工具    5
2.2.1 Apache Tomcat    5
2.2.2 MySQL数据库    5
2.3 系统开发采用的设计模式    6
2.4开发平台的选择    7
2.5系统运行环境    7
2.5.1 硬件环境    7
2.5.2 软件环境    7
第3章 系统总体设计    9
3.1教学管理系统需求分析    9
3.2教学管理系统的功能分析    11
3.2.1 管理员登录模块    11
3.2.2 教师基本信息管理模块    11
3.2.3 学生课程管理模块    11
3.2.4 学生基本信息管理模块    12
3.3 系统结构图    13
3.4 数据库概念结构设计    13
3.5 实体E-R图    14
3.6 实体联系E-R图    16
3.6.1 E-R图向关系模型的转换    17
3.6.2 关系模式设计    17
3.6.3 数据表结构    18
第4章 系统实现详细设计与实现    21
4.1 系统登陆界面的设计与实现    21
4.2 主控制平台的设计与实现    22
4.3 教师管理系统界面的设计与实现    23
4.4 课程管理界面的设计与实现    29
4.5 学生管理界面的设计与实现    31
第5章 测  试    35
5.1 常用的测试方法    35
5.2 系统测试    36
5.3 系统的安全性分析    38
5.4 系统的实用性分析    38
结    论    39
致    谢    40
参考文献    41
 

第1章  绪  论


1.1 课题背景

 随着国民经济的加速发展,我校办学规模的不断扩大,按照传统的人工方式进行教学管理,由于业务量大,以及人为主观因素的影响,已难以适应新形势的需要,不便于工作的顺利开展。为了加强管理,减轻工作人员的负担,提高工作效率,设计出一套实用性较强的教学管理系统。为用户提供丰富的信息、快捷的查询手段。使用户摆脱人工操作的工作模式,实现教学信息管理的科学化、现代化。
作为培养人才的基地,各个学校的进步与发展对整个社会起着巨大的作用。没有管理的自动化,就没有管理的现代化。各个学校都朝着现代化、科学化的方向发展,而确保这两条出路畅通的基本条件就是计算机在学校各项管理工作的广泛应用。
现在我国许多学校的教学管理水平还处于手工阶段,造成了严重落后的局面,这样的机制已经不能适应时代的发展。为此,以智能化为导向,基于计算机硬件的软件管理系统开始应运而生。

1.2 国内外现状
 
Web作为教学管理系统的媒体,其优势不仅在于它是很好的内容载体,可以随时随地地访问,还在于它提供了很多交流渠道,可以促进师生之间、学生之间的充分讨论,这对于提高教学质量、促进学生高级认知能力的开发是十分重要的。所以,也有一些远程教学管理平台就是在远程会议系统之上增加了教育管理功能,并逐步向全面支持网上教学方向扩展。如DataBeam公司DataBeam Learning Server。Lotus 的LearningSpace是基于 Lotus Domino框架,提供了学生与学生、学生与老师之间强大的交流功能。
现在国际上最有影响的WBT System的TopClass 、Lotus公司的 LearningSpace英属哥伦比亚大学计算机科学系开发的WebCT (Web Course Tools)、加拿大Simon Fraser大学的VirtualU都在全球发展了一定的用户群,每种软件都至少有10所大学或公司在使用,各开设了上百门课程,授课学生人数均超过5000人次。其中一些产品已进入中国市场,如中国有四所大学在使用Lotus 公司的 LearningSpace,VirtualU也在去年到中国做过宣传。目前大量的教学支撑平台还只是大学实验室的产物,处于继续开发或"beta"测试阶段。

1.3 发展趋势

1.系统日趋开放,遵从标准:为了更好地交流和服务,促进资源的共享和优势互补,研究制定相关的标准并遵从实施,是大趋势。标准化也是开放性的前提。
2.与学校的其他有关系统有机结合,这不仅是数据交换层面的结合,还包括用户统一的门户界面,统一身份验证和授权等一系列互操作问题。
3.强调对教学策略的支持,特别是对混合学习方式的支持:这包括课堂教学管理和课程网站如何更合理结合,异步学习资源和同步学习材料如何配合,服务器的一般性服务和本地个性服务如何更好融合等一系列问题,其实现技术涉及WEB SERVICES,XML MESSAGING。
 

第2章 技术及开发工具介绍


2.1 系统开发涉及的技术

本系统采用Servlet+JSP+Apache(MVC模式)技术配MySQL数据库进行系统开发[1]。

2.1.1 SERVLET技术简介

Servlet是Java技术对CGI编程的回答。Servlet程序在服务器端运行,动态地生成Web页面。同时它也作为一个中间层,负责连接来自Web浏览器或其他HTTP客户程序的请求和HTTP服务器上的数据库或应用程序。与传统的CGI和许多其他类似CGI的技术相比,Java Servlet具有更高的效率,更容易使用,功能更强大,具有更好的可移植性,更节省投资,更高效。Servlet被调用的流程如图2.1所示。
 
图2.1 Servlet被调用的流程

图2.1说明:
(1)客户端(通常为Web浏览器)向Web服务器发送一个基于HTTP协议的请求。
(2)Web服务器接收到该请求,并将请求交给Servlet容器处理。
(3)Servlet容器根据Servlet的配置来查找或创建Servlet的实例,并执行该Servlet,Servlet容器必须把客户端请求和响应封装成Servlet规范中规定的请求和响应对象传给Servlet。
(4)Servlet可以使用请求对象获取客户端的信息,比如IP地址、请求的参数等,以及执行特定的业务逻辑。Servlet可以使用响应对象向客户端发送业务数据及业务执行的结果。
(5)Servlet处理完该请求后,Servlet容器要保证Servlet的响应内容能够发送到客户端去(flush),最后返回到Web服务器。

2.1.2 JSP及其特点

JSP及其特点[2]:JavaServer Pages(JSP)是一种实现普通静态HTML和动态HTML混合编码的技术。JSP和ASP相比具有两方面的优点首先,动态部分用Java编写,而不是VB Script或其他Microsoft语言,不仅功能更强大而且更易于使用。第二,JSP应用可以移植到其他操作系统和非Microsoft的Web服务器上。JSP和纯Servlet相比JSP并没有增加任何本质上不能用Servlet实现的功能。但是,在JSP中编写静态HTML更加方便,不必再用println语句来输出每一行HTML代码。更重要的是,借助内容和外观的分离,页面制作中不同性质的任务可以方便地分开:比如,由页面设计专家进行HTML设计,同时留出供Servlet程序员插入动态内容的空间[4]。

2.1.3 JDBC技术

JDBC技术[3]:Java联接数据库引擎。一个独立于DBMS的接口将使得与各种各样DBMS连接变得最为便捷,开发更加迅速。定义一个通用的SQL数据库存取框架,在各种各样的提供数据库连接模块上提供统一的界面是十分有意义的。Sun公司设计了一个适合于Java使用的数据库操作引擎:JDBC(Java Data Base Connectivity)[6],并于1996年3月份发布。它为各种常用数据库提供无缝联接的技术,并且沿袭了ODBC的设计思想,采用了与ODBC一样的设计基础:X/Open SQL Call Level Interface(简称CLI)。ODBC(OpenData Base Connectivity),称为开放式数据库互联技术,是由Microsoft公司倡导并得到业界普遍响应的一门数据库连接技术。为了使JDBC功能更加强大,还开发了一个“JDBC-ODBC的翻译器”(也被称为桥接器)。通过它,还可以使用数据库的ODBC驱动程序。

2.2 系统开发所用工具

2.2.1 Apache Tomcat

Tomcat是Servlet 2.2和JSP 1.1规范的官方参考实现。Tomcat既可以单独作为小型Servlet、JSP测试服务器,也可以集成到Apache Web服务器。直到2000年早期,Tomcat还是唯一的支持Servlet 2.2和JSP 1.1规范的服务器,但已经有许多其它服务器宣布提供这方面的支持[5]。

2.2.2 MySQL数据库

MySQL数据库技术:MySQL是一个快速的多线程、多用户和健壮的SQL数据库服务器。MySQL服务器支持关键任务。重负载生产系统的使用,也可以将它嵌入到一个大配置(mass-deployed)的软件中去。
(1)MySQL是一个数据库管理系统。
一个数据库是一个结构化的数据集合。它可以是从一个简单的销售表到一个美术馆、或者一个社团网络的庞大的信息集合。如果要添加、访问和处理存储在一个计算机数据库中的数据,你就需要一个像MySQL这样的数据库管理系统。从计算机可以很好的处理大量的数据以来,数据库管理系统就在计算机处理中和独立应用程序或其他部分应用程序一样扮演着一个重要的角色。
(2)MySQL是一个关系数据库管理系统。
关系数据库把数据存放在分立的表格中,这比把所有数据存放在一个大仓库中要好得多,这样做将增加你的速度和灵活性。“MySQL”中的SQL代表“Structured Query Language”(结构化查询语言)。
(3)MySQL服务器是一个快的、可靠的和易于使用的数据库服务器。
如果这是你正在寻找的,你可以试一试。MySQL服务器还包含了一个由用户紧密合作开发的实用特性集。
(4)MySQL服务器工作在客户/服务器或嵌入系统中。
MySQL数据库服务器是一个客户/服务器系统,它由多线程SQL服务器组成,支持不同的后端。多个不同的客户程序和库。管理工具和广泛的应用程序接口(APIs)。
(5)MySQL也可以是一个嵌入的多线程库,你可以把它连接到你的应用中而得到一个小、快且易于管理的产品。

2.3 系统开发采用的设计模式

设计模式是面向对象的程序设计人员用来解决编程问题的一种形式化表示。目前,在大多数Browser/Server结构的Web应用中,浏览器直接通过HTML或者JSP的形式与用户交互,响应用户的请求[7]。虽然很直观,但是大多数管理信息系统操作的数据量都是惊人的,随着代码的增多会使JSP页面臃肿不堪,Web服务器的负荷过重。因此,在中间层上采用基于模型视图控制器(MVC,Model-View-Controller)的设计模式。Model层用来实现业务逻辑,View层用来显示用户界面,Controller层主要负责View层和Model层之间的控制关系。具体实现时,把Servlet用作应用程序的控制器,把JSP文档作为视图,JavaBeans被用来表示模型。所有的请求都被发送给作为控制器的Servlet,它接受请求,并根据请求信息将它们分发给适当的JSP来响应。同时,Servlet还根据JSP的需求生成JavaBeans的实例并输出给JSP环境。JSP可以通过直接调用方法或使用Use Bean的自定义标签得到Java Beans中的数据。这种设计模式很好地实现了数据层与表示层的分离,使开发工作更加容易和迅速[10]。
数据库是管理信息系统的核心内容。目前,Web与数据库接口技术有很多,其中JDBC是Java程序连接和存取数据库的应用程序接口,由一组用Java语言编写的类与接口组成,是执行SQL语句的Java API。本文介绍的管理信息系统中,在数据的存取方面,采用了 JSP/Servlet+JDBC的技术,即客户端不产生数据库查询命令,客户端上的浏览器通过URL和中间层的Web服务器建立连接。Web服务器主要负责接收本地或远程浏览器的HTTP数据请求,然后中间层的Servlet收到请求后,通过执行程序中的SQL语句,利用JDBC提供的标准API对数据库进行访问和相应的操作处理。Servlet再将查询的数据传给JSP,最后生成标准的JSP页面将结果返回给提出请求的浏览器。这样,不仅将客户端与数据库服务器端分开,同时提高了数据库的访问效率[8]。

2.4开发平台的选择

在现阶段软件开发领域,用于网站设计主流软件有许多,例如JSP、ASP.NET、Dreamweaver 系列、FrontPage系列等,由于JSP流行且功能强大,可跨平台操作,我个人比较了解和熟悉,所以我选用了JSP作为开发工具。开发平台我选择MyEclipse,它可以支持各种不同的开发技术及相应的代码,并有很强的可视化操作能力,与后台数据库连接相当快捷,是目前开发B/S系统最流行的开发平台[9]。有以下优势:
1.可以对JSP代码进行颜色识别,自动完成代码。
2.内置数据库管理工具,可以直接进行数据库查询、修改工作。
3.内置群体开发协作管理功能,支持多人同时开发一个网站[11]。

2.5系统运行环境

2.5.1 硬件环境

后台数据库服务器:
因为服务器为数据库服务器,且要完成高密度的运算量,所以应采用较高档的服务器。考虑到与软件的兼容性,建议采用Intel Pentium 4多处理器系统、512MB RAM、80GB以上硬盘。
客户机:
采用Intel Pentium 4 多处理器系统、512MB RAM、80GB以上硬盘。
网络配置:10M/100M 网络带宽、100Mb/s网卡、16口交换机。

2.5.2 软件环境

操作系统的选择:
数据库服务器:因为服务器为数据库服务器,特别对稳定性有极高的要求,且支持多CPU。所以应采用Windows 2000 Server,因为它有优良的稳定性和操作性。
数据库的选择:
因大部分情况下软件都是在Windows系统下使用的,考虑MySQL的优势在于中国普遍使用的免费数据库软件并且与系统的兼容度较高,并支持集成性安全检测,且对系统的资源消耗较小。相比之下,Oracle数据库虽然性能较高,但由于其可操作性和方便性不如MySQL好,并且服务器没有使用磁盘阵列和多处理器,无法发挥Oracle数据库设计上的性能优势,并且对系统性能要求较高。至于Access之类的数据库,由于其性能较低,且并发度太低又不具安全性,故不予考虑。最终决定后台数据库用MySQL5.0。当然整个系统只能在Windows下运行。
 

第3章 系统总体设计


3.1教学管理系统需求分析

总体目标是实现教学系统的科学管理。系统管理人员可以实现对所管辖内的教师基本信息、课程的科学管理和安排、学生基本信息的统一管理。在教师管理模块中可以根据教师的基本信息进行相应的方便快捷操作。当该名教师产生人事变动或离职时,操作员根据主管领导的指示可以进行方便快捷的修改。对教师员工的职称评定情况进行录入,方便统计和查询。
在课程管理模块中,可以根据教师的任课情况和每课程一学期所要安排的课节数进行科学的学生选课功能。选课后的学生还可以通过查询所选课程进行相应的统计学分,在查询所选课程的过程中,还可以查到相应的教师信息和上课地点。在学生管理的模块中,可以插入新学生的基本信息和按类型删除学生的信息。例如,一个班级的毕业,那么通过一次次的删除学生会显得很麻烦,那么通过班级类型的选择进行学生信息的删除会提高效率,带给系统管理人员方便快捷的操作。在查询的过程中也可以同样选择不同的类型进行有条理,有规矩的查询。总体功能简洁明了,充分利用现有资源达到数据快速准确及时可靠地输出,同时节省人力和时间,不但实现数据的共享,而且能够及时准确地掌握课程选择的各种情况,以此达到综合管理的科学化。
教学管理系统流程图,如图3.1所示。


 
图3.1教学管理系统流程图

3.2教学管理系统的功能分析

3.2.1 管理员登录模块

主要功能:通过该模块检测用户身份是否合法,这是整个系统的登录页面。只有键入正确的帐号和密码才可以被系统识别并进入具体的系统管理部分;当不键入密码时,系统窗口会给出提示;当键入错误密码时,系统不会有任何的页面跳转,并由窗口弹出提示“帐号或密码错误”消息。

3.2.2 教师基本信息管理模块

主要功能:此系统模块为管理员提供了新教师的信息添加,教师的信息修改,教师的信息删除,查询教师信息等功能,通过这些功能来实现对教师基本信息的管理。
(1)教师的基本信息添加:管理员通过填写表单的形式往数据库中添加教师的基本信息。在添加的过程中,通过对提取数据与数据库的数据进行比较,如果存在该名称的教师,那么系统给予管理员已存在该信息的提示。
(2)教师的基本信息修改:管理员可以通过键入要修改教师的名字来对数据库中的信息进行修改,在修改的过成中,界面会将数据库中已存在该学生的信息读取到文本框中,根据所要修改的内容进行重新写入,通过确定修改按钮,提交给数据库,同样也是通过表单操作。
(3)教师的基本信息删除:管理员可以通过表单提交要删除教师的姓名来完成对数据库中该教师基本信息的全部删除。在删除的过程中,可以按照所提供的类型进行按类型删除。在系统提示确定删除后再提交给数据库删除信息。
(4)教师的基本信息的查询:管理员通过选择查询的方式和类型来查询全体教师信息或是有针对性的查询某个具体的教师信息。

3.2.3 学生课程管理模块

课程管理系统模块,即学生选课系统,通过此功能实现对学生选课的管理和统计。
(1)通过键入学生号和个人密码可以针对该学生进行课程的选择管理。在选课的过程中,如果再次选择了已选课程,便会有系统提示并要求重新选课。并且,限制每人每学期的选课数不得超过规定数。
(2)备选课程:罗列出数据库中存在的可供选择的课程信息,包括授课教师信息和学分等信息的统计。如果已选择了该课,那么系统就会提示给用户此课程已被选择,返回选课界面。另外,在选课的过程中,如果选择课程错误,可以在查询自己选择的课程列表中进行删除。
(3)已选课程:可查看有登录的学生学号对应的学生的选课情况以及计算出所选课程的总学分。也可以在此界面进行所选课程的相关信息查询。
(4)选课查询:可通过课程编号或是教师姓名等信息有针对性的查找课程情况及课程的上课地点等信息 。

3.2.4 学生基本信息管理模块

学生管理系统,即学生的班级管理,通过此功能实现对学生以班级为单位的管理。
(1)学生的基本信息添加:管理员通过填写表单的形式往数据库中添加学生的基本信息。在添加的过程中,通过对提取数据与数据库的数据进行比较,如果存在该名称的教师,那么系统给予管理员已存在该信息的提示。
(2)学生的基本信息修改:管理员可以通过键入要修改学生的名字来对数据库中的信息进行相关信息修改。在修改的过成中,界面会将数据库中已存在该学生的信息读取到文本框中,根据所要修改的内容进行重新写入,通过确定修改按钮,提交给数据库,同样也是通过表单操作。
(3)学生的基本信息删除:管理员可以通过表单提交要删除学生的姓名来完成对数据库中该学生基本信息的全部删除。在删除的过程中,可以按照所提供的类型进行按类型删除。在系统提示确定删除后再提交给数据库删除信息。
(4)学生的基本信息的查询:管理员通过选择查询的方式和类型来查询全体学生信息或是有针对性的查询某个具体的学生的基本信息。

3.3 系统结构图

系统整体结构图,如图3.2所示。

 
图3.2 系统整体结构图

3.4 数据库概念结构设计

在一个数据库应用系统的开发过程中,数据库的设计是整个系统的基础。良好的数据结构设计不仅可以减少数据冗余、提高查询效率,而且还可以降低应用程序的编写难度,提高工作效率。

3.5 实体E-R图

在需求分析阶段所得到的应用需求应该首先抽象为信息世界的结构,才能更好的更准确的用数据库管理系统实现这些需求。根据需求分析画出E-R图。教学管理系统的E-R图如图3.3、图3.4、图3.5、图3.6所示。

图3.3 管理员实体E-R图
   


图3.4 学生基本信息E-R图


图3.5 教师基本信息E-R图

                              图3.6 课程信息E-R图
3.6 实体联系E-R图
实体联系E-R图如图3.7所示。
          1                          n


                                                    1
        1

                          

                                       n                    n

图3.7 实体联系图

3.6.1 E-R图向关系模型的转换

关系模型的逻辑结构是一组关系模式的集合。E-R图则是由实体,实体的属性和实体间的联系三个要素组成。所以将E-R图转换为关系模型实际上就是要将实体,实体的属性和实体间的联系转换为关系模式。转换原则如下:
(1) 实体类型的转换:将每个实体类型转换成一个关系模式,实体的属性及为关系模式的属性,实体标识符及为关系模式的键。
(2) 联系类型的转换,根据不同的情况做不同的处理:
①若实体间的联系是1:1,可以在两个实体类型转换成的两个关系模式中的任意一个关系模式的属性中加入另一各关系模式的键和联系类型的属性。
② 若实体间的联系1:N,则在N端实体类型转换成的关系模式中加入1端实体类型转换成的关系模式的键和联系类型的属性。
③若实体间的联系是M:N,则将联系类型也转换成关系模式,其属性为两端实体类型的键加上关系类型的属性,而键为两端实体间的组合。

3.6.2 关系模式设计

依照该规则将教学管理系统的E-R图转换为关系模型如下:
将每一个实体转换成一个关系(关系就是给出关系名,写出属性,并标明该关系的主键)。
JB031模式:
1.gmlogin(gmid,gmpwd)
管理员信息(管理员帐号,管理员密码)
2.students(stname,stid,stage,stsex,stclass,sthome,stphone)
学生信息(学生姓名,学生号,学生年龄,学生性别,学生所在班级,学生寝室,学生电话)
3.teacher(name,age,sex,job,part,info)
教师信息(教师姓名,教师年龄,教师性别,教师职称,教师所属教研室,教师基本信息)
SC模式:
1.course(cid,cno,cname,credit,teacher,address,seats,choosed)
课程信息(课程编号,课程号,课程名称,课程学分,授课教师,上课地点,座位数,选修该课程人数)
2.sc(scid,sid,cid)
课程与学生的关联表(关联号,对应学生表的外键号,对应课程表的外键号)
3.student(sid,sname,spassword,username,ssex,majoy,email)
选课模式下学生信息(学生号,学生姓名,学生登录密码,用户名,性别,所学专业,邮箱)

3.6.3 数据表结构

1.管理员信息表,如表3-1。
表3-1 管理员信息表
中文名称       字段名         数据类型            大小
管理员帐号       gmid         VARCHAR    10
管理员密码    gmpwd         VARCHAR    20

2.学生信息表,如表3-2。
表3-2 学生信息表
中文名称    字段名    数据类型    大小
学生姓名    stname    VARCHAR    10
学生号        stid    VARCHAR    45
学生年龄    stage    VARCHAR        45
学生性别        stsex    VARCHAR    45
学生所在班级        stclass    VARCHAR    45
学生寝室    sthome    VARCHAR    45
学生电话    stphone    VARCHAR    45

3.教师信息表,如表3-3。

                             表3-3 教师信息表
中文名称    字段名    数据类型    大小
教师姓名    name    VARCHAR             10
教师年龄        age    VARCHAR             3
教师性别    sex    VARCHAR    5
教师职称        job     VARCHAR             10
教师所属教研室        part    VARCHAR    25
教师基本信息    Info    VARCHAR    100


4.课程信息表,如表3-4。

                           表3-4 课程信息表
中文名称    字段名    数据类型    大小
课程编号    cid    INTEGER       
课程号    cno    INTEGER    
课程名称        cname    VARCHAR    45
课程学分    credit    INTEGER    
授课教师        teacher    VARCHAR    45
上课地点        address    VARCHAR    45
座位数    seats    INTEGER    
选修该课程人数    choosed    INTEGER    

5.课程与学生的关联表,如表3-5。

                         表3-5 课程与学生关联表
中文名称    字段名         数据类型      大小
关联号    scid    INTEGER    
对应学生表的外键号    sid    INTEGER    
对应课程表的外键号    cid    INTEGER    

6.选课模式下学生信息表,如表3-6。

                        表3-6 选课模式下的学生信息表
中文名称    字段名    数据类型    大小
学生号    sid    INTEGER    10
学生姓名        sname    VARCHAR    45
学生登录密码    spassword    VARCHAR        45
用户名        username    VARCHAR    45
性别        ssex    VARCHAR    45
所学专业    majoy    VARCHAR    45
邮箱    email    VARCHAR    45


 

第4章 系统实现详细设计与实现

根据已有的需求信息和总体设计,来进行系统的详细设计和实现。为此,我们建立了一个Web工程,系统的设计和实现如下。

4.1 系统登陆界面的设计与实现

用户登陆模块最基本的作用是为了限制该管理系统资源的使用,只有经过身份确认的操作员才能对其教学管理系统进行相关操作。其基本过程是从客户端取得提交的用户名和密码,然后到数据库中进行核对。如果该信息在数据库中存在,那么就可以成功登录到下一界面,否则就会被该系统拒之门外。
选择连接数据库后,进入用户登陆界面。在用户登陆界面中输入用户名和密码,从数据库表中检查是否有相应的用户名和密码。如果用户名和密码错误,系统就会给出错误提示,并且不会有任何的页面跳转。如果输入的用户名和相应密码正确,则可以点击“确定”进入主控制平台。用户登陆的界面如图4.1所示。
 
图4.1管理员登录系统界面

4.2 主控制平台的设计与实现

通过用户登陆界面,进入主控制平台。在主控制界面中,包括教师基本信息管理、课程管理、学生管理、返回管理员登录页面等功能模块的连接,管理员可通过对管理模块的选择进行相应的操作。主控界面如图4.2所示。
 
图4.2 主控制界面

4.3 教师管理系统界面的设计与实现

此模块的功能是实现了对系部教师基本信息的管理。在增加教师信息的过程中通过对文本框的添写来提交给所对应的Servlet,Servlet通过request.getparam()方法来提取出来,通过调用DB类中的addteacher()方法来实现对教师各个信息的属性添加。在添加教师信息页面,文本框后显示有*的部分为必须添加的内容。此时,如果忘记填写的话就会有对话框弹出,提醒管理员添加教师信息的属性不能为空。这么做是对系统一些部分的严格要求或是备忘[12]。教师基本信息添加界面如图4.3所示。
 
图4.3 教师基本信息的添加

点击“查询”可根据需要进行查询全部教师信息和按姓名、职称或教研室进行类型区别的和有针对性的查询。
在查询的过程中申明一个数组的时候必须首先固定数组的大小,否则编译会出错,但是在很多时候,我们事先并不能确定数组的大小,这时为了保证程序能够顺利的运行我们可能不得不尽量将数组的长度定的很大,这样当数组的实际长度比较小时,就会浪费掉很多资源。为了解决在程序运行时动态改变数组大小地问题,在java中提供了这样一个类ArrayList,它能够实现与数组同样的功能,并能够动态地改变大小,就像一个能够自己伸缩的容器一样[13]。
在ArrayList有一个内部数组,专门用来存放放在ArrayList中的对象的reference。通过不断调用ArrayList的add(Object object)方法增加对象,最终那个内部数组会full,这个时候,ArrayList会自动创建一个更大的内部数组把那些references从较小的数组中拷贝过来同时把要add的那个对象也塞进去,当然这样会引起额外的开销。
在查询的过程中所采用的技术是ArrayList动态数组技术结合EL,JSTL语言来实现。一般来讲,在对每个数据的整体做全部属性的查询时,需要从数据库中提取出该数据的所有属性时,会用到循环SQL语句去显示查询的结果,并调用语句来显示在页面上。那么在本系统中采用到的循环显示查询结果时,我把每一个对象的所有信息一并全部从数据库中提取,然后封装到类中,这还不够,在本系统中还设置了ArrayList动态数组,把这些被封装后的对象都逐一的放在动态数组中,这样就可以方便对每一个对象的操作。
当被从动态数组中取出来显示在Web页面上时,系统采用的是EL与JSTL语言的结合来实现从动态数组中取一组数据,并在适当的位置显示该对象的各个属性,所写命令简单明了。
以下是数据库类中的取出所有对象和所有对象属性的方法,并把这些属性都封装到了名为r1的ArrayList类型的动态数组中。
public ArrayList showall(){
ArrayList r1=new ArrayList();
try {
st = conn.createStatement();
String sql="select * from teacher";
rs=st.executeQuery(sql);
while(rs.next())
{
Teacher m=new Teacher();
m.setName(rs.getString("name"));
m.setAge(rs.getString("age"));
m.setSex(rs.getString("sex"));
m.setJob(rs.getString("job"));
m.setPart(rs.getString("part"));
m.setInfo(rs.getString("info"));
r1.add(m);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return r1;
}
以下程序是Servlet中取得了数据库类的r1的值,并设置为request的共享范围中,命名为teacher,再调用getServletConfig的方法在下页Web中实现循环显示。
public void doPost(HttpServletRequest request,HttpServletResponse response)
                  throws ServletException,IOException {
ArrayList a=new ArrayList();
a=new DB().showall();
request.setAttribute("teacher",a);
getServletConfig().getServletContext().getRequestDispatcher("/showteacher.jsp").forward(request,response);
}
在Web中给传过来的数组起了个别名a,用${}获取值,用${a.name}的形式进行输出,具体语句为:<c:forEach items="${teacher}" var="a">[14]。
教师基本信息的查询类型选择后查询结果如图4.4所示。
 
图4.4 查询结果的显示

点击“修改”可以修改教师基本信息。此过程是通过填写所要修改的教师姓名来是实现对数据库中该名教师的基本信息的修改。所用的SQL语句是UPDATE 字段名 SET 所获的信息来实现的[16]。修改信息操作如图4.5所示。
 
图4.5 修改教师信息界面

值得注意的是:在删除的过程中,当确定所要删除的教师而还没有进行数据库相应的操作时,此时如果发生了一系列的包括硬件或是软件的异常时,就会对数据库中的信息造成一些不必要的错误或是未完成的运算,那么,解决方案是:在servlet调用DB类中的修改教师信息的方法时,在运行到SQL语句的前端,我把自动的数据库提交给设置成FALSE,而把执行整个的修改语句用一个异常来控制,在异常的末端,如果这段代码出现了问题,那么程序就会自动抛出异常,去解决问题。我在抛出异常的语句中填写的程序代码的作用是ROLLBACK回滚。然后在整个代码块的后面执行数据库信息的提交。就是说,要么就把程序的这段代码一起执行结束,然后整体提交给数据库,要么就是出现了问题或异常是把整体都回滚,表示什么也不会对数据库做,这样就实现了对数据库的正确操作。在其中的代码块称之为“事务”模式[17]。

4.4 课程管理界面的设计与实现

在主控制界面中点击“课程管理”按钮,进入课程管理界面。此模块实现了针对某一位学生对课程信息的选择及查询功能。在界面中输入该选课学生的学号的密码点击“进入”即可以通过观看备选课程中的记录进行课程的选择;在备选课程的页面可以通过点击“选课”进行选择并存入数据库中。被选课信息如图4.6所示。
 
图4.6学生备选课程界面

在选课的系统模块中,我用到了session会话,用以保证每位学生在选课的过程中不被页面的跳转所打扰。就是在选课的过程中,通过刷新页面或是页面跳转也不会导致未保存临时数据的丢失。然后在每一位学生选择所有课结束后会进行统一的写进数据库中[18]。
public void doPost(HttpServletRequest request,HttpServletResponse response)
               throws ServletException,IOException {
request.setCharacterEncoding("gb2312");
response.setCharacterEncoding("gb2312");
int cid=Integer.parseInt(request.getParameter("cid"));
HttpSession session=request.getSession();
String username=(String)session.getAttribute("username");
DB db= new DB();
int sid=db.getsid(username);
new DB().selectcourse(sid,cid);
response.sendRedirect("../manager.jsp");
}
Session结束时,调用的释放语句。
HttpSession session = request.getSession();
session.invalidate();
在以学生个人登录系统的过程中,通过点击进入课程查询的按钮对类型的区别的课程进行个人相关信息的所有查询,包括上课地点、教师姓名等信息。其实现的过程是用session会话来进行全程的跟踪。当一个学生以自己的学生号为帐号进入到系统的开始,经过servlet的转接,从而对其进行设置session的赋值,以保证接下来的功能都是为该名学生服务的。当调用结束时通过以上的释放语句去结束跟踪[19]。选课系统查询界面如图4.7所示。
 
图4.7 学生选课查询界面

4.5 学生管理界面的设计与实现

通过在主控页面中点击“进入学生管理界面”按钮进入到学生管理系统。本系统模块通过对表单的提交可以实现对数据库中学生信息的管理操作。其中的新入学校学生的添加包括学生的姓名、所在班级、学号、性别等基本信息。
在Servlet中添加学生信息的程序如下:
public void doPost(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException {
request.setCharacterEncoding("gb2312");
response.setCharacterEncoding("gb2312");
Students s=new Students();
s.setStname(request.getParameter("stname"));
s.setStid(request.getParameter("stid"));
s.setStage(request.getParameter("stage"));
s.setStsex(request.getParameter("stsex"));
s.setStclass(request.getParameter("stclass"));
s.setSthome(request.getParameter("sthome"));
s.setStphone(request.getParameter("stphone"));
new DB().addstudents(s);
response.sendRedirect("../addstudentok.jsp");
}
在数据库类中被Servlet中程序调用的增加学生信息的方法为:
public void addstudents(Students s) {
try {
conn.setAutoCommit(false);
stmt=conn.prepareStatement("insertinto students(stname,stid,stage,stsex,stclass,sthome,stphone) values(?,?,?,?,?,?,?)");
stmt.setString(1,s.getStname());
stmt.setString(2,s.getStid());
stmt.setString(3,s.getStage());
stmt.setString(4,s.getStsex());
stmt.setString(5,s.getStclass());
stmt.setString(6,s.getSthome());
stmt.setString(7,s.getStphone());
stmt.execute();
conn.commit();
} catch (SQLException e) {
try {
conn.rollback();
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();}
}
}
其中使用到prepareStatment的好处在于方便以及好维护。它在连接数据库的SQL语句中,在值域中可以用“?”来代替值,再在下面的stmt.setString()方法来用数字一一对应所要针对“?”的值。这样的做法是为了以后在维护的过程中,如果因为软件需求原因而需要增加或是减少数据库中表的值段[20]。
在异常的处理方面同样用到了事务的方法去规范对数据库的操作在查询的模块中,设计用了按类型查询和查看全部,如图4.8所示。
 
图4.8 按类型查询学生基本信息

学生的基本信息修改的过程中,管理员可以通过键入要修改学生的名字来对数据库中的信息进行相关信息修改。在修改的过成中,界面会将数据库中已存在该学生的信息读取到文本框中,根据所要修改的内容进行重新写入,通过确定修改按钮,提交给数据库,同样也是通过表单操作。
学生离校管理时的信息处理过程是:管理员可以通过表单提交要删除学生的姓名来完成对数据库中该学生基本信息的全部删除。在删除的过程中,可以按照所提供的类型进行按类型删除。在系统提示确定删除后再提交给数据库删除信息。学生离校管理如图4.9所示。
 
图4.9 学生离校管理

在需要的情况下可以有针对性的去对学生的基本信息进行查询。管理员通过选择查询的方式和类型来查询全体学生信息或是查询某个具体的学生的基本信息。查询所用到的技术是定义一个学生类students的一个实例,按管理员要求把从数据库中提取的该学生的数据一一写入这个实例中,通过封装的模式把这些信息统一带出来,送到页面中,并由EL语言结合JSTL语言把封装的学生的属性又一一对应文本框的罗列出来,显示给用户。


 

第5章 测  试


5.1 常用的测试方法

测试在整个软件开发过程中起着至关重要的作用,软件测试对于保证一个软件的可靠性是极为重要的。测试占据整个软件生命周期的75%左右,可见它的重要性。特别是在面对一个庞大而复杂的系统,软件测试就能充分的发挥它的作用,因为伴随着测试,我们会发现软件中存在的各种各样的问题。从而,尽快地解决问题。在开发一个系统的各个阶段都不可避免地会发生这样或那样的问题,所以在每一个开发的过程中的各个阶段都要对软件进行测试,软件测试的目标是尽可能地发现软件中的错误,以便对其进行修改。
测试包括单元测试和集成测试。单元测试是把一个模块作为独立的程序单元进行测试,以保证它能够正确执行规定的功能,单元测试是编码和单元测试阶段的任务。集成测试是将已经通过彻底测试的模块组装起来,以形成一个系统或软件产品,集成测试主要使用黑盒测试法对系统进行功能测试,集成测试的主要任务是检查和排除模块接口错误。全局数据结构错误。模块中某些遗漏的错误;集成测试是系统集成阶段的任务;集成测试可分为自顶向下集成测试、自底向上集成测试、自顶向下和自底向上综合的集成测试、回归测试、测试工作能否成功,主要取决于测试案例设计是否科学合理。测试案例系指测试输入数据及其对应的输出,其设计依赖于所采用的测试方法:白盒测试与黑盒测试。
1.白盒测试:使用白盒方法导出测试案例是依据模块的编码,即模块的内部逻辑对测试者是可见的,故称为白盒测试,有时也称为玻璃盒测试。测试的目的在于用最少的测试案例,检测出最多的错误。使用白盒测试方法所导出的测试案例能保证模块中所有独立途径至少要测试一次。测试所有逻辑决策真和假两个方面。在所有循环的边界内部和边界上执行循环体。检查内部数据结构以保证其有效性。白盒测试又包含基本路径测试、条件测试、数据流测试和循环测试。
2.黑盒测试:黑盒测试集中在软件的功能需求上,黑盒测试是在程序或模块的接口级进行,而不考虑该程序的内部逻辑。黑盒测试能够用于检测程序中下列类型的错误:
(1)不正确或漏掉的功能,这往往是由于程序算法中的问题所造成;
(2)接口错误;
(3)数据结构或外部数据库存取中的错误;
(4)性能方面的问题,这类问题通常也与算法有关;
(5)初始化或结束错误。

5.2 系统测试

教学管理系统采用的是黑盒测试,以用户的身份对该系统进行测试,进一步检查系统的不足之处。
测试1:帐号或密码错误的情况,如图5.1所示。
 
图5.1 帐号或密码错误的提示信息

测试2:关于过滤器的测试。在测试添加数据的过程中,在名字的栏里我特别的加入了“回车”键,在以往的插入操作中,通过Web写进的“回车”会变为<br>,我在加入了过滤器后,诸如此类的非法符号就被过滤掉,剩下的就是安全,符合标准的信息了。
测试3:在访问系统时,人为或者系统配置不对而引起的操作失误时会自动跳到系统错误界面,提示操作有错误,要求用户规范操作。系统错误界面如图5.2所示。
 
图5.2 系统出错误时跳转到的错误界面

测试4:在学生选课的过程中,如果所选的课程超过已规定的课程时就会弹出系统提示,提示已不能多选课程。系统提示如图5.3所示。
 
图5.3 选课超过规定数的系统提示

测试5:在学生选课的过程中,如果所选课程重复,就会弹出系统提示,提示不能重复选择课程,重新选择。系统提示如图5.4。
 
图5.4 选课重复的系统提示

5.3 系统的安全性分析

系统对于错误操作和非法用户的恶意破坏的安全保证的可靠程度。在本系统中,测试了所有可能涉及的错误操作,每个可能涉及到的错误操作都有相应的错误处理机制,在系统实现过程中,定义了本系统可能出现的错误的处理信息以及相应的解决办法。对于用户,通过权限设置使其完成相应的操作,并且系统管理员可以修改普通用户的权限,非法用户是不可能登录到系统中的。

5.4 系统的实用性分析

对于系统全部模块进行测试,基本达到了任务书的要求,也达到了系统起初的设计需求,当然也会有考虑不详尽的方面,详细说明如下:全部功能要求已尽量达到了满足,全部性能达到要求,数据库操作正常。因为整个系统是基于教学管理系统,但是由于部分功能实现的并不是非常理想,而且也没有将系统在实际中测试,所以并不敢确保系统在实际中会有良好的应用效果。不过总体上说来,系统还是具有一定的实用性,这是我的第一个完整的软件系统,因为本身能力的限制,以及经验的不足,这个系统很难算作是产品,但是我认为,通过这样一个毕业设计,以及我现在所学习到的东西,下一个系统,一定是一个可以应用的、具有实用性的产品。
 

结    论

经过不懈努力,教学管理系统终于开发完成了。系统的开发采用了JSP开发工具和MySQL数据库,按照可行性分析、需求分析、总体设计、详细设计、系统测试的步骤进行开发。在需求分析阶段对整个系统共能进行了严格仔细的分析;在总体设计阶段设计了系统的框架结构并根据需求进行数据库设计;在详细设计阶段按照从后台到前台界面的顺序进行开发。
为了设计出教学管理系统,参阅了大量的资料,在测试和调试阶段走了不少的弯路,但经过认真的学习和思考,最终完成了作品。在整个系统中把系统分析放在为重要的位置,如果在开发前对整个开发工作做出全方位的规模化系统分析,开发过程就是事半功倍,否则就会遇到许多意想不到的问题,延缓开发进度。总体上来说,这次的设计对是非常难得的一次锻炼的机会,使得对大学四年所学的专业课有了更深刻的认识,使知识得到了融会贯通。与以往分组做的毕业设计不同,在这次设计中,独立完成所有的分析与设计过程,真的有了更大的收获。在系统设计中,也遇到了很多问题,但是通过努力都一一解决了,在解决这些困难的过程中提高了自身的学习能力。解决问题的能力和实际工作的能力,学到了许多书本以外的知识。 
由于时间和个人能力有限,所以该系统可能还有许多不尽人意的地方,有一些功能点还没有实现,想法和设计也还不够全面,因此在本文之中难免有失误之处,还请各位老师多多指正本系统可能存在错误与不足,望老师给予指导与批评。虽然有不足但这是用自己所学的知识与全身心的投入做出来的成果,以后会总结本次经验,在日后的工作中做出更完善更完美的系统。
 

致    谢

在我完成这篇毕业论文期间,得到了纪老师的热情帮助和徐老师的悉心指导,从他们的身上,我不仅仅学到了计算机领域先进的理论知识,弥补了自己理论知识的不足,更重要的是学到了严谨治学的态度和忘我的工作精神,还有就是如何做人,如何处世,这些东西都是在其他的地方所无法学到的,将令我受益终生。
我衷心的感谢关心和指导我的老师,感谢他对我的培养和教育,同时也非常感谢曾经教授过我专业课程的老师,没有他们的精心培育也不会有这篇论文的诞生,还有给我带来活力的实验室里共同奋斗过的其他老师和同学,再此一致表示衷心的感谢,这将是我有生以来最难忘的校园生活。
四年的大学生生活就要结束了。就要离开这个朝夕相处、蓬勃发展的集体了。回首往事, 心头升起无比的眷恋。在今后的人生路上,我会不断的进取,为自己的生活增添新的色彩,实现自己的人生价值,为祖国的繁荣富强贡献一份力量。
 

参考文献

[1] 叶核亚, 陈立. Java2程序设计实用教程.  电子工业出版社, 2003 
[2] 资讯教育小组. HTML标准教程. 中国青年出版社, 2000 
[3] 张跃平. JSP实用教程. 清华大学出版社, 2001 
[4] 姬成强. Dreamweaver就这么简单. 机械工业出版社, 2002
[5] 苏治中. DreamweaverMX2004实用教程. 中国铁道出版社, 2004 
[6] 魏海平. 标准Java2类库使用手册. 电子工业出版社, 2005 
[7] Bruce Eckel.  JAVA编程思想.  机械工业出版社, 2002
[8] Cisco System公司. JAVA编程基础. 人民邮电出版社, 2004 
[9] 孙晓龙、赵莉. JSP动态网站技术入门与提高. 人民邮电出版社, 2004 
[10] 张亦华. JSP程序设计精彩实例. 清华大学出版社, 2004 
[11] 沈洁. 实用软件工程. 机械工业出版社, 2005
[12] 李大友、陈明. 实用软件工程基础. 清华大学出版社, 2005
[13] 吴建编. JSP网络开发入门与实践. 人民邮电出版社, 2006
[14] 黄明、梁旭.  JSP信息系统设计与开发实例. 机械工业出版社, 2004
[15] [美]Nathaniel T.Schutta. Ajax与JAVA高级程序设计. 人民邮电出版社,2005
[16] [美]Cay Horstmann. BiG JAVA编程实例. 电子工业出版社, 2005
[17] [美] Kim B.Bruce /Thomas P.Murtagh. JAVA编程. 清华大学出版社, 2005
[18] [美]Michael Moncur . JAVAScript经典. 人民邮电出版社, 2004
[19] [美]Rogers Cadenhead . JAVA编程经典. 中国青年出版社, 2005
[20] [美]James Gosling . Java程序设计语言(第二版). 人民邮电出版社, 2006


 

猜你喜欢

转载自blog.csdn.net/weixin_55459367/article/details/114183170