📄 文件的输入和输出的实验.mb
字号:
include "mapbasic.def"
declare sub main '主过程
Declare sub dqyq '当前雨情
Declare sub lsyq '历史雨情
Declare sub zr '逐日
Declare sub zy '逐月
Declare sub zn '逐年
Declare sub tj '统计查询
Declare sub a2 '建立表结构
Declare sub a4
Declare sub a6
Declare sub a8
Declare sub a10
Declare sub a22
declare sub a25
Declare sub a30
DECLARE SUB A40
Declare sub a270
Declare sub a284
Declare sub a290
Declare sub a300
Declare sub a320
Declare sub a330
Declare sub a340
Declare sub a470
declare sub a480
Declare sub a490
Declare sub a500
Declare sub a510
Declare sub B11
DIM SD$ AS LOGICAL
dim S(400),y(12),f(50),D(6) as float
DIM c$(500),t$(50),f0$(20), f1$(20),z$(20) as string
dim w$,W1$,ww$,S$,j$,hm$,l$,zm$,zz$,f$,Z0$,fq$, a$,p$ as string
dim a0$,b$,h$,zl$,da$,y$,js$ as string
dim px,i0,r2,r3,c0 as float
dim a,a1,a2,E,n,r1,R5,R6,B0,cy,l,L0,L1,l2,lk,I,q,q1,q2,lo,x,c,c1,ck,K,j,j1,jo,j0,j2,j4,n2 as smallint
dim y1,bx,cc,e0,R0,y0,w,b ,f0,ss,cd,s0,s2,s1,WV,mo,z0,ta,l00,y00 as smallint
dim max,min,ax as integer
dim yy as date
sub main '
Close All Interactive '关闭所有窗口
Open File "GH.dat" For Random As #8 Len =30
'Field #1,10 As a$,15 As b$,36 As c$
put #8,3
call a2
w$="D:\"
ww$=w$+"data\bgx.dat" '数据文件路径
OPEN file ww$ FOR INPUT AS #1 '打开数据文件
INPUT #1, l$, bx, y(1), y(3), y(4), y(5), y(6), y(7), y(8), y(9), y(10), y(11), y(12)
CLOSE ALL
' SEEK # ww$,l$
'NOTE L$
l$="徐州"
a=1
A1=456
A2=789
'Open File "D:\WE" For input AS #2
'l$=input#2, 2 'A2,A2+a,l$
Open File "D:\WE" For Append AS #2
PRINT #2, A2',A2+a,l$
'L$=EOF(2)
'kill "D:\WE.txt"
L$=LOF(2)
NOTE L$
'OPEN file ww$ FOR OUTPUT AS #1
'Write #1,l$
'OPEN file "GH.dat" AS #1 LEN =30
' OPEN file ww$ FOR APPEND AS #1
bx=bx+1
j$ = ".dat"
zm$ = "data\zm.dat"
h$ = "jszl\"
FOR i = 1 TO bx '调入表格线
INPUT #1, z0$
NEXT
INPUT #1, n2
FOR i = 1 TO n2 '调入雨量站名
INPUT #1, c$(i)
NEXT
INPUT #1, q2 '调入分区内容数据
FOR i = 1 TO q2
INPUT #1, f0$(i), f(i)
print f0$(i)+" "+f(i)
NEXT
'CALL A284
'FOR I=1 TO n2
'INPUT #2,Z0$
'print "i="+i+"z0$="+z0$
'NEXT
'INPUT #2,Z0$,q2
'note "z0$="+z0$+"q2="+q2
'FOR i = 1 TO q2
'INPUT #2,z0$,f0$(i),f(i),z0$
'if i>1 then
'input #2,f0$,f(i),z0
'end if
'note "f0$(i)="+f0$(i)+"f(i)="+f(i)
'ax=f(i)
'note "ax="+ax
'for j=1 to ax
'input #2,zl$
'note "j="+j+"zl$="+zl$
'next
'next
create menu "降水"As '加入“降水”菜单
"当前雨情分析" calling dqyq, '子菜单,调当前雨情过程
"历史雨情分析" calling lsyq, '子菜单,调历史雨情过程
"(-", '加入分割线
"逐日降水量分析" calling zr, '子菜单,调逐日降水量统计过程
"逐月降水量分析" calling zy, '子菜单,调逐月降水量统计过程
"逐年降水量分析" calling zn, '子菜单,调逐年降水量统计过程
"(-",
"随机" calling tj '子菜单
alter menu bar add"降水" '让菜单显示
end sub '主过程结束
SUB dqyq '当前雨情过程开始
call a25
Close All Interactive '关闭所有窗口
if x=2 then '
goto a22
end if
if x=0 then
goto a10
end if
CALL A40
ax=curdate() '取当前日期
z0$=str$(ax) '将AX变成字符串
y1=val (mid$(z0$,5,2)) '取当前月份
l2=val (left$(z0$,4)) '取年份
r1=val (right$(z0$,2)) '取日期
ww$ = w$ + "data\date.tim" '上一次分析的时间记录文件
open file ww$ for input as #5
INPUT #5, l$, y$, da$ 'L为站名Y为月份DA为日期
l0 = VAL(RIGHT$(da$, 4))
y0 = VAL(LEFT$(da$, 2))
r0 = VAL(MID$(da$, 4, 2))
dialog
title"您现在进行的是当前雨情分析"
position 200,120 '200为菜单左边界距窗口左边的距离120为距窗口的上部距离
control statictext
title "今天是"+L2+"年"+Y1+"月"+R1+"日"
position 20,0
control statictext
title "您上次分析的时间为"+L0+"年"+Y0+"月"+r0+"日"
position 20,10
control statictext
title "请您选择开始时间:"
position 20,20
control radiogroup
title "本年元月一日;上次分析时间;指定时间 "
position 40,30
into e0 '选择结果存入e0
control okbutton
title "确定"
position 20,80
control cancelbutton
title "取消"
position 100,80
IF E0=0 THEN '若为取消则结束过程
GOTO A10
END IF
IF e0 = 1
THEN y0 = 1
r0=1
goTO A07
END IF
IF e0 = 2 THEN
GOTO A07
END IF
y0=y1
call b11 '输入开始月份和日期对话框
if y0=0 then
goto a10
end if
if r0=0 then
goto a10
end if
a07:print "您选择的开始时间是"+Y0+"月"+r0+"日"
FOR i = 1 TO 6
f(i) = 0
NEXT
L0 = a1
z0$ = "天同期降水量"
call a4
CC=1
FOR c = 1 TO n
fetch rec CC from 逐日降水量表 '确定当前行CC
l0=逐日降水量表.col(2) '第二列
z0$=str$(l0)
IF t$(c) = z0$ THEN
lk = c
CALL a10
end if
NEXT
cls
note "当前雨情分析结果在“消息”框中报告,请您查看"
fetch rec N from 当前雨情分析结果
for j=2 to 8
f(j-1)=当前雨情分析结果.col(j)
next
C0=8
FOR I=1 TO 5
FEtch rec I from 当前雨情统计表
for j=2 to 7
f(C0)=当前雨情统计表.col(j)
C0=C0+1
next
NEXT
dialog
title"当前雨情分析结果如下:"
control statictext
title "各位领导、同志们:"
position 2,0
control statictext
title " 现将"+zm$+"当前雨情分析如下,如有不当之处,请批评指正。"
position 2,8
control statictext
title " 今天是"+ l2+ "年"+ y1+ "月"+ r1+ "日, 从"+ y0+ "月"+ r0+ "日到"+ y1+ "月"+ r1+ "日,"+s1+ "天内总降水量为"+f(1)+"毫米。降水日数"
position 2,16
control statictext
title f(2)+"天,"+"最大日降水量为"+f(3)+"毫米,"+"出现在"+f(4)+"月"+f(5)+"日,"+"有效降水为"+f(6)+"毫米。"+Z$(ax)+"的频率为"
position 2,24
control statictext
title f(7)+"%。"+"排在第"+k+"位,此期间总降水量的平均为"+F(8)+"毫米。降水日数平均为"+F(9)+"天,"
position 2,32
control statictext
title "最大日降水量平均为"+F(10)+"毫米。平均出现在"+F(11)+"月"+F(12)+"日."
position 2,40
PRINT "有效降水平均为"+F(13)+"毫米。"
PRINT "最大降水量为"+F(14)+"出现在"+F(20)+"年. 最大降水日数为"+F(15)+" 出现在"+F(21)
PRINT " 年最大一日的最大值为"+F(16)+" 出现在"+F(22)+"年"+F(17)+"月"+F(18)+"日有效降水的最大值是"+F(19)+"出现在"+F(25)+" 年"
PRINT "最小降水量为"+F(26)+"出现在"+F(32)+"年. 最小降水日数为"+F(27)+" 出现在"+F(33)
PRINT " 年最大一日的最小值为"+F(28)+" 出现在"+F(34)+"年"+F(29)+"月"+F(30)+"日有效降水的最小值是"+F(31)+"出现在"+F(37)+" 年"
PRINT "小雨"+d(1)+"次,中雨"+d(2)+"次,大雨"+d(3)+"次,暴雨"+d(4)+"次,大暴雨"+d(5)+"次。"
PRINT "特大暴雨"+d(6)+"次。"+"今年以来有效降水量为"+r3+"毫米。"
IF y1 > 9 THEN
PRINT "6-9月降水量"+S(395)+"毫米"
END IF
PRINT "最长持续无雨日"+S(385)+"月"+S(386)+"日开始,共"+S(384)+"天,"+"最大一日降水"+S(392)+"毫米"
PRINT "出现在"+S(398)+"月"+S(391)+"日,"+"最大三日降水"+S(376)+"毫米,从"+ S(372)+"月"+S(380)
PRINT "日开始,"+"最大七日降水"+S(377)+"毫米,从"+ S(373)+ "月"+ S(381)+"日开始,"
PRINT "最大七日降水"+S(378)+"毫米"+"从"+S(374)+"月"+S(382)+"日开始,"+"最大三十日降水"+S(379)+"毫米,从"
PRINT S(375)+"月"+S(383)+ "日开始。" '+ GOSUB 276
'以下应接程序最后
if x=1 then
goto a10
end if
a22:note "您选择了"+z$(2)
a10:END SUB '当前雨情过程结束
sub a10
e1:
FOR c = lk TO l1
FOR j = y0 TO y1
FOR i = 1 TO y(j)
IF y0 = j AND r0 = i THEN
a = j
b = i
GOTO e2
END IF
NEXT
NEXT
NEXT
e2: FOR c = lk TO l1
fetch rec CC from 逐日降水量表
l0=逐日降水量表.col(2)
s1 = 0
s2 = 0
i0 = 0
r2 = 0
r3 = 0
FOR j = y0 TO y1
IF j > a THEN
b0 = 1
GOTO e3
END IF
b0 = b
e3: FOR i = b0 TO y(j)
s1 = s1 + 1
fetch rec cc+i from 逐日降水量表
pX=逐日降水量表.col(J+1)
S(s1) =pX
i0 = i0 + pX
IF c <> l1 THEN
GOTO e9
END IF
IF pX > 0 AND pX<=10 THEN
D(1) = D(1) + 1
END IF
GOTO e9
IF pX > 10 AND pX <= 25 THEN
D(2) = D(2) + 1
GOTO e9
END IF
IF pX > 25 AND pX <= 50 THEN
D(3) = D(3) + 1
GOTO e9
END IF
IF pX > 50 AND pX <= 100 THEN
D(4) = D(4) + 1
GOTO e9
END IF
IF pX > 100 AND pX <= 200 THEN
D(5) = D(5) + 1
GOTO e9
END IF
IF pX > 200
THEN D(6) = D(6) + 1
END IF
e9: IF r2 < pX THEN
r2 = pX
r5 = j
r6 = i
END IF
IF pX > 0 THEN
s2 = s2 + 1
END IF
IF pX < 5 THEN
r3 = r3
GOTO e4
END IF ' 计算有效降雨
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -