森林经理学实验报告.docx
《森林经理学实验报告.docx》由会员分享,可在线阅读,更多相关《森林经理学实验报告.docx(13页珍藏版)》请在冰豆网上搜索。
![森林经理学实验报告.docx](https://file1.bdocx.com/fileroot1/2023-6/14/2791053d-632d-47a5-8e23-c4ebc6703361/2791053d-632d-47a5-8e23-c4ebc67033611.gif)
森林经理学实验报告
森林资源二类调查数据库系统
分析设计说明书
森林资源二类调查数据库系统系统设计说明书
背景
森林资源信息是指反映林木生长状况、生长环境及其生长紧密相关的营林技术措
施、方针政策等信息。
森林具有生长、消亡和再生长的能力,随着森林的自然生长、枯损和人为生产活动的开展,森林资源时刻都在变化着;再加上森林资源分布广,生长周期长、信息量大等特点,使得传统的森林资源信息管理难度很大,效率也十分低下,难以满足现代林业发展的需要。
利用现代信息管理技术则可以很好地解决这些问题。
森林资源二类调查的任务是了解森林资源的状况,而其目的是:
掌握森林资源的动态变化规律,为制定下一阶段林业发展规划,编制森林采伐限额,建立和完善地方森林资源监测体系,考核“造林绿化”和保护森林资源目标完成结果等提供科学依据。
目标
根据森林资源保护与利用需要,利用关系数据模型,可视化技术,面向对象的方法以GIS技术,对系统进行了数据设计及功能设计,建立系统框架,完成了结构设计。
并选择二类调查数据进行了系统的实际建立工作,最终Powerbuilder程序设计语言和qlServer2008完成了计算机森林资源管理地理信息系统的界面设计和程序设计,实现系统主要的空间信息管理和属性信息管理功能。
环境
硬件环境:
多媒体计算机
IntelPentium4或100%的兼容处理器(CPU)
1GB以上的内存(RAM)
320GB以上的硬盘可用空间
256色或更高的显示适配器及兼容监视器
DVD-RW驱动器
MicrosoftWindows7与MicrosoftVideoforWindows或AppleQuickTime兼容的视频采集卡(可选)
软件环境:
Windows7、PowerBuilder,SqlServer2008R2
素材资料:
实验指导书、图书馆书籍、网络搜索
系统功能需求
1、数据的采集和输入:
把分散在各处的数据进行收集并将整理好的数据通过一定的设备输入到信息系统中。
这一步工作的质量是整个信息系统是否正确发挥作用的关键。
2、数据的存储:
管理中的大量数据处理通过共享并且需要多次使用。
这就要求将大量的数据存储起来,通常这些数据被保存在外部存储介质中,以便需要随时进行存取和更新。
3、数据的加工处理:
数据的加工处理是信息系统的一项重要功能。
进入信息系统的数据,都需要经过加工处理,才能产生有用的信息。
4、数据传输:
为了把数据或信息从一个子系统传送到另一个子系统,或者在信息系统内部进行数据的处理都涉及数据的传输问题。
5、数据传输:
包括计算机系统内和系统外的传输,计算机传输即以计算机为中心,通过通信线路与其它近、远程终端连接、形成联机系统或通过通信线路将微小型等计算机联网。
除计算机传输外还有人工和盘片传输。
人工传输是以各种单据、报表、计划等文字形式传输。
盘片传输是将要传输的数据录入到磁盘或其它外存进行传输。
数据的传输速度和准确程度是数据传输的主要性能指标。
6、信息输出:
信息系统输出功能的完善与否,输出与格式直观方便与否,直接关系到信息的使用效果和信息系统效能发挥。
因而对系统输出的信息,又尽量使其易读易懂,符合信息使用者的习惯和要求。
7、信息维护:
信息的维护就是保护信息处于适用状态。
系统总体设计
2.2.1功能结构
(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)帮助
功能结构图如下:
2.2.2数据描述
开发工具
PowerBuilder美国Sybase公司研制的一种新型、快速开发工具,是客户机/服务器结构下,基于、Windows95和WindowsNT的一个集成化开发工具。
它包含一个直观的图形界面和可扩展的面向对象的编程语言PowerScript,提供与当前流行的大型数据库的接口,并通过ODBC与单机数据库相连。
SQLServer2008是一个重大的产品版本,它推出了许多新的特性和关键的改进,使得它成为至今为止的最强大和最全面的SQLServer版本。
这篇文章详细介绍了MicrosoftSQLServer2008中的新的特性、优点和功能……在现今数据的世界里,公司要获得成功和不断发展,他们需要定位主要的数据趋势的愿景。
微软的这个数据平台愿景帮助公司满足这些数据爆炸和下一代数据驱动应用程序的需求。
微软将继续投入和发展以下的关键领域来支持他们的数据平台愿景:
关键任务企业数据平台、动态开发、关系数据和商业智能。
数据库的建立
打开PowerDesigner
单击菜单Sybase->新建模型->conceptmodel(概念模型)
在右侧栏点选Entity,新建两个表,并双击打开,code最好用英文,m强制输入,p主码。
其中一张表是小班表,另一张是林种表。
建立它们的字段如下图所示。
点选右侧工具栏的Releationship从树种表到小班表拖出一条直线。
转换数据库:
Tools–>physicaldatamodel.在dbms里选择sql2000数据库->updatamodefromdatabase选择selecion里的datasource
在Powerbuilder工具栏中点击dbprofile,进入
双击ODBODBC下Utilities下的CreateODBCDataSource,选择文件数据源(F),点击下一步。
选择SQLServer,点击下一步,填写数据源名称(自己随意给定,这里给fmsys),如果需要,单击浏览按钮,选择保存数据源的位置;点击下一步,在新界面中点击完成,在上面填入描述(描述也可以空着)和服务器名称(必须填,就是你目前登录的SQLServer服务器,就是你的机器名),点击下一步
选择“实用用户输入登录ID和密码的SQLServer验证(S)”,输入正确的登陆ID和密码,这里均为fmsys;然后点击下一步,进入
在以上界面中,确认默认数据库名为fmsys,否则应选中“更改默认数据库名为(D)”,更改数据库名;点击下一步,进入
在此不修改其他内容,点击完成,在preview中出现这些代码,
测试连接,若成功则出现如下界面,再将它复制到一个临时文件,以供接下来实用
主程序的实现
3.3.1用户管理
1.用户界面如图所示:
2.在SQLServer中的MyForest数据库中建立Users这张表,用来管理登录的用户的基本信息。
代码如下:
createtableusers(
useridintprimarykey,
usernamevarchar(20),
userlevelint,
passwdvarchar(50)notnull
);
go
insertintousersvalues(1,'张',1,'张');
insertintousersvalues(2,'王',1,'王');
insertintousersvalues(3,'zhang1',1,'zhang1');
的界面设计中插入静态字段、文本框以及按钮等,做一个基本的登录的界面:
4.在登录按钮的单击事件中:
首先定义字符串类型的in_userid,in_passws,db_userid,db_passws,用来读取这两个文本框中的用户名和密码字段,然后通过查询数据库中已有的userid和passwd,若在数据库中出现说明用户名密码输入正确,用户即可点击登录按钮直接登录,若输入错误,则不能进入系统。
3.3.2数据库连接
在Powerbuilder工具栏中点击dbprofile,进入
双击ODBODBC下Utilities下的CreateODBCDataSource,进入
选择文件数据源(F),点击下一步,选择SQLServer,点击下一步,进入
填写数据源名称(自己随意给定,这里给fmsys),如果需要,单击浏览按钮,选择保存数据源的位置;点击下一步,在新界面中点击完成,进入
在上面填入描述(描述也可以空着)和服务器名称(必须填,就是你目前登录的SQLServer服务器,就是你的机器名);点击下一步,进入
选择“实用用户输入登录ID和密码的SQLServer验证(S)”,输入正确的登陆ID和密码,这里均为fmsys;然后点击下一步,进入
在以上界面中,确认默认数据库名为fmsys,否则应选中“更改默认数据库名为(D)”,更改数据库名;点击下一步,进入
在此不修改其他内容,点击完成,进入
点击测试数据源,弹出测试结果
点击确定,返回以上界面(ODBCMicrosoftSQLServer安装);点击界面中的确定。
至此,数据源创建完毕。
选择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)在窗口上插入数据窗口控件
点击菜单InsertControlDataWindow,然后在窗口空白处点击,得数据窗口控件。
通过鼠标适当调整其大小,位置
(8)插入静态文本作标题输入“森林资源二类调查数据录入”,调整字体、颜色、字号等,最后得。
检索数据
双击myexercise1,打开窗口命令
修改代码为
数据窗口对象中设置域检查,满足最基本的检查要求
在固定小班号的ValidationExpression中双击,弹出编辑框
输入isNumber(gettext()),意为检查输入的是否为数字。
然后用右边的Verify按钮检查语法是否正确。
如果正确,单击OK,回到上面的编辑界面。
在同一行的ValidationMessage列中双击,在弹出对话框中输入出错提示信息“输入错误,必须为数字,请重新输入!
”
字符型域检查字符串长度是否符合要求,这里以关键字为例;
仍然在数据窗口对象d_input的编辑状态,双击窗口下部“关键字”行的ValidationExpression列,出现对话框。
在对话框中输入:
Len(gettext())=9
在同一行的ValidationMessage中输入“长度必须为9位,请重新输入!
”
数值型域设置取值的上下限或范围,这里以坡向为例(坡向代码为1-9);
仍然在数据窗口对象d_input的编辑状态,双击窗口下部“坡向”行的ValidationExpression列,出现对话框。
在对话框中输入:
number(gettext())>0andnumber(gettext())<=9。
在记录确认事件中设计记录逻辑检查机制
3.3.4报表统计
(1)设计用户界面如下图所示:
(2)定义全局变量Stringcolname_tab0x[]表示每一张输到数据库的表中的字段名
Stringcoltype_tab0x[]为其字段的变量类型Intcolnum_tab0x表示字段个数,这些全局变量的定义,都是为了下面的函数中的调用提供方便。
(3)就以table03为例,首先设定建表函数create_tab03(),stringss
这里先定义一个建表语句ss,引用全局变量中的字段名,字段类型,组合起来执行,便实现了往数据库中插入表的操作。
ss="createtableTable03("+colname_tab03[1]+""+coltype_tab03[1]。
。
。
ExecuteImmediate:
ss;
return
(4)然后是往建好的表中插入原始数据
1.定义游标C1执行查询select林种,地类,龄组,sum(小班面积),sum(活立木蓄积)from东南县2001groupby林种,地类,龄组
定义游标C2执行查询selectdistinct林种from东南县2001orderby林种
C1Into:
foresttype(林种)[i],:
landtype(用地类型)[i],:
agegroup(龄组)[i],:
area(面积)[i],:
volume(蓄积)[i];
FetchC2Into:
ft(林种)[i];得到所有的林种
3.将获得林种按顺序填入输出的表第三列tab2[i,4]=ft[i];
4.根据林种遍历forii=1to(林种行数-1)Fori=1To数据库中table03行数
更具乔木林、竹林、红树林、疏林、国家特别规定灌木林、其它灌木林进行统计,其中乔木林再按龄组分类统计
5.ss="deletefromTable03"生成删除语句,删除表中所有行
6.遍历"insertintoTable03values("+ss;创建插入语句,并执行,可将程序中的table03这个表转存到数据库中。
7.执行查询ExecuteImmediate:
ins_str;并关闭游标CloseC2;CloseC1;
(5)最后将数据库中表写入文件
1.定义进度条长度(0,100),设定进度条初始位置(0);慢慢的滚动forj=1to100()sleepnext
2.建立查询表的语句s2="select*fromTable0"+string(ii_selected_tablenum)
3.定义游标C1PREPARESQLSAFROM:
s2;后打开OPENDYNAMICC1;
然后遍历读取数据到数组data[]:
dowhile=0
FETCHC1INTO:
data[1],:
data[2],:
data[3],:
data[4],:
data[5]。
。
。
。
。
将读取的那一行写成一个插入语句ls_name=colname_tab02[ii]+'='+'"'+data[ii]+'"';然后插入(ls_name),使dw_1显示插入的数据
4.最后判断返回的数确定语句执行状态="表"+string(ii_selected_tablenum)+"输出成功!
"
数据查询模块
(1)设计用户界面如下图所示
(2)新建实例变量
(3)向第一个下拉框ddlb_1中填写代码
is_selected_colname=
向第二个下拉框中填写代码
is_selected_operator=
第三个单行文本sle_1中填写代码
id_value=
从而捕获到了用户在这三个控件中填写的内容,并存入实例变量。
(4)当用户点击按钮“确定”的时候触发查询事件,代码如下
strings1,s2
s1=is_original_select+"Where"+is_selected_colname+is_selected_operator+string(id_value)
messagebox("",s1)
(s1)
()
=string())
首先是建立一个查询语句。
应用刚刚读取的实例变量is_selected_colname、is_selected_operator和id_value。
合成查询语句如select*From东南县2001where细班号>4然后用(s1)执行查询,将查询结果在dw_1中显示(),然后将记录数目填入,用户可以看见查到了几条记录。
注:
以上内容仅作参考,但主要部分应该包含