⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 文件的输入和输出的实验.mb

📁 mabasic 经典使用案例。主要关于菜单建立
💻 MB
📖 第 1 页 / 共 4 页
字号:
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 + -