回 帖 发 新 帖 刷新版面

主题:一个想法而已....描述不正确表砸我..

用QB编一钟表 
要求:
从00:00:00开始走
有闹铃功能
24小时制

我编的那完应都不是按时间走的....各位指教小弟一下吧

回复列表 (共5个回复)

沙发

这是我做的电子表程序。
可调整日期、时间、闹铃,并有整点报时功能。

说明:
(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楼还有)

板凳

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 楼


感激不禁
回去我会研究一下  嘿嘿

4 楼

没人砸你楼顶的,这你放心。

5 楼

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


我来回复

您尚未登录,请登录后再回复。点此登录或注册