jsp毕业答辩过程毕业设计论文审核管理系统sqlserver
毕业答辩过程管理系统 摘 要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"> <%=map.get("title")%> " title=''点击可以下载''><%=map.get("docname")%> <%=map.get("kxnum")%> <%=map.get("status")%> <%=map.get("saver")%> <%=map.get("savetime")%> <% if(map.get("status").equals("待审核")){ %> '')">审核 <%} %> <%}%> 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();%> 学生 : 论文题目 :
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"> <%=map.get("uname")%> <%=map.get("lwtm")%> " title=''点击可以下载''>点击下载 <%=map.get("ktbgstatus")%> " title=''点击可以下载''>点击下载 <%=map.get("zqbgstatus")%> <%=map.get("dbzgstatus")%> <%=map.get("dbzgbei")%> '')">审批意见 <%}%> 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();%> 学生 : 论文题目 :
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"> <%=map.get("uname")%> <%=map.get("lwtm")%> <%=map.get("lwshstatus")%> <%=map.get("cj")%> <%=map.get("lspy")%> <%=map.get("dbzpy")%> '')">填写成绩 <%}%> 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"); %> 修改登录密码 单击【修改登录密码】按钮,界面右侧自动显示相应列表。 主要代码如下: <% 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(); %> 在“用户名”和“密码”的文本框中输入用户名: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();%> 申请人 : 论文题 :