配色: 字号:




jsp毕业答辩过程毕业设计论文审核管理系统sqlserver
2024-05-22 | 阅:  转:  |  分享 
  










毕业答辩过程管理系统



摘 要Browser/Server,浏览器/服务器模式ABSTRACT

Student course management system is based on Internet, using B/S ( Browser/Server, browser / server ) mode, and according to the existing management system and the status of design and development services in the school ''s electronic platform.

This paper takes JSP as the development of technology, the achievement of a student management system. The information management system is divided into administrators management background, teacher student performance management, student selection and query of three independent modules. The system for administrators to achieve the following functions: student management, curriculum management, performance management, course management, the system user management, password changes and other functions; for teachers to provide: my coaching query, student achievement management; for the student provides users choose to revise the curriculum inquiry ( score, course ), select, modify password and other functions. The function module design, basically meet the teachers on school students elective course control the required function.

In terms of design, system uses B/S three layer structure, at the same time the use of JSP technology for dynamic page design, from the system of security and code reusability considerations, the use of JavaBean on the key procedure code package. Background database using SQLSERVER2005 database.













Key Words:JSP;B/S structure;JavaBean;Student course selection









目 录

引 言 5

一 概 述 6

1.1 课题研究的目的 6

1.2 课题研究的意义 6

1.3 国内外发展趋势 7

1.4 课题的可行性分析 8

1.4.1 课题调研 8

1.4.2 可行性分析 8

二 系统需求分析 9

2.1 结构化分析 10

2.2 功能需求描述 13

2.3 非功能需求描述 14

三 关键技术介绍 15

3.1 JSP技术 15

3.2 Servlet概述 16

3.3 JavaBean概述 16

3.4 SQL Server 2005 18

3.5 Java语言 19

3.6 系统开发模式 20

四 总体设计 22

3.1 系统总体结构设计 22

3.2 模块功能设计 23

五 数据库设计 23

4.1 概念设计(E-R图) 23

4.2 逻辑结构 24

六 详细设计 26

5.1.1 后台管理 26

七 系统测试 87

6.1 测试方法 87

6.2 测试用例 88

总 结 90

参考文献 91

致 谢 92





引 言

随着Internet国际互联网的发展,越来越多的学校开始注重信息化对内部管理及办事效率发展的有利作用,和对学校管理起到的至关重要性。基于Internet的信息服务,已经成为现代学校一项不可缺少的内容。很多学校都已不满足于纸制化办公及庸散的管理方式。学校需要的是一个功能强大的,能提供完善的管理方式、高速的信息传达速度及精确的信息的信息管理系统。

随着科技发展和社会进步,尤其是计算机大范围的普及,计算机应用逐渐由海量数据处理转向大规模的事务处理和对工作流的管理,这就产生了以台式计算机为核心,以数据库管理系统为开发环境的管理信息系统在大规模的事务处理和对工作流的管理等方面的应用

2.学会使用JAVA开发工具。

3.掌握小型关系数据库。

4.提高逻辑思维能力。

5.培养相互合作的精神。

课题研究的意义

学生选题及成绩查询系统是一个学校不可缺少的部分,它的内容对于学校的决策者和管理者来说都至关重要,所以它应该能够为用户提供充足的信息和快捷的查询手段。但一直以来人们使用传统人工的方式管理文件档案,这种管理方式存在着许多缺点,如:效率低、保密性差,另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。

随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。

作为计算机应用的一部分,使用计算机对选题信息进行管理,有着手工管理所无法比拟的优点.例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高人事劳资管理的效率,也是企业的科学化、正规化管理,与世界接轨的重要条件。

因此,开发这样一套软件成为很有必要的事情。在下面的各章中我们将谈谈其开发过程和所涉及到的问题及解决方法。

本文中所做的主要工作如下:

(1) 阐述整个系统的系统结构及工作原理;分析了系统实现中的特殊性、难点和重点。(2) 设计实现用户管理、毕业设计相关管理、毕业答辩过程管理、信息管理、成绩管理、学生查找、教学质量评价等。

(3) 分析并解决实现中的若干技术问题。

(4) 建立完整的选题及成绩查询,进行测试并分析结果。

国内外发展趋势

随着教育产业化进程的逐步推进,各大高校纷纷合并,走上了强强联合、资源共享的路子。高校的规模不断扩大,如何合理利用教学资源,有效地加强教学管理工作,已成为各大高校十分关注的问题。目前,在教学管理方面,特别是学生学籍管理、成绩管理等方面都普遍采用了网络化管理技术,而对于毕业设计这一重要的教学环节,和其他教学毕业设计相关一样,普遍采用传统的单机管理模式,主要进行毕业设计基本信息和成绩的输入输出工作,而对于毕业设计的选题、毕业设计过程中管理,以及毕业设计效果的统计分析等工作还没有纳入管理系统中。目前随着教学改革的不断深入,学校办学规模的不断扩大,如何有效地增强教学管理水平,充分调动学生的学习积极性,提高毕业设计的教学质量是各高校教学管理工作的重点之一。

目前,毕业设计的双向选择和毕业设计过程的动态跟踪与交流己成为毕业设计环节教学改革的重要内容仁,英国诺丁汉大学开发了专门的管理系统实现了毕业设计的网上双向选择,国内南开大学已开发了毕业设计网站,为毕业设计的选题、师生交流和毕业设计成绩的管理提供了良好的环境,取得了良好的效果。

国外的教学科研软件与国内相比开发的早而且比较成熟。早在七十年代末,美国就建成了NSFNET(国家科学基金网),其课题的申报及课题的进展情况汇报都在网上进行。其网上教学教务管理系统也十分完善,世界各地的学生可以坐在家里通过互联网完成入学报名、选题、考试、毕业论文、取得学位这一学习生活的全过程。目前,国际上已具规模的远程教育学校就有数百所之多,网上教育正在各地发挥着巨大的作用,为世界各国培养出大批人才。所有这些都表明,基于Internet的校园网的应用已深入到校园内的各个方面。

课题的可行性分析

课题调研

(1)与实践活动和相关的文件和资料由教师提供。

(2)本课题要求学生有较强的自学能力以及一定的关系数据库理论开发功底。

(3)具有对复杂表进行处理的能力。

(4)具体问题再做详细调查研究并与指导老师面谈。

可行性分析

鉴于系统是个小型系统,开发难度适中。通过对诸多开发工具和数据库进行比较及指导老师的建议,最终确定采用Eclipse作为前台开发工具、Tomcat作为系统测试工具、作为,系统设计语言为JSP。

Eclipse是一个开放源代码的、与NetBeans、Sun ONE Studio和Borland Jbuilder类似的一种基于Java的整合型可扩展开发平台,也是目前最著名的开源项目之一,其本身只是一个框架和一组服务,用于通过插件组件构建开发环境。Eclipse 附带了一个标准的插件集,包括 Java 开发工具(Java Development Tools,JDT)。其未来的目标不仅仅是成为专门开发Java程序的IDE环境,根据Eclipse的体系结构,通过开发插件,它能扩展到任何语言的开发,甚至能成为图片绘制的工具。

数据库引擎提供完整的XML支持。它还具有构成最大的 Web 站点的数据存储组件所需的可伸缩性、可用性和安全功能。关系数据库引擎支持当今苛刻的数据处理环境所需的功能。数据库引擎充分保护数据完整性,同时将管理上千并发修改数据库的用户的开销减到最小。同时分布式事务支持充分保护任何分布式数据更新的完整性。

JSP是在普通的Html中嵌入了Java代码的一个脚本,它由JSP容器(如Tomcat)首先将其转化为Servlet,然后再调用Javac将Servlet编译为Class文件,最终,服务器解释的是Class文件。JSP是Sun公司J2EE架构中重要的部分。Tomcat是一个免费的开源Servlet容器。基于Tomcat的开发其时主要是JSP和Servlet的开发,而Tomcat短小精悍,配置方便,能满足需求,因此在这种情况下选择Tomcat。同时,Tomcat和Eclipse结合起来实现本次毕业设计的要求。

根据用户的要求,系统采用B/S模式。B/S模式是三层体系结构,它将表示层、业务逻辑层层、数据服务层分布到不同的单元。表示层由浏览器和动态的Web页面构成,接收和处理用户的请求,并交给Web应用服务器。业务逻辑层对应于Web应用服务器,其业务逻辑处理过程使用数据源层的服务来得到必要的信息或存储、修改相应的数据。数据服务层对应于数据库服务器,数据库服务器实现对数据库的管理和库中数据的访问与增加、删除及修改。

毕业答辩过程管理依据开发要求主要应用于教育系统,完成对日常的教育工作中学生成绩档案的数字化管理。比较系统地对教务、教学上的各项服务和信息进行管理,使数据管理更现代化、自动化、智能化、人性化。同时,减轻了学院教务人员管理的工作量,缩小开支,提高工作效率和准确率,使其变得更具有条理性,科学性,为教育行业做出了巨大的贡献,也为今天的民办教育在未来市场的竞争力有所提高。

学生成绩管理系统使用了全新的成绩管理理念,系统从完善的基础信息管理,和对创建新用户、已创建的成绩数据的录入,修改,浏览,统计等功能操作,基本能够满足各高校教师的需要。1)毕业设计相关信息管理。毕业设计相关信息管理包括毕业设计相关信息数据的录入、修改与删除等功能。

(2)学生信息管理。学生信息管理包括学生信息的录入、修改与删除等功能。

(4)教师信息管理。管理员维护教师信息。

(3)选题信息管理。选题信息管理包括学生选题信息的人数统计查询详细名单功能。

(4)成绩信息管理。成绩信息管理包括各各学生各科成绩的录入、修改等功能。

(5)通知类信息管理。发布、浏览通知类信息。

(6)用户个人信息修改。

2.1 结构化分析





学生选题数据流图:





学生信息管理数据流图:



教师信息管理数据流图:





毕业设计相关信息管理数据流图:



系统用户管理数据流图:





学生查询可选题程数据流图:



学生查询已选题程数据流图:





2.2 功能需求描述

功能性需求 描述了系统与其独立于系统实现环境之间的交互。

(1)选题部分需求

学生用户

学生用户希望可以对于自己未选修的毕业设计相关进行选修操作,也可以进行取消选修操作,以便于更换毕业设计相关。

教师用户

教师用户希望可以查询自己所执教的毕业设计相关,也可以查询所有属于自己执教毕业设计相关下的学生信息,能方便的为学生评分。

管理员

管理员用户希望能够快速、方便查询到所有学生的选题信息。以及各毕业设计相关的选修人数及学生名单。

(2)基础功能部分





(3)界面操作部分

所有用户要求界面友好,功能易理解易操作。



2.3 非功能需求描述

非功能性需求描述了不直接关联到系统功能行为的系统的方方面面。非功能性需求包括用于系统不同方面的广大范围,涉及可用性到性能。

可用性

用户可以学会使用操作,提供系统帮助。

可靠性

系统对操作失败,能够检测错误给予用户提示。

实现需求

WINXP 以上操作系统10G硬盘 JAVAWEB服务器端。128M内存

界面需求

系统提供合法的系统交互格式。

数据库安全性

(1)通过对不同用户设置不同权限,保证数据库的安全。

(2)设计备份与恢复数据库模块,能更好的维护数据库。

数据库完整性

(1) 实体完整性 通过设置主键保证数据库实体完整性

(2) 参照完整性 通过设置外码保证数据库参照完整性

(3)用户定义完整性 通过CHECK约束保证用户自定义的完整性







三 关键技术介绍

.1 JSP技术

JSP是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态技术标准。在传统的网页HTML文件(.htm,.html)中加入Java程序片段(Scriptlet)和JSP标签,就构成了JSP网页java程序片段可以操纵数据库、重新定向网页以及发送E-mail等,实现建立动态网站所需要的功能。所有程序操作都在服务器端执行,网络上传送给客户端的仅是得到的结果,这样大大降低了对客户浏览器的要求,即使客户浏览器端不支Java,也可以访问JSP网页。

JSP全名为java server page,其根本是一个简化的Servlet设计,他实现了Html语法中的java扩张(以 <%, %>形式)。JSP与Servlet一样,是在服务器端执行的,通常返回给客户端的就是一个HTML文本,因此客户端只要有浏览器就能浏览。Web服务器在遇到访问JSP网页的请求时,首先执行其中的程序段,然后将执行结果连同JSP文件中的HTML代码一起返回给客户端。插入的Java程序段可以操作数据库、重新定向网页等,以实现建立动态网页所需要的功能。

JSP技术使用Java编程语言编写类XML的tags和scriptlets,来封装产生动态网页的处理逻辑。网页还能通过tags和scriptlets访问存在于服务端的资源的应用逻辑。JSP将网页逻辑与网页设计的显示分离,支持可重用的基于组件的设计,使基于Web的应用程序的开发变得迅速和容易。 JSP(JavaServer Pages)是一种动态页面技术,它的主要目的是将表示逻辑从Servlet中分离出来。 

JSP页面由HTML代码和嵌入其中的Java代码所组成。服务器在页面被客户端请求以后对这些Java代码进行处理,然后将生成的HTML页面返回给客户端的浏览器。Java Servlet是JSP的技术基础,而且大型的Web应用程序的开发需要Java Servlet和JSP配合才能完成。JSP具备了Java技术的简单易用,完全的面向对象,具有平台无关性且安全可靠,主要面向因特网的所有特点。

自JSP推出后,众多大公司都支持JSP技术的服务器,如IBM、Oracle、Bea公司等,所以JSP迅速成为商业应用的服务器端语言。

Servlet概述

Servlet是Java编写的服务器端程序,是由服务器端执行和调用的Java类。Servlet是采用Java技术来实现CGI功能的一种技术,能够像CGI一样动态地扩展Web服务器的功能,并采用请求——响应模式提供Web服务。Servlet和CGI一样都是运行在Web服务器上,用来生成Web页面。Servlet的主要功能在于交互式地浏览和修改数据,生成动态Web内容。其工作流程图如图2.1所示。

图2.1 Servlet工作流程图

Servlet工作流程:

(1)客户端发送请求信息至服务器。

(2)服务器将请求信息发送至Servlet。

(3)Servlet生成响应内容并将其传给Servlet。响应内容动态生成,通常取决于客户端的请求。

(4)服务器将响应信息返回至客户端。

3.3 JavaBean概述

JavaBean是Sun公司为了进入因特网、企业网以及万维网上进行分布式计算的组件结构入口。按照Sun公司的定义,JavaBean是一个可重复使用的软件部件。JavaBean体系结构是第一个全面地基于组件的标准模型之一,该组件是Java类,这些类遵循一个接口格式,以便于使方法命名、底层行为以及继承或实现的行为能够把类看做标准的JavaBean组件的方式进行构造[7]。

在Java模型中,通过JavaBean可以无限扩充Java程序的功能,通过JavaBean的组合可以快速生成新的应用程序。JavaBean具有以下特点:

(1)可以实现代码的重复利用。

(2)易维护性、易使用性、易编写性。

(3)可以在Java的任何平台上工作,不需要重新编译。

(4)可以在内部网或者网络之间进行传输。

(5)可以以其它部件的模式进行工作。

应用范围通常应用于服务器的部件,例如 JDBC 连接池、应用监视、用户计数和其他参与用户行为的类。

在Bean中限制HTML的产生:

理论上,JavaBean 将不会产生任何HTML,因为这是jsp层负责的工作;然而,为动态消息提供一些预先准备的格式是非常有用的。产生的HTML将被标注的 JavaBean方法返回。

这里有一些非常重要的事情:

1. 不要试图在JavaBean返回的HTML中放置任何字体尺寸。

并不是所有的浏览器都相同。很多浏览器无法处理完整的字体尺寸。

2. 不要试图在JavaBean返回的HTML中放置任何脚本或者DHTML。

向页面直接输出脚本或者DHTML相当于自我毁灭,因为某些浏览器版本在处理不正确的脚本时会崩溃(非常少但是有)。如果用户的JavaBean在运行时是动态的推出复杂的HTML语言,用户将陷入调试的噩梦。另外,复杂的HTML将限制JavaBean的寿命和灵活性。

3. 不要提供任何的选择。

如果用户使用不同的系统浏览页面,可以提供一种可以替换的方法。

按着Sun公司的定义,JavaBean是一个可重复使用的软件组件。实际上JavaBean是一种Java类,通过封装属性和方法成为具有某种功能或者处理某个业务的对象,简称bean。由于javabean是基于java语言的,因此javabean不依赖平台,具有以下特点:

1. 可以实现代码的重复利用

2. 易编写、易维护、易使用

3. 可以在任何安装了Java运行环境的平台上的使用,而不需要重新编译。

编写javabean就是编写一个java的类,所以你只要会写类就能编写一个bean,这个类创建的一个对象称做一个bean。为了能让使用这个bean的应用程序构建工具(比如JSP引擎)知道这个bean的属性和方法,只需在类的方法命名上遵守以下规则:

1. 如果类的成员变量的名字是xxx,那么为了更改或获取成员变量的值,即更改或获取属性,在类中可以使用两个方法:

getXxx(),用来获取属性xxx。

setXxx(),用来修改属性xxx.。

2. 对于boolean类型的成员变量,即布尔逻辑类型的属性,允许使用"is"代替上面的"get"和"set"。

3. 类中方法的访问属性都必须是public的。

4. 类中如果有构造方法,那么这个构造方法也是public的并且是无参数的



JavaBeanJSP程序中常用来封装事务逻辑、数据库操作等,可以很好的实现业务逻辑和前台程序的分离,使得系统具有更好的健壮性和灵活性。

3.4 SQL Server 2005

SQL Server 2005 是Microsoft 酒店推出的SQL Server 数据库网站的最新版本。它的特性包括:

1.Internet 集成。SQL Server 2005 数据库引擎提供完整的XML 支持。它还具有构成最大的Web 站点的数据存储组件所需的可伸缩性、可用性和安全功能。SQL Server 2005 程序设计模型与 Windows DNA 构架集成,用以开发 Web 应用程序,并且SQL Server 2005 支持 English Query 和 Microsoft 搜索服务等功能,在Web 应用程序中包含了用户友好的查询和强大的搜索功能。

2.可伸缩性和可用性。同一个数据库引擎可以在不同的平台上使用,从运行 Microsoft Windows® 98 的便携式电脑,到运行 Microsoft Windows 2005 数据中心版的大型多处理器服务器。SQL Server 2005 企业版支持联合服务器、索引视图和大型内存支持等功能,使其得以升级到最大 Web 站点所需的性能级别。

3.企业级数据库功能。SQL Server 2005 关系数据库引擎支持当今苛刻的数据处理环境所需的功能。数据库引擎充分保护数据完整性,同时将管理上千个并发修改数据库的用户的开销减到最小。SQL Server 2005 分布式查询使您得以引用来自不同数据源的数据,就好象这些数据是 SQL Server 2005 数据库的一部分,同时分布式事务支持充分保护任何分布式数据更新的完整性。复制同样使您得以维护多个数据复本,同时确保单独的数据复本保持同步。可将一组数据复制到多个移动的脱接用户,使这些用户自主地工作,然后将他们所做的修改合并回发布服务器。

4.易于安装、部署和使用。 SQL Server 2005 中包括一系列管理和开发工具,这些工具可改进在多个站点上安装、部署、管理和使用 SQL Server 的过程。SQL Server 2005 还支持基于标准的、与 Windows DNA 集成的程序设计模型,使 SQL Server 数据库和数据仓库的使用成为生成强大的可伸缩系统的无缝部分。这些功能使您得以快速交付 SQL Server 应用程序,使客户只需最少的安装和管理开销即可实现这些应用程序。

数据仓库。 SQL Server 2005 中包括析取和分析汇总数据以进行联机分析处理 (OLAP) 的工具。SQL Server 中还包括一些工具,可用来直观地设计数据库并通过 English Query 来分析数据。

.5 Java语言

Java是一种简单的,面象对象的,分布式的,解释的,健壮的安全的,结构的中立的,可移植的,性能很优异的多线程的,动态的语言。它有以下特点:

1. 平台无关性

平台无关性是指Java能运行于不同的平台。Java引进虚拟机 原理,并运行于虚拟机,实现不同平台的Java接口之间。使 用Java编写的程序能在世界范围内共享。Java的数据类型与 机器无关,Java虚拟机(Java Virtual Machine)是建立在 硬件和操作系统之上,实现Java二进制代码的解释执行功能, 提供于不同平台的接口的。

2. 安全性

Java的编程类似C++,学习过C++的读者将很快掌握Java的精 髓。Java舍弃了C++的指针对存储器地址的直接操作,程序 运行时,内存由操作系统分配,这样可以避免病毒通过指 针侵入系统。Java对程序提供了安全管理器,防止程序的 非法访问。

3. 面向对象

Java 吸取了C++面向对象的概念,将数据封装于类中,利用类 的优点,实现了程序的简洁性和便于维护性。类的封装性、 继承性等有关对象的特性,使程序代码只需一次编译,然后 通过上述特性反复利用。程序员只需把主要精力用在类和接 口的设计和应用上。Java 提供了众多的一般对象的类,通 过继承即可使用父类的方法。在 Java 中,类的继承关系是单一的非多重的,一个子类 只有一个父类,子类的父类又有一个父类。Java 提供的 Object 类及其子类的继承关系如同一棵倒立的树形,根类 为 Object 类, Object 类功能强大,经常会使用到它及其 它派生的子类。

4. 分布式

Java建立在扩展TCP/IP网络平台上。库函数提供了用HTTP和FTP协议传送和接受信息的方法。这使得程序员使用网络上的文件和使用本机文件一样容易。

5. 键壮性

Java致力于检查程序在编译和运行时的错误。类型检查帮助检查出许多开发早期出现的错误。Java自己操纵内存减少了内存出错的可能性。Java还实现了真数组,避免了覆盖数据的可能。这些功能特征大大提高了开发Java应用程序的周期。Java提供: Null指针检测、 数组边界检测、 异常出口、 Byte code校验。

.6 系统开发模式

本系统采用B/S结构。

B/S结构即浏览器和服务器结构。它是随着Internet技术的兴起,对C/S结构的一种变化或者改进的结构。在这种结构下,用户工作界面是通过WWW浏览器来实现,极少部分事务逻辑在前端(Browser)实现,但是主要事务逻辑在服务器端(Server)实现,形成所谓三层3-tier结构。这样就大大简化了客户端电脑载荷,减轻了系统维护与升级的成本和工作量,降低了用户的总体成本(TCO)。以目前的技术看,局域网建立B/S结构的网络应用,并通过Internet/Intranet模式下数据库应用,相对易于把握、成本也是较低的。它是一次性到位的开发,能实现不同的人员,从不同的地点,以不同的接入方式(比如LAN, WAN, Internet/Intranet等)访问和操作共同的数据库;它能有效地保护数据平台和管理访问权限,服务器数据库也很安全。在JAVA这样的跨平台语言出现之后,B/S架构管理软件更是方便、快捷、高效。

C/S 与 B/S 区别:Client/Server是建立在局域网的基础上的.Browser/Server是建立在广域网的基础上的。1.硬件环境不同:C/S 一般建立在专用的学校上, 小范围里的学校环境,局域网之间再通过专门服务器提供连接和数据交换服务.B/S 建立在广域网之上的, 不必是专门的学校硬件环境,例与电话上网, 租用设备,信息自己管理,有比C/S更强的适应范围,一般只要有操作系统和浏览器就行 2.对安全要求不同 C/S 一般面向相对固定的用户群,对信息安全的控制能力很强,一般高度机密的信息系统采用C/S 结构适宜. 可以通过B/S发布部分可公开信息.B/S 建立在广域网之上,对安全的控制能力相对弱,面向是不可知的用户群. 3.对程序架构不同 C/S 程序可以更加注重流程,可以对权限多层次校验,对系统运行速度可以较少考虑.B/S 对安全以及访问速度的多重的考虑, 建立在需要更加优化的基础之上. 比C/S有更高的要求B/S结构的程序架构是发展的趋势, 从MS的.Net系列的BizTalk 2005 Exchange 2005等, 全面支持学校的构件搭建的系统. SUN 和IBM推的JavaBean 构件技术等,使 B/S更加成熟. 4.系统重用不同 C/S 程序可以不可避免的整体性考虑, 构件的重用性不如在B/S要求下的构件的重用性好.B/S 对的多重结构,要求构件相对独立的功能. 能够相对较好的重用.就入买来的餐桌可以再利用,而不是做在墙上的石头桌子 5.系统维护不同 系统维护是系统生存周期中,开销大, -------重要C/S 程序由于整体性, 必须整体考察, 处理出现的问题以及系统升级. 升级难. 可能是再做一个全新的系统B/S 构件组成,方面构件个别的更换,实现系统的无缝升级. 系统维护开销减到最小.用户从网上自己下载安装就可以实现升级. 6.处理问题不同 C/S 程序可以处理用户面固定, 并且在相同区域, 安全要求高需求, 与操作系统相关. 应该都是相同的系统B/S 建立在广域网上, 面向不同的用户群, 分散地域, 这是C/S无法作到的. 与操作系统平台关系最小7.用户接口不同 C/S 多是建立的Window平台上,表现方法有限,对程序员普遍要求较高B/S 建立在浏览器上,有更加丰富和生动的表现方式与用户交流。并且大部分难度减低,减低开发。8.信息流不同C/S 程序一般是典型的中央集权的机械式处理, 交互性相对低B/S 信息流向可变化, B-B B-C B-G等信息、流向的变化,更像交易中心。

管理软件是为企业服务的,企业选用管理软件不仅要从技术上考虑,还要从商业运用方面来考虑,下文将从商业运用的角度对两种结构的软件进行比较。

1,投入成本比较。B/S结构软件一般只有初期一次性投入成本。对于集团来讲,有利于软件项目控制和避免IT黑洞,而C/S结构的软件则不同,随着应用范围的扩大,投资会连绵不绝。

2,硬件投资保护比较。在对已有硬件投资的保护方面,两种结构也是完全不同的。当应用范围扩大,系统负载上升时,C/S结构软件的一般解决方案是购买更高级的中央服务器,原服务器放弃不用,这是由于C/S软件的两层结构造成的,这类软件的服务器程序必须部署在一台计算机上;而B/S结构(如e通管理系列)则不同,随着服务器负载的增加,可以平滑地增加服务器的个数并建立集群服务器系统,然后在各个服务器之间做负载均衡。有效地保护了原有硬件投资。

3,企业快速扩张支持上的比较。对于成长中的企业,快速扩张是它的显著特点。每年都有新的配送中心成立,每月都有新的门店开张。应用软件的快速部署,是企业快速扩张的必要保障。对于C/S结构的软件来讲,由于必须同时安装服务器和客户端、建设机房、招聘专业管理人员等,所以无法适应企业快速扩张的特点。而B/S结构软件,只需一次安装,以后只需设立账号、培训即可。

其次,随着软件应用的扩张,对系统维护人才的需求有可能成为企业快速扩张的制约瓶颈。如果企业开店上百家,对计算机专业人才的需求就将是企业面临的巨大挑战之一。

抛开人力成本不说,一个企业要招到这么多的专业人才并且留住他们也是不可能的。所以,采用C/S结构软件必然会制约企业未来的发展。另外,大多数C/S结构的软件都是通过ODBC直接连到数据库的,安全性差不说,其用户数也是受限的。每个连到数据库的用户都会保持一个ODBC连接,都会一直占用中央服务器的资源,对中央服务器的要求非常高,使得用户扩充受到极大的限制。而B/S结构软件则不同,所有的用户都是通过一个JDBC连接缓冲池连接到数据库的,用户并不保持对数据库的连接,用户数基本上是无限的。

从以上的分析可以看出,B/S结构的管理软件和C/S结构软件各有各的的优势。而从国外的发展趋势来看。目前,国外大型企业管理软件要么已经是B/S结构的,要么正在经历从C/S到B/S结构的转变。从国内诸多软件厂商积极投入开发B/S结构软件的趋势来看,B/S结构的大型管理软件可能在将来的几年内占据管理软件领域的主导地位。





由上图可以清楚的看到各角色的功能模块

模块功能设计

管理员:论文题目审核,答辩资格审核意见,成绩管理,系统用户管理,修改个人信息,修改登录密码

教师用户:论文选题审核、开题报告审核,中期报告审核,进度记录回复,答辩资格审核,论文审核,成绩管理,修改个人信息,修改登录密码

学生用户:论文题目提交、论文选题、开题报告提交,中期报告提交,进度记录,答辩资格查看,论文提交,修改个人密码,修改登录密码等功能

秘书:论文题目提交,学生管理,成绩报表导出,修改个人信息,修改登录密码





五 数据库设计



概念设计(E-R图)

系统各实体间关系图:







逻辑结构

逻辑结构设计阶段完成的任务是概念模型向某种数据模型的转换。设计逻辑结

构应该选择最适用于表达相应概念结构的数据模型。设计逻辑结构时,一般需要将

概念结构转换为一般的关系、网状、层次模型,再将转化来关系、网状、层次模型

向特定DBMS支持下的数据模型转换,并对数据模型进行优化。

关系模型的逻辑结构是一组关系模式的集合,而E—R图则由实体、实体的属性

和实体之间的联系三要素组成。将E.R图转换为关系模型实际上就是将实体,实体

属性和实体之间的联系转换为关系模式。

转换过程中常见规则有:

(1)一个实体型转换为一个关系模式;

(2)一个一对一的联系可转换成一个独立的关系模式,也可与任意一端对应的关系模式合并;

(3)一个一对多的联系可以转换成一个独立的关系模式,也可与多的那一端对应的关系模式合并;

(4)一个多对多的关系转换成一个关系模式。

本系统数据库的功能主要是存储平台中所有数据,以便进行操作。

本系统数据库采用SQLSERVER2005数据库,系统数据库名称为xsgl,共包含4张表。关于数据库中的数据表如下:

(1)jdjl(进度记录)

用于存储进度相关数据信息,表jdjl的结构如表所示。

表 表kc的结构

字段名 数据类型 长度 是否主键 描述 ID int 50 是 序号 uname varchar 500 否 学生 lwtm varchar 500 否 论文题目 jldate varchar 500 否 日期 jdcontent varchar 500 否 内容 probei varchar 500 否 问题说明 recontent varchar 500 否 老师回复 (2)luanwt()

luanwt的结构如表所示。

表 表luanwt的结构

字段名 数据类型 长度 描述 ID title varchar 500 否 标题 bei varchar 500 否 说明 docname varchar 500 否 任务书 kxnum varchar 500 否 可选人数 status varchar 500 否 审核状态 saver varchar 500 否 老师 savetime varchar 500 否 上传时间 (3)stuxt()

表stuxt。

表 表student的结构

字段名 数据类型 长度 描述 id int 是 序号 uname varchar 500 否 学生 lwtm varchar 500 否 论文题目 shstatus varchar 500 否 选题审核状态 docname varchar 500 否 开题报告 ktbgstatus varchar 500 否 开题报告审核状态 ktbgbei varchar 500 否 开题报告修改意见 docname2 varchar 500 否 中期报告 zqbgstatus varchar 500 否 中期报告审核状态 zqbgbei varchar 500 否 中期报告修改意见 dbzgstatus varchar 500 否 答辩资格审核状态 dbzgbei varchar 500 否 答辩资格意见 docname3 varchar 500 否 论文 lwshstatus varchar 500 否 论文审核状态 lwshbei varchar 500 否 论文修改意见 cj varchar 500 否 成绩 lspy varchar 500 否 老师意见 dbzpy varchar 500 否 答辩组意见 (4)sysuser()



表 表字段名 数据类型 长度 描述 id int 是 序号 uname varchar 500 否 用户名 upass varchar 500 否 密码 utype varchar 500 否 用户类别 yuanxi varchar 500 否 院系 tname varchar 500 否 姓名 sex varchar 500 否 性别 tel varchar 500 否 电话 email varchar 500 否 Email addrs varchar 500 否 地址 filename varchar 500 否 相片 savetime varchar 500 否 保存时间 六 详细设计

