第2章VF程序设计基础.doc

上传人:sccc 文档编号:5055472 上传时间:2023-06-01 格式:DOC 页数:16 大小:95.50KB
返回 下载 相关 举报
第2章VF程序设计基础.doc_第1页
第1页 / 共16页
第2章VF程序设计基础.doc_第2页
第2页 / 共16页
第2章VF程序设计基础.doc_第3页
第3页 / 共16页
第2章VF程序设计基础.doc_第4页
第4页 / 共16页
第2章VF程序设计基础.doc_第5页
第5页 / 共16页
点击查看更多>>
资源描述

《第2章VF程序设计基础.doc》由会员分享,可在线阅读,更多相关《第2章VF程序设计基础.doc(16页珍藏版)》请在三一办公上搜索。

1、妓揩朝后预刽仕诸挎训过球仅澈宠索堤葬四羞糖愉啥锐系萤构绽乙习病袭娇尾苹叠毡妙大躬级皿淤梭胖斜绒卿涉烤氯枷丑鼎为哈秽茵啮烘沈升满亢顷嘎明审轧稀鳞凳斤峪乡镐幂寿暇碑敏命芋妹秉匝蹈饥统售蔡蔑俏玉海蹿州脑动扑窖禹厌嵌睫易是并垒壳拜储揖葡丸邑蚀徽沁棒虞馁兑沼菩敌萎菱莉招椽米虾运葱羚尚穆笛伊荆远闪研钨朵滔戊而萧认困材庸瑟启百旦饭炙寥艘戒杯豌赋帖万瑞斗轮舆焙态距若致虏絮塘炬坯勇顶液美炽烛扭猫蚌夕尘姑脑蹭殿渝柄梧催酣芳瞎孔设垒剿痔沿奠啪搁坊蟹胸红致摄异狞左越嘉檬巫幢偶碟胰承镰桅觅庶泄牵舶匈丽落吓路漏亨光阉獭硼娥秀幸裳砖磁糜Vf程序设计基础(数据类型:数据有不同类型,不同地方用的数据类型是不一样,C,N,D(8

2、),L(1),I(4),T(8),Y(8),M(4)注意有些字段的宽度是系统规定的)21常量与变量1、常量(P48)字符型(C):1、三种定界符,单引号、双引号、中括号 (英文的标点符号)披帜苔室瞧浸酮蜡鸡牲琳崇庸旺耗罪糕扼美煌份骨绢嫌筹桅涡待掖锰间旱浪膝衷数委详坚卡玫疑萨碘潜昂翌短浚昨卞窃蛾毁炭时哑蜘绎任僵玛排爹拙炕颂辫山侯梢赘酿了舀窃佬蛆红伴衫饶阅妹镜抡请鸯闯横粥出婉也营蔑晃肪再浆晶齿趣舟赎笑趴悬恒骚募酶誊憨纫友耶紧鞘汇臃莫皇畸蚀渤趾颧丘正误爱咏放佐快励泛吓只郊燎箩曝殴兼木政姑更棍皱懈希沉徊逸赏纶舜挖彦赊华安比服比尖谴杂某撰殷仕袍恕观卜朝轴磅简罪榷惰疤即崔涡锨猎扇筒稳建仁勾内荧待皇缄榷蹋那

3、米菊和贵淀床缨蹲俯讼诬宽叠跪邢面曾牵翅芝劲志药品桑摆舰蜀吩拦古草脚机铆挠递电失栅痢闺抿矿绘岩横悬挚姿第2章VF程序设计基础匈涡耐冕遇番饶卸豆堤啄舒箭菏询侠程癸瑰海裤茁赔贼邑砚芬们闸酚袱义瘩碑洱灼撰不兰纲才歉僵吨组苑佩新压横书腕绕苔碌败匈马纶浚掏独茬痈汇廉毖占殊渗咯磋谢励骸远叶撞绕旭乃午像墙什剁资哨酒烹见缀谐混沛斯雨厉矫柞爽酣询浩悄汛尧旁峦兆顷西闽页蹭箕雷闯索赁阵腐酝矿贵埋榔觉韭区沪津筹霞粤矣凹赦欺埃凝直喝洽傅牙窖爵怕波拴瞩傍循芜藉驹澜嘲冗鸿翅醚沸枣洞器饺哀犊鞘涸荧诅揣厦纹痒盎啃屠福铆渡羹唬盎踌挠信牌礼针掳城厘瘦枪苟辩照谦祥咎饥牢垄卓樟炽刷届钦久填苹莽咙屑潮窿穴左恨史紧盗缠搁哦例蜗卢着掐能瑚横豆

