1 绪论
1.1 概述
当今时代的两个显著特点就是世界经济一体化和以计算机为代表的信息技术的快速发展。一个组织要在激烈的竞争中保持优势和不断发展,必须对迅速变化的环境灵敏地做出有效地反应。管理信息系统的应用能够提供这种有效的决策支持。
管理信息系统是一个以人为主导,利用计算机硬件、软件、网络通信设备以及其他办公设备,进行信息的收集、传输、加工、储存、更新和维护,支持组织高层决策、中层控制、基层运作的集成化的人机系统。另外,管理信息系统也是个社会系统,推进管理信息系统犹如推进社会变革,尤其应用信息技术引起系统功能巨大提高和管理模式巨大改变时,更能推动人类社会的进步。管理信息系统包含计算机硬件及软件,各个办公设备及通信设备,人员包括高层决策人员,中层职能人员和基层业务人员,由这些设备和人员组成一个和谐的配合默契的一体化系统或集成系统,它从总体出发,全面考虑,保证各种职能部门共享数据,减少数据的冗余度保证数据的兼容性和一致性。
随着计算机技术与网络技术突飞猛进的发展,各单位部门都在开始建立自己的管理信息系统,高校和科研机构也不例外,开发一个科研项目管理系统是非常有必要的。它将有助于将管理人员从烦琐的管理工作中解脱出来,使管理系统化、条理化,能迅速获得有用的信息。
1.2 设计的目的及意义
科研项目管理系统是为了适应信息化管理, 提高科研计划管理的效率, 准确性和数据的安全性而设计的软件。科研计划管理系统的配备是信息化管理的基础,以科研项目流程为核心,全方面通过计算机信息化管理科研项目申报、项目开题、项目合同、实施进度、项目结题、科研成果、项目经费等科研活动,以达到方便、高效地管理和控制,满足科研单位的决策者对科研活动的宏观管理与决策的需要,为科研企业对项目参与人员的评估提供依据。
科研项目管理系统要实现对研究所、高校等单位科研情况的有效管理以及对科研活动的全程跟踪。科研管理系统是一个科研院所、高校研究所等内部管理的核心部分,包括人员档案、机构设置、项目申报、科研评估、成果管理、基金管理、科技统计、成果管理、专利管理、经费管理、报表管理等多项信息管理职能。随着计算机应用水平的提高和科研管理的规范化和制度化,建立一套适用于科研院所科研管理工作管理信息系统,已经成为各大的科研院所较为迫切的需求。 科研活动历来都是高校的主旋律之一,高校的科研活动早已成为反映高校综合实力的重要指标。随着学校科研投入和从事科研活动的人员的不断增加,学校高校科研管理的压力也越来越大。本项目的意义就在于通过搭建一个科研项目管理系统,能够快速有效的提高学校科研管理工作的高效性、科学性和透明性,并使得科研管理工作能更好的服务于全校老师,更好的为学校领导提供科研决策支持。
系统建设和实施后,将大大提高学校科研管理工作的信息化水平,全面实现学校的网络化科研管理体系。系统将会成为联系科研活动人员和科研管理人员的纽带,也将给学校整个的信息化建设带来深远而有意义的影响。建设高水平的大学,校园信息系统的建设是重要的一环,是提高教学管理的质量和效益乃至建设知名的高水平的大学的关键环节。在网络和通讯日益发达的今天,人们可以足不出户就可以获得信息,完成工作。
2 开发技术和开发环境
2.1 J2EE技术简介
目前,JAVA2平台有3个版本,它们是适用与小型设备和智能卡的JAVA2平台Micro版(JAVA2 Platform Micro Edition,J2ME)、适用于桌面系统的JAVA2平台标准版(JAVA2 Platform Standard Edition,J2SE)、适用于创建服务器应用程序的JAVA2平台企业版(JAVA2 Platform Enterprise Edition,J2EE)。J2EE使用多层的分布式应用模型,应用逻辑按功能划分为组件,各个应用组件根据他们所在的层分布在不同的机器上。事实上,SUN设计J2EE的初衷正是为了解决两层模式(client/server)的弊端,在传统模式中,客户端担当了过多的角色而显得臃肿,在这种模式中,第一次部署的时候比较容易,但难于升级后改进,可伸展性也不理想,而且经常基于某种专有协议——通常是某种数据库协议。它使得重用业务逻辑和界面逻辑非常困难。现在J2EE的多层企业级应用模型将两层化模型中的不同层面切分成许多层。一个多层化应用能够为不同的每种服务提供一个独立的层,以下是J2EE典型的四层结构:
(1)运行在客户端机器上的客户层组件
(2)运行在J2EE服务器上的Web层组件
(3)运行在J2EE服务器上的业务逻辑层组件
(4)运行在EIS服务器上的企业信息系统(Enerprise information system)层软件
J2EE应用程序是由组件构成的,J2EE组件是具有多重功能的软件单元,它们通过相关的类和文件组装成J2EE应用程序,并与其他组件交互。J2EE说明书中定义了以下的J2EE组件:
(1)应用客户端程序和applets是客户层组件
(2)JAVA Servlet和JAVA Server Pages(JSP)是web层组件
(3)Enterprise JAVABeans(EJB)是业务层组件
客户层组件:
J2EE应用程序可以是基于Web方式的,也可以是基于传统方式的。
Web层组件:
J2EE web层组件可以是JSP页面或Servlets。按照J2EE规范,静态的HTML页面和Applets不算是web层组件。
业务层组件:
业务层组件代码的逻辑用来满足银行、零售、金融、学校档案管理等特殊领域的需要,由运行在业务层的enterprise bean 进行处理。下面表明一下enterprise bean 是如何从客户端程序接收数据,进行处理(如果必要的话),并发送到EIS层存储,这个过程也可以逆向进行。有三种企业级的bean:会话(session)beans,实体(entity)beans,和消息驱动(message-driven)beans。会话bean表示与客户端程序的临时交互。当客户端程序执行完后,会话bean和相关数据就会消失。相反,实体bean表示数据库表中一行永久的记录。当客户端程序终止或服务器关闭时,就会有潜在的服务器保证实体bean的数据得以保存。消息驱动bean结合了会话bean和JMS的消息监听器的特性,允许一个业务层组件异步接收JMS消息。
2.2 开发环境
管理系统采用的是SQL 2000数据库,开发语言为jsp ,html,javascript作为前台的开发工具,用SQL 2000作为后台支持数据库,通过数据库控件来连接SQL 2000中并对其编程来实现各种功能。
该环境有如下的技术特点:
(1)采用B/S模式,通过浏览器就能完成系统提供的所有业务操作。
(2)采用XML数据交换技术,能满足系统升级和数据交换的要求,各个系统之间可以协同工作。
(3)系统采用应用层、业务服务层、数据访问层、数据资源层四层体系结构,分层次和构件化的设计保证系统的可扩展性和可复用性,系统未来的横向/纵向功能扩充非常容易。
(4)采用灵活的基于角色的访问控制模型,实现灵活的访问控制体系,查询功能,便于日后核查,及早发现安全隐患。
(5)支持信息门户和统一身份认证,提供单点登录功能。用户只需一次认证登录,就能访问应用系统的所有授权资源。
(6)系统有相对完整的标准代码设计和运用。具有代码管理维护功能,支持多种代码体系,代码结构分层定义,层次分明,便于用户分级选择输入,同时支持代码扩充和自定义。
(7)支持多种大型关系数据库,并有完善的数据备份与恢复机制,保证系统的安全运行。
(8)专用的系统管理模块,能够通过浏览器远程控制、管理整个系统,降低系统的管理和维护费用。
3 系统需求分析
3.1 功能需求分析
系统将采用先进的信息化技术,并有效结合现代科研项目管理理念和学校科研管理实际情况。系统的成功建设将能够轻松解决传统科研管理中难以解决的系列问题,并在多个方面实现突破:
(1) 构建开放式的科研项目管理体系:系统将向全校所有从事科研活动或者科研辅助工作的老师开放,并和学校人事处等业务部分别建立数据共享机制。系统将彻底改变以前封闭式的管理模式,解决系统数据对内对外的开放性问题。
(2) 科学分析和决策支持:系统能够及时收集到学校最新的科研项目、科研成果和学术活动等业务数据,并在大量的数据基础上进行数据挖掘分析工作。既方便学校进行各种查询,也可以提供各种分析报表。系统能够为学校科研管理决策提供科学有效的辅助支持。
(3) 科研信息化管理的全方位整体解决方案:系统针对学校的日常管理需要,提出的是一个包括信息发布、办公自动化和科研项目管理等多方面的整体解决方案。这样避免了临时的不完整的信息化建设,一次性的满足了科研项目管理中多方面的需要。
本系统的设计模拟一般学校的科研管理内容,经过充分地系统调研,发现本系统应包括信息的更新、机构、人员、项目、成果、系统的管理并对报表的统计等内容.
对于科研管理工作的需要,系统将准备实现以下几个功能模块:
(1)最新科研动态:发布最新的国内外科研动态,科研新闻,院科研动态新闻,并发布各种公告。机构管理:包括院系、实验室、重点实验室、研究所、科研项目、科研成果等的管理功能,能够提供各个关键字的查询、详细内容查看以及管理人员能够对各个科研机构的人员、项目、成果的变更进行相应的修改和更新。
(2)员管理:包括对人员的科研项目、科研成果、论文、著作等进行查询,管理员可以对人员的数据进行维护和更新,添加或删除各个查询结果,并提供相应的统计功能。项目管理:这将是这个系统的重点和难点部分,它将实现每位科研人员和每个科研机构的科研项目进行详细的管理,它提供项目的申报、申报查询、项目查询、项目信息的管理,以及各个项目的详细信息的管理以及状态的查询和管理。成果管理:包括对科研人员和科研机构的科研成果进行查询和管理。学术会议:提供各个学术交流会议的主题、具体时间、地点、组织单位等会议信息的查询和管理员对会议的发布和修改功能。
(3)报表统计:提供对各个机构和科研人员的各种类型科研成果的统计,包括论文、学术、著作、重点实验室、重点学科、项目、专利成果、获奖成果、转让成果、鉴定成果、应用成果的统计。系统管理:供管理员使用,为管理员提供各个管理部分的管理功能,修改各种信息,发布信息并且对系统数据进行维护。
3.2系统模块功能分析
高校科研项目管理系统是为了对高校科研实行计算机化的管理,以提高工作效率,方便用户。主要功能有对期刊论文信息、项目获奖信息、项目基本信息、著作管理信息、项目参加人员信息等进行管理和字典信息管理以及对系统自身的用户权限管理。提供各种信息的录入,比如项目参加人员资料、项目获奖内容及过程;著作管理、并可对字典信息进行的操作管理。系统不但含有高校日常科研项目的信息,而且还包含了对信息的查询检索功能。系统管理主要任务是提高系统安全性和对系统提供良好的维护。
(1) 人员管理子系统
提供了人员、机构的各种信息。能够对人员增加、删除、修改、通用性查找、自定义搜索条件和显示字段生成模板进行智能化查找。能够对人员信息进行如年龄范围,指定职务等条件的文字统计和图形统计和报表,可以将人员信息导出成Excel格式。
(2)机构管理子系统
对机构进行增加、删除、更新、指定上级机构、从人员部分指定机构人员。
(3)项目管理子系统
该子系统主要针对各种来源的项目提供了管理功能。能提供各种项目的信息,对项目实现增加、取消、修改、查找等功能。并能显示各种项目的申报、立项、中检、终结等状态,对项目各种经费进行增加、取消、修改、查找动作。
项目申报,对校级项目提供项目新增、删除、立项、撤销、中检、终结动作。提供了社科类项目申请模板,并且能和社科网提供接口,实现适时交互。对于社科类项目申报的新增、删除、撤销等动作。同时,可以为其他项目来源的项目实现了申报模板的预留接口。
(4)成果管理子系统
记录论文、专著、其他成果各种信息。实现各种条件查询。提供了成果奖励、成果鉴定全部信息。对专利成果、技术转让和技术出售提供了详细的描述。
(5)学术活动管理子系统
提供了国内、国际各种学术会议、会议论文、国际合作等学术活动信息的管理。
(6)统计子系统
依据基础数据系统自动核算,生成教育部、统计局要求的统计报表。
(7)数据维护子系统
该子系统提供了各子系统系统配置。如分页设置、显示设置等。同时提供了人员、项目等向财务子系统、人事子系统以及其他系统的数据交互的接口。
(8)用户管理子系统
用户管理子系统,科研处能分配各科研秘书权限,科研秘书能分配各科研工作者权限
对院系所进行编辑和修改:打开学院页面,点击“编辑”可以对院系所进行编辑和修改,同时在上面有一排功能按扭,可以进行新增、删除、查询、返回功能。其中查询可以以院系名称、院系编号、负责人、学科门类为条件查询。加注*号为必填项,否则无法保存。点击新增会出现一图:(可以填写相关信息然后进行保存或清空处理)
科研人员的增删改:新增人员(包括保存、清空、返回功能)人员检索可以以(学科类别、所属机构、人员编号、姓名、职称等)、排序条件(降序、升序)为检索条件查询。
4 系统设计
4.1 系统的性能设计
系统性能设计力求达到实用性、先进性、可靠性、安全性、保密性、整体性和规范性。
科研项目管理信息系统的开发应将系统的实用性放在首要位置,该系统的设计,应将满足该校科研信息管理作为首要目标。系统设计采用原型法开发方法。系统设计应最大限度地发挥计算机的高速处理、海量存储能力。在软件设计中,以方便用户使用为标准,做到统一编码规则、统一界面风格。
可靠性是指系统使用的软、硬件可靠性程度,使系统在运行中不发生或极少发生故障,在偶然事故及操作失误时,系统应具有较强自我恢复能力,而不应造成系统死锁或信息丢失和破坏。
科研项目管理信息系统保存着学校重要的科研信息,因此对系统的安全性要求非常高,一方面要保证数据的一致性,另一方面又要在非常情况下保证数据的丢失减少到最低限度。因此,科技管理信息系统应充分利用数据库的维护工具,便于数据备份、恢复,从而提高系统的安全性。
科研项目管理信息系统含有高校科技合同、人员、科研经费、统计、成果、外部科技动态等重要信息,这些信息不但应满足数据共享,同时还应提高系统的保密性。科研管理信息系统的保密性设计将充分利用数据库封锁机制、授权管理机制、应用软件设置多级密码及软件分离等措施,以保证系统不发生泄密。
科研项目管理信息系统是一个相对独立的系统。系统开发必须按照科学的开发原则,在系统分析的基础上,搞好整个系统的总体设计。使全校科技数据信息统一,充分发挥整个系统的总体效益。数据的处理和描述要符合标准,具有通用性,数据的设计和定义要和相关标准相一致。
4.2 数据库概念结构设计
数据库是信息系统的核心和基础。它把信息系统中大量的数据按一定的模型组织起来,提供存储、维护、检索数据的功能,使信息系统可以方便、及时、准确地从数据库中获得所需的信息。一个信息系统的各个部分能否紧密地结合在一起以及如何结合,关键在数据库。因此只有对数据库进行合理的逻辑设计和有效的物理设计才能开发出完善而高效的信息系统,数据库设计是信息系统开发和建设的重要组成部分。
数据库在一个信息管理系统中占有重要地位,数据库结构设计的好坏直接对应用系统的效率以及实现的效果产生影响。合理的数据库结构设计可以提高是数据存储的效率,保证数据的完整和一致。同时,合理的数据库结构也将有利用应用系统程序的实现。
在充分需求分析的基础上,经过逐步抽象、概念、分析、充分研讨,可画出如下反映科研管理系统数据的整体E-R图(如图1)。

图1 整体E-R图
4.3 系统功能模块设计
对系统各项功能进行集中、分块,按照结构化程序设计的要求,可得出系统的功能模块图(如图2)

图2 科研管理系统功能模块图
对系统各项功能进行集中、分块,按照结构化程序设计的要求,可得设计出系统的总体结构图(如图3)

图3 系统总体结构图
4.4 数据库的逻辑结构设计
数据库设计主要是进行数据库的逻辑设计,即将数据按一定的分类、分组系统和逻辑层次组织起来,是面向用户的。数据库设计时需要综合企业各个部门的存档数据和数据需求,分析各个数据之间的关系,按照DBMS提供的功能和描述工具,设计出规模适当、正确反映数据关系、数据冗余少、存取效率高、能满足多种查询要求的数据模型。
数据库设计的步骤是:
(1)数据库结构定义:目前的数据库管理系统(DBMS)有的是支持联机事务处理CLTP(负责对事务数据进行采集、处理、存储)的操作型DBMS,有的可支持数据仓库、有联机分析处理CLAP(指为支持决策的制定对数据的一种加工操作)功能的大型DBMS,有的数据库是关系型的、有的可支持面向对象数据库。针对选择的DBMS,进行数据库结构定义。
(2)数据表定义:数据表定义指定义数据库中数据表的结构,数据表的逻辑结构包括:属性名称、类型、表示形式、缺省值、校验规则、是否关键字、可否为空等。关系型数据库要尽量按关系规范化要求进行数据库设计,但为使效率高,规范化程度应根据应用环境和条件来决定。数据表设计不仅要满足数据存储的要求,还要增加一些如反映有关信息、操作责任、中间数据的字段或临时数据表。
(3)存储设备和存储空间组织:确定数据的存放地点、存储路径、存储设备等,备份方案,对多版本如何保证一致性和数据的完整性。
(4)数据使用权限设置:针对用户的不同使用要求,确定数据的用户使用权限,确保数据安全。
(5)数据字典设计:用数据字典描述数据库的设计,便于维护和修改。
为了更好地组织数据和设计出实际应用数据库,应该注意如下问题:
关系数据结构的建立:在进行了数据基本结构的规范化重组后,还必须建立整体数据的关系结构。这一步设计完成后数据库和数据结构设计工作基本完成,只待系统实现时将数据分析和数据字典的内容代入到所设计的数据整体关系结构中,一个规范化数据库系统结构就建立起来了。
根据用户需求和功能设计,数据库名称为:research,系统共分如下几个表:
表1 Administrator(管理员表)
| 字段名称 | 数据类型 | 说明 |
| Adminid | 自动增长 | 编号 primary key |
| Adminname | varchar | 用户名 |
| Adminpassword | varchar | 密码 |
| Admindescription | varchar | 描述 |
表2 Teacher(教师表)
| 字段名称 | 数据类型 | 说明 |
| Teacherid | 自动增长 | 编号 primary key |
| Teaname | varchar | 用户名 |
| Teapassword | varchar | 密码 |
| Admindescription | varchar | 描述 |
表3 Notice(公告表)
| 字段名称 | 数据类型 | 说明 |
| Titleid | 自动增长 | 编号 primary key |
| Title | varchar | 标题 |
| Sender | varchar | 发送人 |
| Sendertime | varchar | 发送时间 |
| Text | varchar | 文件正文 |
| Annex | varchar | 文件附件 |
表4 Institute(学院表)
| 字段名称 | 数据类型 | 说明 |
| Instituteid | 自动增长 | 编号 primary key |
| Insname | varchar | 学院名称 not null |
| Charge | varchar | 负责人 not null |
| Subject | varchar | 学科门类not null |
| Formatime | varchar | 成立时间 |
| Post | varchar | 邮编 |
| Address | varchar | 地址 |
| Fax | varchar | 传真 |
| Website | varchar | 网址 |
| Telephone | varchar | 电话 |
| | varchar | 电子邮件 |
| Introduction | varchar | 院系简介 |
表5 Research(研究机构表)
| 字段名称 | 数据类型 | 说明 |
| Researchid | 自动增长 | 编号 primary key |
| Researchname | varchar | 机构名称 |
| Charge | varchar | 负责人 not null |
| Subject | varchar | 学科门类not null |
表6 Staff(人员信息表)
| 字段名称 | 数据类型 | 说明 |
| Staffid | 自动增长 | 编号 primary key |
| Staffname | varchar | 姓名 not null |
| Birth | varchar | 出生日期 not null |
| Sex | varchar | 性别 |
| Qualifications | varchar | 学历 |
| Title | varchar | 职称 |
| Researchname | varchar | 所属机构 |
| Politicallandscape | varchar | 政治面貌 |
| Staffno | varchar | 人员编号 |
表7 Declare1(项目申报表)
| 字段名称 | 数据类型 | 说明 |
| Declareid | 自动增长 | 编号 primary key |
| Declarename | varchar | 申报批次名称not null |
| Starttime | varchar | 开始时间 |
| Endtime | varchar | 结束时间 |
| Introduction | varchar | 申报批次简介/备忘 |
表8 Project(项目信息表)
| 字段名称 | 数据类型 | 说明 |
| Projectid | 自动增长 | 编号 primary key |
| Projectname | varchar | 课题名称 |
| Researchname | varchar | 所属机构 |
| Projectsource | varchar | 项目来源单位 |
| projectCategory | varchar | 研究类别 |
| Starttime | varchar | 项目开始时间 |
| Plantime | varchar | 计划完工时间 |
| Actualtime | varchar | 实际完成日期 |
| Applicationmoney | int | 申请经费 |
| Approvedmoney | int | 批准经费 |
| Supplementary | int | 追加经费 |
表9 Winning(获奖信息表)
| 字段名称 | 数据类型 | 说明 |
| Projectname | varchar | 编号 primary key |
| Winningtitle | varchar | 获奖成果获奖名称 |
| Winningunit | varchar | 获奖单位 |
| Researchname | varchar | 所属机构 |
| Winninglevel | varchar | 获奖等级 |
| Awardunit | varchar | 奖励单位 |
| Introduction | varchar | 内容简介 |
| Subject | varchar | 学科门类 |
| Winningtime | varchar | 奖励时间 |
表10 Papers(论文信息表)
| 字段名称 | 数据类型 | 说明 |
| Paperid | 自动增长 | 编号 primary key |
| Papername | varchar | 论文名称 |
| Researchname | varchar | 所属机构 |
| Series | varchar | 发表期刊 |
| Sendtime | varchar | 发表时间 |
| Author | varchar | 作者 |
| Subject | varchar | 学科门类 |
表11 Works(著作表)
| 字段名称 | 数据类型 | 说明 |
| Workid | 自动增长 | 编号 primary key |
| Workname | varchar | 著作名称 |
| Researchname | varchar | 所属机构 |
| Workno | varchar | 著作编号 |
| Subject | varchar | 学科门类 |
| Author | varchar | 作者 |
| Publishunit | varchar | 出版单位 |
| Publishtime | varchar | 出版时间 |
表12 Conference(会议表)
| 字段名称 | 数据类型 | 说明 |
| Conferenceid | 自动增长 | 编号 primary key |
| Conferencename | varchar | 会议名称 |
| Organizers | varchar | 主办单位 |
| Subject | varchar | 学科门类 |
| Starttimey | int | 开始时间 |
| Starttimem | int | 持续时间 |
| Starttimed | int | 实际开始时间 |
| Endtimey | int | 结束时间 |
| Endtimem | int | 持续结束时间 |
| Endtimed | int | 实际结束时间 |
| Address | varchar | 会议地点 |
| Report | varchar | 会议情况报告 |
| Remarks | varchar | 备注 |
4.5 数据库初始数据的加载
数据库创建后,为下一阶段窗体模块的设计做准备,需要整体加载数据,加载数据可以手工一条一条界面录入,也可以设计对各表的数据记录的Insert命令集,这样执行插入命令集后表数据就有了,在准备数据过程中一般要注意以下几点:
(1)尽可能使用真实数据,这样在录入数据中,能发现一些结构设计中可能的不足之处,并能及早更正。
(2) 由于表内或表之间已设置了系统所要的完整性约束规则,如主码、不能为空等,为此,加载数据时,可能会发现问题。
(3) 加载数据,应尽可能全面些,能反映各种表数据与表数据间的关系,这样便于模块设计时,程序的充分调试。一般全部加载后,对数据库做备份,因为测试中会频繁删除或破坏数据,而建立起完整的测试数据库数据是很费时的。
5 系统的实现
我本次设计主要完成项目申报、项目管理这两个功能模块设计,项目申报包括申报管理功能可以对申报批次名称等相关信息的录入。项目管理包括项目的相关信息的增加、查询、修改、删除操作。
1、系统登陆模块:在配置了相关运行环境后,在任一客户端IE浏览器地址栏中输入: IP地址(服务器名)http://localhost:8080/research/index.htm/即可正常登陆本系统,登陆界面(如图4)