后台管理

通过http: http://localhost:9999/bysjssgl/admin/index.jsp,进入如图5.2 所示的后台登录界面。



图为 后台管理

在“用户名”和“密码”的文本框中输入用户名:admin 密码:123,最后单击【登录】按钮,即可进入如图5.3所示的后台管理页面。后台管理页面主要包括:论文题目审核、答辩资格审核意见、成绩管理,系统用户管理,个人信息配置五大管理模块。



图为 后天管理界面

1.论文题目审核

单击【论文题目审核】按钮,界面右侧自动显示相应的线路列表。该界面可以实现论文题目审核查询。



主要代码如下:

<%

String ptitle = request.getParameter("title")==null?"":request.getParameter("title");

String starttitle = request.getParameter("starttitle")==null?"":request.getParameter("starttitle");

String endtitle = request.getParameter("endtitle")==null?"":request.getParameter("endtitle");

String psaver = request.getParameter("saver")==null?"":request.getParameter("saver");

String startsaver = request.getParameter("startsaver")==null?"":request.getParameter("startsaver");

String endsaver = request.getParameter("endsaver")==null?"":request.getParameter("endsaver");

%>



<%

HashMap mmm = new HashMap();%>

  论文题目  :       

  提交人  :       

         


















信息列表  



cellspacing="0" style="WIDTH: 100%; BORDER-COLLAPSE: collapse">


onmouseover="currentcolor=this.style.backgroundColor;this.style.backgroundColor=''#f0f7ff''"

onmouseout="this.style.backgroundColor=currentcolor">























<%

new CommDAO().delete(request,"luanwt");

if(request.getParameter("titleid1")!=null){

new CommDAO().commOper("update luanwt set title ='''' where id="+request.getParameter("titleid1"));

}

if(request.getParameter("titleid2")!=null){

new CommDAO().commOper("update luanwt set title ='''' where id="+request.getParameter("titleid2"));

}

String sql = "select from luanwt where 1=1 " ;

if(!ptitle.equals("")){

sql+= " and title like''%"+ptitle+"%'' " ;

}

if(!starttitle.equals("")){

mmm.put("starttitle",starttitle) ;

sql+= " and title >''"+starttitle+"'' " ;

}

if(!endtitle.equals("")){

mmm.put("endtitle",endtitle) ;

sql+= " and title <''"+Info.getDay(endtitle,1)+"'' " ;

}

if(!psaver.equals("")){

sql+= " and saver like''%"+psaver+"%'' " ;

}

if(!startsaver.equals("")){

mmm.put("startsaver",startsaver) ;

sql+= " and saver >''"+startsaver+"'' " ;

}

if(!endsaver.equals("")){

mmm.put("endsaver",endsaver) ;

sql+= " and saver <''"+Info.getDay(endsaver,1)+"'' " ;

}

sql +=" and (1!=1 " ;

sql +=" or status like''%%'' " ;

sql +=" ) ";

sql +=" order by id desc ";

String url = "shluanwtcx.jsp?1=1&title="+ptitle+"&saver="+psaver+"";

ArrayList list = PageManager.getPages(url,5, sql, request );

for(HashMap map:list){ %>


onmouseover="currentcolor=this.style.backgroundColor;this.style.backgroundColor=''#f0f7ff''"

onmouseout="this.style.backgroundColor=currentcolor">



















<%}%>

2. 答辩资格审核意见

单击【答辩资格审核意见】按钮,界面右侧自动显示相应的列表。该界面可以实现答辩资格审核意见的查询修改。



主要代码如下:

<%

String puname = request.getParameter("uname")==null?"":request.getParameter("uname");

String startuname = request.getParameter("startuname")==null?"":request.getParameter("startuname");

String enduname = request.getParameter("enduname")==null?"":request.getParameter("enduname");

String plwtm = request.getParameter("lwtm")==null?"":request.getParameter("lwtm");

String startlwtm = request.getParameter("startlwtm")==null?"":request.getParameter("startlwtm");

String endlwtm = request.getParameter("endlwtm")==null?"":request.getParameter("endlwtm");

%>



<%

HashMap mmm = new HashMap();%>

   学生  :       

  论文题目  :       

         




论文题目任务书可选人数审核状态提交人提交时间操作
<%=map.get("title")%> " title=''点击可以下载''><%=map.get("docname")%> <%=map.get("kxnum")%> <%=map.get("status")%> <%=map.get("saver")%> <%=map.get("savetime")%>



<%

if(map.get("status").equals("待审核")){

%>

'')">审核

<%} %>





















信息列表  



cellspacing="0" style="WIDTH: 100%; BORDER-COLLAPSE: collapse">


onmouseover="currentcolor=this.style.backgroundColor;this.style.backgroundColor=''#f0f7ff''"

onmouseout="this.style.backgroundColor=currentcolor">



























<%

new CommDAO().delete(request,"stuxt");

if(request.getParameter("unameid1")!=null){

new CommDAO().commOper("update stuxt set uname ='''' where id="+request.getParameter("unameid1"));

}

if(request.getParameter("unameid2")!=null){

new CommDAO().commOper("update stuxt set uname ='''' where id="+request.getParameter("unameid2"));

}

String sql = "select from stuxt where 1=1 " ;

if(!puname.equals("")){

sql+= " and uname like''%"+puname+"%'' " ;

}

if(!startuname.equals("")){

mmm.put("startuname",startuname) ;

sql+= " and uname >''"+startuname+"'' " ;

}

if(!enduname.equals("")){

mmm.put("enduname",enduname) ;

sql+= " and uname <''"+Info.getDay(enduname,1)+"'' " ;

}

if(!plwtm.equals("")){

sql+= " and lwtm like''%"+plwtm+"%'' " ;

}

if(!startlwtm.equals("")){

mmm.put("startlwtm",startlwtm) ;

sql+= " and lwtm >''"+startlwtm+"'' " ;

}

if(!endlwtm.equals("")){

mmm.put("endlwtm",endlwtm) ;

sql+= " and lwtm <''"+Info.getDay(endlwtm,1)+"'' " ;

}

sql +=" and (1!=1 " ;

sql +=" or lwtm like''%%'' " ;

sql +=" ) ";

sql +=" order by id desc ";

String url = "zgshstuxtcxyj.jsp?1=1&uname="+puname+"&lwtm="+plwtm+"";

ArrayList list = PageManager.getPages(url,5, sql, request );

for(HashMap map:list){ %>


onmouseover="currentcolor=this.style.backgroundColor;this.style.backgroundColor=''#f0f7ff''"

onmouseout="this.style.backgroundColor=currentcolor">























<%}%>

3.成绩管理

单击【成绩管理】按钮,界面右侧自动显示相应的列表。该界面可以实现成绩管理的查询,修改。



主要代码如下:

<%

String puname = request.getParameter("uname")==null?"":request.getParameter("uname");

String startuname = request.getParameter("startuname")==null?"":request.getParameter("startuname");

String enduname = request.getParameter("enduname")==null?"":request.getParameter("enduname");

String plwtm = request.getParameter("lwtm")==null?"":request.getParameter("lwtm");

String startlwtm = request.getParameter("startlwtm")==null?"":request.getParameter("startlwtm");

String endlwtm = request.getParameter("endlwtm")==null?"":request.getParameter("endlwtm");

%>



<%

HashMap mmm = new HashMap();%>

  学生  :       

  论文题目  :       

         




学生论文题目开题报告开题审核状态中期报告中期报告审核状态资格审核状态资格审核意见操作
<%=map.get("uname")%> <%=map.get("lwtm")%> " title=''点击可以下载''>点击下载 <%=map.get("ktbgstatus")%> " title=''点击可以下载''>点击下载 <%=map.get("zqbgstatus")%> <%=map.get("dbzgstatus")%> <%=map.get("dbzgbei")%> '')">审批意见


















信息列表  



cellspacing="0" style="WIDTH: 100%; BORDER-COLLAPSE: collapse">


onmouseover="currentcolor=this.style.backgroundColor;this.style.backgroundColor=''#f0f7ff''"

onmouseout="this.style.backgroundColor=currentcolor">























<%

new CommDAO().delete(request,"stuxt");

if(request.getParameter("unameid1")!=null){

new CommDAO().commOper("update stuxt set uname ='''' where id="+request.getParameter("unameid1"));

}

if(request.getParameter("unameid2")!=null){

new CommDAO().commOper("update stuxt set uname ='''' where id="+request.getParameter("unameid2"));

}

String sql = "select from stuxt where 1=1 " ;

if(!puname.equals("")){

sql+= " and uname like''%"+puname+"%'' " ;

}

if(!startuname.equals("")){

mmm.put("startuname",startuname) ;

sql+= " and uname >''"+startuname+"'' " ;

}

if(!enduname.equals("")){

mmm.put("enduname",enduname) ;

sql+= " and uname <''"+Info.getDay(enduname,1)+"'' " ;

}

if(!plwtm.equals("")){

sql+= " and lwtm like''%"+plwtm+"%'' " ;

}

if(!startlwtm.equals("")){

mmm.put("startlwtm",startlwtm) ;

sql+= " and lwtm >''"+startlwtm+"'' " ;

}

if(!endlwtm.equals("")){

mmm.put("endlwtm",endlwtm) ;

sql+= " and lwtm <''"+Info.getDay(endlwtm,1)+"'' " ;

}

sql +=" order by id desc ";

String url = "wyhcjgl.jsp?1=1&uname="+puname+"&lwtm="+plwtm+"";

ArrayList list = PageManager.getPages(url,5, sql, request );

for(HashMap map:list){ %>


onmouseover="currentcolor=this.style.backgroundColor;this.style.backgroundColor=''#f0f7ff''"

onmouseout="this.style.backgroundColor=currentcolor">



















<%}%>

4.修改个人信息

单击【修改个人信息】按钮,界面右侧自动显示相应的列表。



主要代码如下:

<%

new CommDAO().delete(request,"sysuser");

String id = Info.getUser(request).get("id").toString();

String erjitype = request.getParameter("erjitype");

String myztree = request.getParameter("myztree");

HashMap ext = new HashMap();

new CommDAO().update(request,response,"sysuser",ext,true,true);

HashMap mmm = new CommDAO().getmap(id,"sysuser");

%>



" name="f1" method="post" onsubmit="return checkform()" >

学生论文题目论文是否通过成绩老师评语委员会评语操作
<%=map.get("uname")%> <%=map.get("lwtm")%> <%=map.get("lwshstatus")%> <%=map.get("cj")%> <%=map.get("lspy")%> <%=map.get("dbzpy")%> '')">填写成绩


































相关信息  



cellspacing="0" rules="all" style="WIDTH: 100%; BORDER-COLLAPSE: collapse">