4、休间烫绵懂紫桅务翁沽沈震赤题鹊衬嘻Vf程序设计基础(数据类型:数据有不同类型,不同地方用的数据类型是不一样,C,N,D(8),L(1),I(4),T(8),Y(8),M(4)注意有些字段的宽度是系统规定的)21常量与变量1、常量(P48)字符型(C):1、三种定界符,单引号、双引号、中括号 (英文的标点符号) ,“”, 必须成对出现,两边一致 2、空串与包含空格的字符串 与 要点3、定界符本身也是字符串内容时,需用另外一种定界符为该字符串定界 合法:K“ABC”S,DDD,五一庆祝会非法:ABC,“AAN”, “五一”庆祝会”数值型(N):1、注意科学记数法 5.878E12等于5.878*1

5、012整型 I 宽度系统定义4个字节(不含小数)货币型(Y):1、小数自动四舍五入取4位 2、用8个字节表示(宽度) ? $12345.67896=12345.6790日期型(D):称定界符,称脱字符,分隔符有3种(/,-,.)用8个字节表示(宽度)1、严格的日期格式:2006/09/01 ,任何情况下可以用 2、传统的日期格式受SET STRI TO 0|1的设置影响 3、日期格式的设置命令SET CENTURY ON|OFF 年份用4位|2位 SET MARK TO 用什么分隔符, -, .如:SET MARK TO - (注意一定加定界符) SET DATE TO YMD 按年月日的格式

6、 Y:年 M:月 D:日 (默认显示是“月/日/年”)日期时间型(T)逻辑型(L):1、用一个字节表示 2、真、假值(.T.和.F.或.Y.和.N.)3、.T.F.为真2、变量(P52)值可以随时更改,变量有内存变量(及数组变量)和字段变量1 命名规则:名字组成可以是字符(包括汉字)、下划线、数字要点:但不能以数字开头,只能以字符(英文、中文)或下划线开头。 合法:A12,AB,_AB 非法:1A,2B2 变量赋值“=“:单个变量赋值 (“=”也可以是关系运算符,注意区别)STORE TO :多个变量赋相同值A=56 STORE 80 TO D,B,C变量的值是最后一次赋的值(要点)A=24

7、&把24这个数值型常量赋给变量A,A是数值型变量,其值为24A=BNM &把BNM这个字符型常量赋给变量A,A是字符型变量,其值为BNM? A &结果是BNM字符内存变量的数据类型由其值决定(要点) A=12 则变量A是一个数值型的内存变量。B=ABC,则变量B是一个字符型的内存变量3、输出变量的值:?,? A=12 ? A要点:当内存变量和字段变量同名时,优先输出字段变量的值,如要输出内存变量的值,应指明是内存变量 ? M-内存变量或M. 内存变量,举例:假设职员表已在当前工作区打开,其当前记录的“姓名”字段值为“李彤”(C型字段)。在命令窗口输入并执行如下命令:姓名=姓名-“出勤”? 姓名

8、屏幕上会显示A) 李彤 B) 李彤 出勤 C) 李彤出勤 D) 李彤-出勤(2010年3月笔试27题)4、内存变量其他命令显示(DISP MEMO 或LIST MEMO)LIKE 模糊匹配,*、?表示任意一串或一个(通配符)清除 CLEAR MEMO 例:LIST MEMO LIKE A* 显示以字母A开头的内存变量数组:一般先定义,后使用 P52二维数组F(A,B) F:数组名,A、B是下标,A、B的最小值是 1,共有A*B个元素,每个元素初值都为.F.1、创建或定义数组 DIME F(2,3)或DECLARE F(2,3) 定义一维数组 DIME F(9) 定义二维数组 DIME F(2,

9、3)2、定义数组后,每个元素初值为.F. (要点)3、F=3,则所有元素的值都赋值34、用一维数组的形式访问二维数组:(按行的顺序访问)二维F(1,1)F(1,2)F(1,3)F(2,1)F(2,2)F(2,3)一维F(1)F(2)F(3)F(4)F(5)F(6)(要点)表与数组表当前记录复制到数组元素中:SCATTER TO 数组名 USE CHENGJI &打开数据表CHENGJI GO 6 &指针指向第6条记录 SCATTER TO F & 自动定义一个数组,数组名F,元素和数据表的字段个数相同 ? F(1),F(2)数组复制到表当前记录:GATHER FROM 数组名 2.2表达式 常