图4 登陆界面
在用户输入正确的管理员密码后就可以进入到系统的相关功能操作界面(如图5)。其中判断是否输入的是管理员帐号密码的相关代码如下:
Class.forName("net.sourceforge.jtds.jdbc.Driver");
Connection conn=DriverManager.getConnection("jdbc:jtds:sqlserver://localhost:1433/research","sa","");
st=conn.createStatement();
String sql="select * from Administrators where Adminname='"+Adminname+"' and Adminpassword='"+Adminpassword+"'"; //获取管理员用户名和密码
rs=st.executeQuery(sql);
int i=0;
while(rs.next()){
i++;
}
if(i>0)
{
Loginsucess=true;
session.setAttribute("Administrator","Admin"); //判断管理员用户名
}
catch(Exception sqlexl) {
sqlexl.printStackTrace();
}
finally{
if(conn!=null){
try{
conn.close();
}
catch(SQLException sqlex2){
sqlex2.printStackTrace();
}
}
}
if(Loginsucess){
% >
<jsp:forward page="Administrator.htm"></jsp:forward>
<%
}
else{
%>
<jsp:forward page="error.jsp"></jsp:forward> //用户名密码错误跳转页面
<%
}
%>

图5 功能操作界面
2、项目申报功能模块
点击申报管理(如图)