onmouseover="currentcolor=this.style.backgroundColor;this.style.backgroundColor=''#f0f7ff''"

onmouseout="this.style.backgroundColor=currentcolor">










onmouseover="currentcolor=this.style.backgroundColor;this.style.backgroundColor=''#f0f7ff''"

onmouseout="this.style.backgroundColor=currentcolor">










onmouseover="currentcolor=this.style.backgroundColor;this.style.backgroundColor=''#f0f7ff''"

onmouseout="this.style.backgroundColor=currentcolor">










onmouseover="currentcolor=this.style.backgroundColor;this.style.backgroundColor=''#f0f7ff''"

onmouseout="this.style.backgroundColor=currentcolor">










onmouseover="currentcolor=this.style.backgroundColor;this.style.backgroundColor=''#f0f7ff''"

onmouseout="this.style.backgroundColor=currentcolor">










onmouseover="currentcolor=this.style.backgroundColor;this.style.backgroundColor=''#f0f7ff''"

onmouseout="this.style.backgroundColor=currentcolor">










onmouseover="currentcolor=this.style.backgroundColor;this.style.backgroundColor=''#f0f7ff''"

onmouseout="this.style.backgroundColor=currentcolor">










onmouseover="currentcolor=this.style.backgroundColor;this.style.backgroundColor=''#f0f7ff''"

onmouseout="this.style.backgroundColor=currentcolor">










onmouseover="currentcolor=this.style.backgroundColor;this.style.backgroundColor=''#f0f7ff''"

onmouseout="this.style.backgroundColor=currentcolor">














onmouseover="currentcolor=this.style.backgroundColor;this.style.backgroundColor=''#f0f7ff''"

onmouseout="this.style.backgroundColor=currentcolor">







用户名

<%=mmm.get("uname")%>
用户类别

<%=mmm.get("utype")%>
院系

<%=mmm.get("yuanxi")%>
姓名

性别







电话

邮箱

联系地址

相片

<%=Info.getImgUpInfo(65)%>






修改登录密码

单击【修改登录密码】按钮,界面右侧自动显示相应列表。



主要代码如下:

<%

String suc = (String)request.getAttribute("suc");

if(suc!=null)

{

%>



<%

}

%>

<%

CommDAO dao = new CommDAO();

HashMap u = (HashMap)session.getAttribute("admin");

String id = (String)u.get("id");



u = (HashMap)dao.select("select from sysuser where id="+id).get(0);

dao.close();

%>









































相关信息  



cellspacing="0" rules="all" style="WIDTH: 100%; BORDER-COLLAPSE: collapse">


onmouseover="currentcolor=this.style.backgroundColor;this.style.backgroundColor=''#f0f7ff''"

onmouseout="this.style.backgroundColor=currentcolor">










onmouseover="currentcolor=this.style.backgroundColor;this.style.backgroundColor=''#f0f7ff''"

onmouseout="this.style.backgroundColor=currentcolor">








onmouseover="currentcolor=this.style.backgroundColor;this.style.backgroundColor=''#f0f7ff''"

onmouseout="this.style.backgroundColor=currentcolor">


















onmouseover="currentcolor=this.style.backgroundColor;this.style.backgroundColor=''#f0f7ff''"

onmouseout="this.style.backgroundColor=currentcolor">





用户名
新密码
再次输入新密码






在“用户名”和“密码”的文本框中输入用户名:teacher01 密码:123,最后单击【登录】按钮,即可进入后台管理页面。后台管理页面主要包括:论文选题审核、开题报告审核、中期报告审核,进度记录回复,答辩资格审核,论文审核,成绩管理七大管理模块。



后台管理界面

论文选题审核

单击【论文选题审核】按钮,界面右侧自动显示相应列表。该界面可以实现论文选题审核的查询,通过,拒绝等功能。



主要代码如下:

<%

String puname = request.getParameter("uname")==null?"":request.getParameter("uname");

String startuname = request.getParameter("startuname")==null?"":request.getParameter("startuname");

String enduname = request.getParameter("enduname")==null?"":request.getParameter("enduname");

String plwtm = request.getParameter("lwtm")==null?"":request.getParameter("lwtm");

String startlwtm = request.getParameter("startlwtm")==null?"":request.getParameter("startlwtm");

String endlwtm = request.getParameter("endlwtm")==null?"":request.getParameter("endlwtm");

%>



<%

HashMap mmm = new HashMap();%>

  申请人  :       

  论文题  :       

      






















信息列表  



cellspacing="0" style="WIDTH: 100%; BORDER-COLLAPSE: collapse">


onmouseover="currentcolor=this.style.backgroundColor;this.style.backgroundColor=''#f0f7ff''"

onmouseout="this.style.backgroundColor=currentcolor">

















<%

new CommDAO().delete(request,"stuxt");

if(request.getParameter("shstatusid1")!=null){

new CommDAO().commOper("update stuxt set shstatus =''已通过'' where id="+request.getParameter("shstatusid1"));

}

if(request.getParameter("shstatusid2")!=null){

new CommDAO().commOper("delete from stuxt where id="+request.getParameter("shstatusid2"));

}

String sql = "select from stuxt where 1=1 " ;

if(!puname.equals("")){

sql+= " and uname like''%"+puname+"%'' " ;

}

if(!startuname.equals("")){

mmm.put("startuname",startuname) ;

sql+= " and uname >''"+startuname+"'' " ;

}

if(!enduname.equals("")){

mmm.put("enduname",enduname) ;

sql+= " and uname <''"+Info.getDay(enduname,1)+"'' " ;

}

if(!plwtm.equals("")){

sql+= " and lwtm like''%"+plwtm+"%'' " ;

}

if(!startlwtm.equals("")){

mmm.put("startlwtm",startlwtm) ;

sql+= " and lwtm >''"+startlwtm+"'' " ;

}

if(!endlwtm.equals("")){

mmm.put("endlwtm",endlwtm) ;

sql+= " and lwtm <''"+Info.getDay(endlwtm,1)+"'' " ;

}

sql +=" and (1!=1 " ;

sql +=" or lwtm in(select title from luanwt where saver=''"+Info.getUser(request).get("uname")+"'') " ;

sql +=" ) ";

sql +=" order by id desc ";

String url = "luanwtxtsh.jsp?1=1&uname="+puname+"&lwtm="+plwtm+"";

ArrayList list = PageManager.getPages(url,5, sql, request );

for(HashMap map:list){ %>


onmouseover="currentcolor=this.style.backgroundColor;this.style.backgroundColor=''#f0f7ff''"

onmouseout="this.style.backgroundColor=currentcolor">













<%}%>



开题报告审核

单击【开题报告审核】按钮,界面右侧自动显示相应的列表。



主要代码如下:

<%

String puname = request.getParameter("uname")==null?"":request.getParameter("uname");

String startuname = request.getParameter("startuname")==null?"":request.getParameter("startuname");

String enduname = request.getParameter("enduname")==null?"":request.getParameter("enduname");

String plwtm = request.getParameter("lwtm")==null?"":request.getParameter("lwtm");

String startlwtm = request.getParameter("startlwtm")==null?"":request.getParameter("startlwtm");

String endlwtm = request.getParameter("endlwtm")==null?"":request.getParameter("endlwtm");

%>



<%

HashMap mmm = new HashMap();%>

  提交人  :       

  论文题目  :       

         




申请人论文题申请状态操作
<%=map.get("uname")%> <%=map.get("lwtm")%> <%=map.get("shstatus")%> ">通过  |  ">拒绝






















信息列表  



cellspacing="0" style="WIDTH: 100%; BORDER-COLLAPSE: collapse">


onmouseover="currentcolor=this.style.backgroundColor;this.style.backgroundColor=''#f0f7ff''"

onmouseout="this.style.backgroundColor=currentcolor">





















<%

new CommDAO().delete(request,"stuxt");

if(request.getParameter("unameid1")!=null){

new CommDAO().commOper("update stuxt set uname ='''' where id="+request.getParameter("unameid1"));

}

if(request.getParameter("unameid2")!=null){

new CommDAO().commOper("update stuxt set uname ='''' where id="+request.getParameter("unameid2"));

}

String sql = "select from stuxt where docname!='''' and docname is not null and lwtm in(select title from luanwt where saver=''"+Info.getUser(request).get("uname")+"'') " ;

if(!puname.equals("")){

sql+= " and uname like''%"+puname+"%'' " ;

}

if(!startuname.equals("")){

mmm.put("startuname",startuname) ;

sql+= " and uname >''"+startuname+"'' " ;

}

if(!enduname.equals("")){

mmm.put("enduname",enduname) ;

sql+= " and uname <''"+Info.getDay(enduname,1)+"'' " ;

}

if(!plwtm.equals("")){

sql+= " and lwtm like''%"+plwtm+"%'' " ;

}

if(!startlwtm.equals("")){

mmm.put("startlwtm",startlwtm) ;

sql+= " and lwtm >''"+startlwtm+"'' " ;

}

if(!endlwtm.equals("")){

mmm.put("endlwtm",endlwtm) ;

sql+= " and lwtm <''"+Info.getDay(endlwtm,1)+"'' " ;

}

sql +=" and (1!=1 " ;

sql +=" or shstatus like''%已通过%'' " ;

sql +=" ) ";

sql +=" order by id desc ";

String url = "ktstuxtcx.jsp?1=1&uname="+puname+"&lwtm="+plwtm+"";

ArrayList list = PageManager.getPages(url,5, sql, request );

for(HashMap map:list){ %>


onmouseover="currentcolor=this.style.backgroundColor;this.style.backgroundColor=''#f0f7ff''"

onmouseout="this.style.backgroundColor=currentcolor">

















<%}%>

中期报告审核

单击【中期报告审核】按钮,界面右侧自动显示相应列表。



主要代码如下:

<%

String puname = request.getParameter("uname")==null?"":request.getParameter("uname");

String startuname = request.getParameter("startuname")==null?"":request.getParameter("startuname");

String enduname = request.getParameter("enduname")==null?"":request.getParameter("enduname");

String plwtm = request.getParameter("lwtm")==null?"":request.getParameter("lwtm");

String startlwtm = request.getParameter("startlwtm")==null?"":request.getParameter("startlwtm");

String endlwtm = request.getParameter("endlwtm")==null?"":request.getParameter("endlwtm");

%>



<%

HashMap mmm = new HashMap();%>

  提交人  :       

  论文题目  :       

         




提交人论文题目开题报告审核状态修改意见操作
<%=map.get("uname")%> <%=map.get("lwtm")%> " title=''点击可以下载''><%=map.get("docname")%> <%=map.get("ktbgstatus")%> <%=map.get("ktbgbei")%>



<%

if(!map.get("ktbgstatus").equals("已通过")){

%>

'')">审核

<%} %>

























信息列表  