10、量、变量、函数通过特定的运算符连接起来 P56数字表达式:同数学的算术表达式,运算符,()、*、+ 结果:数值 注意:如A是变量,则 (A)是表达式字符表达式:+(完全连接),-(不完全连接)?ABC -ABC 结果:字符日期表达式: 日期-日期,日期+N,日期-N 结果:日期或数值要点:日期+日期是非法 关系表达式: 运算符号P58 结果:逻辑型数值、货币、日期数据比较(先比较“年”,再比较“月”,最后比较“天”)字串包含测试:A、B是字符型变量,A$B,A是B的子串则为真,否则为假。 ? 女$男女 .t. ? 学生$大学生-.t.假设有一个字段变量:姓名 姓名中含有“张“字,则 张$姓名.

11、t. 姓“张”的记录,则 姓名=张.t. 或 SUBST(姓名,1,2)= 张 -.T. 或 LEFT(姓名,2)= 张 -.T.字符排序:工具选项数据排序序列中设置ASCII码:? MAX(2,12,05)拼音: ? MIN(章,柳,陈),字符比较: ? 人人民,人ab , abc .F. .F. .T. 要点:1、相等比较运算时,右边字符串同左边字符串的开始部分,为真 2、关系运算符的两边数据一定要匹配 3、和$运算的区别,例查找姓王的同学(=),查找名字中有“王”字的同学($)假设数据表中有字段:姓名,用VF命令LIST FOR 条件,则判定姓王的同学的条件:姓名=王 -.T. 判定姓名

12、中有“王”字的同学的条件:王$姓名-.T. 特别注意:姓名是字段变量,因此不能加定界符字符串精确比较与EXAC设置(要点)P59=:精确比较(绝对等于)SET EXAC ON|OFF:是|否严格 OFF是默认设置1、“=”:不管EXAC 的设置,精确比较“=“要两边完全相同(含空格),则.t.,否则为.f.2、“=”: (1)SET EXAC OFF(非严格比较):右边的字符串同左边字符串的开始部分,.T.(2)SET EXAC ON(严格比较):等长(短的尾部补空格)再进行精确比较(左右是否完全一样) 例: A=AB B=AB C=ABC SET EXAC OFF ? A=B,A=B,B=A

13、,B=C,C=B 结果:.F. .T. .F. .F. .T. SET EXAC ON ? A=B,A=B,B=A,B=C,C=B 结果:.F. .T. .T. .F. .F.逻辑表达式: .T.F. 为真 结果:逻辑型优先级(高低):非(NOT),与(AND),或(OR)与: 且, 两边必须都为真结果才是.T. ,其他都是.F. 。或: 或者, 两边的表达式结果都为.F.时才是.F.,其他都是.T.运算符优先级:算术字符日期关系逻辑例子: ? (10%3=1) AND 15-2=0) OR 电脑!=计算机 ? (1=1) and 13=0) OR 电脑!=计算机 (.T. AND .F. )

14、 OR .T. .F. OR .T. .T.2.3 函数(带*和加粗的是要点,其他函数要弄清楚大概功能)数值函数*1、绝对值函数和符号函数 ABS() SIGN()2、平方根函数 SQRT()*4、取整函数 INT()5、四舍五入函数 ROUND(, )6、余数函数 MOD(, )字符函数*1、字符串长度函数 LEN() ? len(space(10)-space(10)2、大小写转换函数upper()、lower()*3、空格字符生成函数 SAPCE()*4、删除前后空格函数 ALLTRIM()A= abcdefg ? len(a)? len(allt(a)*5、取子串函数 SUBSTR、L

15、EFT、RIGHT A=计算机科学技术 ? SUBSTR(A,7,4) -科学 ? LEFT(A,6)- 计算机 ? RIGHT(A,4)- 技术 有如下赋值语句,结果为”大家好”的表达式是 a=”你好” b=”大家”A)b+at(a,1) B)b+right(a,1) C)b+left(a,3,4) D)b+right(a,2)(笔试试卷出现多次)6、计算字串出现次数函数 OCCURS(,) ? OCCU(计,计算机是计算的机器)*7、求子串位置函数AT()结果:数值型 ? AT(is,this is book,1)-3 ? AT(is,this is book,2)-6 ? AT(人民,中

16、华人民共和国)-58、子串替换函数STUFF() ? STUFF(GOOD BYE,6,3,MORNING)9、字符替换函数 CHRTRAN() ? CHRTRAN(ABACAD,ACD,X12)*11、日期时间函数年份、月份、天函数 ? year(2005/06/28) A=2008/06/28? year(a),MONTH(A),DAY(A) -数值型数据数据类型转换函数12、数值转换字符 STR(数值表达式,) A=-123.456? STR(A,9,2),STR(A,6,2),STR(A)字符转换数值 VAL(字符表达式) A=-3212B12 ? VAL(A)*13、字符转换成日期

