森林经理学实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

森林资源二类调查数据库系统
分析设计说明书
1.系统概述.......................................... 错误!未定义书签。

1.1背景 (2)
1.2目标 (2)
1.3环境 (2)
2.系统分析与设计..................................... 错误!未定义书签。

2.1 系统功能需求 (3)
2.2 系统总体设计 (4)
2.2.1 功能结构 (4)
2.2.2 数据描述 (8)
3. 系统实现.......................................... 错误!未定义书签。

3.1 开发工具 (8)
3.2 数据库的建立 (8)
3.3 主程序的实现 (9)
3.3.1 用户管理 (10)
3.3.2 数据库连接 (11)
3.3.3 数据录入 (12)
3.3.4 报表统计 (15)
3.3.5 数据查询模块 (17)
4 帮助/说明.......................................... 错误!未定义书签。

森林资源二类调查数据库系统系统设计说明书
1.1背景
森林资源信息是指反映林木生长状况、生长环境及其生长紧密相关的营林技术措
施、方针政策等信息。

森林具有生长、消亡和再生长的能力,随着森林的自然生长、枯损和人为生产活动的开展,森林资源时刻都在变化着;再加上森林资源分布广,生长周期长、信息量大等特点,使得传统的森林资源信息管理难度很大,效率也十分低下,难以满足现代林业发展的需要。

利用现代信息管理技术则可以很好地解决这些问题。

森林资源二类调查的任务是了解森林资源的状况,而其目的是:掌握森林资源的动态变化规律,为制定下一阶段林业发展规划,编制森林采伐限额,建立和完善地方森林资源监测体系,考核“造林绿化”和保护森林资源目标完成结果等提供科学依据。

1.2目标
根据森林资源保护与利用需要,利用关系数据模型,可视化技术, 面向对象的方法以GIS 技术,对系统进行了数据设计及功能设计,建立系统框架,完成了结构设计。

并选择二类调查数据进行了系统的实际建立工作,最终Powerbuilder 程序设计语言和
qlServer2008完成了计算机森林资源管理地理信息系统的界面设计和程序设计,实现系统主要的空间信息管理和属性信息管理功能。

1.3环境
硬件环境:多媒体计算机
Intel Pentium 4 或 100%的兼容处理器(CPU)
1GB 以上的内存(RAM)
320GB 以上的硬盘可用空间
256 色或更高的显示适配器及兼容监视器
DVD-RW 驱动器
Microsoft Windows 7与Microsoft Video for Windows 或 Apple QuickTime 兼容的视频采集卡(可选)
软件环境:Windows7、PowerBuilder 12.1,SqlServer2008 R2
素材资料:实验指导书、图书馆书籍、网络搜索
2.1 系统功能需求
1、数据的采集和输入:把分散在各处的数据进行收集并将整理好的数据通过一定的设备输入到信息系统中。

这一步工作的质量是整个信息系统是否正确发挥作用的关键。

2、数据的存储:管理中的大量数据处理通过共享并且需要多次使用。

这就要求将大量的数据存储起来,通常这些数据被保存在外部存储介质中,以便需要随时进行存取和更新。

3、数据的加工处理:数据的加工处理是信息系统的一项重要功能。

进入信息系统的数据,都需要经过加工处理,才能产生有用的信息。

4、数据传输:为了把数据或信息从一个子系统传送到另一个子系统,或者在信息系统内部进行数据的处理都涉及数据的传输问题。

5、数据传输:包括计算机系统内和系统外的传输,计算机传输即以计算机为中心,通过通信线路与其它近、远程终端连接、形成联机系统或通过通信线路将微小型等计算机联网。

除计算机传输外还有人工和盘片传输。

人工传输是以各种单据、报表、计划等文字形式传输。

盘片传输是将要传输的数据录入到磁盘或其它外存进行传输。

数据的传输速度和准确程度是数据传输的主要性能指标。

6、信息输出:信息系统输出功能的完善与否,输出与格式直观方便与否,直接关系到信息的使用效果和信息系统效能发挥。

因而对系统输出的信息,又尽量使其易读易懂,符合信息使用者的习惯和要求。

7、信息维护:信息的维护就是保护信息处于适用状态。

2.2 系统总体设计
(1)模块划分
本系统有以下功能模块:
1)用户登录模块
2)主界面模块
3)数据插入模块
4)数据检索修改模块
5)数据查询模块
6)数据统计导出模块
7)帮助模块
(2)模块功能描述
1)用户登录:
用户只需要在用户名密码中输入自己相应的帐号密码按登录按钮既可登录系统,弹出主界面,若用户名密码错误,则会提示登录错误。

单击取消按钮可以退出程序。

2)主界面菜单功能
在主界面用户将鼠标移到菜单上的项,会弹出该项的子项,单击一项,便可以弹出相应窗口执行相应操作。

,就如单击打印输出按钮,就弹出“森林资源二类调查系统打印输出”界面。

当鼠标在“录入编辑”停留时,会弹出子项目录入和修改两项:
3)录入功能
用户可以自己输入东南县2011表中的所有字段,也可以填写部分。

关键字为必填,应为是该表的主键。

其它的字段也有约束,程序已经实现表单验证功能,一旦用户输入不符合预定的要求,系统将向用户发出警告,并把光标跳转到错误行,提示用户再修改。

然后,用户可以单击添加按钮将该表单中的临时输入内容写入Datawindow,然后单击确认按钮便提交到数据库,完成数据的插入。

如果还想再看下刚刚填写的数据是否真正插入到了数据库,可以单击检索按钮,程序便会向数据库中读取刚刚插入的数据,以便用户核对。

要是用户觉得插入错误,想删除刚刚插入的数据,只要单击删除按钮既可。

在导航栏中点击录入:
打开了森林资源二类调查系统数据录入窗口如下:
将要插入的数据填入相应的表格中,再点击确定按钮,这条数据已经插入数据库中,然后可以点击检索按钮来查看用户插入的数据:
4)数据修改功能
在检索数据页面,单击检索按钮,便可以显示数据库中“东南县2001”表的所有行,关键字设定为不可修改,应为它作为主键,根据它才可以实现其它字段的修改。

当用户选择关键字右边的任何一行所对应的列时,光标都会变为可编辑状态。

用户可以根据需要修改其中的数值。

(各数值代表的意义可以参考森林资源代码如:林种:用材林210,经济林230,薪炭林220,防护林120,(商品林)特种用途林110, 110有林地120疏林 130灌木林地140无立木林地150苗圃地210乔内荒地220乔外荒地……等等)修改完的数据只是存储在Datawindow中,所以必须单击提交按钮完成修改。

点击按钮修改:
出现如下界面:
通过点击检索按钮,我们可以找到上面所插入的那条记录:
修改这条记录如下:
为了检验是否修改成功,直接打开数据库查询这条记录或者点击检索按钮即可,下面是在数据库中查询的结果,可以看到该条记录已经被修改成功了:
5)统计输出功能
打开此模块,左侧将会有七张导出表供选择,用户可以选择其中一条,点击插入数据,下面的文本条中显示查询语句,并会以MessageBox提示数据库中插入表和录入数据的成功与否。

如果提示成功,用户可以点击转换输出按钮,数据库中相应表的数据会以文本文件形式导出,并以DataWindow形式在右侧显示,以方便用户查阅。

用户可以任选一张表,重复上述操作。

点击打印输出按钮:
任意选择一条记录,由于该系统只实现了表二、表三、表七三张表的打印输出功能,因此,当你选择第一条记录时会弹出如下窗口来提示用户:
若选择表二进行建表并导出:
选择表二,点击生成报表按钮,表二即可在数据库中建立,打开数据库的MyForest的数据库,可以看到这张表格已经出现。

通过查询语句可以看到表二的内容如下:
查询数据库的Table02,可以看到数据已经插入。

表三和表七实现同样的功能:最后进行报表导出,选择一条,先进性表格建立插入后,点击报表导出按钮,该表格即可在txt中导出:
当出现窗口提示“导出成功”后说明该表已经导出了,用户可以到相应的工作目录去查找导出的文件:
在该目录下用户可以看到Table02、Table03、Table07都导出成功了:
可以打开来检查数据输出是否正确:
6)帮助
功能结构图如下:
3.1 开发工具
PowerBuilder美国Sybase公司研制的一种新型、快速开发工具,是客户机/服务器结构下,基于Windows3.x、Windows95和WindowsNT的一个集成化开发工具。

它包含一个直观的图形界面和可扩展的面向对象的编程语言PowerScript,提供与当前流行的大型数据库的接口,并通过ODBC与单机数据库相连。

SQL?Server?2008是一个重大的产品版本,它推出了许多新的特性和关键的改进,使得它成为至今为止的最强大和最全面的SQL?Server版本。

这篇文章详细介绍了Microsoft?SQL?Server?2008中的新的特性、优点和功能……?在现今数据的世界里,公司要获得成功和不断发展,他们需要定位主要的数据趋势的愿景。

微软的这个数据平台愿景帮助公司满足这些数据爆炸和下一代数据驱动应用程序的需求。

微软将继续投入和发展以下的关键领域来支持他们的数据平台愿景:关键任务企业数据平台、动态开发、关系数据和商业智能。

3.2 数据库的建立
打开PowerDesigner
单击菜单Sybase->新建模型->concept model(概念模型)
在右侧栏点选Entity ,新建两个表,并双击打开,code最好用英文,m强制输入,p主码。

其中一张表是小班表,另一张是林种表。

建立它们的字段如下图所示。

点选右侧工具栏的Releationship 从树种表到小班表拖出一条直线。

转换数据库:Tools –>physical datamodel.在dbms里选择sql 2000数据库->updatamode from database选择 selecion里的datasource
在Powerbuilder工具栏中点击db profile,进入
双击ODB ODBC下Utilities下的Create ODBC Data Source,选择文件数据源(F),点击下一步。

选择SQL Server,点击下一步,填写数据源名称(自己随意给定,这里给fmsys),如果需要,单击浏览按钮,选择保存数据源的位置;点击下一步,在新界面中点击完成,在上面填入描述(描述也可以空着)和服务器名称(必须填,就是你目前登录的SQL Server 服务器,就是你的机器名),点击下一步
选择“实用用户输入登录ID和密码的SQL Server验证(S)”,输入正确的登陆ID和密码,这里均为fmsys;然后点击下一步,进入
在以上界面中,确认默认数据库名为fmsys,否则应选中“更改默认数据库名为(D)”,更改数据库名;点击下一步,进入
在此不修改其他内容,点击完成,在preview中出现这些代码,
测试连接,若成功则出现如下界面,再将它复制到一个临时文件,以供接下来实用
3.3 主程序的实现
3.3.1用户管理
1.用户界面如图所示:
2.在SQL Server中的MyForest数据库中建立Users这张表,用来管理登录的用户的基本信息。

代码如下:
create table users(
userid int primary key,
username varchar(20),
userlevel int,
passwd varchar(50)not null
);
go
insert into users values(1,'张',1,'张');
insert into users values(2,'王',1,'王');
insert into users values(3,'zhang1',1,'zhang1');
3.PowerBuilder的界面设计中插入静态字段、文本框以及按钮等,做一个基本的登录的界面:
4.在登录按钮的单击事件中:首先定义字符
串类型的
in_userid,in_passws,db_userid,db_passw
s,用来读取这两个文本框中的用户名和密码
字段,然后通过查询数据库中已有的userid 和passwd,若在数据库中出现说明用户名密码输入正确,用户即可点击登录按钮直接登录,若输入错误,则不能进入系统。

3.3.2数据库连接
在Powerbuilder工具栏中点击db profile,进入
双击ODB ODBC下Utilities下的Create ODBC Data Source,进入
选择文件数据源(F),点击下一步,选择SQL Server,点击下一步,进入
填写数据源名称(自己随意给定,这里给fmsys),如果需要,单击浏览按钮,选择保存数据源的位置;点击下一步,在新界面中点击完成,进入
在上面填入描述(描述也可以空着)和服务器名称(必须填,就是你目前登录的SQL Server 服务器,就是你的机器名);点击下一步,进入
选择“实用用户输入登录ID和密码的SQL Server验证(S)”,输入正确的登陆ID和密码,这里均为fmsys;然后点击下一步,进入
在以上界面中,确认默认数据库名为fmsys,否则应选中“更改默认数据库名为(D)”,更改数据库名;点击下一步,进入
在此不修改其他内容,点击完成,进入
点击测试数据源,弹出测试结果
点击确定,返回以上界面(ODBC Microsoft SQL Server安装);点击界面中的确定。

至此,数据源创建完毕。

选择ODBODBC,单击右侧的New建立自己的数据库首选项
在弹出的对话框中DataSource选择刚刚建立的fmsys名称填Forest
选择Preview选项卡,保存链接字符串以备后用。

点选DBProfiles中的Forest右侧Connect。

3.3.3数据录入
新建一个Grid的数据窗口
(2)在快速选择对话框中选择东南县2001表中的所有字段。

(3)设置Datawindow的字体颜色及行背景颜色。

(4)调整字体和位置:鼠标单击数据窗口对象中的“关键字”,再按ctl-a,选择数据窗口对象中所有的对象,选中者四角有小黑点。

然后在属性中选择Font,将12号字改为8号字。

用鼠标拖动网格线,调整行距。

(5)调整完毕,按保存。

保存数据窗口对象名为d_input。

(6)通过数据窗口空间将数据窗口对象加入窗口对象
(7)在窗口上插入数据窗口控件
点击菜单Insert?Control?DataWindow,然后在窗口空白处点击,得数据窗口控件。

通过鼠标适当调整其大小,位置
(8)插入静态文本作标题输入“森林资源二类调查数据录入”,调整字体、颜色、字号等,最后得。

检索数据
双击myexercise1,打开窗口命令
修改代码为
// Profile Forest
SQLCA.DBMS = "ODBC"
SQLCA.AutoCommit = False
SQLCA.DBParm = "ConnectString='DSN=fmsys;UID=sa;PWD=000000'"
Connect Using SQLCA;
IF SQLCA.SQLCODE <> 0 THEN
MessageBox("","数据库链接错误,错误是:"+SQLCA.SQLERRTEXT)
else
Open(w_main)
END IF
else
Open(w_main)
在w_input打开事件中
输入
//把最开始用的数据库连接参数SQLCA接过来
Dw_1.SetTransObject(SQLCA);
插入一个命令按钮
双击按钮进入代码模式
输入代码
//检索按钮代码
Dw_1.retrieve();
(9)设置菜单代码
(10)修改数据窗口对象的更新属性
双击左边列表中的d_input,在菜单中选择Rows?Update properties在界面中选中“Allow Updates”,选择table to update(要更新的表名),在Updateble columns中选中除关键字以外的所有列,选择unique key column为关键字字段。

(11)点击tab order 按钮,设置tab order如下
(12).在数据窗口对象中设置域检查,满足最基本的检查要求
在固定小班号的Validation Expression中双击,弹出编辑框
输入isNumber(gettext()),意为检查输入的是否为数字。

然后用右边的Verify按钮检查语法是否正确。

如果正确,单击OK,回到上面的编辑界面。

在同一行的Validation Message列中双击,在弹出对话框中输入出错提示信息“输入错误,必须为数字,请重新输入!”
字符型域检查字符串长度是否符合要求,这里以关键字为例;
仍然在数据窗口对象d_input的编辑状态,双击窗口下部“关键字”行的Validation Expression列,出现对话框。

在对话框中输入:Len(gettext())=9
在同一行的Validation Message中输入“长度必须为9位,请重新输入!”
数值型域设置取值的上下限或范围,这里以坡向为例(坡向代码为1-9);
仍然在数据窗口对象d_input的编辑状态,双击窗口下部“坡向”行的Validation Expression列,出现对话框。

在对话框中输入:number(gettext())>0 and number(gettext()) <= 9。

在记录确认事件中设计记录逻辑检查机制
3.3.4报表统计
(1)设计用户界面如下图所示:
(2)定义全局变量String colname_tab0x[]表示每一张输到数据库的表中的字段名String coltype_tab0x[]为其字段的变量类型Int colnum_tab0x表示字段个数,这些全局变量的定义,都是为了下面的函数中的调用提供方便。

(3)就以table03为例,首先设定建表函数create_tab03(),string ss
这里先定义一个建表语句ss,引用全局变量中的字段名,字段类型,组合起来执行,便实现了往数据库中插入表的操作。

ss = "create table Table03("+ colname_tab03[1]+" " + coltype_tab03[1]。

Execute Immediate :ss;
return SQLCA.SQLCODE
(4)然后是往建好的表中插入原始数据
1.定义游标C1 执行查询select 林种,地类, 龄组,sum(小班面积),sum(活立木蓄积) from 东南县2001 group by 林种,地类,龄组
定义游标C2 执行查询select distinct 林种 from 东南县2001 order by 林种
2.Fetch C1 Into :foresttype(林种)[i],:landtype(用地类型)[i],:agegroup(龄组)[i],:area(面积)[i],:volume(蓄积)[i];
Fetch C2 Into :ft(林种)[i];得到所有的林种
3.将获得林种按顺序填入输出的表第三列tab2[i,4]=ft[i];
4.根据林种遍历for ii =1 to (林种行数 - 1) For i = 1 To 数据库中table03行数
更具乔木林、竹林、红树林、疏林、国家特别规定灌木林、其它灌木林进行统计,其中乔木林再按龄组分类统计
5. ss = "delete from Table03"生成删除语句,删除表中所有行
6.遍历"insert into Table03 values( " + ss;创建插入语句,并执行,可将程序中的table03这个表转存到数据库中。

7. 执行查询Execute Immediate :ins_str;并关闭游标Close C2;Close C1;
(5)最后将数据库中表写入文件
1.定义进度条长度hpb_1.SetRange(0,100),设定进度条初始位置hpb_1.offsetpos(0);慢慢的滚动for j=1 to 100 hpb_1.Stepit() sleep(0.3) next
2.建立查询表的语句 s2 = "select * from Table0"+ string(ii_selected_tablenum)
3.定义游标C1 PREPARE SQLSA FROM :s2;后打开OPEN DYNAMIC C1;
然后遍历读取数据到数组data[] :do while sqlca.sqlcode=0
FETCH C1 INTO :data[1],:data[2],:data[3],:data[4],:data[5]。

将读取的那一行写成一个插入语句ls_name= colname_tab02[ii] +'='+'"'+data[ii]+'"' ;然后插入dw_1.modify(ls_name),使dw_1显示插入的数据
4.最后判断返回的数确定语句执行状态st_2.text="表
"+string(ii_selected_tablenum)+"输出成功!"
(1)设计用户界面如下图所示
(2)新建实例变量
(3)向第一个下拉框ddlb_1中填写代码
is_selected_colname = this.text
向第二个下拉框中填写代码
is_selected_operator = this.text
第三个单行文本sle_1中填写代码
id_value = this.text
从而捕获到了用户在这三个控件中填写的内容,并存入实例变量。

(4)当用户点击按钮“确定”的时候触发查询事件,代码如下
string s1,s2
s1 = is_original_select + " Where " + is_selected_colname + is_selected_operator + string(id_value)
messagebox("",s1)
dw_1.setSQLSelect(s1)
dw_1.retrieve()
sle_records.text = string(dw_1.rowcount())
首先是建立一个查询语句。

应用刚刚读取的实例变量is_selected_colname、
is_selected_operator和id_value。

合成查询语句如select * From 东南县2001 where 细班号 > 4然后用dw_1.setSQLSelected(s1)执行查询,将查询结果在dw_1中显示
dw_1.retrieve(),然后将记录数目填入sle_records.text,用户可以看见查到了几条记录。

注:以上内容仅作参考,但主要部分应该包含。

相关文档
最新文档