学生考试系统开发

wukui_wk 贡献于2015-01-16

作者 jwc  创建于2010-10-20 02:01:00   修改者wk  修改于2014-01-17 08:25:00字数31012

文档摘要: 计算机与网络技术的飞速发展,从根本上改变了人类信息管理与交流的方式。基于web平台的学生考试和成绩管理系统,就是因势而生的新生代产品。这种新时代的网络化趋势正是进行此次毕业设计的主要原因。系统基于B/S架构,采用JSP+Servlet+JavaBean技术,用MyEclipse为开发工具,结合Mysql数据库开发完成。通过本系统,管理员、教师、学生可以不受时间、地域的限制在网上完成各自的工作,满足自己的需求。本系统界面简单直观,易于操作和使用,是教务管理的好帮手。本论文就毕业设计的内容,系统地阐述了整个学生考试和成绩管理系统的功能及实现。论文研究结果使得学生在线考试和成绩管理通过本系统得以实现。
关键词:

 南京邮电大学 毕 业 设 计(论 文) 题 目 学生考试与成绩管理系统开发 专 业 光信息科学与技术 学生姓名 班级学号 指导教师 指导单位 日期: 2012 年 3 月 12日 至 2012 年 6 月 15 日 毕业设计(论文)原创性声明 本人郑重声明:所提交的毕业设计(论文),是本人在导师指导下,独立进行研究工作所取得的成果。除文中已注明引用的内容外,本毕业设计(论文)不包含任何其他个人或集体已经发表或撰写过的作品成果。对本研究做出过重要贡献的个人和集体,均已在文中以明确方式标明并表示了谢意。 论文作者签名: 日期: 年 月 日 摘 要 二十一世纪是一个集数字化、网络化、信息化,以网络为核心的社会。计算机与网络技术的飞速发展,从根本上改变了人类信息管理与交流的方式。基于web平台的学生考试和成绩管理系统,就是因势而生的新生代产品。这种新时代的网络化趋势正是进行此次毕业设计的主要原因。 系统基于B/S架构,采用JSP+Servlet+JavaBean技术,用MyEclipse为开发工具,结合Mysql数据库开发完成。通过本系统,管理员、教师、学生可以不受时间、地域的限制在网上完成各自的工作,满足自己的需求。本系统界面简单直观,易于操作和使用,是教务管理的好帮手。 本论文就毕业设计的内容,系统地阐述了整个学生考试和成绩管理系统的功能及实现。论文研究结果使得学生在线考试和成绩管理通过本系统得以实现。 关键词:JSP;web平台;B/S架构;在线考试;成绩管理 ABSTRACT The 21st century is a set of digital, networked, information technology, to network-centric society. The rapid development of computer and network technology to fundamentally change the way the human information management and exchange. Web platform for students' exams and performance management systems, new generation is born because of potential products. This new era of network trend is the main reason of the graduation project. The system based on B/S structure, using JSP + Servlet + JavaBean technology MyEclipse development tools, combined with the Mysql database developed. Through this system, administrators, teachers, students can be exempted from time and geographical restrictions on the Internet to complete their work, meet their needs. The system is simple and intuitive interface, easy operation and use of educational administration is a good helper. In this thesis, the content of the graduation project, a systematic exposition of the function and implementation of student test results management system. Thesis the results of students' online test and performance management can be achieved through this system. Keywords: JSP; web-platform; B/S architecture; online exam; performance management 目 录 第一章 绪论 1 1.1课题背景及意义 1 1.2 课题的主要工作 1 1.3论文组织 1 第二章 系统分析 3 2.1需求分析 3 2.1.1 用户需求分析 3 2.1.2 系统性能需求分析 4 2.2 可行性分析 5 2.2.1 经济可行性分析 5 2.2.2 运行可行性分析 5 2.2.3 技术可行性分析 5 2.3 开发语言与工具介绍 6 2.3.1 Java 语言简介 6 2.3.2 JSP简介 6 2.3.3 JavaBean 简介 6 2.3.4 SQL查询语言概述 7 2.3.5 Struts(MVC 的一种开放源码实现)简介 7 2.3.6 J2EE背景知识介绍 8 2.3.7 Mysql 数据库简介 9 2.3.8 JDBC 驱动程序简介 10 2.3.9 TOMCAT 6.0 11 2.3.10 Dreamweaver 11 2.4本章小结 11 第三章 系统设计 12 3.1系统概要设计 12 3.2功能模块设计 12 3.2.1管理员模块设计 12 3.2.2 教师模块设计 13 3.2.3 学生模块设计 14 3.3 数据库设计 14 3.3.1 E—R图设计 15 3.3.2数据库表设计 17 3.4 本章小结 19 第四章 系统实现 20 4.1 管理员模块实现 20 4.2教师模块实现 31 4.3学生模块实现 33 4.4异常处理模块实现 39 4.5本章小结 39 第五章 系统测试 40 5.1开发环境 40 5.2 运行环境 40 5.3单元测试 40 5.4集成测试 40 5.5 本章小结 41 结束语 42 致 谢 43 参考文献 44 附录 45 南京邮电大学2012届本科生毕业设计(论文) 第一章 绪论 在这一章里解决的问题是论文课题提出的具体背景,同时将具体分析设计的现实意义。最后一节里,将计划好整个论文的组织结构。并将之作为系统开发的指南针。 1.1课题背景及意义 学生考试与成绩管理一直都是学校工作中的一项重要的内容,但传统的管理模式有很大的不方便性,例如:考试时间、地点固定,成绩录入繁琐,成绩查询单一且不便等。为此想到推出基于Web平台的学生在线考试与成绩管理系统,目前已有的与此系统类似的系统只能完成简单地成绩管理,不具备在线考试和成绩查询分析功能。这样就突显了此系统的重要现实意义。 计算机与网络技术的飞速发展,从根本上改变了人类信息管理与交流的方式。基于web平台的学生考试和成绩管理系统,就是因势而生的新生代产品。这种新时代的网络化趋势正是进行此次毕业设计的主要原因。 1.2 课题的主要工作 这个学生考试与成绩管理系统主要研究对象是学生、教师、管理员三个用户,这就形成了三个模块,通过这三个模块使整个系统运行起来,从而实现学生的在线考试和成绩管理。 课题的目的是做出一个分不同角色的系统,通过不同的角色完成不同的功能。通过管理员和教师完成后台课程套题和考试题目以及学生成绩的维护功能,从而实现前台的在线考试和成绩查询分析功能。 课题研究过程中初步事项是进行可行性分析、需求分析,这样主要的工作是对现今的学生考试和成绩管理进行调查,这些工作包括对传统的考试和现在存在的教务管理软件的调查分析,并和老师、学生、教务管理人员进行面对面的问答式调查,直接研究相关的教务管理系统。 课题研究中期工作,主要是系统功能的设计与实现,具体包括管理员、教师、学生各个模块,逐步完成系统功能的前台页面设计。然后结合Mysql数据库建立对应的表格完成系统的设计和实现。 课题研究后期工作,先是反复对系统的各个模块进行多次测试,查看各个模块是否能够正常运行;然后把各个模块整合起来,对系统进行整体调试,查看系统的整体运行情况,,并优化操作;最后总结我分析课题的相关问题并写入文档中。 1.3论文组织 通过对系统进行初步研究后,论文决定采用下面的基本框架组织全文: (1)绪论,主要是分析课题研究的背景和具体实施的意义,课题的主要工作,以及论文的组织形式。 (2)系统分析,从各个方面上分析系统的需求,论证课题是否可行,确立在课题研究中将要进行的主要工作。当然也牵涉到了开发工具选取的问题,根据工具使用的难易程度结合自己的技能水平,选择合适的工具。 - - 南京邮电大学2012届本科生毕业设计(论文) (3)系统设计,通过建立好系统设计的主要思路,完成系统要求的功能设计,做好功能模块图。对数据库的具体内容进行构思,实现数据库表格和表格数据的合理安排。 (4)系统实现,选举比较重要的模块进行详细的实现解说。说明管理员、教师、学生模块的实现方法,以及数据库的实现。 (5)系统测试,主要是做好系统的测试。 (6)结束语,主要是对整个课题的一个整体总结与展望。 - - 南京邮电大学2012届本科生毕业设计(论文) 第二章 系统分析 2.1需求分析 本系统属于教务管理系统的一个子系统。 教务管理系统平台充分利用互联网络B/S管理系统模式,以网络为平台,为各个学校教务系统的管理提供一个平台,帮助学校管理教务系统,用一个账号解决学校教务教学管理,并且学校可以自由选择学校需要的教务管理系统,灵活地定制符合学校自己实际情况的教务系统[1]。教务工作人员通过学生考试和成绩管理这个子系统来进行学生的考试和成绩管理。 本系统是针对学生考试与成绩管理现状而设计的。目前很多学校仍采用传统的学生考试与成绩管理模式,这种模式有很大的不方便性,例如:考试时间、地点固定,教务管理人员信息、学生成绩维护繁琐不便,成绩查询单一且不便等。计算机与网络技术的飞速发展,从根本上改变了人类信息管理与交流的方式。因此,开发一款网络版的考试与成绩管理系统就变得十分必要了。 为此想到推出基于Web平台的学生在线考试与成绩管理系统,通过该系统可以实现教务人员在线维护各种信息,教师可以查询分析学生的成绩,学生可以在线考试、查询分析个人成绩。由于系统主要是为了更加方便和准确的管理信息数据,所以人机交互界面的功能要非常完善,能够更好的体现方便,快捷的特点,有效的减少教务管理员的管理工作,更准确、快捷的管理数据。工作人员只需要掌握一些基本的电脑使用方面知识便可以顺利的使用该系统。系统一经投入运行,便能显示其独特性。 需求分析的任务是通过详细调查现实世界要处理的对象,充分了解系统的工作概况,明确用户的各种需求,然后在此基础上确定系统的功能。系统必须充分考虑今后可能的扩充和改变。 在这里我们主要分析了用户有什么样的具体要求和系统性能的要求。 2.1.1 用户需求分析 用户的需求分析包括三大模块:管理员需求,教师需求和学生需求。 1.管理员需求: (a)管理员信息维护 主要是对管理员信息的增、删、改、查。 (b)教师信息维护 主要是对教师信息的增、删、改、查。 (c)学生信息维护 主要是对学生信息的增、删、改、查。 (d)考生信息维护 主要是对考生信息的增、删、改、查。 - - 南京邮电大学2012届本科生毕业设计(论文) (e)课程信息维护 主要是对课程信息的增、删、改、查。 (f)题目信息维护 主要是对题目信息的增、删、改、查。 (g)学生成绩维护 主要是对学生成绩增、删、改、查。 2.教师需求: (a)修改个人资料 主要是修改教师自己的个人信息。 (b)题目信息维护 主要是对自己任教科目的题目的增、删、改、查。 (c)学生成绩维护 主要是对自己学生成绩的增、删、改、查。 (d)成绩查询分析 主要是对自己学生成绩的查询分析,例如:及格率、优秀率、平均分等。 3.学生需求 (a)修改个人资料 主要是修改学生自己的个人信息。 (b)个人成绩查询分析 主要是对自己成绩的查询分析,例如:各科成绩,某科具体成绩名次等。 (c)在线考试 主要能在线考试,系统自动生成考题,自动交卷(如果时间到时还未交卷),自动阅卷,自动保存成绩。 2.1.2 系统性能需求分析 对系统数据的安全性、完整性要求:用户信息保密,只有对应工作人员可见(可查),可改。以下是对系统性能需求分析: (a)准确性和可靠性高 (b)页面友好,功能齐全,且可以使用 (c)系统便于维护和升级。 (d)数据库访问效率高 2.2 可行性分析 可行性研究的主要任务是在系统初步调查的基础上,对系统是否能够实现和值得实现等问题做出判断,避免在花费了大量的人力和物力之后才发现系统不能实现或新系统投入使用后没有任何实际意义而引起的浪费,对系统可行性的分析,要求用最小的代价在尽量短的时间内确定系统是否可行。 - - 南京邮电大学2012届本科生毕业设计(论文) 2.2.1 经济可行性分析 目前很多学校仍采用传统的学生考试与成绩管理模式,这种模式有很大的不方便性,例如:考试时间、地点固定,教务管理人员信息、学生成绩维护繁琐不便,成绩查询单一且不便等。计算机与网络技术的飞速发展,从根本上改变了人类信息管理与交流的方式。因此,开发一款网络版的考试与成绩管理系统就变得十分必要了。 为此想到推出基于Web平台的学生在线考试与成绩管理系统,通过该系统可以实现教务人员在线维护各种信息,教师可以查询分析学生的成绩,学生可以在线考试、查询分析个人成绩。由于系统主要是为了更加方便和准确的管理信息数据,所以人机交互界面的功能要非常完善,能够更好的体现方便,快捷的特点,有效的减少教务管理员的管理工作,更准确、快捷的管理数据。工作人员只需要掌握一些基本的电脑使用方面知识便可以顺利使用该系统。系统一经投入运行,便能显示其独特性。因此,开发一款网络版的考试与成绩管理系统在经济上是完全可行的。 2.2.2 运行可行性分析 随着计算机知识的普及和推广,越来越多的人掌握了计算机的基本使用方法和技能。随着Internet的发展,用户对于网络、WINDOWS等环境下的软件使用比较熟悉,对于新鲜事物,用户表现出极大的兴趣和热情。本系统为一个小型的学生管理系统,所耗费的资源非常小,学校的电脑无论是硬件还是软件都能满足条件,因此,本系统在运行上是可行的。 2.2.3 技术可行性分析 为了保证系统开发成功,必须采用工程化的系统开发方法,并研究出一些符合工程化标准的开发方法。这些方法旨在指导开发者进行工程化的系统开发,从而加快系统开发的速度,保证质量以及降低开发成本。工程化的系统开发方法确实在开发实践中取得了一定的效果。此次开发使用Java作为开发语言,采用JSP+Servlet+JavaBean技术,Tomcat6.0作为Web服务器。 本系统的开发利用MySQL作为本系统的数据库,他是一个支持多用户的新型数据库,适用于中小规模的数据量需求。校园网的建设也为新系统服务器/客户端的结构提供了硬件的支持。使用MyEclipse 作为系统开发的开发环境,它提供完善的指令语句、类与对象的支持及丰富的数据类型,给开发高性能系统提供的保障为开发满足客户要求的系统,保证了代码的模块化要求,而代码模块化提高,非常有利于以后对新系统的扩展与修改。 综上所述,本系统的设计与开发在技术上和硬件设备上的条件都满足,因此,在技术上是可行的。 2.3 开发语言与工具介绍 2.3.1 Java 语言简介 Java是一种真正的面向对象的语言,即使是开发简单的程序,必须设计对象。Java的源代码在传递到客户端执行之前,必须经过编译,因而客户端上必须具有相应平台上的仿真器或解释器,它可以通过编译器或解释器实现独立于某个特定的平台编译代码的束缚。Java采用强类型变量检查,即所有变量在编译之前必须声明。Java是一种与HTML无关的格式,必须通过像HTML中引用外媒体那么进行装载,其代码以字节代码的形式保存在独立的文档中。Java采用静态联,即Java的对象引用必须在编译时的进行,以使编译器能够实现强类型检查 - - 南京邮电大学2012届本科生毕业设计(论文) [2]。 Java语言是一种与平台无关的编程语言,它具有“一次编写,随处运行”的特点,所以,非常适合于分布式的网络编程。随着 Internet网络在我国的迅速普及,参与和从事网络编程的人员也在不断地增加,同时,也将有更多的网络开发者选用Java语言作为编程工具,而一些C和C++程序员也在逐步转向应用Java语言编写程序[3]。 2.3.2 JSP简介 JSP(Java Server Pages)是开发Web动态网站的有效工具,它可以无缝地运行在Unix, Linux和Windows操作平台上。[4] Java Server Page简称为JSP是由Sun公司在Java语言上开发出来的一种动态网页制作技术,它提供了一种建立动态网页的简单方法,并为开发人员提供了一个Server端框架,基于这个框架,开发人员可以综合使用 HTML,XML,JAVA语言以及其他脚本语言,灵活,快速地创建和维护动态网页,特别是目前的商业系统。作为JavaTM 技术的一部分,JSP能够快速的开发出基于所有Web服务器和应用服务器环境,独立于平台的应用程序,而且具有非常强的可伸缩性。同时,JSP把用户界面从系统内容中分离开来,使得设计人员能够在不改变底层动态内容的前提下改变祖国网页布局[5]。 JSP跨平台的特性己包含了目前大部份网站服务器配置环境,再加上它的语法写作方式可媲美ASP般的易学易懂,而且在网络安全技术方面甚至已超越ASP技术。所以,相信很快的时间内极有可能取代现有网页编译技术,而成为商业网站的新标准。 2.3.3 JavaBean 简介 JavaBean是一个可以重复使用的软件组件。实际上JavaBean是一种Java类,通过封装属性和方法成为具有某种功能或者处理某个业务的对象,简称bean。JavaBean是基于Java语言的,具有以下特点: (1)可以实现代码的重复利用。 (2)易编写,易维护,易使用。 (3)可以在任何安装了Java运行环境的平台上的使用,而不需要重新编译。 2.3.4 SQL查询语言概述 SQL最早的版本是由IBM开发的。该语言最初叫做Sequel,是20世纪70年代早期作为System R项目的一部分实现的。发展到现在,其名称已更改为SQL(结构化查询语言)。现在许多产品支持SQL语言,SQL已经清楚地确立了自己作为关系数据库的标准语言。 - - 南京邮电大学2012届本科生毕业设计(论文) 1986,美国国家标准化组织(ANSI)和国际标准化组织(ISO)发布了SQL标准,称为SQL—86。1989年,ANSI发布了SQL的扩充标准:SQL—89。该标准的下一个版本是SQL —92标准,其次是SQL:1999标准,SQL:2003标准,SQL:2006标准,和最近的:SQL:2008标准。 SQL语言有以下几个部分: •数据定义语言(DDL):SQL DDL提供定义关系模式,删除关系以及修改关系模式的命令。 •数据操纵语言(DML):SQL DML包括基于关系代数和元组关系演算的查询语言,还包括在数据库中的插入、删除、修改元组的命令。 •完整性:SQL DDL包括定义保存在数据库中的数据必须满足的完整性的约束条件的命令。破坏完整性约束条件的更新将被禁止。 •视图定义:SQL DDL包括定义视图的命令。 •事务控制:SQL 提供定义事物的开始和结束的命令。 • 嵌入式SQL 和动态SQL:嵌入式SQL和动态SQL定义SQL语句如何嵌入到通用编程语言,如C、C++、Java。 •授权:SQL DDL中包括说明对关系和视图的访问权限的命令[6]。 2.3.5 Struts(MVC 的一种开放源码实现)简介 Struts是使用 Servlet 和 JavaServer Pages 技术的一种 Model-View-Controller 实现。Struts 可帮助您控制 Web 项目中的变化并提高专业化水平。尽管您可能永远不会用 Struts 实现一个系统,但您可以将其中的一些思想用于您以后的 Servlet 和 JSP 网页的实现中[7]。 小学生也可以在因特网上发布 HTML 网页。但是,小学生的网页和专业开发的网站有质的区别。网页设计人员(或者 HTML 开发人员)必须理解颜色、用户、生产流程、网页布局、浏览器兼容性、图像创建和 JavaScript 等等。设计漂亮的网站需要做大量的工作,大多数 Java 开发人员更注重创建优美的对象接口,而不是用户界面。JavaServer Pages (JSP) 技术为网页设计人员和 Java 开发人员提供了一种联系钮带。 “模型-视图-控制器”(MVC) 就是用来帮助您控制变化的一种设计模式。MVC 减弱了业务逻辑接口和数据接口之间的耦合。Struts 是一种 MVC 实现,它将 Servlet 2.2 和 JSP 1.1 标记(属于 J2EE 规范)用作实现的一部分。尽管您可能永远不会用 Struts 实现一个系统,但了解一下 Struts 或许使您能将其中的一些思想用于您以后的 Servlet 的 JSP 实现中[8]。 模型-视图-控制器 (MVC) JSP 标记只解决了部分问题。我们还得处理验证、流程控制和更新应用程序的状态等问题。这正是 MVC 发挥作用的地方。MVC 通过将问题分为三个类别来帮助解决单一模块方法所遇到的某些问题: - - 南京邮电大学2012届本科生毕业设计(论文) Model(模型): 模型包含应用程序的核心功能。模型封装了应用程序的状态。有时它包含的唯一功能就是状态。它对视图或控制器一无所知。 View(视图): 视图提供模型的表示。它是应用程序的 外观。视图可以访问模型的读方法,但不能访问写方法。此外,它对控制器一无所知。当更改模型时,视图应得到通知。 Controller(控制器): 控制器对用户的输入做出反应。它创建并设置模型。 MVC Model 2 : Web 向软件开发人员提出了一些特有的挑战,最明显的就是客户机和服务器的无状态连接。这种无状态行为使得模型很难将更改通知视图。在 Web 上,为了发现对应用程序状态的修改,浏览器必须重新查询服务器。另一个重大变化是实现视图所用的技术与实现模型或控制器的技术不同[3]。 2.3.6 J2EE背景知识介绍 组件框架:组件框架是一种中间件系统,它支持遵守一定标准的有不同组件构成的应用程序。应用组件被塞入这种确立它们运行环境和规定它们交互的框架中。这通常是通过容器,组件持有者来实现的。这种容器也提供通常需要的功能以实现命名,安全性,事务,和持久性!组件框架为组件的执行提供了一个集成的环境,因此显著的减少了在设计,实现,部署和维护应用程序时工作。现在工业上的组件框架标准以对象管理组的CORBA组件模型, SUN 公司的JAVA 2 Platform J企业版[J2EE]和微软公司的.NET标准,其中在企业里应用最为广泛的组件框架是2EEE。J2EE. J2EE是开发多层企业应用JAVA程序的综合性的标准。J2EE规范定义如下: (1) 组件编程模型。 (2) 组件和主服务器的链接。 (3) 服务器提供给组件的服务。 (4) 各种各样的人物角色。 (5) 兼容性检验装置和编译测试程序。 在众多的服务列表中,消息通信,事务处理,命名机制和其它应用组件用到的服务是应用服务器必须提供的。用J2EE进行应用开发必须遵守经典的3层结构—表现层,业务层和企业信息系统层。属于各层的J2EE组件在开发时遵守具体的J2EE标准。 1.表现层或者网络层 这一层实际上又被分为客户端和服务器端。客户端包括浏览器,applets,Java应用程序等和负责和服务器端的表现层或者业务层进行交互。服务器端包括Servlet、jsp和静态网页内容。这些组件负责把业务数据传递给终端用户。数据本身通常从业务层获得有时也从企业信息系统层直接获得。表现层的服务器端通常通过Http协议来进行访问。 2.业务层或者EJB层 这一层包含EJB,即企业应用的事务逻辑模型。这些组件提供了持久化机制和事务支持。EJB中的组件通过RMI被调用。在Java虚拟机调用或者异步的消息传递,取决与EJB组件的类型。EJB规范定义了很多种组件。它们在调用风格(同步和异步,本地和远程)与状态(完全状态,不可持久状态,可持久)方面不同。同步调用的EJB组件通过特定的工厂代理对象来表现自己。这种工厂代理对象通常被EJB部署者绑定在JNDI中。EJB对象允许或者本地EJB对象是特定EJB实例的代理。 - - 南京邮电大学2012届本科生毕业设计(论文) 3.企业信息系统或者数据层 这一层指的就是企业信息系统,比如关系数据库,ERP系统,消息系统等。业务层和持久层在资源适配器的帮助下与该层进行通信。资源适配器在Java连结结构中被定义。J2EE编程模型一直被认为是分布式的编程模型,在该模型中应用组件在J2EE服务器上运行并且彼此可以相互交互。经过初始化说明和第一个服务实现后,该技术,更显著的说EJB技术,已经明显地从纯粹的分布式计算模型转向了本地交互。转变的背后有合理的性能有关的原因,然而分布式的特征现在还存在。J2EE规范已经经过了好几次修订,现在最稳定的版本是1.3,1.4版本正处于重审阶段。我们应该把注意力放在1.3版本上,而实际上是在学习后者。适用与商业的J2EE实现可以大量的从BEA系统,IBM,Oracle等赞助商得到。包括JBoss和Jonas在内的开源实现据称兼容性也不错。最近名单上有多出了新的Apache project Geronimo。 2.3.7 Mysql 数据库简介 Mysql是一个基于关系型数据库模型建立的数据库管理系统软件(DBMS)。它帮助用户方使地得到所需信息,并提供强大的数据处理工具。它可以帮助用户组织和共享数据库信息,以便于根据数据库信息做出有效的决策。另外,仅有这样—个数据库管理系统软件(DBMS),则只能进行一些信息系统所需要的简单数据处理,且对操作者有较高的操作技能要求。因此,信息系统的开发者都是在某种数据库管理系统软件〔DBMS〕环境下编写相应的应川程序,以形成一个能够满足应用需求且操作尽可能简单的应用型信息系统,这被称之为二次开发。 Mysql 还具有以下特点: 1.使信息更易于查找和使用 Mysql继续为简便地查找信息提供易于使用的工具。 2.支持 Web 功能的信息共享 Mysql 可以通过企业内部网络Internet 很简便地实现信息共享,而且它可以很容易地将数据库定位到浏览器中,它将桌面数据库的功能和网站的功能结合在一起。 3.用于信息管理的强大解决方案 高级用户和开发人员可以创建那些将Mysql界面(客户端)的易用性和SQL服务器的可扩展性和可靠性结合在一起的解决方案。 4.改变了数据库窗口 可在Mysql容纳并显示新的对象,增强了Mysql 数据库的易用性。 5.提供名称自动更正功能 自动解决当用户重新命名数据库对象时出现的常见负面效应。例如,当用户重命名表中的字段时,将自动在诸如查询的相关对象中进行相应的更改。 - - 南京邮电大学2012届本科生毕业设计(论文) 6.具有子数据表功能 子数据表在同一窗口中,提供了嵌套式的视图,这样就可以在同一窗口中专注于相关的数据并对其进行编辑。 7. 用户只需简单地将Mysql对象(表、查询等)从数据库放到ODBC数据源中,即可从 Mysql中将数据导出到其他数据库中。 8.数据访问页功能 该功能可使用户快捷方便地创建数掂 HTML页,并通过数据 HTML页,将数据库应用扩展到企业内部网络 Internet上。这将帮助用户比以往更快捷、高效的方式共享信息。 9.共享组件的集成 Mysql利用新的 Web组件和位于浏览器中的 COM 控件,为用户提供了多种查看和分析数据的方式。 10.交互性 Mysql支持OLE DB,使用户可以将Mysql 界面的易用性与诸如SQL Server2000的后端企业数据库的可升级性相结合[9]。 2.3.8 JDBC 驱动程序简介 从编程的角度出发,有两个主要的类负责建立与数据库的连接。第一个类DriverManager是在 JDBC API 中提供的为数不多的实际类。 DriverManager负责管理已注册驱动程序的集合,实质上就是提取使用驱动程序的细节,这样程序员就不必直接处理它们。第二个类是实际的 JDBC Driver类。JDBC驱动程序有四种类型。 第一种驱动程序:它们都使用 JDBC-ODBC 桥,这是作为 JDK 的一个标准部分包括的。第一种驱动程序通过附加在JDBC-ODBC 桥的“开放式数据库连接性”(Open DataBase Connectivity(ODBC))驱动程序来区分。要连接到一个不同的数据源,您只需要使用 ODBC 管理员注册(或有效地绑定)一个不同的 ODBC 数据源到合适的数据源名称即可。 第二种驱动程序也称为部分 Java 驱动程序,因为它们直接将 JDBC API 翻译成具体数据库的API。对于分布式应用程序,这种需求会产生额外的许可证问题,还可能带来可怕的潜在代码分布问题。 第三种驱动程序是纯 Java 驱动程序,它将 JDBC API 转换成独立于数据库的协议。JDBC 驱动程序并没有直接和数据库进行通讯;它和一个中间件服务器通讯,然后这个中间件服务器和数据库进行通讯。这种额外的中间层次提供了灵活性:可以用相同的代码访问不同的数据库,因为中间件服务器隐藏了 Java 应用程序的细节。要转到不同的数据库,您只需在中间件服务器上改变参数。 - - 南京邮电大学2012届本科生毕业设计(论文) 第四种驱动程序是纯 Java 驱动程序,它直接与数据库进行通讯。很多程序员认为这是最好的驱动程序,因为它通常提供了最佳的性能,并允许开发者利用特定数据库的功能。当然,这种紧密耦合会影响灵活性,特别是如果您需要改变应用程序中的底层数据库时。这种驱动程序通常用于 applet 和其它高度分布的应用程序[10]。 2.3.9 TOMCAT 6.0 Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。由于有了Sun 的参与和支持,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现,Tomcat 5 支持最新的Servlet 2.4 和JSP 2.0 规范。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。它运行时占用的系统资源小,扩展性好,支持负载平衡与邮件服务等开发应用系统常用的功能;而且它还在不断的改进和完善中。是开发和调试JSP 程序的首选。 2.3.10 Dreamweaver Dreamweaver是一款专业的 HTML 编辑器,用于对 Web 站点、Web 页和 Web 应用程序进行设计、编码和开发。Dreamweaver可提供在可视化编辑环境中工作, 利用 Dreamweaver中的可视化编辑功能,可以快速地创建页面而无需编写任何代码。同时,如果要用手工直接编码,Dreamweaver 还包括许多与编码相关的工具和功能。并且,借助Dreamweaver,还可以使用服务器语言(例如 ASP、ASP.NET、ColdFusion 标记语言 (CFML)、JSP 和 PHP)生成支持动态数据库的 Web 应用程序。 2.4本章小结 在这章里从各个方面上分析系统的需求,论证课题是否可行,确立在课题研究中将要进行的主要工作。当然也牵涉到了开发语言与工具选取的问题,根据工具使用的难易程度结合自己的技能水平,选择最佳方案。在后续的设计、开发、测试中将严格按照本章的分析结果进行。 - - 南京邮电大学2012届本科生毕业设计(论文) 第三章 系统设计 3.1系统概要设计 系统决定采用Windows 操作系统平台,Tomcat 6.0为服务器,MySQL为数据库,以及面向对象简单易用,功能强大适用范围广的JSP技术。 系统的结构体系建立在Web的客户/服务器(B/S)体系结构的基础上,根据用户的输入提供动态信息服务,从而实现交互式教务管理。采用模块化的设计方法,以及一般客户/服务器数据库的数据平台。 本系统采用“视图—逻辑处理—数据库”三层结构体系进行设计和整个系统的开发,即:JSP技术 + Servlet + Mysql 数据库,具体如图3.1: 视图 数据库 逻辑处理 图3.1 MVC三层体系结构图 a.视图 视图是应用程序中用户界面相关的部分,是用户能够看到并与之交互的界面。 b.逻辑处理 逻辑处理层主要是根据用户提交的请求进行逻辑处理,并把处理结果返回给用户。 c.数据库 存储各种数据与信息,为前台应用提供支持。 登录界面有三种角色可供选择:管理员、教师、学生。不同的角色具有不同的权限,能满足各自不同的需求。 3.2功能模块设计 系统面向三类用户,分别为管理员、教师、学生,不同的用户具有不同的权限,能满足各自不同的需求。详细的功能设计如下。 3.2.1管理员模块设计 管理员登陆系统时,在系统主界面中,管理员可以完成如下工作: (a)管理员信息维护 主要是对管理员信息的增、删、改、查。 (b)教师信息维护 主要是对教师信息的增、删、改、查。 (c)学生信息维护 主要是对学生信息的增、删、改、查。 (d)考生信息维护 主要是对考生信息的增、删、改、查。 - - 南京邮电大学2012届本科生毕业设计(论文) (e)课程信息维护 主要是对课程信息的增、删、改、查。 (f)题目信息维护 主要是对题目信息的增、删、改、查。 (g)学生成绩维护 主要是对学生成绩增、删、改、查。 管 理 员 管理员的整体功能模块设计图如图3.2所示。 教师信息维护 学生成绩维护 管理员信息维护 题目信息维护 课程信息维护 学生信息维护 考生信息维护 图3.2管理员模块设计图 3.2.2 教师模块设计 教师登陆系统时,在系统主界面中,教师可以完成如下工作: (a)修改个人资料 主要是修改教师自己的个人信息。 (b)题目信息维护 主要是对自己任教科目的题目的增、删、改、查。 (c)学生成绩维护 主要是对自己学生成绩的增、删、改、查。 (d)成绩查询分析 主要是对自己学生成绩查询分析,例如:及格率、优秀率、平均分等。 教师的整体功能模块设计图如图3.3所示。 教 师 - - 南京邮电大学2012届本科生毕业设计(论文) 修改个人信息 学生成绩查询分析 学生成绩维护 题目信息维护 图3.3教师模块设计图 3.2.3 学生模块设计 学生登陆系统时,在系统主界面中,学生可以完成如下工作: (a)修改个人资料 主要是修改学生自己的个人信息。 (b)个人成绩查询分析 主要是对自己成绩的查询分析,例如:各科成绩,某科具体成绩名次等。 (c)在线考试 主要能在线考试,系统自动生成考题,自动交卷(如果时间到时还未交卷),自动阅卷,自动保存成绩。 学生的整体功能模块设计图如图3.4所示。 学 生 修改个人信息 在线考试 个人成绩查询 图3.4学生模块设计图 3.3 数据库设计 - - 南京邮电大学2012届本科生毕业设计(论文) 用户通过浏览器向服务器发出操作请求然后系统判断请求的合法性后处理操作请求,将结果返回至客户端的浏览器上,这是本系统的总体处理流程思路。数据库总体流程图如图3.5所示。 用户(浏览器) 系统(WEB服务器) 数据库 请求操作 请求操作 处理结果 返回结果 图 3.5 数据库总体流程图 3.3.1 E—R图设计 (1)管理员实体图如图3.6所示。 管理员 姓名 id号 密码 图3.6 管理员实体图 (2)教师实体图如图3.7所示。教师 姓名 id号 密码 图3.7教师实体图 科目 (3)学生实体图如图3.8所示。 - - 南京邮电大学2012届本科生毕业设计(论文) 学生 姓名 id号 密码 图3.8学生实体图 性别 身份证号 Eail 电话 班级 (4)考生实体图如图3.9所示。考生 准考证号 学生id号 考试密码 图3.9考生实体图 注册时间 (5)课程套题实体图如图3.10所示。课程套题 课程名 课程id号 图3.10课程套题实体图 学分 备注 (6)套题题目实体图如图3.11所示。 - - 南京邮电大学2012届本科生毕业设计(论文) 套题题目 题目内容 题目id号 类型 图3.11套题题目实体图 所属课程号 选项B 选项C 选项A 选项D 备注 正确答案 (7)学生成绩实体图如图3.12所示。学生成绩 成绩id号 学生id号 图3.12学生成绩实体图 授课教师id号 多项分数 单项分数 总分 备注 3.3.2数据库表设计 (1)管理员信息表,如表3-1所示。 表3-1管理员信息表 (2)教师信息表,如表3-2所示。 - - 南京邮电大学2012届本科生毕业设计(论文) 表3-2教师信息表 (3)学生信息表,如表3-3所示。 表3-3学生信息表 (4)考生信息表,如表3-4所示。 表3-4考生信息表 (5)课程套题信息表,如表3-5所示。 表3-5课程套题信息表 (6)套题题目信息表,如表3-6所示。 表3-6套题题目信息表 (7)学生成绩表,如表3-7所示。 - - 南京邮电大学2012届本科生毕业设计(论文) 表3-7学生成绩表 3.4 本章小结 在整个系统中这一章是最重要的,在这里完成了系统的设计,相当于系统要做什么事,有了明确的规定。在“系统概要”的小节里就初步体现了系统如何设计的构思。而后通过紧接着的“功能模块设计”实现了系统的功能规划。然后在后面的“数据库设计”里面,对具体的实体在数据库中的表示进行了阐述,列出了数据库表格。在完成这一章的过程中当然也碰到了一些问题,例如:图表的画法就是难点之一,最终利用基本的office软件完成了操作。 第四章 系统实现 在上一章里,重点讨论了系统的设计,系统又是如何实现的呢,这就是这一章里面将重点讨论的问题,整个系统的实现是很复杂的,也是很烦琐的。现在重点讨论系统重难点模块的实现。讨论模块如下:管理员模块,教师模块,学生模块和异常处理模块的实现。 4.1 管理员模块实现 登录界面如图4.1所示, - - 南京邮电大学2012届本科生毕业设计(论文) 图4.1管理员登录界面 登录界面提交给一个Servlet来处理,主要实现代码如下: public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("UTF-8"); String message=null; String id=null; id=request.getParameter("id"); HttpSession session=request.getSession(true); session.setAttribute("id",String.valueOf(id)); String password=null; password= request.getParameter("password"); - - 南京邮电大学2012届本科生毕业设计(论文) String kind =null; kind=request.getParameter("kind"); String temp =getPassword(request,response,id,kind); if( id!=null&&id!=""&&password.equals(temp)) goo(request,response,kind); else { message="用户名或密码有误!"; doError(request,response,message); } } public void goo(HttpServletRequest req, HttpServletResponse res,String kind) throws ServletException,IOException{ String id=null; id=req.getParameter("id"); HttpSession session=req.getSession(true); session.setAttribute("LogId",String.valueOf(id)); if(kind.equals("student")) { RequestDispatcher rd = getServletContext().getRequestDispatcher("/student.jsp"); rd.forward(req, res); } if(kind.equals("teacher")){ RequestDispatcher rd = getServletContext().getRequestDispatcher("/teacher.jsp"); rd.forward(req, res); } if(kind.equals("admin")){ RequestDispatcher rd = getServletContext().getRequestDispatcher("/admin.jsp"); rd.forward(req, res); - - 南京邮电大学2012届本科生毕业设计(论文) } } public String getPassword(HttpServletRequest req, HttpServletResponse res,String id,String kind) throws ServletException, IOException { String pw=""; String kindId = kind+"_id"; Connection conn = DB.getConn(); String sql = "select * from "+kind+" where "+kindId+" = '"+id+"' "; Statement stmt = DB.getStatement(conn); ResultSet rs = DB.getResultSet(stmt, sql); try { if(rs.next() ){ pw= rs.getString("password"); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ DB.close(stmt); DB.close(conn); } return pw; } 登录成功后跳转到管理员登录首页,如图4.2所示。 - - 南京邮电大学2012届本科生毕业设计(论文) 图4.2管理员登录首页 在管理员登录首页中通过如下代码来实现管理员模块到各个子模块: - - 南京邮电大学2012届本科生毕业设计(论文)
管理员信息维护
教师信息维护
学生信息维护
考生信息维护
课程套题维护
套题题目维护
学生成绩维护
各个子模块的实现情况如图4.3、4.4、4.5、4.6、4.7、4.8、4.9所示 图4.3管理员信息维护页面 图4.4教师信息维护页面 - - 南京邮电大学2012届本科生毕业设计(论文) 图4.5学生信息维护页面 图4.6考生信息维护页面 图4.7课程套题信息维护页面 - - 南京邮电大学2012届本科生毕业设计(论文) 图4.8套题题目信息维护页面 图4.9学生成绩维护页面 在各个子模块中,管理员可以完成相应信息的增、删、改、查。以学生信息维护为例,其实现代码如下(Servlet处理的): public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("UTF-8"); Student s = new Student(); String studentId=request.getParameter("student_id"); String message =""; boolean success = true; String action = request.getParameter("action"); if ("add".equalsIgnoreCase(action)) { String name=request.getParameter("name"); String password= request.getParameter("password"); String clas=request.getParameter("clas"); String sex=request.getParameter("sex"); String cardNo= request.getParameter("cardNo"); - - 南京邮电大学2012届本科生毕业设计(论文) String tel= request.getParameter("tel"); String e_mail= request.getParameter("e_mail"); if(isTrue(request,response,studentId,name,password,clas,sex,cardNo,tel,e_mail)){ if(s.getStudent(studentId)==null ){ s = doNew(request,response); sendBean(request, response, s, "/getStudent.jsp"); } else{ message="错误,该学生已存在!"; doError(request,response,message); } } } if ("update".equalsIgnoreCase(action)) { String name=request.getParameter("name"); String password= request.getParameter("password"); String clas=request.getParameter("clas"); String sex=request.getParameter("sex"); String cardNo= request.getParameter("cardNo"); String tel= request.getParameter("tel"); String e_mail= request.getParameter("e_mail"); if(isTrue(request,response,studentId,name,password,clas,sex,cardNo,tel,e_mail)){ try { s = doUpdate(request,response, studentId); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } sendBean(request,response,s,"/getStudent.jsp"); } } if ("delete".equalsIgnoreCase(action)) { try { success = doDelete(studentId); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } if (!success) { doError(request, response, "删除失败! " ); } else { RequestDispatcher rd= getServletContext().getRequestDispatcher("/getStudent.jsp"); - - 南京邮电大学2012届本科生毕业设计(论文) rd.forward(request, response); } } } public void doError(HttpServletRequest req,HttpServletResponse res,String str) throws ServletException, IOException { HttpSession session=req.getSession(true); session.setAttribute("problem",String.valueOf(str)); RequestDispatcher rd = getServletContext().getRequestDispatcher("/errorpage.jsp"); rd.forward(req, res); } public boolean isTrue(HttpServletRequest req, HttpServletResponse res, String id,String name,String password,String clas,String sex,String cardNo,String tel,String e_mail) throws ServletException, IOException { boolean f=true; String message =""; if(id==null || id.equals("")) { f=false; message="错误,学生号不能为空!"; doError(req,res,message); } else if(name==null || name.equals("")) { f=false; message="学生姓名不能为空,请重新填写!"; doError(req,res,message); } else if(password==null || password.equals("")) { f=false; message="密码不能为空,请重新填写!"; doError(req,res,message); } else if(clas==null || clas.equals("")) { f=false; message="班级不能为空,请重新填写!"; doError(req,res,message); } else if(sex==null || sex.equals("")) { f=false; - - 南京邮电大学2012届本科生毕业设计(论文) message="学生性别不能为空,请重新填写!"; doError(req,res,message); } else if(name==null || name.equals("")) { f=false; message="身份证号不能为空,请重新填写!"; doError(req,res,message); } else if(tel==null || tel.equals("")) { f=false; message="联系电话不能为空,请重新填写!"; doError(req,res,message); } else if(e_mail==null || e_mail.equals("")) { f=false; message="e_mail不能为空,请重新填写!"; doError(req,res,message); } return f; } public void sendBean(HttpServletRequest req, HttpServletResponse res,Student s, String target) throws ServletException, IOException { req.setAttribute("student", s); RequestDispatcher rd = getServletContext().getRequestDispatcher(target); rd.forward(req, res); } public Student doNew(HttpServletRequest request,HttpServletResponse response ) throws ServletException,IOException{ request.setCharacterEncoding("UTF-8"); Student s = new Student(); String studentId=request.getParameter("student_id"); String name=request.getParameter("name"); String password= request.getParameter("password"); String clas=request.getParameter("clas"); String sex=request.getParameter("sex"); String cardNo= request.getParameter("cardNo"); String tel= request.getParameter("tel"); String e_mail= request.getParameter("e_mail"); String message =""; s.setStudentId(studentId); - - 南京邮电大学2012届本科生毕业设计(论文) s.setName(name); s.setPassword(password); s.setSex(sex); s.setCardNo(cardNo); s.setTel(tel); s.setE_mail(e_mail); s.setClas(clas); s.addStudent(); return s; } public Student doUpdate(HttpServletRequest request,HttpServletResponse response , String id) throws ServletException,IOException,SQLException { request.setCharacterEncoding("UTF-8"); Student s = new Student(); String name=request.getParameter("name"); String password= request.getParameter("password"); String clas=request.getParameter("clas"); String sex=request.getParameter("sex"); String cardNo= request.getParameter("cardNo"); String tel= request.getParameter("tel"); String e_mail= request.getParameter("e_mail"); if(isTrue(request,response,id,name,password,clas,sex,cardNo,tel,e_mail)){ s.setStudentId(id); s.setName(name); s.setPassword(password); s.setSex(sex); s.setCardNo(cardNo); s.setTel(tel); s.setE_mail(e_mail); s.setClas(clas); s.update(); } return s ; } public boolean doDelete(String id) throws SQLException { boolean b =false; Student s = new Student(); b = s.delete(id); return b; } 其他各个子模块的实现基本类同,这里就不再一一叙述。 - - 南京邮电大学2012届本科生毕业设计(论文) 4.2教师模块实现 教师登录后,各个子模块的实现情况如图4.10、4.11、4.12、4.13、4.14所示 图4.10教师登录首页 图4.11教师修改个人信息页面 - - 南京邮电大学2012届本科生毕业设计(论文) 在修改个人信息这个功能模块中,教师只能修改自己的信息,不能修改其他人的信息,这里通过教师号控制来实现。 图4.12学生成绩查询分析页面 图4.13单个学生成绩查询分析页面 图4.13班级学生成绩查询分析页面 - - 南京邮电大学2012届本科生毕业设计(论文) 在学生成绩查询分析这个功能模块中,教师可以按照不同的条件,多方面查询分析学生成绩。 4.3学生模块实现 学生登录后,子模块的实现情况如图4.14、4.15、4.16、4.17、4.18所示 图4.14学生登录首页 图4.15学生个人成绩查询分析页面 - - 南京邮电大学2012届本科生毕业设计(论文) 图4.16学生个人单科成绩查询分析页面 图4.17学生个人所有成绩查询分析页面 - - 南京邮电大学2012届本科生毕业设计(论文) 图4.18学生修改个人信息页面 学生模块的很多基本子模块与教师模块的子模块类似,实现方法类似;但是,学生模块有一模块------在线考试具有特殊性,其实现方法为: (1) 未注册的考生要先注册成为考生,注册时会生成一个不会重复的准考证号,其实现代码为: public boolean addExamStu(String id,String pas){ boolean flag = false; /*****************自动生成准考证号***********************************************/ String sql_max="SELECT * FROM examstu ORDER BY id DESC LIMIT 1"; Connection conn = DB.getConn(); Statement stmt = DB.getStatement(conn); ResultSet rs_max = DB.getResultSet(stmt, sql_max); //查询最大的准考证号 Date date=new Date(); //实例化java.util.Date()类 String newTime=new SimpleDateFormat("yyyyMMdd").format(date); //格式化当前日期 stime = newTime; try { if(rs_max.next()){ if(rs_max.getString("exam_id")!=null){ String max_ID=rs_max.getString("exam_id"); //获取最大的准考证 - - 南京邮电大学2012届本科生毕业设计(论文) int newId=Integer.parseInt(max_ID.substring(10,16))+1; //取出最大准考证号中的数字编号+1 //格式化处理 String newcId =""; if(newId<10){ newcId="00000"+newId; } else if(newId<100){ newcId="0000"+newId; } else if(newId<1000){ newcId="000"+newId; } else if(newId<10000){ newcId="00"+newId; } else if(newId<100000){ newcId="0"+newId; } examId="CN"+newTime+newcId; //组合完整的准考证号 }else{ //当第一个考生注册时 examId="CN"+newTime+"000001";//生成第一个准考证号 } flag = true; }else{ examId="CN"+newTime+"000001"; flag = true; } } catch (NumberFormatException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } (2)注册后,输入准考证号和考试密码便可登录了,如图4.19所示。 - - 南京邮电大学2012届本科生毕业设计(论文) 图4.19考生登录页面 (3)登录后,要选择考试科目,只有还未考试过的科目才能考试,如图4.20所示。 图4.20选择考试科目 - - 南京邮电大学2012届本科生毕业设计(论文) (4)选完考试科目后,还要选择自己的任课教师,在阅读完考试说明并准备好后,便可开始考试了。如图4.21所示。 图4.21开始考试 (5)在线考试页面实现: 在线考试是自动生成考题,自动计时,自动交卷(时间到了仍未交卷),自动阅卷,自动保存成绩。实现情况如图4.22所示。 图4.22在线考试页面 - - 南京邮电大学2012届本科生毕业设计(论文) 4.4异常处理模块实现 系统中会出现很多异常,这些异常的种类也可能各不相同,这些异常要分类处理。实现情况如图4.23、4.24所示 图4.22异常处理页面(1) 图4.23 异常处理页面(2) 4.5本章小结 此章的标题是系统实现,刚开始是管理员模块的实现,主要是对各种信息的增、删、改、查;然后是教师模块的实现,除了相应管理信息的增、删、改、查外,还实现了学生成绩的查询分析;再然后是学生模块的实现,这里除了传统功能的实现外最重要的是实现了在线考试;最后是异常处理的实现。通过本章的分析与论证实现了系统的所有功能。圆满完成了本章的任务。 - - 南京邮电大学2012届本科生毕业设计(论文) 第五章 系统测试 5.1开发环境 (1)体系结构:Browser/Server (2)操作系统:Windows XP (3)开发工具:Macromedia Dreamweaver 8,MyEclipse,Tomcat 6.0。 5.2 运行环境 Windows 、Myeclipse,Tomcat 6.0 推荐配置要求: CPU:奔腾1.6GHZ以上 内存:512M以上 显卡:标准VGA,256色显示模式以上 硬盘:80GB 其它设备:鼠标等 5.3单元测试 单元测试集中的检验软件设计的最小单元。正式测试之前必须先通过编译程序检查并且改正所有语法错误,然后用系统设计作指南,对所有的内部链接进行测试,以便发现模块内部无法响应的错误。这次单元测试我使用白盒测试法,同时对多个模块并行地进行测试。主要是检查下述几点: (1)参数的数目、属性与由调用模块送来的变量是否相同。 (2)全程变量的定义和用法在各个模块中是否出现了重复定义。 (3)输入/输出错误的检查和处理。 (4)错误的初始值或不正确的缺省值。 (5)数据类型是否相容。 (6)是否出现了不正常的死循环。 (7)操作过程中的操作流向。 在测试过程中出现了不少问题,而问题主要是集中在数据类型不相容,空指针等。经过不断的调试,修改数据类型,最终解决了这样的问题。 5.4集成测试 集成测试是组装软件的系统技术。由于已经对各个模块进行了测试,所以集成测试阶段采用了黑盒测试,从总体上检查了软件的功能。测试范围有:管理员模块功能测试,教师模块功能测试,学生模块功能测试以及异常处理测试。因为在之前的模块调试中解决了大部分错误,所以在此测试中只发现了几个模块间的小错误,并且也已经将其解决。 本系统采用黑盒测试分析法中的边界值分析方法。 (1)测试项目名称:登录模块。 - - 南京邮电大学2012届本科生毕业设计(论文) 测试内容:用户登录的账号和密码及角色。 测试目的:检查用户的身份的合法性,功能性测试。 测试步骤: a.如果输入空账号或密码时,系统还能正常的工作,则证明系统存在问题。 b.如果输入错误密码或者错误的账号时,系统还能正常的工作,则证明系统存在问题。 c.输入正确的用户名和密码,不能正常登录,则系统存在问题。 d. 输入正确的用户名和密码,但登录到其他角色页面,则系统存在问题。 测试结果:只有输入了正确的用户名和密码才能登录,且登录页面与登录角色吻合,系统正常。 (2)测试项目名称:管理员模块信息维护的功能。 测试内容:管理员对各种信息维护的功能(增、删、改、查)。 测试目的:测试管理员对信息维护的功能,系统的功能性测试。 测试步骤:对各种信息维护功能进行增、删、改、查的测试。 测试结果:各个功能均可正常实现,系统正常。 (3)测试项目名称:教师模块信息维护的功能。 测试内容:教师对信息维护的功能(增、删、改、查)。 测试目的:测试教师对信息维护的功能,系统的功能性测试。 测试步骤:对相应信息维护功能进行增、删、改、查的测试。 测试结果:各个功能均可正常实现,系统正常。 (4)测试项目名称:教师模块学生成绩查询分析 测试内容:按照不同的查询条件与类型,测试教师模块的学生成绩查询分析功能。 测试目的:测试教师模块的学生成绩查询分析功能。 测试步骤:按照不同的查询条件与类型,对学生成绩进行查询分析。 测试结果:能够正常实现学生成绩查询分析功能,系统正常。 (5)测试项目名称:在线考试系统测试。 测试内容:学生登陆考试系统是否能够进行考试,考卷是否是自动生成,考试时间到时是否能自动交卷,是否能自动阅卷,考试完后的信息是否能够添加进入数据库。测试目的:系统的功能性测试。 测试结果:上述测试内容中的描述都能够实现。 除了几个小错误外系统运行都基本正常,经修改代码后问题解决。 5.5 本章小结 此章的标题是系统测试,刚开始是对开发环境和运行环境的介绍,接着介绍了具体的单元测试和集成测试。通过本章完成了系统的测试,验证了系统所有功能均能正常实现,圆满完成了本章的任务。 - - 南京邮电大学2012届本科生毕业设计(论文) 结束语 经过几个月的不懈努力,和指导老师的谆谆教导,以及同学们的帮助,充分利用大学四年所学的专业知识,通过大量阅读与设计相关的专业参考文献,我终于完成了本次毕业设计。 此次课题从最初的需求分析到具体的系统开发,经历了很长时间,现在课题的系统实践和论文终于完成。在系统的测试过程中,原定的目标基本上已经实现,能够完成简单的在线考试和基本成绩管理。在整个开发过程中,我遇到了很多难题,也看到了自己知识的不足与贫乏,在这个过程中我学到了很多新的知识,也积累了一些项目开发经验。 由于时间,能力,国内JAVA,JSP技术资料有限等原因,本系统的缺陷也是明显的,如安全性,效率问题等等,有些功能实现的并不完美,在已经完成的程序中,也存在许多不尽人意的算法,也没有统一优化,系统有待进一步改善,而这些问题也让我充分认识到了软件开发的困难。 通过这次毕业设计,我掌握了Mysql数据库的编程方法,掌握了JAVA语言和JSP技术,也掌握了MVC开发的方法与模式。对软件开发方法和手段,有了一定的认识,丰富了我的软件开发的经验,提高了程序编写的水平,并加深理解了许多课程中、书本上学到的知识和理论。同时,通过编写毕业设计论文,我还基本掌握了软件文档的写作方法和写作格式。通过这次毕业设计我受益匪浅,收获良多,这一定会对我今后的工作和学习产生很大的帮助。 - - 南京邮电大学2012届本科生毕业设计(论文) 致 谢 这次毕业设计,校外的许老师和校内的钱老师给予了本人极大的帮助,对毕业设计过程中的每一个环节都认真地进行指导。通过不断与指导老师沟通,不断改进程序,使其更加完美,方便用户使用,使系统更具特色。在写论文环节中,老师耐心细致的指导,在每一个阶段制定具体的计划,要求不断根据实际需要修改,使整个毕业设计能顺利的完成。从指导教师身上学到了很多东西,在他们的悉心指导下使我在毕业设计期间受益匪浅,对所学知识进行了总结与回顾,这一定会对我今后的工作和学习产生很大的帮助的。 最后对所有给予了我帮助的老师们和同学们再次表示我诚挚的谢意。 - - 南京邮电大学2012届本科生毕业设计(论文) 参考文献 [1]袁世鹰.微机教务管理系统的设计与实现[P].北京:开明出版社,2001 [2]马朝晖等.Java教程.(第4版)[M].北京:人民邮电出版社,2006 [3]张白一,崔尚森.面向对象程序设计——Java[M].西安:电子科技大学出版社,2004 [4]杨学瑜.JSP入门与提高.北京:清华大学出版社,2002.3.1. [5]耿祥义.JSP基础教程(第2版) .北京:清华大学出版社,2009.10.1. [6](美)Abraham Silberschatz Henry F.Korth S.Sudarshan 数据库系统概念.杨冬青 马秀莉 唐世渭等,译.北京:机械工业出版社,2006.9. [7]陈天河等.Struts,Hibernate,Spring 集成开发宝典[M].北京:电子工业出版社,2007 [8]吴明晖,吴超.Struts+Hibernate开发Web应用——从基础到实践[M].北京:人民邮电出 版社,2007 [9]谷庆华等.基于java语言实现数据库访问[J].计算机技术与发展,2008 [10]王珊,萨师煊.数据库系统概论(第四版)[M].北京:高等教育出版社,2006 [11]Abraham Silberschatz, Henry F. Korth, S. Sudarshan. Database System Concepts 6.America. McGraw-Hill, 2010 [12]Cormen, Thomas H. (EDT)/ Leiserson, Charles E./ Rivest, Ronald L./ Stein, Clifford. Introduction to Algorithms. Mit Pr, 2005.7   附录 学生考试与成绩管理系统使用说明书 1. 配置源程序 本系统以MyEclipse为开发运行工具,Tomcat6.0为web服务器,使用了Mysql数据库。系统运行之前必须在MySQL数据库中建好相应的数据库。在建好数据库后,还要把项目发布运行起来,只有这样才能使系统能够正常使用。 1.1在MySQL中创建managesystem数据库 (1)将扩展名为managesystem.sql的文件拷贝到本地机器中。 (2)安装MySQL数据库并把数据库服务器启动起来。 (3)打开MySQL的“SQLyog Community”客户端工具,并登录(本系统需要使用root和11111登录),如图1所示。 - - 南京邮电大学2012届本科生毕业设计(论文) 图1 所有客户端登录MySQL数据库 (4)创建managesystem数据库,并导入managesystem.sql文件,如图2所示。 图2 创建managesystem数据库 文件导入成功后,数据库表如图3所示。 - - 南京邮电大学2012届本科生毕业设计(论文) 图3 数据库表 1.2 将程序导入到MyEclipse中,并发布运行 (1)将“Managesystem”文件夹拷贝到MyEclipse的工作空间中。 (2)启动MyEclipse,在左侧的“包资源管理器”中,单击鼠标右键,选择“Import”菜单项,在弹出的对话框中,展开General节点,并选择“Existing Projects into Workspace”子节点,如图4所示。 - - 南京邮电大学2012届本科生毕业设计(论文) 图4 程序导入MyEclipse中 (3)单击“next”按钮,进入到Import Projects对话框中,选择工作空间中的Managesystem,单击“Finish”按钮,完成项目的导入。 (4)将程序所需的MySQL数据库驱动包(mysql-connector-java-3.0.16-ga-bin.jar)的jar包拷贝到工程的WebRoot\WEB-INF\lib文件夹中。 (5)单击工具栏中的按钮,在弹出对话框的project下拉列表框中,选择项目名称emtManagesy,单击add按钮,在弹出的new deployment对话框的server下拉列表框中选择要使用的服务器这里为 Tomcat6.x,单击Finish按钮,返回到Project Deployments对话框中,单击OK按钮。如图5所示。 - - 南京邮电大学2012届本科生毕业设计(论文) 图5 在服务器三部署项目 (6)单击工具栏中的按钮的三角形,在弹出菜单中选择“Tomcat6.x/Start”菜单项,开启Tomcat服务器。R如图6所示。 - - 南京邮电大学2012届本科生毕业设计(论文) 图6开启Tomcat服务器 (7)打开IE浏览器,在地址栏中输入http://localhost:8080//ManageSystem,并按下Enter键,进入本程序登录页面。 2.系统运行起来后的使用说明 2.1系统介绍 这个学生考试与成绩管理系统有学生、教师、管理员三个用户,不同的用户可以完成不同的功能。管理员的功能:管理员信息维护、教师信息维护 、学生信息维护、考生信息维护、课程信息维护、题目信息维护、学生成绩维护;教师的功能:修改个人信息、题目信息维护、学生成绩维护 、成绩查询分析;学生的功能:修改个人信息、个人成绩查询、在线考试。管理员和教师可以完成后台课程套题和考试题目以及学生成绩的维护功能,从而实现前台的在线考试和成绩查询分析功能。 2.2操作流程 1.用户登录,具体使用说明如下: (1)选择相应角色(学生、教师或管理员); (2)输入正确的用户名和密码; (3)登录系统。 2.管理员进入管理员登录首页后通过相应的链接可完成这些管理工作:管理员信息维护、教师信息维护 、学生信息维护、考生信息维护、课程信息维护、题目信息维护、学生成绩维护。 具体使用说明如下: (1)管理员信息维护模块 可以对管理员信息进行新增、删除、修改、搜索。其中新增管理员时,管理员姓名、管理员号、密码都不能为空;修改管理员时,管理员姓名、管理员号、密码也都不能为空;搜索时必须选择搜索类型,搜索类型选择可以按照管理员号搜索,可以按照管理员名搜索,也可以搜索所有,按照管理员号和管理员名搜索时必须要输入搜索条件,搜索所有时可以不用输入条件。 (2)教师信息维护 可以教师信息进行新增、删除、修改、搜索。其中新增教师时,教师姓名、教师号、密码、课程都不能为空;修改教师时,教师姓名、教师号、密码、课程也都不能为空;搜索时必须选择搜索类型,搜索类型选择可以按照教师号搜索,可以按照教师名搜索,也可以搜索所有,按照教师号和教师名搜索时必须要输入搜索条件,搜索所有时可以不用输入条件。 (3)学生信息维护 可以学生信息进行新增、删除、修改、搜索。其中新增学生时,学生姓名、学生号、密码、班级、性别、身份证号、联系电话、e_mail都不能为空;修改学生时,学生姓名、学生号、密码、班级、性别、身份证号、联系电话、e_mail也都不能为空;搜索时必须选择搜索类型,搜索类型选择可以按照学生号搜索,可以按照学生名搜索,也可以搜索所有,按照学生号和学生名搜索时必须要输入搜索条件,搜索所有时可以不用输入条件。 - - 南京邮电大学2012届本科生毕业设计(论文) (4)考生信息维护 可以考生信息进行新增、删除、修改、搜索。其中新增考生时,学生号、考试密码都不能为空;修改考生时,学生号、考试密码也都不能为空;搜索时必须选择搜索类型,搜索类型选择可以按照学生号搜索,可以按照学生名搜索,也可以搜索所有,按照学生号和学生名搜索时必须要输入搜索条件,搜索所有时可以不用输入条件。 (5)课程信息维护 可以课程套题信息进行新增、删除、修改、搜索。其中新增课程套题时,课程套题号、课程套题名、学分都不能为空,备注可以为空;修改程套题时,也是课程套题号、课程套题名、学分都不能为空,备注可以为空;搜索时必须选择搜索类型,搜索类型选择可以按照课程号搜索,可以按照课程名搜索,也可以搜索所有,按照课程号和课程名搜索时必须要输入搜索条件,搜索所有时可以不用输入条件。 (6)题目信息维护 可以套题题目信息进行新增、删除、修改、搜索。其中新增套题题目时,题目名、题目号、类型、所属套题、选项A、选项B、选项C、选项D、正确答案都不能为空,备注可以为空;修改套题题目时,也是题目名、题目号、类型、所属套题、选项A、选项B、选项C、选项D、正确答案都不能为空,备注可以为空;搜索时必须选择搜索类型,搜索类型选择可以按照题目号搜索,可以按照题目名搜索,也可以搜索所有,按照题目号和题目名搜索时必须要输入搜索条件,搜索所有时可以不用输入条件。 (7)学生成绩维护 可以学生成绩进行新增、删除、修改、搜索。其中新增成绩时,成绩号、所属学生号、授课教师号、单选分数、多选分数都不能为空,备注可以为空;修改成绩时,也是成绩号、所属学生号、授课教师号、单选分数、多选分数都不能为空,备注可以为空;搜索时必须选择搜索类型,搜索类型选择可以按照学生号搜索,可以按照学生名搜索,也可以搜索所有,按照学生号和学生名搜索时必须要输入搜索条件,搜索所有时可以不用输入条件。 3.教师进入教师登录首页后可完成修改个人信息、题目信息维护、学生成绩维护 、成绩查询分析等相应的工作和相应的需求。 具体使用说明如下: - - 南京邮电大学2012届本科生毕业设计(论文) (1)修改个人资料 主要是修改教师自己的个人信息,其中教师姓名、教师号、密码、课程都不能为空。 (2)题目信息维护 可以套题题目信息进行新增、删除、修改、搜索。其中新增套题题目时,题目名、题目号、类型、选项A、选项B、选项C、选项D、正确答案都不能为空,备注可以为空;修改套题题目时,也是题目名、题目号、类型、选项A、选项B、选项C、选项D、正确答案都不能为空,备注可以为空;搜索时必须选择搜索类型,搜索类型选择可以按照题目号搜索,可以按照题目名搜索,也可以搜索所有,按照题目号和题目名搜索时必须要输入搜索条件,搜索所有时可以不用输入条件。 (3)学生成绩维护 可以学生成绩进行新增、删除、修改、搜索。其中新增成绩时,成绩号、所属学生号、单选分数、多选分数都不能为空,备注可以为空;修改成绩时,也是成绩号、所属学生号、单选分数、多选分数都不能为空,备注可以为空;搜索时必须选择搜索类型,搜索类型选择可以按照学生号搜索,可以按照学生名搜索,也可以搜索所有,按照学生号和学生名搜索时必须要输入搜索条件,搜索所有时可以不用输入条件。 (4)成绩查询分析 主要是对自己所教学生成绩查询分析,可以查询分析某个学生的该科成绩,包括单选成绩,多选成绩,最终成绩,班级内名次,学科内名次 (查询分析条件为该学生的学生号); 可以查询分析某个班级的该科成绩,包括该班的最高成绩,最低成绩,平均成绩,及格人数,不及格人数,及格率,优秀人数,优秀率 (查询分析条件为该班级的班级号);也可以查询分析授课科目所有学生成绩,包括最高成绩,最低成绩,平均成绩,及格人数,不及格人数,及格率,优秀人数,优秀率 (无需查询分析条件)。 4.学生进入学生登录首页后可完成修改个人信息、个人成绩查询、在线考试等相应的工作,满足相应的需求。 具体使用说明如下: (1)修改个人资料 主要是修改学生自己的个人信息,其中学生姓名、密码、班级、性别、身份证号、联系电话、e_mail都不能为空。 (2)个人成绩查询分析 主要是对自己成绩的查询分析,可以查询个人某一科成绩,包括单选成绩,多选成绩,最终成绩,该科班级内名次,学科内名次 (查询条件为该科课程号);也可以查询个人所有成绩,包括各科成绩,平均成绩,总成绩(查询条件为空)。 (3)在线考试 - - 南京邮电大学2012届本科生毕业设计(论文) 主要是在线考试,学生点击在线考试链接后会进入在线考试的登录界面。学生要想进行在线考试必须要先注册成为考生,注册后通过在线考试登录界面输入正确的准考证号和考试密码进入考试课程选择界面,考生可以输入考试科目,但该科目必须是还未考试过的科目。考生选择考试科目后还要选择自己的授课教师,在阅读完考试注意事项并准备好之后可以点击【开始考试】进行在线考试。在线考试系统不允许对网页进行刷新、后退等操作,如果在规定的考试时间内没有交卷,系统将自动提交试卷,系统会自动阅卷,自动保存成绩。 2.3系统使用注意事项 在系统使用过程中,必须保证Tomcat服务器一直在运行着,只有这样系统才能正常工作。 - -

下载文档到电脑,查找使用更方便

文档的实际排版效果,会与网站的显示效果略有不同!!

需要 8 金币 [ 分享文档获得金币 ] 2 人已下载

下载文档