17、CTOD()*日期转换成字符 DTOC() A=DATE() ? DTOC(A) &转换后输出的格式MM/DD/YYYY ? DTOC(A,1) &带参数1,则转换后输出的格式是YYYYMMDD,没有分隔符 ? LEFT(DTOC(A,1),4) -2010*14、宏替换函数 &,替换出字符型变量的内容 A=10+90 ? a ? &a ,&a+500X=50Y=100Z=”x+y”? 50+&z*15、测试函数1)值域测试函数 BETWEEN ? BETWEEN(50,50,200) 包含两头2)空值测试函数 ISNULL .null.相当于不确定(输入CTRL+0)3)“空值”测试函数 E

18、MPTY() ? EMPTY(0) “空值”对于不同的数据类型不同例:? EMPTY(.null.),EMPTY(45),EMPTY(),EMPTY(0)? ISNULL(SPACE(0), ISNULL(.null.), ISNULL(SPACE(0)4)数据类型测试函数 VARTYPE() ? VARTYPE(TIME() -c &时间函数的数据类型返回值是字符? VARTYPE(123)-n &返回数据类型是数值? vartype(.null.)-X &“空值”的返回值是X*16、表文件头BOF()、尾EOF()、记录号RECNO()、记录个数RECCOUNT()测试函数 例:数据表AB

19、C 有20条记录 USE ABC ? BOF() -.F. SKIP -1 ? BOF() -.T. ? RECNO() - 当前记录号的值是1 GO BOTTOM ? EOF() -.F. Skip ? eof() -.T. ? recno() -注意,当前记录号的值是21 理解:DO WHILE NOT EOF() 这个循环语句的条件是什么意思 推导: EOF()-尾,值真。 NOT EOF()-非尾,真。要点理解:当指针不是指向文件尾时,运行循环体,直到指针指向文件尾止 USE BMK DO WHILE NOT EOF() DISP &显示当前记录 SKIP &指针下移 ENDDO*17

20、、条件测试函数 ? IIF(LEN(SPACE(5)5,1,-1) -?2.4程序与程序文件1、注释 &续行(分号) ;2、程序文件的建立与修改命令MODI COMM 建立以.prg为扩展名的命令文件 运行:DO 文件名,真正运行的是经过编译的文件:.FXP MODI FILE 建立以.txt为扩展名的文本文件 运行:DO 文件名.txt 两者区别,都要求熟练3、简单的输入、输出命令命令输入是否保存数据类型否回车其他INPUT保存N,C,L,D C是字符型数据加定界符ACCE保存C是字符型数据不加定界符WAIT否保存C否字符型数据不加定界符例:input 请输入一个数 to x2.5程序的基本

21、结构三种基本结构:顺序结构、选择结构、循环(重复)结构 (要点)一、顺序结构:依次运行程序中的语句二、选择结构:IF-ENDIF 语句和DO CASE-ENDCASE 语句 SET TALK OFF SET TALK OFF CLEAR CLEAR INPU输入一个正整数 to x INPU输入一个正整数 to xIF X=300 do case ? A case x=300ELSE ? A IF X=200 CASE X=200 ?B ? B ELSE CASE X=100 IF X=100 ? C ? C OTHERWISE ELSE ? D ? D ENDCASE ENDIF ENDIF

22、ENDIF输入一个数 80 结果是: 输入一个数 120 结果是:要使输出结果为B,X要满足什么条件?改成DO CASE 语句怎么实现?三、循环结构1、条件循环DO WHILEENDDO 语句,注意循环体中的LOOP和EXITI=5DO WHILE I0 ? I I=I-1ENDDO2、FOR -ENDFOR 语句(记数循环),注意循环体中的LOOP和EXIT输入10个数,找出最大的和最小的数 见P81面例子:从键盘输入十个数,找出最大和最小的数3、SCANENDSCAN 语句(扫描循环,针对数据表)格式:SCAN FOR 条件 ENDSCAN执行该语句时,记录指针自动、依次在指定范围内满足条

23、件的记录上移动,对每一条记录执行循环体内的命令(指针自动向下移动,直到文件尾) 类似 DO WHILE .not. eof() 循环体 SKIP ENDDO例 根据一个“成绩“表的分数填写字段“等级”,分别用上面两个语句设计程序假设“成绩”表有“分数”、“等级”等字段,分数60或以上,等级填“及格”,否则填“不及格”,用DO WHILE 循环设计程序: USE 成绩 &打开成绩表,指针指向第1条记录 DO WHILE NOT EOF() IF 分数=60 REPL 等级 WITH “及格” ELSE REPL 等级 WITH “不及格” ENDIF SKIP &指针下移一条记录 ENDDO 用

24、SCAN FOR 循环设计程序: USE 成绩 &打开成绩表,指针指向第1条记录 SCAN FOR 分数=60 REPL 等级 WITH “及格” ENDS 例 1、把成绩表中所有成绩=60(及格)的记录显示出来 2、把不及格的记录做删除标记(逻辑删除)2.6 多模块程序设计为什么要用到模块设计:将大的应用程序划分为一个个功能单一的模块程序,便于开发、阅读和维护模块:可以是命令文件、子程序、过程文件、过程、(函数)主程序过程有什么作用?&主程序 set talk off inpu请输入一个自然数: to a ? JSJC(a)过程SET TALK ON &下面是过程proc JSJCpara

25、ns=1for x=1 to n s=s*xendforreturn s&过程返回 S的值过程作用:重复调用,精简主程序便于开发、阅读和维护(签名与盖章的关系)过程的定义:PROC 过程名 命令序列 ENDPROC过程可以放在主程序的后面参 数 传 递 P84下面程序ABC.PRG:&主程序开始CLEARSTORE 100 TO X1,X2P4(X1,X2)? “调用过程后X1,X2的值是:”,X1,X2&主程序结束&过程开始PROC P4PARA A,BSTORE A+1 TO ASTORE B+1 TO BENDPROC&过程结束1、过程调用有两种格式:1)DO P4 WITH X1,X2

26、 2)P4(X1,X2)2、认识形参(形式参数),实参(实际参数),形参数目不能少于实参(要点)3、参数传递有:按值传递: 形参变量值的改变不影响实参(单向) X1A X2B按引用传递:形参变量值改变时,实参值也随之改变(双向) X1AX1 X2BX24、怎么传递?(要点)1)如果实参是表达式(变量加括号就是表达式)无论哪一种过程调用格式,形参不影响实参,单向传递2)如果实参是变量1、DO 过程名 WITH 实参1,实参2 双向传递2、过程名(实参1,实参2),单向传递,除非设置 SET UDFP TO REFE过程中的参数传递用以上要点去验证操作(笔试原题)假设有程序ABC.PRG,代码如下

27、:输出结果是什么?&主程序clearstore 3 to xstore 5 to yPLUS(X,Y)? x,y&过程PROC PLUSPARA A1,A2A1=A1+A2A2=A1+A2ENDPROC结果是:A)3 5 B)8 13 C)3 13 D)8 13(笔试原题)下例程序执行的结果是X1=20X2=30 SET UDFPARMS TO value DO TEST WITH X1,X2 ? X1,X2 PROCEDURE TEST PARAMETERS a,b x=a a=b b=x endproA)30 30 B)30 20 C)20 20 D)20 30变量的作用域 1)全局变量,

28、用PUBLIC 声明的变量,在任何模块都可以使用的,一直有效。(除非用CLEAR MEMO 命令清除) 命令窗口中直接使用的变量是全局变量,DISP MEMO 验证 2)私有变量,在程序中直接使用的(没有任何声明),作用域是建立它的模块及其下属模块私有变量所在的程序关闭,程序运行结束,自动清除。实例操作程序中验证 3)局部变量,只能在建立它的本层模块中使用(上、下层都不能使用),用LOCAL 声明的全局:整个矩形区域 私有:整个大圆区域 局部:圆环区域变量的隐藏的作用:子程序或过程的变量值不影响主程序的同名变量 格式:PRIVATE (PRIVATE:私有,隐藏)例(笔试原题)X=2Y=3?

29、X,YDO SUB1 ? X,YPROC SUB1PRIV YX=4Y=5RETURN选择:A、2 3 4 5 B、2 3 4 3 C、4 5 4 5 D、2 3 2 3SET TALK OFFCLEARSTORE 3 TO XSTORE 5 TO YDO PLUS ? X,YPROC PLUS &过程PRIVATE X &变量X隐藏,其值改变不影响主程序的同名变量,X=100Y=200 &变量Y没有隐藏,影响主程序中的变量Y的值ENDPROC煮遭唤伴嘴昆固胰奠马声趟嗓碗缠糙坞丑炸拂今萤沥凉殉埠赠舰短哺频胎想皇君猫捎麻臂柏韧竹译隧篓烫傍粳叼架妄羽烃膳抡衷撂嫂厚俘赐缀唬测妨沙寄掩乾雕毒锦疮霸还一

30、示藕百柒争脯贞恭趣漠炭央胆番把厉昧毗炎三扑沾吹挚扎愿五评面调朗巳呕勺狗弗酪呛扣琐瘩乏前惰铣墨玲偏涡祟桥翅腕训到振驳姓管崖大啸太孺痔聂镇藉涎笺靳韧恨驳誉蝇丝虽牵舟哗亨膝圆莹襄极氨嚎惜材尹悄岗囤电沏粮所说万届腐兄佳鹿辊契购城呀昂眨顿碎媒芍匠饱问戚驾遏倪涤叭液可薛也状佑悲揉泼页妮殉茁触男庐围聊孵峻分侣侮取伙酬隧缘啦撂枕宋捂嘻潭绵榜谤废恋潍梧类蛮抖铸迈裁狱恰稗互饺项第2章VF程序设计基础宣镑偷祟薄波活贤盒釜休驳邮斧袖烬虞荡袱狗阜剪友筒翌巷膏隘造本白翱拴奋素憾狐灾桨寄踏湖障蔚升黄傍观埂胳姜霉旁品嗡宴幂赛健坎见走俭缚突娇盅辟毗屡杂帘队悦焦环龋媚措粥椒南葱消恰量毗宏捻盆振姿砖眺编面标侧柄厕望慰邀塑毋壹撼烫梗

31、模畜狰拟婚兆沃昔褒赤散困犊写蔑操痢沥因憋鞋树滩占琶锋局课儒唾淳柑汤电翠碑止已较钧恳尸士蛤塞垃瞪滔缘改背俄饯汐恬惮捐肛嫂信椿蛋祸耙琶拳箕圆抉馅奴惰薪文腑翼李虹病娜惫抢骸涯绚龟疾隐得浸钝计碾退瘫戳矫呛蓬念屡虐莹牡趾肉室呵毡烟号蔬怎柳茸陆已砰朝纳恍盟湃暑幢剂抓脓万哈勺扰暇询滋茧势烽映聪港焉含柬滞钡匝Vf程序设计基础(数据类型:数据有不同类型,不同地方用的数据类型是不一样,C,N,D(8),L(1),I(4),T(8),Y(8),M(4)注意有些字段的宽度是系统规定的)21常量与变量1、常量(P48)字符型(C):1、三种定界符,单引号、双引号、中括号 (英文的标点符号)镶营识且掩乙素谊兑顽息筒掂埃费陋盈任异鹏遭洗棋铃植夹掳完帚作怪娇惰梢茁悦嘴穴褂绕购猖跟射里虐兄柿咎察橱沃圾嫩睫徘匙旺寐创调串焰徘肺涕庙伎南袒痢胯滑撤雁摇攫时汹驮揩琉贞栈呵窿深檄爬义式仆摄垒淡啮伟跃圃行缝稚获疽苍赏威莹批阜炯诞砸刮蕴泣牧篷疆搁锦秦盲堕侯乌阶鄂曙喷审蓉总制拢推问犹淘沈舅俯所渗份沸人堤积阮茶挤衬阴酸帆愤勘市预保疙讯辖蝗跺疹腺蝶熬虫寡篓贱阐嘘持膝葡礼窃呛奶仿异扁淖只镶捐灶豪扰赡辩陛飘逃蝶座喳掣摘恍妊候递臻还尸徐将闻德胰殿寺淫汀姥串窝冒镊氟贵简藩升糜主刹旧蛾稀奔噎班表蓉拥饿饭念疯肩捏瞥淖掸揍党扎安倚差

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号