确定项目申报工作的批次名称,设置开始时间等相关条件。可以提交项目的申报(如图6)

图6 项目的申报界面
其功能实现代码如下:
<%
Connection conn=null;
PreparedStatement stat=null;
ResultSet rs=null;
try
{
String t1=new String(request.getParameter("t1").getBytes("8859_1"),"gb2312");
String t2=new String(request.getParameter("t2").getBytes("8859_1"),"gb2312");
String t3=new String(request.getParameter("t3").getBytes("8859_1"),"gb2312");
String t4=new String(request.getParameter("t4").getBytes("8859_1"),"gb2312");
Class.forName("net.sourceforge.jtds.jdbc.Driver");
conn=DriverManager.getConnection("jdbc:jtds:sqlserver://localhost:1433/research","sa",""); //数据库驱动
stat=conn.prepareStatement("insert into Declare1 values(?,?,?,?)"); //分别插入相应数据到数据库
stat.setString(1,t1);
stat.setString(2,t2);
stat.setString(3,t3);
stat.setString(4,t4);
int rs=stat.executeUpdate();
if (rs>0) //判断是否有数据添加进数据库
{
out.println("申请添加成功!");
}
else
{
out.println("申请添加失败!");
}
}catch(Exception e) //捕获异常
{
out.println(e+"111");
}
3、项目管理功能模块
项目管理包括项目一览、新增项目两部分,该子系统主要针对已通过审核的项目提供了管理功能,能提供项目的信息,对项目实现增加、修改、查找等功能.点击项目管理(如图)

