VB科研项目管理系统
1.无需注册登录,支付后按照提示操作即可获取该资料.
2.资料以网页介绍的为准,下载后不会有水印.资料仅供学习参考之用.
密 惠 保
第二章 系统分析
2.1 概述
本文来自think58
[来源:http://www.think58.com]
管理信息系统通常是一个复杂的系统,它既受内部环境的互相影响,又受外部环境的制约,需要考虑的问题很多。系统分析首先应对系统现状进行分析,提出新系统要达到的目标,然后确定用户对目标系统的要求,为软件设计提供基础。其主要任务是将在系统详细调查中所得的文档资料集中在一起,对组织内部整体管理状况和信息处理过程进行分析;目的是将用户的需求确定下来。其中的需求分析是系统开发工作中最重要的环节之一,是系统设计的依据,需求分析已经成为一门独立的学科,称为需求工程(Requirement Engineering,RE),即应用已证实有效的技术、方法进行需求分析,确定用户需求,帮助开发人员理解问题并定义目标系统的所有外部特征。
系统分析一般还应包括业务流程及数据流程分析等,但由于项目及论文管理来说,只是一个简单的归档及统计问题,故可以省去。重点放在用户的信息和功能需求上。
由于目前对CIM所的项目和论文进行管理的人员主要是该所的领导,工作很繁忙,无法抽出过多时间进行交流,所以采取的需求分析方法主要采用首先对CIM所过去产生的各种手工报表进行分析,从用户的角度提出需求的设想,然后再请所里领导修改。
2.2 现存的问题及目标 think58 [来源:http://www.think58.com]
经过分析,得出目前采用人工管理存在如下主要问题:
(1)项目信息查询、统计困难
由于缺乏有效的规范,无法对本所的所有科研项目进行统一管理,当需要进行统计工作或需要查询某个项目的基本情况(如拨款情况或成果情况)时只能通过向该项目的负责人询问,造成极大的不便。特别是当需要以某种条件进行统计或查询时(如统计本所所有863计划项目或统计本所所有获奖项目等)尤其困难。
(2)论文统计困难
由于论文发表具有周期长、分布广泛的特点,当发表通知或杂志、期刊抵达时,往往相关人员已经遗忘甚至已经离开研究所,由于缺乏专职管理人员和一套行之有效的管理规范,通知或杂志寄到时没有及时归档记录,以至于当需要进行论文统计工作时不得不东查西找,效率非常低,并且极易统计不完全或由于遗忘而造成数据不属实的现象。
(3)浪费领导的时间和精力
当需要进行统计工作,尤其是用于送交上级部门的报表,一般工作人员往往不熟悉情况或要求而不得不由所里主要领导来完成,浪费了领导的大量时间和精力。
根据上面的分析,提出以下开发目标:
(1) 提高项目及论文管理的水平,提供及时、准确的信息服务;
(2) 提高信息检索的效率,实现灵活的查询,包括多条件查询、模糊查询等; [资料来源:THINK58.com]
(3) 减轻管理人员制作报表、统计分析的负担;
(4) 实用。系统规模不宜太大,但又要能保证支持日常工作的要求;
(5) 系统应易于修改和扩充。 内容来自think58 [资料来源:THINK58.com]
2.3 需求分析 [版权所有:http://think58.com]
2.3.1信息需求
(1)关于项目基本情况的信息
项目编号:格式为 年份+序号
项目名称(中文、英文)
负责人1
负责人2
主要承担人1
主要承担人2
项目来源
项目性质 分为国家自然科学基金、863、部省科委及企业集团四种情况
文件柜号
科研代号
电子文档名
开始日期:格式为 年份+月份+日期
结束日期:格式为 年份+月份+日期
注:项目编号是一个七位字符串,其格式为YYYY-##,其中YYYY为立项年份,##是两位数,表示该项目在某年中的立项顺序。
(2)关于项目财务情况的信息
财务编号
单位分类
总经费(万元)
第一(二…六)次拨款数(万元)
第一(二…六)次拨款日期:格式为 年份+月份
第一(二…六)次免扣额(万元)
拨款总额(计算项)
累计支出(万元)
(3)项目成果情况
验收日期:格式为 年份+月份+日 [资料来源:www.THINK58.com]
鉴定日期:格式为 年份+月份+日
获奖日期:格式为 年份+月份+日
鉴定单位
获奖名称
授奖单位
证书号
(4)关于期刊论文情况的信息
论文名称(中文、英文)
发表日期:格式为 年份+月份
期刊名称
作者(1-6)
范围 分为全国、国际、地方三种情况
检索源 分为EI、SCI、核心和一般四种情况
检索号
学科门类
来源
出版单位
(5)关于会议论文情况的信息
论文名称(中文、英文)
会议时间:格式为 年份+月份
会议名称
入选论文集名称
作者(1-6)
*范围 分为全国、国际、地方三种情况
学科门类
来源
会议地点
2.3.2 功能需求
(1)数据录入 分别以项目、期刊论文、会议论文为单位录入项目、期刊论文及会议论文的全部数据,对项目也可以分别以基本情况、财务情况或成果情况为单位录入。录入时应包括对数据的正确性校验。
think58好,好think58
[资料来源:http://www.THINK58.com]
(2)数据维护 支持平时对数据的修改,包括插入、删除及更新。
(3)查询
i 项目查询
以项目名称、负责人、主要承担人、项目性质、开始日期、财务编号为条件查询项目的各种情况,对项目名称支持模糊查询。
ii 期刊论文查询
以发表日期、来源、检索源为条件查询。
iii 会议论文查询
以会议时间查询。
iiii 设备查询
以购置设备日期、设备经费、单位分类为条件查询。
iiiii 支持自定义复杂条件查询。
查询结果要求能以下列统计报表的形式打印输出:
项目总览表
项目经费情况表
项目成果情况表
期刊论文统计表
学术论文统计表
(4)其他要求
系统要有一定的安全保障,对于影响数据库内容的操作,例如录入、插入、删除等,必须验证用户身份。
系统必须具有一定的灵活性,对于用代号设置的字段(例如项目性质、检索源等)必须能够进行动态修改并自动显示在报表中。
软件应有良好的易使用性,操作应尽量简单,有联机帮助对用户进行使用指导及在用户输入错误、数据库未连接、打印机未准备好等意外情况情况下提供详细的帮助信息。 [资料来源:http://think58.com]
第三章 系统设计
copyright think58 [资料来源:http://www.THINK58.com]
[来源:http://www.think58.com]
3.1 数据库设计 think58.com [资料来源:THINK58.com]
3.1.1 数据库概念设计
本系统结构比较简单,只有三个相互独立的实体:项目、期刊论文和会议论文。其中项目用项目编号、期刊论文和会议论文用论文名称作为码。
3.1.2数据库逻辑设计
该系统由三个基本关系组成,其模式结构如下:
(1)项目(序号,项目编号,合同号,负责人1,负责人2,主要承担人1,主要承担人2,项目来源,项目性质,开始日期,结束日期,文件柜号,电子文档名,财务编号,总经费,货币类型,拨款数(1-4),拨款日期(1-4),免扣额(1-4),累计支出,验收日期,鉴定日期,鉴定单位,获奖名称,获奖名称,授奖单位,证书号)
各字段的定义如下所示:
名 称 类 型 格 式 其 他
序号 char(7) yyyy-## 主键
项目编号 varchar(10) yy-mm
项目名称 varchar(120)
合同号 varchar(12)
负责人1 varchar(20)
负责人2 varchar(20)
主要承担人1 varchar(20)
主要承担人2 varchar(20)
项目来源 varchar(30)
项目性质 tinyint 缺省为0 [资料来源:http://THINK58.com]
开始日期 datetime
结束日期 datetime
文件柜号 tinyint
电子文档名 varchar(20)
财务编号 char(6)
总经费 smallmoney
货币类型 varchar(10)
拨款数(1-4) smallmoney
拨款日期(1-4) datetime
免扣额(1-4) smallmoney
累计支出 smallmoney
验收日期 datetime
鉴定日期 datetime
鉴定单位 varchar(50)
获奖名称 varchar(40)
获奖日期 datetime
授奖单位 varchar(50)
证书号 varchar(50)
注:序号格式为yyyy-##,其中yyyy为项目开始的年份,##为该项目在该年份中的次序。
(2)期刊论文(论文名称,发表日期,期刊名称,作者1,作者2,作者3,作者4,作者5,作者6,范围,检索源,检索号,卷期号,学科门类,来源,出版单位)
各字段的定义如下所示:
名 称 类 型 格 式 其 他 内容来自think58 [来源:http://www.think58.com]
论文名称 varchar(120) 主键
发表日期 datatime yyyy-mm
期刊名称 varchar(100)
作者(1-6) varchar(20)
范围 tinyint 缺省为0
检索源 tinyint 缺省为0
检索号 varchar(30)
卷期号 varchar(30)
学科门类 varchar(20)
来源 varchar(20)
出版单位 varchar(50) 内容来自think58
(3)会议论文(论文名称,会议时间,会议地点,作者1,作者2,作者3,作者4,作者5,作者6,范围,学科门类,来源)
各字段的定义如下所示:
名 称 类 型 格 式 其 他
论文名称 varchar(120) 主键
会议时间 datatime yyyy-mm
会议地点 varchar(20)
作者(1-6) varchar(20)
范围 tinyint 缺省为0
学科门类 varchar(20)
来源 varchar(20)
think58好,好think58
[版权所有:http://think58.com]
[资料来源:http://think58.com]
(4)设备查询(设备编号,设备名称,单位分类,型号,规格,分类号,国标代码,单位代码,购置日期,已使用年限,账面数量数,清查数量数,账面金额数,清查金额数,使用状况,备注)
各字段的定义如下所示:
名 称 类 型 格 式 其 他
设备编号 varchar(8) 主键
设备名称 varchar(30)
单位分类 varchar(1)
型号 varchar(30)
规格 varchar(20)
分类号 varchar(6)
国标代码 varchar(3)
单位代码 varchar(4)
购置日期 datatime yyyy-mm
已使用年限 varchar(3)
账面数量数 varchar(3)
清查数量数 varchar(3)
账面金额数 varchar(10)
清查金额数 varchar(10)
使用状况 varchar(10)
备注 varchar(20)
内容来自think58
[资料来源:http://THINK58.com]
[版权所有:http://think58.com]
3.6 主界面设计 本文来自think58 [来源:http://www.think58.com]
主界面只作为其他所有窗口的父窗口,名称为frmMain,类型为MDIForm。其上放置的控件有:主菜单、用于调用Html帮助文件的一个HHOpen控件(不可见)、以及一个用于显示辅助信息的状态栏。界面设计如下:
内容来自think58
[来源:http://think58.com]
主菜单设计如下:
数据录入 查询 设置 帮助 退出
项目录入 项目查询 数据库连接设置 内容
论文录入 论文查询 代号设置 期刊论文录入 期刊论文查询
会议论文录入 会议论文查询 内容来自think58 [资料来源:http://www.THINK58.com]
各菜单的代码作用仅仅是打开相应的窗口。
3.7 录入模块设计 think58好,好think58 [资料来源:http://THINK58.com]
项目录入与论文录入除操作的记录集不同外,其余基本是一样的。先前的设计是为项目录入、期刊论文录入、会议论文录入和设备录入各创建一个窗口,以实现对不同记录集的操作。但后来发现由于其多数操作都是一样的,这样就造成了代码的重复率很大,
并且不易维护。为了提高代码的重用性和可维护性,减少源程序数量,对项目和论文的录入采用同一个窗体,用窗体的Tag属性来区分当前打开的窗体是要对那一个记录集进行操作。录入窗体取名为frmRecordInput。窗体界面设计如下:
录入窗口的菜单设计如下:
记录 编辑 刷新 排序 帮助 关闭
添加 剪切 升序排列 内容
保存 复制 降序排列
粘贴
删除
录入窗口所用到的控件有:
控件类型 控件名称 作用
DataGrid dbdRecord 用于显示项目或论文数据并可在其上进行编辑
ComboBox cboRange 显示并设置论文范围
ComboBox cboRetriSource 显示并设置论文检索源
ComboBox cboQuality 显示并设置项目性质
ToolBar ToolBar1 提供快捷工具栏
ImageList ImageList1 为工具栏提供图象列表
本文来自think58 [资料来源:http://www.THINK58.com]
[资料来源:http://www.THINK58.com]其中ImageList控件在运行时不可见。窗口上所有控件的布局在运行时由代码调整。打开录入窗口时根据要录入的是项目情况、期刊论文或会议论文分和设备情况分别将其Tag属性设置为“Project”、“Periodical”、“Meeting”和“Machine”以作区别,这些代号也与类clsData中数据成员的名称相同,在引用类的方法时就可以直接用“Me.Tag”作为参数,这样可以减少输入错误。
对要用代码进行的录入(项目性质、期刊论文的检索源等)采用下拉列表框作为输入方式,既方便用户操作又可避免出错。
为方便用户快速找到感兴趣的记录,录入窗口提供了按照某一列(字段)进行升序或降序排列的功能,实现方法是当用户单击某一列的列头时触发DataGrid控件的HeadClick事件,在该事件的代码中得到当前列的名称,存于局部变量SortField中,然后在升序或降序排列菜单项的代码中调用类clsData的排序记录(Sort)方法对记录排序。
为防止用户无意中进行了关闭窗口的操作而丢失未保存的修改,在窗口的代码中定义一个名为DataChanged的布尔型局部变量,用以跟踪用户的操作,当用户改变了数据时将其设为真,在窗体关闭前检查该变量,如果为真则提醒用户是否保存所做的修改。
定义两个私有函数:DateFormat()用于为只精确到月的日期字段定义日期格式; 本文来自think58
dbdRecordResize()用于设置dbdRecord控件各列的高度及宽度。
录入窗口所需要处理的事件主要有:
窗口frmRecordInput的Activate事件: 紧接着窗口的Load事件被触发,代码完成的主要工作是根据窗口的Tag属性为dbdRecord控件绑定数据源;从注册表中读取代号设置并将其加入相应的ComboBox控件中;根据窗口的Tag属性将dbdRecord控件中对应于用代号设置的列的Button和Locked属性设为True。
dbdRecord控件的RowColChange事件: 如果当前获得焦点的列是用代号设置的列则调用dbdRecord控件的ButtonClick事件处理程序,否则将下拉列表框设为不可见;在状态条上显示当前正在编辑的记录。
dbdRecord控件的ButtonClick事件: 将列表框移动到当前列并设为可见;将列表框中的值与该列的数据对应起来。
dbdRecord控件的Error事件: 对录入过程中的错误进行提示。
三个ComboBox控件的LostFocus事件: 如果代号被改变则将列表框中的新值写入当前列以起到更改的作用。
[资料来源:THINK58.com]
3.8 查询模块设计 think58好,好think58 [资料来源:http://www.THINK58.com]
按照功能需求的规定,必须支持各种查询方式,并能将查询结果打印成报表。其中需要录入字符串的查询均采用模糊查询的方式,以减少用户输入,提供自定义查询以满足复杂条件的查询要求。退出查询后应清除查询结果,能将代码意义自动放在报表末尾,如果以时间为查询条件,还应将时间范围自动放在报表开头。查询以对记录集进行筛选而不是以重新打开记录集的方式,这样就节约了数据传输的开销。
查询项目情况、期刊论文或会议论文、设备情况的界面和基本操作都相同,只有菜单不一样。原先的设想是象录入模块一样建立一个通用查询界面,但由于VB不提供动态修改菜单项的方法,所以只能分别为项目、期刊论文和会议论文、设备各创建一个查询窗口。 内容来自think58 [资料来源:http://THINK58.com]
下一篇:保单