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

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

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