基于web的在线考试系统的设计与实现本科毕业设计说明书内容摘要:

器通信,所有操作在服务器端完成,因此,该结构不再需要分发客户端程序,易于维护和升级,由于通过 Inter,应用广泛。 鉴于上述原因,本人实现的系统使用的是 B/S 结构,通过浏览器与数据库交互。 本系统是一 个基于 B/S 架构 应用于学生考试和教学管理的系统,开发本系统的目的主要是为了解决大多数考试还依赖 教师 出题与用笔和纸考试的现象。 该系统节约了很多人力和物力 [12],提高了效率和考试的可靠性,减少老师的工作强度,减少了印刷浪费的财力和时间,提高了出题的效率和考试的可信度。 本系统占用系统资. . 源少,对硬件要求低,而且利用 Web 访问操作方便,维护简单,它将在以下方面发挥积极的作用:  基于校园网,提高现代化教 学 水平;  帮助学院主管考试部门提高工作效率,实现考试信息 化 管理以及考试流程的系统化,自动化 , 弥补传统考试的不灵活性。 . 研究开发的基本内容 本系统实现的主要内容有: 登陆模块 的实现,包括管理员、教师、学生; 公有模块 的实现,包括修改密码、重置密码; 对于重置密码,主要有教师重置学生密码,管理员重置教师密码 ; 管理员模块 的实现,该模块包括教师 、 学生 、讲授、课程、班级 信息 的管理。 针对每个对象管理 , 分别包括 信息 的 添加、删除和修改 ,对于某些对象,含有 模糊查询功能 ; 教师模块 的实现,该模块包括 通过 Excel 批量导入试题、 试题信息管理、查看 所教 班级成绩信息 等 ;  试题信息管 理的实现,包括试题的查询、添加、删除;  批量导入试题利用了 POI 的 jar 包,对 Excel 表格的内容进行解析,但是表格的列标题必须和目标数据库中的数据表字段名严格 对应。 在实现上利用POI 的 jar 包中的 API,先读取 Excel 的第一行作为数据表的字段名 放入string 变量中 ,再 遍历 表的 各行,读取每条记录,循环插入目标数据表中。 学生模块 的实现,该模块包括参加考试、查看考试成绩、查看个人信息、修改密码;考试系统的实现,包括随 机 抽题组卷、自动 阅 卷并 自动 将成绩录入数据库、还原本次考试答错的题供 考生 参考 等。 . . 第二章 系统技术概论 JDBC 技术 Java 数据库编程主要使用 JDBC 技术。 JDBC 是一种用于执行 SQL 语句的 Java API[13], 它由一组用 Java 编写的类和界面组成。 JDBC 未开发人员提供了一个标准的 API,使他们能够用纯 Java API 来编写数据库应用程序。 利用 JDBC,向各种关系数据库发送 SQL 语句就变成了一件很容易的事。 换言之,利用 JDBC API,就不必专门为访问 SQL Server 数据库写一个程序,又专门为访问 Oracle 数据库写一个程序。 开发人员只需用 JDBC API 写一个程序就够了,它可向相应的数据库发送 SQL 语句。 而且由于是使用 Java 编写的应用程序,就无须为不同的平台编写不同的应用程序。 将 Java 和 JDBC 结合起来将使程序员只写一遍程序就可以让它在任何平台上运行。 JDBC 在应用程序中的体系结构 如 图 所示。 图 JDBC应用程序体系结构 简单地说, JDBC 可以做 以 下三 件事: a) 与数据库建立连接; b) 发送并执行 SQL 语句; c) 处理结果。 这些工作是通过 JDBC 中以下几个核心类来完成的。 . . DriverManager 类 DriverManager 类是 JDBC 的 管理层,用于注册并跟踪可用的驱动程序,同时在数据库和相应的驱动程序之间建立连接。 DriverManager 类的所有成员都是静态成员,开发者在程序中无须对其进行实例化,可以直接通过类名来调用其方法。 在JDBC 中可以 自动在 DriverManager 类中 注册驱 动程序 ,在程 序中利用()方法加载指定的驱动程序,这将显式地加载驱动程序类。 由于这与外部设置无关,因此推荐使用这种加载方法。 其代码如下: (“”)。 加载驱动程序类并在 DriverManager 类中注册后,即可与数据库建立连接了。 对于简单的应用程序,开发者只需直接使用 ()方法,准备建立于数据库的连接。 当调用 ()发出连接请求时,DriverManager 类 将 检 查 加 载 的 驱 动 程 序 , 查 看 是 否 可 以 建 立 连 接。 ()将返回代表数据库连接的 Connection 对象。 Connection 类 Connection 对象代表与数据库的连接。 调用 DriverManager 类的 getConnection()方法将返回一个 Connection()对象。 JDBC 中 url 的标准语法由三部分组成,各部分用冒号分隔。 如: Jdbc:子协议 :子名称 其中, jdbc 表示协议,并且 JDBC 中的 url 的协议总是 jdbc。 子协议 表示驱动程序名或者数据库连接机制的名称。 子协议的典型示例是 ”odbc”,该名称是为指定的 ODBC 的数据资源名称的 url 专门保留的。 例如,为了通过 JDBCODBC 桥来访问某个数 据库,可以使用如下所示的 url: Jdbc:odbc:MyDataSource 其中,子协议为 ”odbc”,子名称 ” MyDataSource”是本地 ODBC 数据源。 Connection 类是 JDBC 中主要的类之一,从事务处理到创建语句,从管理连接到向数据库发送查询,它提供了许多功能。 Connection 中的方法按照功能划分主要有以下几类: a) 向数据库法送 SQL 语句; . . b) 事务处理; c) 管理连接。 Statement 类 Statement 对象是由 Connection 类的 createStatement()方法创建的 ,用于将 SQL语句发送到数据库。 作为在给定连接上执行 SQL 语句的容器, Statement 对象用于执行不带参数的简单 SQL 语句。 Statement 对象可由 Connection 类的两种不同的createStatement()方法创建,如下: Statement stmt = ()。 Statement stmt = (int type, int concurrency)。 Statement 具有三种执行 SQL 语句的方 法: executeQuery()、 executeUpdate()和execute()。 具体使用哪一个由 SQL 语句所产生的内容来决定。 Statement 对象将由Java 垃圾回收程序自动关闭。 而为了养成一种良好的编程习惯,应在不需要的时候显式地调用 close()方法关闭它们。 这将立即释放 DBMS 资源,有助于避免潜在的内存泄露问题。 ResultSet 类 ResultSet 类提供了对数据结果集的访问机制。 结果集是一个二维表结构,其中包含查询所返回的列表题及相应的值。 根据创建的 ResultSet 对象的 Statement 及其子类的类型不同, ResultSet 也分为单向 ResultSet 和可滚动 ResultSet。 ResultSet 类始终有一个游标指向其当前的数据行。 生成 ResultSet 对象时,游标总是定位在第一行的前面。 每调用一次 next()方法,游标将向下移动以后。 因此,第一次调用 next()方法时,将把游标置于第一行之上,使它成为当期行。 这样通过调用 next()方法可以按照从上至下的次序获取 ResultSet 的行。 get ()方法提供了获取当前行中某列值的途径。 在每行内,可按任意次序获取列值。 但为了保证可移 植性,应该从左至右获取列值。 列名或列号可用于标识要从中获取数据的行。 例如,如果 ResultSet 对象的 rs 的第二列名为“ title”,并将值存储为字符串,则下列任一行代码都将获取存储在该列中的值 : . . String s = (“title”)。 String s = (2)。 ResultSet 中列的信息,被称作结果集的元数据,它被存储在 ResultSetMetaData对象中。 可通过调用 ()方法得到。 返回的 ResultSetMetaData对象将给出其对应的 ResultSet 对象中各列的编号、类型和属性。 Servlet 程序结构 一个 Servlet 程序 [14]就是一个在 web 服务器端运行的特殊 Java 类,这个特殊的Java 类必须实现 接口, Servlet 接口定义了 Servlet 容器与 Servlet程序之间的通信的协议。 为了简化 Servlet 程序的编写, Servlet API 中提供了一个实现了 Servlet 接口的最简单的 Servlet 类,其完整名称是 ,这个类实现了 Servlet 程序的基本特征和功能。 Servlet API 中还提供了一个专用于HTTP 的 Servlet 类,其名称是 ,它是 GenericServlet 的子类,在 GenericServlet 的基础上进行了一些针对 HTTP 特点的扩充。 显然,一个Java 类只要继承了 GenericServlet 或 HttpServlet,它就是个 Servlet 类。 反过来,要编写一个 Servlet 类,这个类必须继承 GenericServlet 或 HttpServlet 类。 为了充分利用 HTTP 的功能,在一般情况下,都应让自定义的 Servlet 类继承 HttpServlet 类,而不是继承 GenericServlet 类。 因此,在 Servlet 程序中上的开头必须导入.*和 .*两个 jar 包,此外 Servlet 类必须继承 HttpServlet类。 由于 Servlet 生命周期中的三个阶段:初始化阶段、响应客户请求阶段和终止阶段,分别对应于 接口中定义的 三个方法 init()、 service()和destroy()。 因此,在 Servlet 程序中必须实现这三个方法。 Init()方法是 Servlet 生命周期的开始。 这个方法在 Servlet 类被实例化后立即执行,它只被调用一次,用来创建和初始化请求所要求的资源。 Public void init(ServletConfig config)throws ServletException 其中, ServletConfig 可以读取系统初始化参数的配置,在 init()方法中,比较通用的做法是调用其超类的初始化方法 ()。 如果因为一些原因 Servlet 对象不能初始化请求,所要求的系统资源就会抛出 ServletException 异常。 Service()方法处理来自客户端的所有请求,并把处理结果以静态页面的形式返回给浏览器。 其具体. . 语法格式为: Public void service (ServletRequest req, ServletResponse res) throws ServletException, IOException 其中, ServletResponse 参数用来向客户端返回 的信息, ServletRequest 参数用来封装来自客户端的请求信息。 由于客户端通过 HTTP 请求 Servlet 有 Get()和 Post()两种方式,所以可以用 doGet()和 doPost()来替换 service()方法。 但是需要注意的是service()不能和 doGet()、 doPost()同时使用,因为其本身就包含对 doGet()和 doPost()方法的处理。 destroy()方法用于结束 Servlet 生命周期。 当关闭一个 web 应用时,destroy()方法就会被执行,这时在 init()方法中被创建的资源将 被释放。 编写完 Servlet程序后,还需要编写应用程序的配置文件。 用来控制 Servlet 组件的行为,在其中把 Servlet 映射成 url 形式通过给用户访问。 配置文件 的格式如下: ?xml version= encoding=UTF8? webapp Servlet Servletname dealwithaction /Servletname Servletclass /Servletclass /Servlet Servletmapping Servletnamedealwithaction/Servletname urlpattern/dealwithaction/urlpattern /Servletmapping /webapp . . JavaScript 技术 JavaScript 可以 让用户创建直接运行于 Inter 上的应用 [15]。 利用 JavaScript 用户可以创建需要的动态 HTML 页面,处理用户输入及特殊的对象、文件和关系数据库维护稳定的数据。 通过 JavaScript 的 LiveConnect 功能,程。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。