📄 文件的输入和输出的实验.mb
字号:
title "分区(单站);分区综合分析"
position 30,8
into x '选择结果存入X
control okbutton
title "确定"
position 10,50
control cancelbutton
title "取消"
position 80,50
print "您选择了"+z$(x)
end sub
SUB A40
for i=1 to q2
p$=p$+f0$(i)+";"
next
p$=p$+"单站"
ax=q2*15.2
dialog
title"请您选择工作分区"
position 100,10
control radiogroup
title p$
position 30,2
into q
control okbutton
title "确定"
position 10,ax
control cancelbutton
title "取消"
position 60,ax
'Open Table "C:\mapbasic\行政区划.TAB" Interactive
'Map From 行政区划
'Open Table "C:\mapbasic\降水分布.TAB" Interactive
'Add Map Auto Layer 降水分布
'Open Table "C:\mapbasic\大型湖泊.TAB" Interactive
'Add Map Auto Layer 大型湖泊
'set map redraw off
'Set Map Layer 1 Label Position Center Font ("Arial",258,8,0,11599792) Auto On
'set map redraw on
print q '显示选择结果序号
if q=q2+1 then '如果为13,则选择了单站
call a284
else note "您选择了"+f0$(q)
zm$=f0$(q)+"区"
ax=len (f0$(q))
z0$=right$ (f0$(q),3)
p$="q"+z0$
goto a30
END IF
min=999999999 '设置最小数的初值
max=-min '设置最大数的初值
For i=1 to n2 '
input #2,c$(i) '调入站名
print i+" "+c$(i)
ax=VAL (c$(i)) '转换为数字
if min>ax then '找出最小值
min=ax
end if
if max<ax then '找出最大值
max=ax
end if
next
a11:dialog '输入站名对话框的开始
title"您选择了单站的操作:"
control statictext
title "本系统中已输入了"+l$+n2+"个雨量站的逐日资料"
position 5,5
control statictext
title"站号范围为(不连续):"+min+"至"+max
position 5,15
control statictext
title"请您在“消息”框中查找站号、站名"
position 5,25
control groupbox
title "请您选择站号(8位):"
position 20,35
width 120 height 35
control edittext
value "51226550"
into z0$
position 30,45
control okbutton
title "确定"
position 30,80
control cancelbutton
title "取消"
position 95,80
if len (z0$)=0 then
GOTO A99 '按了“取消”键,则结束本过程
end if
if len (z0$)<>8 then '站号为8位数,如超过则为输入错了
note "本系统没有您需要的雨量站,或者您将站号输错了,请您重新输入好吗?"
z0$=""
goto a11
end if
for i=1 to n2 '找出相对应的站名
h$=left$(c$(i),8)
if z0$=h$ then
js$=c$(i)
end if
next
print "您选择了"+js$
note "您选择了"+js$+"站"
zm$=js$+"单站"
P$=z0$
a30:Open Table "C:\mapbasic\逐日降水量表.tab" Interactive '
Open Table "C:\mapbasic\年统计表.tab" Interactive '
Open Table "C:\mapbasic\当前雨情分析原始表.tab" Interactive '
Open Table "C:\mapbasic\当前雨情分析_从小到大排序.tab" Interactive '
Open Table "C:\mapbasic\当前雨情分析_逐月对照.tab" Interactive '
Commit Table 逐日降水量表 As "C:\mapbasic\逐月降水量表.tab" TYPE NATIVE Charset "WindowsSimpChinese"
Open Table "C:\mapbasic\逐月降水量表.TAB" Interactive
ALTER TABLE 逐月降水量表
(RENAME 日期 年份)
Commit Table 当前雨情分析原始表 As "C:\mapbasic\当前雨情统计表.tab" TYPE NATIVE Charset "WindowsSimpChinese"
Open Table "C:\mapbasic\当前雨情统计表.TAB" Interactive
ALTER TABLE 当前雨情统计表
(MODIFY 年份 CHAR(4))
Commit Table 逐月降水量表 As "C:\MAPBAsic\逐月降水量统计表.tab" TYPE NATIVE Charset "WindowsSimpChinese"
Commit Table 逐月降水量表 As "C:\MAPBAsic\逐月最大降水量表.tab" TYPE NATIVE Charset "WindowsSimpChinese"
Commit Table 逐月降水量表 As "C:\mapbasic\逐月降水日数表.tab" TYPE NATIVE Charset "WindowsSimpChinese"
Open Table "C:\mapbasic\逐月降水量统计表.TAB" Interactive
ALTER TABLE 逐月降水量统计表
(RENAME 年份 特征)
Commit Table 逐月降水量统计表 As "C:\MAPBAsic\逐月最大降水量统计表.tab" TYPE NATIVE Charset "WindowsSimpChinese"
Commit Table 逐月降水量统计表 As "C:\mapbasic\逐月降水日数统计表.tab" TYPE NATIVE Charset "WindowsSimpChinese"
Commit Table 当前雨情分析原始表 As "C:\mapbasic\当前雨情分析结果.tab" TYPE NATIVE Charset "WindowsSimpChinese"
Open Table "C:\mapbasic\当前雨情分析结果.TAB" Interactive
ALTER TABLE 当前雨情分析结果
'(RENAME 年份 char(4) 年份 DECIMAL(5,0),
(ADD 频率 DECIMAL(4,1))
Close Table 当前雨情分析结果 Interactive
Open Table "C:\mapbasic\逐月最大降水量表.TAB" Interactive
Open Table "C:\mapbasic\逐月最大降水量统计表.TAB" Interactive
Open Table "C:\mapbasic\逐月降水日数表.TAB" Interactive
Open Table "C:\mapbasic\逐月降水日数统计表.TAB" Interactive
IF E=1 THEN
Browse * From 逐日降水量表
Browse * From 逐月降水量表
Browse * From 年统计表
Browse * From 当前雨情分析原始表
Browse * From 当前雨情分析_从小到大排序
Browse * From 当前雨情分析_逐月对照
END IF
call a270
call a330
A99:end SUB
sub a270
ww$ = w$ + "data\" + p$ + j$
call a320
end sub
sub a284
ww$="D:\data\fq.dat"
open file ww$ for input as #2 '调入分区数据文件
input #2, zl$,n2,z0$ 'n2为站数
end sub
sub a290
call a284
FOR i = 1 TO n2
INPUT #2, z$
PRINT c$(98)+ i+ z$
NEXT
end sub
sub a300
FOR i = 1 TO s1
FOR w = 0 TO 5
'l(i, w + 6) = l(i, w)
NEXT
NEXT
FOR i = 1 TO s1 - 1
FOR w = i + 1 TO s1
'IF l(i, 11) > l(w, 11)
goto a310
'SWAP l(i, 6), l(w, 6)
'SWAP l(i, 11), l(w, 11)
'SWAP l(i, 7), l(w, 7)
'SWAP l(i, 8), l(w, 8)
'SWAP l(i, 9), l(w, 9)
'SWAP l(i, 10), l(w, 10)
a310: NEXT
next
end sub
sub a320
OPEN file ww$ FOR INPUT AS #3
INPUT #3,l$,a1,a2,n
IF n < 5 AND e = 1
THEN PRINT "系列太短,不能分析"
end if
end sub
sub a330
FOR c = 1 TO n
call a470
t$(c) = STR$(l)
NEXT
end sub
sub a340
FOR c1 = 1 TO n
'IF l2 = VAL(t$(c1))
'then ll1 = c1
'end if
NEXT
l1 = c1 + 1
end sub
sub a470 '开始读入
INPUT #3, l, y(2) 'L为年份
INSERT INTO 逐日降水量表 '增加一行数据 '
VALUES ("年份",L,s(2),s(3),s(4),s(5),s(6),s(7),s(8),s(9),s(10),s(11),s(12))
for i=1 to 34
call a490
if i=32 then
z0$="总数"
goto q12
end if
if i=33 then
z0$="天数"
goto q12
end if
if i=34 then
z0$="最大"
goto q12
end if
z0$=str$(i)
q12:INSERT INTO 逐日降水量表 '增加一行数据 '
VALUES (z0$,s(1),s(2),s(3),s(4),s(5),s(6),s(7),s(8),s(9),s(10),s(11),s(12))
next
FOR j = 372 TO 400
INPUT #3, S(j)
NEXT
INSERT INTO 年统计表 '增加一行数据 '
VALUES (L,S(396),S(394),S(393),S(395),S(392),val(STR$(S(398))+"."+STR$(S(391))),S(376),val(STR$(S(372))+"."+STR$(S(380))),S(377),val(STR$(S(373))+"."+STR$(S(381))),S(378),val(STR$(S(374))+"."+STR$(S(382))),S(379),val(STR$(S(375))+"."+STR$(S(383))),S(384),val(str$(S(385))+"."+str$(s(385))))
end sub
SUB A480
END SUB
SUB A490 ' 调入逐日数据过程
for j=1 to 12 '以每月同日开始调入
INPUT #3, s(j) '调入字符串
'note "年份"+l+"年"+j+"月"+i+"日降水量"+s(i) ' 检查数据
next
END SUB
SUB A500
for i=1 to 12
s(i)=0
next
for j=2 to 17
for i=1 to n
fetch rec i from 年统计表
s(400)=年统计表.col(j)
s(j)=s(j)+s(400)
next
next
for j=2 to 17
s(j)=s(j)/n
next
z0$="平均"
call a510
min=99999999
for j=2 to 17
max=-min
for i=1 to n
fetch rec i from 年统计表
if max<年统计表.col(j)
then max=年统计表.col(j)
ax=val (年统计表.col(1))
end if
next
s(j)=max
f(j)=ax
next
z0$="最大"
call a510
for j=2 to 17
s(j)=f(j)
next
z0$="年份"
call a510
for j=2 to 17
min=99999999
for i=1 to n
fetch rec i from 年统计表
if min>年统计表.col(j)
then min=年统计表.col(j)
ax=val (年统计表.col(1))
end if
next
s(j)=min
f(j)=ax
next
z0$="最小"
call a510
for j=2 to 17
s(j)=f(j)
next
z0$="年份"
call a510
END SUB
sub a510
INSERT INTO 年统计表 '增加一行数据 '
VALUES (z0$,s(2),s(3),s(4),s(5),s(6),s(7),s(8),s(9),s(10),s(11),s(12),s(13),s(14),s(15),s(16),s(17))
end sub
SUB zr
Close All Interactive '关闭所有窗口
DIM jx as string
dialog
title "对话框"
control statictext
title "请您输入日期 "
control edittext
into jx
control okbutton
title "确定"
control cancelbutton
title "取消"
if commandINfo(jx)THEN
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -