打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
题库

************************
* 代码不够简练,自行修改
************************
CLEAR
CLOSE TABLES
SET SAFETY OFF
*----题库表
CREATE TABLE YYTK (题干 C(254),选项A C(20), 选项B C(20),选项C C(20), 选项D C(20), 答案 C(1), 考点 C(100), 解析 C(254)) &&字段宽度可以调整
*----由文本文件生成的表
CREATE TABLE YYTK1 (XH I(4),题干 C(254))
*----过渡表
COPY STRUCTURE TO YYTK2
SELECT YYTK1
APPEND FROM YYTK.TXT FIELDS 题干 TYPE SDF
REPLACE ALL XH WITH RECNO(),题干 WITH ALLTRIM(题干)
*----检查数据是否符合标准要求,标准应该是每题应有五行数据,如果发现错误,则更正文本文件内容
IF MOD(RECCOUNT(),5)!=0
   MESSAGEBOX("数据不符合标准要求,共有记录 "+TRANSFORM(RECCOUNT())+" 条")
ENDIF
FOR I=1 TO RECCOUNT()
    GO I
    IF (NOT "【"$题干 OR NOT "】"$题干) AND MOD(I,5)!=2 &&判断"【】"括号是否符合要求
       MESSAGEBOX("括号或者答案位置不符合要求",48,"错误信息")
       BROWSE
       RETURN
    ENDIF
    DO CASE
       CASE MOD(I,5)=1 &&判断是否是题干
            IF NOT ISDIGIT(SUBSTR(题干,3,1))
               MESSAGEBOX("该项非题干内容",48,"错误信息")
               BROWSE
               RETURN
            ELSE
               IF SUBSTR(题干,3,1)!="2"
                  MESSAGEBOX("年份数据不完整",48,"错误信息")
                  BROWSE
                  RETURN
               ENDIF
            ENDIF
       CASE MOD(I,5)=2 &&判断是否是选项
            IF "答案"$题干
               MESSAGEBOX("答案位置不符合要求",48,"错误信息")
               BROWSE
               RETURN
            ENDIF
            IF NOT ISUPPER(SUBSTR(题干,1,1))
               MESSAGEBOX("该项非选项内容",48,"错误信息")
               BROWSE
               RETURN
            ELSE
               IF SUBSTR(题干,1,1)!="A"
                  MESSAGEBOX("选项数据不完整",48,"错误信息")
                  BROWSE
                  RETURN
               ENDIF
            ENDIF
       CASE MOD(I,5)=3 &&判断是否是答案
            IF NOT ISUPPER(SUBSTR(题干,9,1))
               MESSAGEBOX("该项非答案内容",48,"错误信息")
               BROWSE
               RETURN
            ELSE
               IF NOT INLIST(SUBSTR(题干,9,1),"A","B","C","D")
                  MESSAGEBOX("答案数据超出范围",48,"错误信息")
                  BROWSE
                  RETURN
               ENDIF
            ENDIF
    *----如发现错误自己再加代码
    ENDCASE
ENDFOR

CLOSE TABLES
*----
SELECT C
USE YYTK
SELECT B
USE YYTK2
SELECT A
USE YYTK1
FOR I=1 TO RECCOUNT("A") STEP 5
    IF I<RECCOUNT()-4
       GO I
    ENDIF
    OLDRECN=I
    SELECT B
    ZAP
    APPEND FROM YYTK1 FOR BETWEEN(RECNO(),I,I+4)
    FOR J=1 TO RECCOUNT("B")
        GO J
        NR=题干
        SELECT C
        IF MOD(J,5)=1
           APPEND BLANK
        ENDIF
        DO CASE
           CASE J=1
                REPLACE 题干 WITH B.题干
           CASE J=2
                *REPLACE 选项A WITH "A"+STREXTRACT(B.题干,"A","B") &&如果不要"A."可改成下句代码,后面三条代码同理
                REPLACE 选项A WITH STREXTRACT(B.题干,"A.","B") && 答案前不要"A."
                REPLACE 选项B WITH "B"+STREXTRACT(B.题干,"B","C")
                REPLACE 选项C WITH "C"+STREXTRACT(B.题干,"C","D")
                REPLACE 选项D WITH "D"+STREXTRACT(B.题干,"D","")
           CASE J=3
                REPLACE 答案 WITH SUBSTR(B.题干,9,1)
           CASE J=4
                REPLACE 考点 WITH SUBSTR(B.题干,9)
           CASE J=5
                REPLACE 解析 WITH SUBSTR(B.题干,9)
        ENDCASE
        SELECT B
    ENDFOR
    I=OLDRECN
    SELECT A
ENDFOR
SELECT C
REPLACE ALL 题干 WITH CHRTRAN(题干,")",")") FOR ")"$题干
REPLACE ALL 题干 WITH CHRTRAN(题干,",答案选择","") FOR ",答案选择"$题干
BROWSE
CLOSE TABLES
ERASE YYTK.DBF
ERASE YYTK1.DBF
ERASE YYTK2.DBF

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
vfp 接收邮件
校验身份证号码有效性的代码
随机抽题组成试卷表
【索引】按键精灵脚本基础教程下
按键精灵 TXT文件用法大全 (源码) (免费!)
VF试题
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服