主题:一个想法而已....描述不正确表砸我..
myworld
[专家分:0] 发布于 2007-10-05 11:47:00
用QB编一钟表
要求:
从00:00:00开始走
有闹铃功能
24小时制
我编的那完应都不是按时间走的....各位指教小弟一下吧
回复列表 (共5个回复)
沙发
Matodied [专家分:7560] 发布于 2007-10-05 14:30:00
这是我做的电子表程序。
可调整日期、时间、闹铃,并有整点报时功能。
说明:
(1)日期的范围为1500年1月1日到2499年12月31日。
(2)按“1”、“2”、“3”分别调整日期、时间、闹铃。
(3)按“E”结束。
DECLARE SUB printdat ()
DECLARE SUB printtim ()
DECLARE SUB printcase ()
DECLARE SUB setdat ()
DECLARE SUB settim ()
DECLARE SUB setbell ()
DECLARE SUB printbell ()
CLS
DIM 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 printbell
LOCATE 13, 36: PRINT bell$
END SUB
SUB printcase
LOCATE 18, 4: PRINT "(1)set date"
LOCATE 18, 34: PRINT "(2)set time"
LOCATE 18, 64: PRINT "(3)set bell"
END SUB
SUB printdat
LOCATE 12, 33: PRINT "Today is "; dat$
END SUB
SUB printtim
LOCATE 13, 36: PRINT tim$
END SUB
SUB setbell
CLS : vbell$ = bell$
LOCATE 10, 35: PRINT "Input bell:"
CALL printbell
i = 0
DO
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 printbell
7 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 IF
8 LOOP
hour = 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 9
CLS : LOCATE 12, 34: PRINT "Set success!": SLEEP 3: CLS : EXIT SUB
9 CLS : LOCATE 12, 34: PRINT "Invalid bell!": SLEEP 3: CLS : bell$ = vbell$
END SUB
(2楼还有)
板凳
Matodied [专家分:7560] 发布于 2007-10-05 14:34:00
SUB setdat
CLS : vdat$ = dat$
LOCATE 10, 35: PRINT "Input date:"
CALL printdat
i = 0
DO
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 printdat
1 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 IF
2 LOOP
year = 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 3
SELECT CASE month
CASE 1, 3, 5, 7, 8, 10, 12: maxday = 31
CASE 4, 6, 9, 11: maxday = 30
CASE 2
IF year MOD 4 = 0 AND year MOD 100 <> 0 OR year MOD 400 = 0 THEN
maxday = 29
ELSE maxday = 28
END IF
END SELECT
IF day > maxday THEN GOTO 3
CLS : LOCATE 12, 34: PRINT "Set success!": SLEEP 3: EXIT SUB
3 CLS : LOCATE 12, 34: PRINT "Invalid date!": SLEEP 3: CLS : dat$ = vdat$
END SUB
SUB settim
CLS : vtim$ = tim$
LOCATE 10, 35: PRINT "Input time:"
CALL printtim
i = 0
DO
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 printtim
4 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 IF
5 LOOP
hour = 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 6
CLS : LOCATE 12, 34: PRINT "Set success!": SLEEP 3: CLS : EXIT SUB
6 CLS : LOCATE 12, 34: PRINT "Invalid time!": SLEEP 3: CLS : tim$ = vtim$
END SUB
3 楼
myworld [专家分:0] 发布于 2007-10-05 15:17:00
感激不禁
回去我会研究一下 嘿嘿
4 楼
Matodied [专家分:7560] 发布于 2007-10-06 12:26:00
没人砸你楼顶的,这你放心。
5 楼
我的电脑 [专家分:990] 发布于 2007-10-10 18:01:00
CLS : REM PR075"电脑台历钟"
DIM a(12)
FOR I = 1 TO 12: READ a(I): NEXT
FOR I = 1 TO 7: READ b$(I): NEXT
y = VAL(RIGHT$(DATE$, 4))
m = VAL(LEFT$(DATE$, 2))
d = VAL(MID$(DATE$, 4, 2))
s = y - 1 + INT((y - 1) / 4) - INT((y - 1) / 100) + INT((y - 1) / 400)
t = s + a(m) + d
IF m > 2 THEN IF y / 4 = INT(y / 4) AND y / 100 <> INT(y / 100) OR y / 400 = INT(y / 400) THEN t = t + 1
p = t - INT(t / 7) * 7 + 1
DATA 0,31,59,90,120,151,181,212,243,273,304,334
DATA "日","一","二","三","四","五","六"
INPUT "是否需要定闹?(Y/N)", y$
IF y$ = "N" OR y$ = "n" THEN GOTO a
PRINT "注:"
PRINT " 定闹时间为24小时制,分钟必须为两位,不足两位补零。时与分用逗号分隔。"
INPUT "输入定闹时间(时,分):", hl$, ml$
a: CLS
SCREEN 9
PAINT (10, 10), 8
LINE (120, 50)-(510, 250), 14, B: LINE (130, 60)-(500, 240), 2, B: LINE (170, 90)-(460, 210), 1, B, b: DO
COLOR 11, 1
LOCATE 9, 27: PRINT "────"
COLOR 15, 1
LOCATE 9, 36: PRINT y
COLOR 11, 1
LOCATE 9, 42: PRINT "年 ────"
COLOR 11, 1
LOCATE 11, 28: PRINT "今天是"
COLOR 14, 1
LOCATE 11, 34: PRINT m
COLOR 11, 1
LOCATE 11, 38: PRINT "月"
COLOR 14, 1
LOCATE 11, 40: PRINT d
COLOR 11, 1
LOCATE 11, 44: PRINT "日, 星期"
COLOR 14, 1
LOCATE 11, 52: PRINT b$(p)
IF LEN(TIME$) = 7 THEN k = 0 ELSE k = 1
COLOR 12, 1
LOCATE 13, 29: PRINT "现在是"
COLOR 7, 1
LOCATE 13, 36
hh = VAL(LEFT$(TIME$, 1 + k))
IF hh >= 12 THEN PRINT "下午" ELSE PRINT "上午"
IF hh > 12 THEN hh = h - 12
COLOR 15, 1
LOCATE 13, 40: PRINT h
COLOR 12, 1
LOCATE 13, 43: PRINT "时"
COLOR 15, 1
LOCATE 13, 45: PRINT MID$(TIME$, 3 + k, 2)
COLOR 12, 1
LOCATE 13, 47: PRINT "分"
COLOR 15, 1
LOCATE 13, 49: PRINT RIGHT$(TIME$, 2)
COLOR 12, 1
LOCATE 13, 51: PRINT "秒"
COLOR 11, 1: LOCATE 15, 33
PRINT "定闹时间:"
COLOR 13, 1
LOCATE 15, 43: PRINT hl$; ":"; ml$
REM IF RIGHT$(TIME$, 2) = "60" THEN GOTO b
IF hl$ = LEFT$(TIME$, 1 + k) AND ml$ = MID$(TIME$, 3 + k, 2) THEN
SOUND 1000, 2
FOR I = 1 TO 500: NEXT
SOUND 2000, 2
END IF
LOOP
END
我来回复