,可以出现项目一览和新增项目两个功能模块.这时候点击项目一览出现项目的一些基本信息,并且可以对提进行增加、修改、查找相关操作。
(1)项目一览的界面(如图7)

图7 项目一览界面
其功能实现代码如下:
删除功能:
Class.forName("net.sourceforge.jtds.jdbc.Driver");
Connection conn=DriverManager.getConnection("jdbc:jtds:sqlserver://localhost:1433/research","sa","");
String str="deleteProjectwhereProjectname='"+request.getParameter("yy")+"'";
Statement stat=conn.createStatement();
int i=stat.executeUpdate(str);
if (i>0)
{
out.println("成功删除"+request.getParameter("yy")+"的信息!:<br>");
out.println("<a href='javascript:window.close();'>确定</a>");
}
}
修改功能:
try
{
String t1=new String(request.getParameter("t1").getBytes("8859_1"),"gb2312");
String t2=new String(request.getParameter("t2").getBytes("8859_1"),"gb2312");
String t3=new String(request.getParameter("t3").getBytes("8859_1"),"gb2312");
String t4=new String(request.getParameter("t4").getBytes("8859_1"),"gb2312");
String t5=new String(request.getParameter("t5").getBytes("8859_1"),"gb2312");
String t6=new String(request.getParameter("t6").getBytes("8859_1"),"gb2312");
String t7=new String(request.getParameter("t7").getBytes("8859_1"),"gb2312");
String t8=new String(request.getParameter("t8").getBytes("8859_1"),"gb2312");
String t9=new String(request.getParameter("t9").getBytes("8859_1"),"gb2312");
String 10=new String(request.getParameter("10").getBytes("8859_1"),"gb2312");
Class.forName("net.sourceforge.jtds.jdbc.Driver");
conn=DriverManager.getConnection("jdbc:jtds:sqlserver://localhost:1433/research","sa","");
stat=conn.prepareStatement("updateProjectset Projectname='"+t1+"',Researchname='"+t2+"',Projectsource='"+t3+"',projectCategory='"+t4+"',Starttime='"+t5+"',Plantime='"+t6+"',Actualtime='"+t7+"',Applicationmoney='"+t8+"',Approvedmoney='"+t9+"',Supplementary='"+t10+"' where Projectname='"+yy+"'");
int rs=stat.executeUpdate();
if (rs>0)
{
out.println("项目修改成功!");
}
else
{
out.println("项目修改失败!");
}
}
查询功能
try
{
String tname=request.getParameter("textname"); //获取查询关键字
Class.forName("net.sourceforge.jtds.jdbc.Driver");
conn=DriverManager.getConnection("jdbc:jtds:sqlserver://localhost:1433/research","sa","");
st=conn.createStatement();
rs=st.executeQuery("select * from Project where Projectname ='"+tname+"'")
%>
<TABLE
<TBODY>
<TR bgColor=#b1db99>
<%
while (rs.next()) //获取到输入关键字的相关信息
{
String Projectid=rs.getString(1);
String Projectname=rs.getString(2);
String Researchname=rs.getString(3);
String Projectsource=rs.getString(4);
%>
(2)新增项目的界面

图8 新增项目界面
其功能是可以对项目的新增,功能实现代码如下:
try
{
String t1=new String(request.getParameter("t1").getBytes("8859_1"),"gb2312");
String t2=new String(request.getParameter("t2").getBytes("8859_1"),"gb2312");
String t3=new String(request.getParameter("t3").getBytes("8859_1"),"gb2312");
String t4=new String(request.getParameter("t4").getBytes("8859_1"),"gb2312");
String t5=new String(request.getParameter("t5").getBytes("8859_1"),"gb2312");
String t6=new String(request.getParameter("t6").getBytes("8859_1"),"gb2312");
String t7=new String(request.getParameter("t7").getBytes("8859_1"),"gb2312");
String t8=new String(request.getParameter("t8").getBytes("8859_1"),"gb2312");
String t9=new String(request.getParameter("t9").getBytes("8859_1"),"gb2312");
Stringt10=new String(request.getParameter("t10).getBytes("8859_1"),"gb2312");
Class.forName("net.sourceforge.jtds.jdbc.Driver");
conn=DriverManager.getConnection("jdbc:jtds:sqlserver://localhost:1433/research","sa","");
stat=conn.prepareStatement("insert into Project values(?,?,?,?,?,?,?,?,?,?)"); //新增项目到相应的数据库
stat.setString(1,t1);
stat.setString(2,t2);
stat.setString(3,t3);
stat.setString(4,t4);
stat.setString(5,t5);
stat.setString(6,t6);
stat.setString(7,t7);
stat.setString(8,t8);
stat.setString(9,t9);
stat.setString(10,t10);
int rs=stat.executeUpdate();
if (rs>0)
{
out.println("项目添加成功!");
}
else
{
out.println("项目添加失败!");
}
}
6 结论
本文详细的讲述了科研项目管理系统的设计实现过程,包括功能模块设计与实现、采用技术分析等。设计部分是整个应用程序的基础,将这部分设计好会给后面的程序编写带来很大的方便。
该设计基本上能完成原定的任务功能,我主要完成了项目申报、项目管理等功能模块的设计,其中项目申报包括申报管理功能可以对申报批次名称等相关信息的录入。项目管理包括项目的相关信息的增加、查询、修改、删除操作。但是由于毕业设计时间和知识面的限制,小问题还是存在的,在数据库方面的做的不是很好。所以该软件还有许多方面不尽如人意,比如系统有些漏洞,有些功能还不能实现,显示界面不是很美观,这些问题都有待进一步学习和改进。
致 谢
经过几个月的忙碌和学习,本次毕业论文设计已经接近尾声。作为一个本科生的毕业设计,由于经验的匮乏,难免有许多考虑不周全的地方,如果没有指导教师的督促指导,想要完成这个设计是难以想象的。在这里要感谢我的论文指导老师王远志老师。王老师平日里工作繁多,但在我做毕业设计的每个阶段,从选题到查阅资料,论文提纲的确定,中期论文的修改,后期论文格式调整等各个环节中都给予了我悉心的指导。向王老师表示最真诚的感谢!
参考文献
[1] 方盈.SQL Server 2000彻底研究.北京:中国铁道出版社,2002.
[2] 卫海.快速学习SQL Server 2000中文版.北京:中国铁道出版社,2001.
[3] C.J.Date[美]著 孟小峰,王珊等译.数据库系统导论.北京:机械工业出版社,2000.
[4] 张孝祥.Java就业培训教程.北京:清华大学出版社,2002.
[5] Hans Bergsten. Java Server Pages 3rd Edition. New York:O'Reilly,2003.
[6] 朱敏.JSP Web应用教程.北京:清华大学出版社,2004.
[7] 郝玉龙.J2EE编程技术.北京:清华大学出版社,2002.
[8] 蔡剑.Java网络程序设计J2EE.北京:清华大学出版社,2002.
[9] 黄明,梁旭.JSP信息系统设计与开发实例.北京:机械工业出版社,2004.
1810

被折叠的 条评论
为什么被折叠?



