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