回 帖 发 新 帖 刷新版面

主题:一个问题

1。可否用QB建一个类似DATA一样的数据库,不过是要在程序运行时由我输
入数据而不是象DATA一样预设数据呢{我要输入的数据好多的}。还要把我输入
的数据Save,以便日后把引用。

2。再把我上面输入的数据打乱顺序输出成*.txt格式的文本。

第1问不能不要紧,我想知道第2问所说的“打乱数据顺序输出成*.txt格式的文本”能不能做到。

输入数据(不一定是数字)
       ↓
save到一个库中(能的话最好不是暂存,而是永久存,方便日后引用嘛)
       ↓
引用上面数据库中的数据
       ↓
打乱被引用数据的顺序(即是随机顺序)
       ↓
最后打数据输出成*.txt文本。


谢谢~!~!

回复列表 (共3个回复)

沙发

1. 很简单,把DATA操作换成文件操作就可以了
   你把你的数据用 EDIT 来做输入
   一行一个,随便你怎么输输多久都可以,
   只需要退出的时候记得保存就可以了.
   如果非得要用QB里的 input 的话,那也行,
   打开一个文件把它保存就行了.

2. "打乱顺序"得看看是不是同类型同长度的数据了
   总得按某种规律来顺序吧?
   非得随机的话,还得把一串数列颠置后
   按数列顺序把文件内容重置就得了.

板凳

我具体是这样想的。不过有个缺点就是一定要本来有一个“Data.txt”并且要在Data.txt输入end作标记才能。有什么办法可以解决这个问题呢?

<div style="background-color:#FFFFE0">

DIM DT$(1 TO 2000)
DIM y AS STRING

CLS
PRINT "                  Jay random vocabulary maker"
PRINT
PRINT "                      > v 2.0 Edition <"

OPEN "data.txt" FOR INPUT AS #1
  DO
    LINE INPUT #1, l$
    IF l$ = "end" THEN EXIT DO
    i = i + 1
    DT$(i) = l$
  LOOP
CLOSE #1
d = i

PRINT
PRINT "1. If you want to input words, please input digit 1."
PRINT
PRINT "2. If you want to output vocabulary, please input digit 2."
start:
PRINT
INPUT "Which do you choose, 1 or 2 ?   ", m
    

IF m = 1 THEN
  PRINT
  PRINT "Please input you words one by one."
  PRINT
  PRINT "If you want to finish you inputting, please input--end."
  DO
    PRINT
    INPUT "Inkey the word you want to store:   ", y$
    IF y$ = "end" THEN EXIT DO
    i = i + 1
    DT$(i) = y$
  LOOP
  

  OPEN "data.txt" FOR OUTPUT AS #1
    FOR j = 1 TO i
      PRINT #1, DT$(j)
    NEXT j
    PRINT #1, "end"
  CLOSE #1

  PRINT
  PRINT "Input is finished."
  f = i - d
  FOR k = 1 TO f
    PRINT k; "."; DT$(k + d),
  NEXT k

ELSEIF m = 2 THEN

  p$ = RIGHT$(TIME$, 2)
  q$ = LEFT$(TIME$, 2)
  o = VAL(q$) * VAL(p$) + VAL(p$)
  FOR u = 1 TO o
    l = RND
  NEXT u

  PRINT
  INPUT "How many words would you want?", v
  IF v > i THEN
    PRINT "Sorry~!  There are only totally"; i; "words in the data."
  ELSE
    OPEN "vocabu.txt" FOR OUTPUT AS #2
      DO
        h = INT(RND * i + 1)
        IF DT$(h) <> "none" THEN
          PRINT #2, DT$(h); "."
          n = n + 1
          PRINT n; "."; DT$(h),
          DT$(h) = "none"
        END IF
      LOOP UNTIL n = v
    CLOSE #2
  END IF
  PRINT
  PRINT "Congratulation~!"
  PRINT
  PRINT "Your provisional vocabulary is finished."
ELSE
PRINT
PRINT "ERROE~! You key a wrong digit. Please try again~!"
GOTO start
END IF
END
</div>

3 楼

打乱前给各个数据分类,每个数据前加个类型判断符号
这样打乱后输出也没问题

我来回复

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