************************
* 代码不够简练,自行修改
************************
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
联系客服