您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 畜牧/养殖 > 农业生产管理信息系统
第12章农业生产管理信息系统将计算机技术、专家知识、农业生产有关信息相结合,建立管理信息系统,对于指导农业生产、提高产量、增加效益具有重要意义。农业生产信息系统,涉及大量基础数据。其中包括种子、肥料、农药、农膜信息,土壤的类型、质地、地形、肥力、各种指标信息,种植形式、种植密度、耕作方式、田间管理信息,施肥情况、病虫害、气象条件信息等等。这些信息一方面可以单独用于查询、统计分析,总结规律,为农业干部的决策提供支持,为农业技术人员和农民的生产提供指导,实现资源共享。12.1系统功能与技术要求12.2数据库与表设计12.3以树视图方式管理行政区信息12.4数据维护与查询12.5生产效益统计12.6统计图形的动态设置12.7多媒体与外部程序调用12.3.1菜单与窗口布局12.3.2窗口编码返回本章12.5.1数据窗口对象d_tj112.5.2生产效益统计窗口w_tj1返回本章12.6.1数据窗口对象12.6.2统计图形窗口返回本章12.7多媒体与外部程序调用12.7.1图片12.7.2声音12.7.3视频图象12.7.4调用外部程序返回本章12.1系统功能与技术要求根据实际需求,本系统的功能分为四个部分:信息维护、查询打印、统计对比和系统服务。返回本章查询打印要能够对数据库中任意表的所用字段指定查询条件进行查询,查询结果可以输出全部数据项,也可以输出选定的部分数据项。可以是简单查询,也可以是复合查询(查询条件中带有逻辑运算符)。在确定查询条件时,字段名、关系运算符、逻辑运算符可用鼠标选定,不必键盘输入,以简化用户操作。3、统计对比统计对比要提供如下几项功能:(1)生产效益统计。(2)高产实例。(3)确定目标产量。(4)产量因素对比。(5)统计图形。(6)汇总信息4、系统服务系统服务提供帮助、关于、用户管理、日志查询、打印数据采集表等功能。技术要求:(1)要能够管理文字、图象、视频、声音等多种形式的信息。(2)要能够回答用户从多角度(至少两个角度,类似于英汉、汉英词典)提出的问题。(3)软件要模块化、可扩充、易修改、易操作,有防错检错能力,有良好的用户界面,与其它系统有方便的接口。返回本章12.2数据库与表设计建立一个AdaptiveServerAnywhere7.0数据库,数据库文件命名为ymdb.db,配置ODBC数据源和Profile,进行数据库连接。返回本章12.3以树视图方式管理行政区信息作为一个农业生产信息系统,要管理一定行政区域内的有关数据。系统运行时,要经常指定或切换不同的行政区,行政区信息本身也需要增删和修改。由于不同级别的行政区具有层次结构,用树视图管理和使用比较方便。下面介绍如何通过树视图指定某一行政区,并把有关信息传递给其它对象,如何在树视图中对行政区信息本身进行增删改。返回本章12.3.2窗口编码1.open事件代码代码用函数FileOpen()按行读方式打开文件SYSINI.DAT,从中读取以前保存的行政区编码、行政区名称、树视图项的层次以及各层的句柄送到变量或数组中。文件SYSINI.DAT内容的一个示例。从中可以看出,上次确定的行政区编码是22012101000000,行政区名称是“恩育乡”,树视图项的层次4,各层句柄分别是1、2、17和22。返回本节2.用户事件ue_populate代码代码首先利用游标从表ssxc中提取行政区编码最右边12位是0(省级)的行政区编码和名称,插入到树视图作为树根项。不论是用函数ExpandItem()还是用鼠标双击某个树视图项或是单击树视图项左边的“+”号,都会产生树视图的itempopulate事件。为了能够展开树视图的下一层,还要对它的itempopulate事件编写代码。3.树视图的itempopulate事件代码代码段首先根据当前层数确定要展开的下一层数据的编码特征,然后通过游标从表ssxc中把满足特征编码条件的行政区编码和行政区名称提取出来,添加到树视图的下一层,达到展开的目的。4.树视图clicked事件代码展开到指定的树视图项,用鼠标单击,可以选择行政区,选择的行政区有关信息要保存到全局变量和文件SYSINI.DAT中,以便传递给其它对象和下次按记忆展开。5.用户事件ue_insert代码代码中,用函数getitem()取出树视图当前项送实例变量li_item,从li_item中取出政区编码在单行编辑行框sle_1中显示出来,从li_item中取出行政区名称和层数,如果层次是在乡、村、屯范围内,则打开信息输入窗口w_msg_in,输入树视图项名称送全局变量s_mc_in,用自定义的窗口函数f_getbm()自动求出该项编码所应具有的编码,6.用户事件ue_delete代码要删除指定的树视图项,可通过窗口的ue_delete事件代码来完成。代码段根据句柄求出当前项的行政区编码、行政区名和层次。如果层次大于或等于4并确认要删除当前项,则确定当前层及下层编码特征,在数据库的表ssxc中删除所有符合特征条件的记录以及树视图中项目。7.用户事件ue_change及树视图控件事件endlabeledit代码要修改指定树视图项的名称,有两种办法。一是在设计窗口的树视图控件时,选择它的EditLabels复选项,使之处于可编辑状态。二是通过窗口ue_change事件的如下代码使当前项进入编辑状态。本系统采用的是第二种方法。返回本节12.4数据维护与查询数据维护操作是数据库系统的工作基础。尽最大可能为用户提供方便,提高数据录入速度,保证数据的有效性、安全性和完整性是本系统的主要设计目标之一。本系统在数据维护方面采用以下技术:1.凡是可枚举的数据项(如:玉米品种、土壤类型、肥力、质地、种植形式等)均采用下拉数据窗口,以此提高数据录入的速度和准确性。下拉数据窗口的内容可随时增、删、改。2.在每一个数据窗口对象中,对数据项增加了有效性检验规则,保证输入数据的正确性。定义一个数据维护窗口w_d_in,在窗口上定义一个数据窗口控件dw_1,数据窗口控件与数据窗口对象通过代码动态建立联系,每一个数据窗口对象与一个或多个表对应。求出多文档界面(MDI)当前活动窗口的标题,以确定当前数据窗口对象。在数据维护窗口w_d_in的自定义函数f_filter(mtext)中,根据不同的数据窗口对象设置相应的过滤条件和排序方式。对w_d_in窗口的任意一个实例,输入、修改数据,当前数据项改变时,引发dw_1窗口控件的itemfocuschanged事件.代码中定义了DataWindowChild(子数据窗口)型变量dwc和window(窗口)型变量activesheet。利用函数GetColumnName()取出当前列名,如果是c_nhbm(农户编码),则通过自定义函数f_proc()自动输入编码或改变编码表内容。如果是c_dkbm(地块编码),则打开地块编码下拉数据窗口,并根据用户编码过滤出与该用户对应的地块编码。如果是所列举之外的其它下拉数据窗口,则直接打开并提取最新数据。在dw_1窗口控件上单击鼠标右键,引起rbuttondown事件,通过下面程序段,可弹出相应的菜单,实现对下拉数据窗口内容的维护。本系统涉及多个数据库和表,为了能够对每一个表任意指定查询条件、指定输出字段和排序字段进行查询,回答用户从多角度提出的问题,使用了第10章介绍的通用全字段查询和选自段查询技术。这里不再复述。返回本章12.5生产效益统计统计对比功能包括生产效益统计、高产实例、确定目标产量、产量因素对比等,这里充分利用了PowerBuilder数据窗口对象的计算列、分组、排序、过滤等功能以及求和、求平均值、求极值等函数。下面仅介绍生产效益统计的有关内容。goon12.5.1数据窗口对象d_tj1工具栏上单击“New”按钮,在打开的对话框中单击“DataWindow”选项卡,选择“Grid”项,单击“OK”按钮。在下一个对话框中选“SQLSelect”图标,单击“Next”按钮。同时选中nhxx、scxx、pztx和trlx四个表后,单击“Open”按钮,再单击“Join”按钮,定义表之间相同字段的连接关系。得到表布局和连接关系图。在各表中选择需要的列。这里选择nhxx表的hzxm、c_nhbm、rks列,scxx表的c_nf、c_dkbm、zzmj、dkcl、ymdl、zzfy、nyfy、hffy、nffy、jgfy、qtfy列,pztx表的pzmc、trlx列和表trlx的trfl列。在“Sort”选项卡中指定按表scxx的c_nf列、表nhxx的hzxm列、表scxx的c_dkbm列和表pztx的pzmc列升序排列。单击“Return”按钮,进行必要的加工,得到的数据窗口对象d_tj1的视图。其中,在总结带定义“种植面积”的平均值、最大值、最小值计算列表达式分别为avg(scxx_zzmjforall)、max(scxx_zzmjforall)、min(scxx_zzmjforall)返回本节12.5.2生产效益统计窗口w_tj11.窗口布局建立一个窗口w_tj1,窗口类型main!,初始状态为normal!,标题为“生产效益统计对比”。窗口上放置一个数据窗口控件dw_1,并指定其“DataObject”为d_tj1,一个静态文本st_3,用来显示当前行政区名,一个单行编辑框显示记录数,六个单选按钮,用来设置过滤条件,两个命令按钮控制显示结果和打印输出。此外,窗口上还放置三个下拉列表框ddlb_1、ddlb_2和ddlb_3,它们在设计时取消了可见属性,运行时当单选项“某一户”、“某一年”或“指定”土壤肥力被选中后,对应的下2.全局函数f_get_sysini()建立一个全局函数f_get_sysini(),它无需参数和返回值,功能是从文件SYSINI.DAT中读取行政区编码、名称、层次到全局变量s_bm_ssxc、s_mc_ssxc、tree_level中。3.窗口的open事件和activate事件代码在窗口的open事件中,首先打开文件SYSINI.DAT,从中读取行政区编码、名称和层次,根据行政区和层次数确定过滤条件,对数据窗口的记录进行过滤。然后在“土壤肥力”字段的左边设置水平分割线,以便进行水平方向浏览时,保证“年份”、“农户姓名”、“地块编码”三个字段固定不动作为参照。最后,用静态文本st_3显示当前行政区名称,在单行编辑框sle_3中显示记录总数,并设置三个单选按钮的初始状态。4.“农户选择”分组框中单选按钮及下拉列表框代码在农户选择分组框中有“某一户”和“所有户”两个单选按钮。代码段用来将指定行政区内的所有农户姓名添加到下拉列表框ddlb_1中,并使其可见,以便于用户选取。其中定义了一个数组xm,用来保存已添加到下拉列表框中的项目,以便排除重复。程序中首先根据当前层数和行政区编码确定农户信息的筛选条件,利用游标把满足条件的户主姓名过滤出来。然后用循环语句把所有姓名添加到下拉列表框并同时保存到数组xm中。在添加每一项时都要检查该项在数组中是否已经存在,如果存在则跳过该项,避免重复。最后设置ddlb_1的visible属性为True。5.“年份选择”分组框中单选按钮及下拉列表框代码年份选择分组框中有“某一年”和“历年”两个单选按钮。其作用是设置下拉列表框ddlb_2的年份列表项,并使下拉列表框可见。在下拉列表框ddlb_2中选择任意一个年份,通过它设置实例变量s_nf的值,并隐藏下拉列表框。“历年”单选按钮的作用是设置实例变量s_nf的值为“历年”,并隐藏下拉列表框ddlb_2。6.“土壤肥力”分组框中单选按钮及下拉列表框代码壤肥力分组框中“指定”单选按钮的作用是把表dic_trfl中trfl字段的内容添加到下拉列表框ddlb_3中,并使列表框可见。7.“显示”命令按钮代码农户、年份、土壤肥力的设置结果保存在三个实例变量s_nhxm、s_nf和s_trfl中。“显示”命令按钮根据当前行政区设置以及这三个变量的值,形成过滤条件,把数据窗口中满足条件的的记录过滤出来。经过以上设计,窗口w_
本文标题:农业生产管理信息系统
链接地址:https://www.777doc.com/doc-262903 .html