cellspacing="0" style="WIDTH: 100%; BORDER-COLLAPSE: collapse">


onmouseover="currentcolor=this.style.backgroundColor;this.style.backgroundColor=''#f0f7ff''"

onmouseout="this.style.backgroundColor=currentcolor">





















<%

new CommDAO().delete(request,"stuxt");

if(request.getParameter("unameid1")!=null){

new CommDAO().commOper("update stuxt set uname ='''' where id="+request.getParameter("unameid1"));

}

if(request.getParameter("unameid2")!=null){

new CommDAO().commOper("update stuxt set uname ='''' where id="+request.getParameter("unameid2"));

}

String sql = "select from stuxt where docname!='''' and docname is not null and lwtm in(select title from luanwt where saver=''"+Info.getUser(request).get("uname")+"'') " ;

if(!puname.equals("")){

sql+= " and uname like''%"+puname+"%'' " ;

}

if(!startuname.equals("")){

mmm.put("startuname",startuname) ;

sql+= " and uname >''"+startuname+"'' " ;

}

if(!enduname.equals("")){

mmm.put("enduname",enduname) ;

sql+= " and uname <''"+Info.getDay(enduname,1)+"'' " ;

}

if(!plwtm.equals("")){

sql+= " and lwtm like''%"+plwtm+"%'' " ;

}

if(!startlwtm.equals("")){

mmm.put("startlwtm",startlwtm) ;

sql+= " and lwtm >''"+startlwtm+"'' " ;

}

if(!endlwtm.equals("")){

mmm.put("endlwtm",endlwtm) ;

sql+= " and lwtm <''"+Info.getDay(endlwtm,1)+"'' " ;

}



sql +=" order by id desc ";

String url = "zqjcstuxtcx.jsp?1=1&uname="+puname+"&lwtm="+plwtm+"";

ArrayList list = PageManager.getPages(url,5, sql, request );

for(HashMap map:list){ %>


onmouseover="currentcolor=this.style.backgroundColor;this.style.backgroundColor=''#f0f7ff''"

onmouseout="this.style.backgroundColor=currentcolor">

















<%}%>

进度记录回复

单击【进度记录回复】按钮,界面右侧自动显示相应列表。



主要代码如下:

<%

String pjldate = request.getParameter("jldate")==null?"":request.getParameter("jldate");

String startjldate = request.getParameter("startjldate")==null?"":request.getParameter("startjldate");

String endjldate = request.getParameter("endjldate")==null?"":request.getParameter("endjldate");

%>



<%

HashMap mmm = new HashMap();%>

  记录日期  :    至  

     

         




提交人论文题目中期报告审核状态修改意见操作
<%=map.get("uname")%> <%=map.get("lwtm")%> " title=''点击可以下载''><%=map.get("docname2")%> <%=map.get("zqbgstatus")%> <%=map.get("zqbgbei")%>

<%

if(!map.get("zqbgstatus").equals("已通过")){

%>

'')">审核

<%} %>























信息列表  



cellspacing="0" style="WIDTH: 100%; BORDER-COLLAPSE: collapse">


onmouseover="currentcolor=this.style.backgroundColor;this.style.backgroundColor=''#f0f7ff''"

onmouseout="this.style.backgroundColor=currentcolor">























<%

new CommDAO().delete(request,"jdjl");

if(request.getParameter("unameid1")!=null){

new CommDAO().commOper("update jdjl set uname ='''' where id="+request.getParameter("unameid1"));

}

if(request.getParameter("unameid2")!=null){

new CommDAO().commOper("update jdjl set uname ='''' where id="+request.getParameter("unameid2"));

}

String sql = "select from jdjl where 1=1 " ;

if(!pjldate.equals("")){

sql+= " and jldate like''%"+pjldate+"%'' " ;

}

if(!startjldate.equals("")){

mmm.put("startjldate",startjldate) ;

sql+= " and jldate >''"+startjldate+"'' " ;

}

if(!endjldate.equals("")){

mmm.put("endjldate",endjldate) ;

sql+= " and jldate <''"+Info.getDay(endjldate,1)+"'' " ;

}

sql +=" and (1!=1 " ;

sql +=" or lwtm in(select title from luanwt where saver=''"+Info.getUser(request).get("uname")+"'') " ;

sql +=" ) ";

sql +=" order by id desc ";

String url = "jdjlcxhf.jsp?1=1&jldate="+pjldate+"";

ArrayList list = PageManager.getPages(url,5, sql, request );

for(HashMap map:list){ %>


onmouseover="currentcolor=this.style.backgroundColor;this.style.backgroundColor=''#f0f7ff''"

onmouseout="this.style.backgroundColor=currentcolor">



















<%}%>

论文审核

单击【论文审核】按钮,界面右侧自动显示相应列表。该界面可以实现论文审核的查询,审核。



主要代码如下:

<%

String puname = request.getParameter("uname")==null?"":request.getParameter("uname");

String startuname = request.getParameter("startuname")==null?"":request.getParameter("startuname");

String enduname = request.getParameter("enduname")==null?"":request.getParameter("enduname");

String plwtm = request.getParameter("lwtm")==null?"":request.getParameter("lwtm");

String startlwtm = request.getParameter("startlwtm")==null?"":request.getParameter("startlwtm");

String endlwtm = request.getParameter("endlwtm")==null?"":request.getParameter("endlwtm");

%>



<%

HashMap mmm = new HashMap();%>

  学生  :       

  论文题目  :       

         




提交人论文题目记录日期进度情况所遇困难导师回复操作
<%=map.get("uname")%> <%=map.get("lwtm")%> <%=map.get("jldate")%> <%=map.get("jdcontent")%> <%=map.get("probei")%> <%=map.get("recontent")%> '')">回复






















信息列表  



cellspacing="0" style="WIDTH: 100%; BORDER-COLLAPSE: collapse">


onmouseover="currentcolor=this.style.backgroundColor;this.style.backgroundColor=''#f0f7ff''"

onmouseout="this.style.backgroundColor=currentcolor">





















<%

new CommDAO().delete(request,"stuxt");

if(request.getParameter("unameid1")!=null){

new CommDAO().commOper("update stuxt set uname ='''' where id="+request.getParameter("unameid1"));

}

if(request.getParameter("unameid2")!=null){

new CommDAO().commOper("update stuxt set uname ='''' where id="+request.getParameter("unameid2"));

}

String sql = "select from stuxt where 1=1 " ;

if(!puname.equals("")){

sql+= " and uname like''%"+puname+"%'' " ;

}

if(!startuname.equals("")){

mmm.put("startuname",startuname) ;

sql+= " and uname >''"+startuname+"'' " ;

}

if(!enduname.equals("")){

mmm.put("enduname",enduname) ;

sql+= " and uname <''"+Info.getDay(enduname,1)+"'' " ;

}

if(!plwtm.equals("")){

sql+= " and lwtm like''%"+plwtm+"%'' " ;

}

if(!startlwtm.equals("")){

mmm.put("startlwtm",startlwtm) ;

sql+= " and lwtm >''"+startlwtm+"'' " ;

}

if(!endlwtm.equals("")){

mmm.put("endlwtm",endlwtm) ;

sql+= " and lwtm <''"+Info.getDay(endlwtm,1)+"'' " ;

}

sql +=" and (1!=1 " ;

sql +=" or lwtm in(select title from luanwt where saver=''"+Info.getUser(request).get("uname")+"'') " ;

sql +=" ) ";

sql +=" order by id desc ";

String url = "lwstuxtcx.jsp?1=1&uname="+puname+"&lwtm="+plwtm+"";

ArrayList list = PageManager.getPages(url,5, sql, request );

for(HashMap map:list){ %>


onmouseover="currentcolor=this.style.backgroundColor;this.style.backgroundColor=''#f0f7ff''"

onmouseout="this.style.backgroundColor=currentcolor">

















<%}%>

在“用户名”和“密码”的文本框中输入用户名:wyh01 密码:123,最后单击【登录】按钮,即可进入后台管理页面。后台管理页面主要包括:论文题目审核、答辩资格审核意见、成绩管理三大管理模块。

论文题目审核

单击【论文题目审核】按钮,界面右侧自动显示相应的列表。





主要代码如下:

<%

String ptitle = request.getParameter("title")==null?"":request.getParameter("title");

String starttitle = request.getParameter("starttitle")==null?"":request.getParameter("starttitle");

String endtitle = request.getParameter("endtitle")==null?"":request.getParameter("endtitle");

String psaver = request.getParameter("saver")==null?"":request.getParameter("saver");

String startsaver = request.getParameter("startsaver")==null?"":request.getParameter("startsaver");

String endsaver = request.getParameter("endsaver")==null?"":request.getParameter("endsaver");

%>



<%

HashMap mmm = new HashMap();%>

  论文题目  :       

  提交人  :       

         




学生论文题目论文审核状态修改意见操作
<%=map.get("uname")%> <%=map.get("lwtm")%> " title=''点击可以下载''><%=map.get("docname3")%> <%=map.get("lwshstatus")%> <%=map.get("lwshbei")%> '')">审核






















信息列表  



cellspacing="0" style="WIDTH: 100%; BORDER-COLLAPSE: collapse">


onmouseover="currentcolor=this.style.backgroundColor;this.style.backgroundColor=''#f0f7ff''"

onmouseout="this.style.backgroundColor=currentcolor">























<%

new CommDAO().delete(request,"luanwt");

if(request.getParameter("titleid1")!=null){

new CommDAO().commOper("update luanwt set title ='''' where id="+request.getParameter("titleid1"));

}

if(request.getParameter("titleid2")!=null){

new CommDAO().commOper("update luanwt set title ='''' where id="+request.getParameter("titleid2"));

}

String sql = "select from luanwt where 1=1 " ;

if(!ptitle.equals("")){

sql+= " and title like''%"+ptitle+"%'' " ;

}

if(!starttitle.equals("")){

mmm.put("starttitle",starttitle) ;

sql+= " and title >''"+starttitle+"'' " ;

}

if(!endtitle.equals("")){

mmm.put("endtitle",endtitle) ;

sql+= " and title <''"+Info.getDay(endtitle,1)+"'' " ;

}

if(!psaver.equals("")){

sql+= " and saver like''%"+psaver+"%'' " ;

}

if(!startsaver.equals("")){

mmm.put("startsaver",startsaver) ;

sql+= " and saver >''"+startsaver+"'' " ;

}

if(!endsaver.equals("")){

mmm.put("endsaver",endsaver) ;

sql+= " and saver <''"+Info.getDay(endsaver,1)+"'' " ;

}

sql +=" and (1!=1 " ;

sql +=" or status like''%%'' " ;

sql +=" ) ";

sql +=" order by id desc ";

String url = "shluanwtcx.jsp?1=1&title="+ptitle+"&saver="+psaver+"";

ArrayList list = PageManager.getPages(url,5, sql, request );

for(HashMap map:list){ %>


onmouseover="currentcolor=this.style.backgroundColor;this.style.backgroundColor=''#f0f7ff''"

onmouseout="this.style.backgroundColor=currentcolor">



















<%}%>

在“用户名”和“密码”的文本框中输入用户名:student01 密码:123最后单击【登录】按钮,即可进入后台管理页面。后台管理页面主要包括:论文题目提交、论文选题、开题报告提交,中期报告提交,进度记录查看,答辩资格查看,论文提交七大管理模块。

开题报告提交



主要代码如下:

<%

new CommDAO().delete(request,"stuxt");

List list = new CommDAO().select("select from stuxt where uname=''"+Info.getUser(request).get("uname")+"'' and shstatus=''已通过''");

HashMap mmm = new HashMap();

if(list.size()>0){

String id = list.get(0).get("id").toString();

String erjitype = request.getParameter("erjitype");

String myztree = request.getParameter("myztree");

HashMap ext = new HashMap();

ext.put("ktbgstatus","待审核");

new CommDAO().update(request,response,"stuxt",ext,true,false);

mmm = new CommDAO().getmap(id,"stuxt");

%>



" name="f1" method="post" onsubmit="return checkform()" >

论文题目任务书可选人数审核状态提交人提交时间操作
<%=map.get("title")%> " title=''点击可以下载''><%=map.get("docname")%> <%=map.get("kxnum")%> <%=map.get("status")%> <%=map.get("saver")%> <%=map.get("savetime")%>



<%

if(map.get("status").equals("待审核")){

%>

'')">审核

<%} %>





































相关信息  



cellspacing="0" rules="all" style="WIDTH: 100%; BORDER-COLLAPSE: collapse">


onmouseover="currentcolor=this.style.backgroundColor;this.style.backgroundColor=''#f0f7ff''"

onmouseout="this.style.backgroundColor=currentcolor">










onmouseover="currentcolor=this.style.backgroundColor;this.style.backgroundColor=''#f0f7ff''"

onmouseout="this.style.backgroundColor=currentcolor">










onmouseover="currentcolor=this.style.backgroundColor;this.style.backgroundColor=''#f0f7ff''"

onmouseout="this.style.backgroundColor=currentcolor">










onmouseover="currentcolor=this.style.backgroundColor;this.style.backgroundColor=''#f0f7ff''"

onmouseout="this.style.backgroundColor=currentcolor">










onmouseover="currentcolor=this.style.backgroundColor;this.style.backgroundColor=''#f0f7ff''"

onmouseout="this.style.backgroundColor=currentcolor">














onmouseover="currentcolor=this.style.backgroundColor;this.style.backgroundColor=''#f0f7ff''"

onmouseout="this.style.backgroundColor=currentcolor">







用户名

<%=mmm.get("uname")%>
论文题目

<%=mmm.get("lwtm")%>
开题报告审核状态

<%=mmm.get("ktbgstatus")%>
开题报告修改意见

<%=mmm.get("ktbgbei")%>
开题报告

<%

if(!mmm.get("ktbgstatus").equals("已通过")){

%>

<%=Info.getFileUpInfo()%>



  

<%}else{ %>

<%=mmm.get("docname") %>   

<%} %>

<%

if(!mmm.get("docname").equals("")){

%>



" title=''点击可以下载''>点击可下载

<%} %>











<%}else{ %>





" name="f1" method="post" onsubmit="return checkform()" >



































相关信息  



cellspacing="0" rules="all" style="WIDTH: 100%; BORDER-COLLAPSE: collapse">


onmouseover="currentcolor=this.style.backgroundColor;this.style.backgroundColor=''#f0f7ff''"

onmouseout="this.style.backgroundColor=currentcolor">















您还没有申请通过的论文题目,无需上传开题报告










<%} %>

中期报告提交:



主要代码如下:

<%

new CommDAO().delete(request,"stuxt");

List list = new CommDAO().select("select from stuxt where uname=''"+Info.getUser(request).get("uname")+"'' and ktbgstatus=''已通过''");

HashMap mmm = new HashMap();

if(list.size()>0){

String id = list.get(0).get("id").toString();

String erjitype = request.getParameter("erjitype");

String myztree = request.getParameter("myztree");

HashMap ext = new HashMap();

ext.put("zqbgstatus","待审核");

new CommDAO().update(request,response,"stuxt",ext,true,false);

mmm = new CommDAO().getmap(id,"stuxt");

%>



" name="f1" method="post" onsubmit="return checkform()" >



































相关信息  



cellspacing="0" rules="all" style="WIDTH: 100%; BORDER-COLLAPSE: collapse">


onmouseover="currentcolor=this.style.backgroundColor;this.style.backgroundColor=''#f0f7ff''"

onmouseout="this.style.backgroundColor=currentcolor">










onmouseover="currentcolor=this.style.backgroundColor;this.style.backgroundColor=''#f0f7ff''"

onmouseout="this.style.backgroundColor=currentcolor">










onmouseover="currentcolor=this.style.backgroundColor;this.style.backgroundColor=''#f0f7ff''"

onmouseout="this.style.backgroundColor=currentcolor">










onmouseover="currentcolor=this.style.backgroundColor;this.style.backgroundColor=''#f0f7ff''"

onmouseout="this.style.backgroundColor=currentcolor">












onmouseover="currentcolor=this.style.backgroundColor;this.style.backgroundColor=''#f0f7ff''"

onmouseout="this.style.backgroundColor=currentcolor">














onmouseover="currentcolor=this.style.backgroundColor;this.style.backgroundColor=''#f0f7ff''"

onmouseout="this.style.backgroundColor=currentcolor">







提交人

<%=mmm.get("uname")%>
论文题目

<%=mmm.get("lwtm")%>
审核状态

<%=mmm.get("zqbgstatus")%>
修改意见

<%=mmm.get("zqbgbei")%>
中期报告



<%

if(!mmm.get("zqbgstatus").equals("已通过")){

%>

<%=Info.getFileUpInfo2()%>

<%}else{ %>

" title=''点击可以下载''>点击可下载

<%} %>











<%}else{ %>





" name="f1" method="post" onsubmit="return checkform()" >



































相关信息  



cellspacing="0" rules="all" style="WIDTH: 100%; BORDER-COLLAPSE: collapse">


onmouseover="currentcolor=this.style.backgroundColor;this.style.backgroundColor=''#f0f7ff''"

onmouseout="this.style.backgroundColor=currentcolor">















您还没有申请通过的开题报告,无需上传中期报告










<%} %>

进度记录

单击【进度记录】按钮,界面右侧自动显示相应列表。该界面可以实现进度记录的查询,添加,修改,删除。



主要代码如下:

<%

String pjldate = request.getParameter("jldate")==null?"":request.getParameter("jldate");

String startjldate = request.getParameter("startjldate")==null?"":request.getParameter("startjldate");

String endjldate = request.getParameter("endjldate")==null?"":request.getParameter("endjldate");

%>



<%

HashMap mmm = new HashMap();%>

  记录日期  :    至  

     

         

























信息列表  



cellspacing="0" style="WIDTH: 100%; BORDER-COLLAPSE: collapse">


onmouseover="currentcolor=this.style.backgroundColor;this.style.backgroundColor=''#f0f7ff''"

onmouseout="this.style.backgroundColor=currentcolor">



















<%

new CommDAO().delete(request,"jdjl");

if(request.getParameter("unameid1")!=null){

new CommDAO().commOper("update jdjl set uname ='''' where id="+request.getParameter("unameid1"));

}

if(request.getParameter("unameid2")!=null){

new CommDAO().commOper("update jdjl set uname ='''' where id="+request.getParameter("unameid2"));

}

String sql = "select from jdjl where 1=1 " ;

if(!pjldate.equals("")){

sql+= " and jldate like''%"+pjldate+"%'' " ;

}

if(!startjldate.equals("")){

mmm.put("startjldate",startjldate) ;

sql+= " and jldate >''"+startjldate+"'' " ;

}

if(!endjldate.equals("")){

mmm.put("endjldate",endjldate) ;

sql+= " and jldate <''"+Info.getDay(endjldate,1)+"'' " ;

}

sql +=" and (1!=1 " ;

sql +=" or uname =''"+Info.getUser(request).get("uname")+"'' " ;

sql +=" ) ";

sql +=" order by id desc ";

String url = "jdjlcx.jsp?1=1&jldate="+pjldate+"";

ArrayList list = PageManager.getPages(url,5, sql, request );

for(HashMap map:list){ %>


onmouseover="currentcolor=this.style.backgroundColor;this.style.backgroundColor=''#f0f7ff''"

onmouseout="this.style.backgroundColor=currentcolor">















<%}%>



答辩资格查看



主要代码如下:

<%

new CommDAO().delete(request,"stuxt");

if(request.getParameter("unameid1")!=null){

new CommDAO().commOper("update stuxt set uname ='''' where id="+request.getParameter("unameid1"));

}

if(request.getParameter("unameid2")!=null){

new CommDAO().commOper("update stuxt set uname ='''' where id="+request.getParameter("unameid2"));

}

String sql = "select from stuxt where uname=''"+Info.getUser(request).get("uname")+"'' " ;



sql +=" and (1!=1 " ;

sql +=" or lwtm like''%%'' " ;

sql +=" ) ";

sql +=" order by id desc ";

String url = "zgshstuxtcxck.jsp?1=1&uname=";

ArrayList list = PageManager.getPages(url,5, sql, request );

for(HashMap map:list){ %>


onmouseover="currentcolor=this.style.backgroundColor;this.style.backgroundColor=''#f0f7ff''"

onmouseout="this.style.backgroundColor=currentcolor">





















<%}%>





七 系统测试

测试方法

对于系统测试,存在着两种完全不同的测试目的。从用户的角度出发,普遍希望通过测试暴露系统中隐藏的错误和缺陷,以考虑是否可以接受该产品。而从系统开发者的角度出发,则希望测试成为表明软件产品中不存在错误的过程,验证该系统已正确地实现了用户的要求,确立用户对系统质量的信心。

测试方法

确认:是一系列的活动和过程,其目的是想证实在一个给定的外部环境中软件的逻辑正确性。

验证:试图证明在软件生存期各个阶段,以及阶段间的逻辑协调性、完备性和正确性。

测试用例:主要用来检验程序员编制的程序,一般应由测试输入数据和与之对应的预期输出结果这两部分组成。

黑盒测试:测试中,把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息。

白盒测试:已知产品的内部工作过程,可以通过测试证明每种内部操作是否符合设计规格要求,所有内部成分是否已经过检查。

测试的策略

一般按4个步骤进行,即单元测试、组装(集成)测试、确认测试和系统测试。

单元测试:又称模块测试,是针对网站设计的最小单位——程序模块,进行正确性检验的测试工作。其目的在于发现各模块内部可能存在的各种差错。

组装测试:也叫集成测试或联合测试。在单元测试的基础上,需要将所有模块按照设计要求组装成为系统,并考虑各模块间穿越的数据是否会丢失、模块间功能是否会互相影响、各子模块组合起来,是否达到预期要求的父功能、全局数据结构是否有问题。

确认测试:又称有效性测试。它的任务是验证软件的功能和性能及其他特性是否与用户的要求一致。

系统测试:系统测试是将通过确认测试的软件,作为整个基于计算机系统的一个元素,与计算机硬件、外设、某些支持软件、数据和人员等其他系统元素结合在一起,在实际运行(使用)环境下,对计算机系统进行一系列的组装测试和确认测试。

测试用例

功能A描述 教师信息管理 用例目的 能成功添加、编辑、删除教师用户 前提条件 管理员登陆 输入/动作 期望的输出/相应 实际情况 输入教师基本信息点击“提交” 成功保存教师信息到数据库,且教师管理页面显示新增加的记录 数据插入执行成功,页面显示新记录 选中一条教师记录进行编辑,编辑信息后点击“提交” 成功保存修改后的教师信息到数据库,且教师管理页面显示新的教师信息 数据更新成功,页面显示新的教师信息 删除教师信息 成功执行数据库删除操作,页面减少被删的教师信息 数据库更新成功,页面减少被删的教师信息 功能B描述 班级管理 用例目的 能成功添加、修改、删除班级信息 前提条件 管理员登陆 输入/动作 期望的输出/相应 实际情况 输入班级信息点击“提交” 成功保存班级信息,页面显示新增加的班级信息 数据库插入成功,页面显示新增的班级信息 选中一条班级信息进行编辑后提交 成功执行班级信息更新 数据库此条班级信息更新成功,页面显示此条班级的新信息 选中一条班级信息进行删除 页面减少此条班级信息 数据库成功执行删除,页面减少此条班级信息 功能C描述 学生管理 用例目的 能成功添加、修改、删除学生信息 前提条件 管理员登陆 输入/动作 期望的输出/相应 实际情况 输入学生信息点击“提交” 成功保存学生信息,页面显示新增加的学生信息 数据库插入成功,页面显示新增的学生信息 选中一条学生信息进行编辑后提交 成功执行学生信息更新 数据库此条学生信息更新成功,页面显示此条学生的新信息 选中一条学生信息进行删除 页面减少此条班级信息 数据库成功执行删除,页面减少此条学生信息 功能D描述 毕业设计相关管理 用例目的 能成功添加、修改、删除毕业设计相关信息 前提条件 管理员登陆 输入/动作 期望的输出/相应 实际情况 输入毕业设计相关信息点击“提交” 成功保存毕业设计相关信息,页面显示新增加的毕业设计相关信息 数据库插入成功,页面显示新增的毕业设计相关信息 选中一条毕业设计相关信息进行编辑后提交 成功执行毕业设计相关信息更新 数据库此条毕业设计相关信息更新成功,页面显示此条毕业设计相关的新信息 选中一条毕业设计相关信息进行删除 页面减少此条毕业设计相关信息 数据库成功执行删除,页面减少此条毕业设计相关信息 功能E描述 学生选题情况 用例目的 能准确查询每门毕业设计相关被选的人数和学生列表 前提条件 管理员登陆 输入/动作 期望的输出/相应 实际情况 点击右栏“毕业设计相关管理” 显示每门毕业设计相关被选人数 人数与数据库中数量一致 点击查看人员 成功列出选择该毕业设计相关的学生列表 与数据库数据一致 功能F描述 我的毕业设计相关 用例目的 能准确查询当前登陆教师所带的毕业设计相关 前提条件 教师登陆 输入/动作 期望的输出/相应 实际情况 点击右栏“我的毕业设计相关” 显示本ID所带的毕业设计相关 通过数据库查看数据,与页面显示一致 功能G描述 我的学生 用例目的 能准确查询当前登陆教师所带的所有毕业设计相关下的所有学生信息 前提条件 教师登陆 输入/动作 期望的输出/相应 实际情况 点击右栏“我的学生” 显示出当前登陆教师所带的所有毕业设计相关下的所有学生信息 通过数据库查看数据,与页面显示一致 点击评分 弹出评分输入窗口 窗口弹出 输入评分点击“提交” 输入的分值插入到学生所选题程的分数字段 数据库执行更新成功,页面显示所评分数 功能H描述 可选题程查询 用例目的 查询出所有毕业设计相关,如果当前登陆的学生没有选择的毕业设计相关后面有“选择”操作,否则没有操作按钮 前提条件 学生登陆 输入/动作 期望的输出/相应 实际情况 点击右栏“可选题程” 显示所有毕业设计相关信息 与期望一致 对可选的毕业设计相关进行“选择”操作 提示成功,在我的毕业设计相关中可以看到此信息 弹出提示成功,数据表MYKC此学生的毕业设计相关新添一条记录 功能I描述 我的毕业设计相关 用例目的 能准确查询当前登陆学生所选的毕业设计相关 前提条件 学生登陆 输入/动作 期望的输出/相应 实际情况 点击右栏“我的毕业设计相关” 显示我所选的所有毕业设计相关 显示成功,数据与数据表一致 对没有分数的毕业设计相关点击撤销 从我的毕业设计相关中移除该毕业设计相关信息,在可选题程中可以再次看到该毕业设计相关信息 与期望值一致

































总 结

通过这次的毕业设计,我了解了目前流行的学校信息化平台构成和运作原理,掌握了用JSP构建动态系统的相关知识和技术原理,锻炼了自己的动手实践能力。更重要的是,通过这次的毕业设计,我培养出了刻苦钻研的学习精神和严肃认真的学习态度,这对我以后的学习和工作有很大的益处。

由于知识有限,在系统的设计上还是显得有些肤浅,主要表现在数据库设计方面,因为在数据库范式方面理解不够深刻,所以表的设计上偶合性还是比较高,另外在大数量处理方面数据库的抗压性和读写性能方面还有待完善;在系统架构方面,本次只采用了传统的JSP+SERVLET方式,此框架属于基本的MVC开发框架,只适用于小型的网站开发,而大型的网站需要用到SSH三大框架,这个也是我今后学习方向。

经过几个月的毕业设计,基本开发完成了《毕业答辩过程管理系统》。通过毕业设计我学到了很多新知识,个人能力与了很大的提高,最重要的是我深切的感受到团队合作精神的重要性。在设计中经常遇到种种困难与挫折,几次陷入停顿状态。在这种情况下,同伴不但给予我的很多的鼓励,而且在设计上提出了很多正确的建议和善意的批评。大家一起搜集各种相关资料,一起探讨技术问题,一起攻克设计中的各种困难。

在这里,顺利完成毕业设计我首先要感谢指导老师的细心指导,他帮助解决了我们设计中的疑难和困惑,为我们完成设计提供了极大的帮助。老师为我们设计了提纲和基本要求,在这个学期中,我们随时都能与他取得联系询问相关问题,他总是耐心的为我们作出解答,并多次给热心地帮我们查找相关书籍资料。我们的这次设计顺利完成离不开老师的帮助;同组的设计成员同学也为我提供了不少的帮助,在此一并向他们表示衷心的感谢!

不过对我们来说,由于时间有限,也包括我们的知识水平有限,系统中有不足之处,还请各位老师指导指正。













参考文献

[1] 徐建波主编.《Internet与Web设计教程》 .中国矿业大学出版社 .2001

[2] 乔治.劳顿. 让商务智能更有用[J]. 中国计算机学会通讯. 2007,3(4):60-64.

[3] WFMC group. Workflow ReferenceModel[J]. WFMC-TC-1003. 2005 (3):3.

[4] Time创作室编著.office2000系列丛书Access2000.人民邮电出版社.1999

[5] 武晓军、陈海滨编著.Javascript/VBScript网页编程实例解析.清华大学出版社.2001

[6] 薛文革, 王宇, 李增智. 基于Web的分布式网络管理的设计及实现[J].计算机工程.2009, (28): 29-31.

[7] 孙卫琴著. 精通STRUTS:基于MVC的Java Web设计与开发[M] . 电子工业出版社. 2002.

[8] 王卫玲, 李文俊, 韦兆文. 基于MVC设计模式的Web服务架构[J]. 微计算机信息. 2007, (30): 197-199 Allen. Workflow:An Introduction[M] . WFMC External Relation Commitee. 15-38.

[12] Eric A.Smith Active server pages[M]. 北京:电子工业出版社,2003.

[13] 王晨. 结构数据挖掘与处理若干问题的研究[J]. 中国计算机学会通讯. 2009,3(3):70-72.

[14] Jarke M Koch J. Query optimization in database systems[J].ComputingSurveys. 2008, 16(2)227-269.

[15] 龚玉清.网页设计的色彩运用. 现代教育技术[J],2003,5.

[16] 段永红,李春海. 基于JSP的网站建设. 电脑开发与应用[J],2000,8.

[17] 裴树军,张仁伟. 基于JSP的动态WEB技术设计. 哈尔滨理工大学学报

[18] 杨青. JSP的主要技术特点分析. 电脑与信息技术[J],1999,4.

[19] 曹淑琴. JSP技术的网站建设.华北科技学院学报[J],2003,1.

[20] 吴玉新. JSP后台解决方案[M]. 北京:人民邮电出版社,2003.

[21] 黄明,粱旭. JSP信息系统设计与开发实例[M]. 北京:机械工业出版社,2003.







致 谢

论文写作和准备答辩期间,得到了老师的大力支持和帮助,尤其是我的指导老师更是在百忙之中抽出宝贵的时间耐心地、三番五次地为我审阅文稿,帮助我分析存在的问题,并提出了不少宝贵的意见,在此表示由衷的感谢!

计算机信息管理和网络技术日新月异地飞速发展,人们总是处在不断学习阶段,再加上作者水平有限,所以本文肯定存在不少错误和不尽如人意之处,欢迎广大老师和同学批评指正,在此深表感谢。





























第 38 页 共 38 页

























































































































































































































记录日期进度情况所遇困难导师回复操作
<%=map.get("jldate")%> <%=map.get("jdcontent")%> <%=map.get("probei")%> <%=map.get("recontent")%> '')">修改  |  ">删除
<%=map.get("uname")%> <%=map.get("lwtm")%> " title=''点击可以下载''>点击下载 <%=map.get("ktbgstatus")%> " title=''点击可以下载''>点击下载 <%=map.get("zqbgstatus")%> <%=map.get("dbzgstatus")%> <%=map.get("dbzgbei")%>
献花(0)
+1
(本文系zy_360tsg原创)
类似文章
发表评论: