资源描述
森林资源二类调查数据库系统分析设计说明书目录1系统概述21.1背景21.2目标21.3环境22.系统分析与设计32.1 系统功能需求32.2 系统总体设计42.2.1 功能结构42.2.2 数据描述103. 系统实现123.1 开发工具123.2 数据库的建立123.2.1建立并连接SqlServer或ODBC数据源133.2.2向数据库导入Excel数据163.3 Powerbuilder连接数据库193.4 用户登录模块实现263.5. 主界面与菜单实现273.6. 修改模块实现323.7. 录入模块实现433.8. 查询模块实现483.9. 统计输出模块实现49森林资源二类调查数据库系统设计说明书1系统概述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.系统分析与设计2.1 系统功能需求1、数据的采集和输入:把分散在各处的数据进行收集并将整理好的数据通过一定的设备输入到信息系统中。这一步工作的质量是整个信息系统是否正确发挥作用的关键。2、数据的存储:管理中的大量数据处理通过共享并且需要多次使用。这就要求将大量的数据存储起来,通常这些数据被保存在外部存储介质中,以便需要随时进行存取和更新。3、数据的加工处理:数据的加工处理是信息系统的一项重要功能。进入信息系统的数据,都需要经过加工处理,才能产生有用的信息。4、数据传输:为了把数据或信息从一个子系统传送到另一个子系统,或者在信息系统内部进行数据的处理都涉及数据的传输问题。5、数据传输:包括计算机系统内和系统外的传输,计算机传输即以计算机为中心,通过通信线路与其它近、远程终端连接、形成联机系统或通过通信线路将微小型等计算机联网。除计算机传输外还有人工和盘片传输。人工传输是 以各种单据、报表、计划等文字形式传输。盘片传输是将要传输的数据录入到磁盘或其它外存进行传输。数据的传输速度和准确程度是数据传输的主要性能指标。6、信息输出:信息系统输出功能的完善与否,输出与格式直观方便与否,直接关系到信息的使用效果和信息系统效能发挥。因而对系统输出的信息,又尽量使其易读易懂,符合信息使用者的习惯和要求。7、 信息维护:信息的维护就是保护信息处于适用状态。2.2 系统总体设计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)查询功能上图所示的查询结果是由如图提示框中的语句产生的,用户在查询条件栏中需要通过下拉框需要查询的列,查询操作符,再在后面的文本框中输入一个值,程序便会自动合成一个查询表达式,并通过这个查询表达式从数据库中检索那一部分数据显示在DataWindow中。6)统计输出功能打开此模块,左侧将会有七张导出表供选择,用户可以选择其中一条,点击插入数据,下面的文本条中显示查询语句,并会以MessageBox提示数据库中插入表和录入数据的成功与否。如果提示成功,用户可以点击转换输出按钮,数据库中相应表的数据会以文本文件形式导出,并以DataWindow形式在右侧显示,以方便用户查阅。用户可以任选一张表,重复上述操作。2.2.2 数据描述(1)数据库表结构建立打开PowerDesigner单击菜单Sybase-新建模型-concept model(概念模型)在右侧栏点选Entity ,新建两个表,并双击打开,code最好用英文,m强制输入,p主码其中一张表是小班表,另一张是林种表。建立它们的字段如下图所示。点选右侧工具栏的Releationship 从树种表到小班表拖出一条直线。转换数据库:Tools physical datamodel.在dbms里选择sql 2000数据库-updatamode from database选择 selecion里的datasource (2)基本查询语句Select sum(面积) from 小班 where 地类=纯林 and 权属=国有 and 森林类别=公益林Select 权属,森林类别,sum(面积) from 小班 where 地类=纯林group by 权属,森林类别(3)数据分类:森林类别:生态公益林,商品林林地所有权:国有,集体,人工林地所有权,林木所有权,起源,林种,优势树木,地类,森林类别起源:飞播,天然,人工(4)类别代号100-200生态公益林200以上商品林林种:用材林210,经济林230,薪炭林220,防护林120,(商品林)特种用途林110,110有林地120疏林 130灌木林地140无立木林地150苗圃地210乔内荒地220乔外荒地3. 系统实现3.1 开发工具PowerBuilder美国Sybase公司研制的一种新型、快速开发工具,是客户机/服务器结构下,基于Windows3.x、Windows95和WindowsNT的一个集成化开发工具。它包含一个直观的图形界面和可扩展的面向对象的编程语言PowerScript,提供与当前流行的大型数据库的接口,并通过ODBC与单机数据库相连。SQL Server 2008是一个重大的产品版本,它推出了许多新的特性和关键的改进,使得它成为至今为止的最强大和最全面的SQL Server版本。这篇文章详细介绍了Microsoft SQL Server 2008中的新的特性、优点和功能 在现今数据的世界里,公司要获得成功和不断发展,他们需要定位主要的数据趋势的愿景。微软的这个数据平台愿景帮助公司满足这些数据爆炸和下一代数据驱动应用程序的需求。微软将继续投入和发展以下的关键领域来支持他们的数据平台愿景:关键任务企业数据平台、动态开发、关系数据和商业智能。3.2 数据库的建立3.2.1建立并连接SqlServer或ODBC数据源在控制面板里性能维护-管理工具选择: 数据源-创建新数据源,选择excel driver(*.xls)数据源名自己设置myexcel97-2000点确定后双击myexcel97-2000,选择数据源,点击工作簿,选择东南县.excel选择updata model from database 选择selecion 的using a data source-ODBCmachine下拉框里选excle点击modify,再选择工作簿,最后单击确定-Connect既可自动的创建数据库并建表。3.2.2向数据库导入Excel数据首先,通过SqlServer的企业管理器,右键点击数据库-新建数据库,设置数据库名MyForest打开SqlServer自带的“导入导出数据”,数据源选择excel97-2000,选择文件名为东南县: 下一步使用sql身份验证,填入相应的用户名密码数据库选择刚刚新建的为MyForest或者新建一个数据库名为TreeManagement导入完成后,测试导入的数据库,结果如下:3.3 POWERBUILDER连接数据库(1)在Powerbuilder工具栏中点击db profile,进入(2)双击ODB ODBC下Utilities下的Create ODBC Data Source,进入(3)选择文件数据源(F),点击下一步,进入(4)选择SQL Server, 点击下一步,进入(5)填写数据源名称(自己随意给定,这里给fmsys),如果需要,单击浏览按钮,选择保存数据源的位置;点击下一步,在新界面中点击完成,进入(6)在上面填入描述(描述也可以空着)和服务器名称(必须填,就是你目前登录的SQL Server服务器,就是你的机器名);点击下一步,进入(7)选择“实用用户输入登录ID和密码的SQL Server验证(S)”,输入正确的登陆ID和密码,这里均为fmsys;然后点击下一步,进入(8)在以上界面中,确认默认数据库名为fmsys,否则应选中“更改默认数据库名为(D)”,更改数据库名;点击下一步,进入(9)在此不修改其他内容,点击完成,进入(10)点击测试数据源,弹出测试结果(11)点击确定,返回以上界面(ODBC Microsoft SQL Server安装);点击界面中的确定。至此,数据源创建完毕。(12)选择ODBODBC,单击右侧的New建立自己的数据库首选项(12)在弹出的对话框中DataSource选择刚刚建立的fmsys名称填Forest(13)选择Preview选项卡,保存链接字符串以备后用。(14)点选DBProfiles中的Forest右侧Connect。3.4 用户登录模块实现(1)用户界面如图所示:(2)在SQL Server中的MyForest数据库中建立Users这张表,用来管理登录的用户的基本信息。代码如下:create table users(userid int primary key,username varchar(20),userlevel int,passwd varchar(50) not null);goinsert 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_passws,用来读取这两个文本框中的用户名和密码字段,然后通过查询数据库中已有的userid和passwd,若在数据库中出现说明用户名密码输入正确,用户即可点击登录按钮直接登录,若输入错误,则不能进入系统。3.5. 主界面与菜单实现(1)在powerbuilder工具栏中点击new,进入(2)选择workspace,单击OK(3)填写文件名fmsys,然后保存,即完成workspace的建立。然后重新点击powerbuilder工具栏中点击new,进入(4)选择target标签,在该界面中选中第一个图标(Application),即建立应用,点击OK,进入(5)在以上界面中,先输入应用名(Application Name),然后点击库名(Library),应用程序文件名(Library)以及路径会自动生成,同时生成的还有Target(目标)文件名及其路径,这里不作修改,点击Finish。(6)以上界面为一个应用程序框架,其程序入口为fmsys.pbl下的应用(application)。在application的事件中可以编写应用程序要执行的代码,这是程序运行最开始要执行的代码。一般在这里写连接数据库和打开主窗口的代码。双击myexercise1,右边的事件open下面的scripts窗口中写入从前面临时文本保存的数据库链接参数。/ Profile ForestSQLCA.DBMS = ODBCSQLCA.AutoCommit = FalseSQLCA.DBParm = ConnectString=DSN=fmsys;UID=sa;PWD=000000Connect Using SQLCA;IF SQLCA.SQLCODE 0 THENMessageBox(,数据库链接错误,错误是:+SQLCA.SQLERRTEXT)END IF(7)创建一个新窗体,在新窗口中插入标题:点击Insertcontrolstatictext,再在窗口上点击鼠标,即在窗口上插入了静态文本对象。编辑字体、字号、位置,结果如下:(8)新建标题选择Menu,单击OK,得以下界面(即菜单)(9)在菜单项根部点右键在弹出菜单中选择Insert SubMenu Item可以增加子菜单。重复此过程,添加“查询”、“统计”、“帮助”三个菜单项。最后结果如。(10)在窗口对象属性中,选择右边按钮或直接输入菜单名。按选择,则有(11)从已有菜单中选择,按OK至此,菜单m_main已经添加于窗口w_main之上。3.6. 修改模块实现(1)新建一个Grid的数据窗口(2)在快速选择对话框中选择东南县2001表中的所有字段。(3)设置Datawindow的字体颜色及行背景颜色。(4)调整字体和位置:鼠标单击数据窗口对象中的“关键字”,再按ctl-a,选择数据窗口对象中所有的对象,选中者四角有小黑点。然后在属性中选择Font,将12号字改为8号字。用鼠标拖动网格线,调整行距。(5)调整完毕,按保存。保存数据窗口对象名为d_input。(6)通过数据窗口空间将数据窗口对象加入窗口对象(7)在窗口上插入数据窗口控件点击菜单InsertControlDataWindow,然后在窗口空白处点击,得数据窗口控件。通过鼠标适当调整其大小,位置(8)插入静态文本作标题输入“森林资源二类调查数据录入”,调整字体、颜色、字号等,最后得。检索数据双击myexercise1,打开窗口命令修改代码为/ Profile ForestSQLCA.DBMS = ODBCSQLCA.AutoCommit = FalseSQLCA.DBParm = ConnectString=DSN=fmsys;UID=sa;PWD=000000Connect Using SQLCA;IF SQLCA.SQLCODE 0 THENMessageBox(,数据库链接错误,错误是:+SQLCA.SQLERRTEXT)elseOpen(w_main)END IFelseOpen(w_main)在w_input打开事件中输入/把最开始用的数据库连接参数SQLCA接过来Dw_1.SetTransObject(SQLCA);插入一个命令按钮双击按钮进入代码模式输入代码/检索按钮代码Dw_1.retrieve();(9)设置菜单代码(10)修改数据窗口对象的更新属性101双击左边列表中的d_input10.2在菜单中选择RowsUpdate properties在界面中选中“Allow Updates”,选择table to update(要更新的表名),在Updateble columns中选中除关键字以外的所有列,选择unique key column为关键字字段。(11)点击tab order 按钮,设置tab order如下(12).在数据窗口对象中设置域检查,满足最基本的检查要求12.1在固定小班号的Validation Expression中双击,弹出编辑框12.2输入isNumber(gettext(),意为检查输入的是否为数字。然后用右边的Verify按钮检查语法是否正确。如果正确,单击OK,回到上面的编辑界面。12.3在同一行的Validation Message列中双击,在弹出对话框中输入出错提示信息“输入错误,必须为数字,请重新输入!”12.4字符型域检查字符串长度是否符合要求,这里以关键字为例;仍然在数据窗口对象d_input的编辑状态,双击窗口下部“关键字”行的Validation Expression列,出现对话框。在对话框中输入:Len(gettext()=9 在同一行的Validation Message中输入“长度必须为9位,请重新输入!”数值型域设置取值的上下限或范围,这里以坡向为例(坡向代码为1-9);12.5仍然在数据窗口对象d_input的编辑状态,双击窗口下部“坡向”行的Validation Expression列,出现对话框。在对话框中输入:number(gettext()0 and number(gettext() 4然后用dw_1.setSQLSelected(s1)执行查询,将查询结果在dw_1中显示dw_1.retrieve(),然后将记录数目填入sle_records.text,用户可以看见查到了几条记录。3.9. 统计输出模块实现(1)设计用户界面如下图所示(2)定义全局变量String colname_tab0x表示每一张输到数据库的表中的字段名String coltype_tab0x为其字段的变量类型Int colnum_tab0x表示字段个数,这些全局变量的定义,都是为了下面的函数中的调用提供方便。(3)就以table03为例,首先设定建表函数create_tab03(),string ss这里先定义一个建表语句ss,引用全局变量中的字段名,字段类型,组合起来执行,便实现了往数据库中插入表的操作。ss = create table Table03(+ colname_tab031+ + coltype_tab031。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.将获得林种按顺序填入输出的表第三列tab2i,4=fti;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 100hpb_1.Stepit() sleep(0.3) next2.建立查询表的语句 s2 = select * from Table0+ string(ii_selected_tablenum)3.定义游标C1PREPARE SQLSA FROM :s2;后打开OPEN DYNAMIC C1;然后遍历读取数据到数组data :do while sqlca.sqlcode=0FETCH C1 INTO :data1,:data2,:data3,:data4,:data5。将读取的那一行写成一个插入语句ls_name= colname_tab02ii +=+dataii+ ;然后插入dw_1.modify(ls_name),使dw_1显示插入的数据4.最后判断返回的数确定语句执行状态st_2.text=表+string(ii_selected_tablenum)+输出成功!
展开阅读全文