(来源:QB论坛的myworld《一个想法而已....描述不正确表砸我..》) 这个电子表可以调整日期、时间、闹铃,并有整点报时功能。 使用说明: (1)日期的范围:1500年1月1日到2499年12月31日。 (2)按“1”“2”“3”分别调整日期、时间、闹铃。 (3)按“E”退出。 (4)请在输入程序时按Alt+Enter把QB环境调整为全屏,不然在闹铃的时候发出的声音有问题。 源代码: DECLARE SUB printdat ()DECLARE SUB printtim ()DECLARE SUB printcase ()DECLARE SUB setdat ()DECLARE SUB settim ()DECLARE SUB setbell ()DECLARE SUB printbell ()CLSDIM SHARED dat$, tim$, bell$dat$ = DATE$: tim$ = TIME$: bell$ = "10:30:00"DO CALL printdat CALL printtim CALL printcase IF RIGHT$(tim$, 5) = "00:00" THEN BEEP IF tim$ = bell$ THEN FOR i = 1 TO 5: BEEP: NEXT i s$ = INKEY$ IF s$ = "1" THEN CALL setdat: DATE$ = dat$ CALL printdat ELSEIF s$ = "2" THEN CALL settim: TIME$ = tim$ CALL printtim ELSEIF s$ = "3" THEN CALL setbell ELSEIF LCASE$(s$) = "e" THEN END END IF dat$ = DATE$: tim$ = TIME$LOOP SUB printbellLOCATE 13, 36: PRINT bell$END SUB SUB printcaseLOCATE 18, 4: PRINT "(1)set date"LOCATE 18, 34: PRINT "(2)set time"LOCATE 18, 64: PRINT "(3)set bell"END SUB SUB printdatLOCATE 12, 33: PRINT "Today is "; dat$END SUB SUB printtimLOCATE 13, 36: PRINT tim$END SUB SUB setbellCLS : vbell$ = bell$LOCATE 10, 35: PRINT "Input bell:"CALL printbelli = 0DO IF i < 8 THEN i = i + 1 ELSE EXIT DO IF MID$(bell$, i, 1) <> ":" THEN m$ = MID$(bell$, i, 1): MID$(bell$, i, 1) = "_" CALL printbell7 n$ = INPUT$(1): n$ = LCASE$(n$) IF n$ >= "0" AND n$ <= "9" THEN MID$(bell$, i, 1) = n$ CALL printbell ELSEIF n$ = "a" AND i > 1 THEN MID$(bell$, i, 1) = m$: i = i - 2: CALL printbell: GOTO 8 ELSEIF n$ = "d" AND i < 8 THEN MID$(bell$, i, 1) = m$: CALL printbell: GOTO 8 ELSEIF n$ = "r" THEN EXIT DO ELSE GOTO 7 END IF END IF8 LOOPhour = VAL(LEFT$(bell$, 2))min = VAL(MID$(bell$, 4, 2))sec = VAL(RIGHT$(bell$, 2))IF hour < 0 OR hour > 24 OR min < 0 OR min > 59 OR sec < 0 OR sec > 59 THEN GOTO 9CLS : LOCATE 12, 34: PRINT "Set success!": SLEEP 3: CLS : EXIT SUB9 CLS : LOCATE 12, 34: PRINT "Invalid bell!": SLEEP 3: CLS : bell$ = vbell$END SUB SUB setdatCLS : vdat$ = dat$LOCATE 10, 35: PRINT "Input date:"CALL printdati = 0DO IF i < 10 THEN i = i + 1 ELSE EXIT DO IF MID$(dat$, i, 1) <> "-" THEN m$ = MID$(dat$, i, 1): MID$(dat$, i, 1) = "_" CALL printdat1 n$ = INPUT$(1): n$ = LCASE$(n$) IF n$ >= "0" AND n$ <= "9" THEN MID$(dat$, i, 1) = n$ CALL printdat ELSEIF n$ = "a" AND i > 1 THEN MID$(dat$, i, 1) = m$: i = i - 2: CALL printdat: GOTO 2 ELSEIF n$ = "d" AND i < 10 THEN MID$(dat$, i, 1) = m$: CALL printdat: GOTO 2 ELSEIF n$ = "r" THEN EXIT DO ELSE GOTO 1 END IF END IF2 LOOPyear = VAL(RIGHT$(dat$, 4))month = VAL(LEFT$(dat$, 2))day = VAL(MID$(dat$, 4, 2))IF year < 1500 OR year > 2499 OR month < 1 OR month > 12 OR day < 1 THEN GOTO 3SELECT CASE monthCASE 1, 3, 5, 7, 8, 10, 12: maxday = 31CASE 4, 6, 9, 11: maxday = 30CASE 2IF year MOD 4 = 0 AND year MOD 100 <> 0 OR year MOD 400 = 0 THEN maxday = 29ELSE maxday = 28END IFEND SELECTIF day > maxday THEN GOTO 3CLS : LOCATE 12, 34: PRINT "Set success!": SLEEP 3: EXIT SUB3 CLS : LOCATE 12, 34: PRINT "Invalid date!": SLEEP 3: CLS : dat$ = vdat$END SUB SUB settimCLS : vtim$ = tim$LOCATE 10, 35: PRINT "Input time:"CALL printtimi = 0DO IF i < 8 THEN i = i + 1 ELSE EXIT DO IF MID$(tim$, i, 1) <> ":" THEN m$ = MID$(tim$, i, 1): MID$(tim$, i, 1) = "_" CALL printtim4 n$ = INPUT$(1): n$ = LCASE$(n$) IF n$ >= "0" AND n$ <= "9" THEN MID$(tim$, i, 1) = n$ CALL printtim ELSEIF n$ = "a" AND i > 1 THEN MID$(tim$, i, 1) = m$: i = i - 2: CALL printtim: GOTO 5 ELSEIF n$ = "d" AND i < 8 THEN MID$(tim$, i, 1) = m$: CALL printtim: GOTO 5 ELSEIF n$ = "r" THEN EXIT DO ELSE GOTO 4 END IF END IF5 LOOPhour = VAL(LEFT$(tim$, 2))min = VAL(MID$(tim$, 4, 2))sec = VAL(RIGHT$(tim$, 2))IF hour < 0 OR hour > 24 OR min < 0 OR min > 59 OR sec < 0 OR sec > 59 THEN GOTO 6CLS : LOCATE 12, 34: PRINT "Set success!": SLEEP 3: CLS : EXIT SUB6 CLS : LOCATE 12, 34: PRINT "Invalid time!": SLEEP 3: CLS : tim$ = vtim$END SUB

评论