试题库管理系统开发心得.doc_第1页
试题库管理系统开发心得.doc_第2页
试题库管理系统开发心得.doc_第3页
试题库管理系统开发心得.doc_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

试题库管理系统开发心得陈 明(怀化培训基地信息教研室 邮编:418000)摘要教考分离不失为提高职工培训教学质量的一种有效手段,试题库的建立又是教考分离实施的前提,本文就试题库平台的开发的难点提供关键代码。关键词格式文本存储 随机抽题面向对象正 文2009年我担任(试题库管理系统)的负责人,主要负责平台开发,试题库管理系统基本要求为:能随机对题库各种题型抽题生成试卷,同时能面向对象进行修改,基于本人的认知水平及时下网络技术的流行,我选择了VF+SQL模式,以便达到共享数据库,多机同时录入的效果。系统平台的开发难点主要在于(1)VF向SQL存储图片及格式文本,(2)随机抽题,(3)生成能面向对象进行修改的试卷即VF控制WORD. 本系统于9月初研发完,经10、11月调试修改即将投入使用,本人在开发运用软件之路上的艰辛和快乐,体现在下列程序代码之中。现将部分程序代码呈现给广铁的同行,希望能对各位的程序开发有所帮助。一、VF向SQL存储图片及格式文本IF EMPTY(thisform.edit1.Value) mand4.Visible= .F. =MESSAGEBOX(试题添加失败,没有题目!,0+48,提示) RETURNelse nHandle=GetConnHandle()lIsRight=.T.IF nHandle0=SQLSETPROP(nHandle,Asynchronous,.F.) &设置为同步连接 =SQLSETPROP(nHandle,Transactions,2) &开始人工事务处理aa=ALLTRIM(Tbo2.Value)ff=ALLTRIM(Tbo1.Value)ictxtfile=Thisform.edit1.ValueSTRTOFILE(ictxtfile,c:playerhelp.txt) lcTextString=Strconv(Filetostr(c:playerhelp.txt),13)DO CASE CASE EMPTY(thisform.TEXT2.Value) lcTextString1=thisform.text2.Value a=MESSAGEBOX(本题无图片,单击是将添加试题入库,单击否将取消本题入库!,32+4,系统提示) IF a=6 cSQLString=INSERT INTO tbltk (km,lx,tm,tp) VALUES (&aa,&ff,?lcTextString,) ELSE RETURN endif OTHERWISE lcTextString1=thisform.text2.Value lcTextString2=Filetostr(&lcTextString1)+chr(0) cSQLString=INSERT INTO tbltk (km,lx,tm,tp) VALUES (&aa,&ff,?lcTextString,?lcTextString2) ENDCASE nResult=SQLEXEC(nHandle,cSQLString) IF lIsRight=.T. =SQLCOMMIT(nHandle) WAIT WINDOW 试题加添成功! NOWAIT TIMEOUT 2 thisform.edit1.Value= thisform.text2.Value= ELSE =SQLROLLBACK(nHandle) =MESSAGEBOX(试题添加失败,请重新执行!,0+48,提示) ENDIF =SQLSETPROP(nHandle,Transactions,1) &结束人工事务处理 ENDIF ENDIF二、随机抽题nHandle=GetConnHandle()IF nHandle0 cString=SELECT * FROM tbltk where tbltk.km=&ddand tbltk.lx=选择题 cString1=SELECT * FROM tbltk where tbltk.km= nResult=SQLEXEC(nHandle,cString,curtk) nResult=SQLEXEC(nHandle,cString1,curtk1) IF nResult=0 =MESSAGEBOX(读取题库信息发生错误,请重新登录!,0+48,提示) RETURN ENDIF SELECT curtkCOUNT TO nDime b(g1),c(4)B(1)=int(n*Rand(-1)+1) i=2do while i=g1t=1 a=int(n*Rand()+1)j=1do while j=i-1 if a=b(j)t=-1exitelsej=j+1endifenddoif t=-1 loopelseB(i)=a endifi=i+1enddoFOR i=1 TO g1SELECT curtkd=b(i)GO dx=curtk.kmx1=curtk.lxx2=curtk.tmx3=curtk.tpSELECT curtk1INSERT INTO curtk1 (km,lx,tm,tp) VALUES (x,x1,x2,x3) ENDFOR ELSE ENDIF三、生成能面向对象进行修改的试卷即VF控制WORD.OleWord=createobject(word.application) OleWord.visible=.t. OleWord.Documents.Open (d:ksmb1.doc) OleWord.Selection.Font.Size=16 OleWord.Selection.Font.Name=黑体 OleWord.selection.ParagraphFormat.LineSpacing=21 OleWord.Selection.TypeText(&c1) OleWord.Selection.ParagraphFormat.Alignment =1 OleWord.Selection.TypeParagraph s= ff=+&dd+ cc=&c2+&s+&c3+学年+第+&h+学期+&ff+&g+考试试卷 OleWord.Selection.TypeText(&cc) OleWord.Selection.TypeParagraph OleWord.Selection.Font.Size=14 OleWord.Selection.TypeText( 总分_) OleWord.Selection.TypeParagraph select curtk1j=RECCOUNT() OleWord.Selection.Font.Size = 14OleWord.Selection.ParagraphFormat.Alignment =0xx=ALLTRIM(Thisform.text5.Value)y=ALLTRIM(Thisform.text14.Value)yy=&th+、+选择题yy1=(+每小题+&xx+分,共+&y+分+)OleWord.Selection.Font.Name=黑体 OleWord.Selection.TypeText(&yy)OleWord.Selection.Font.Name=宋体 OleWord.Selection.TypeText(&yy1)OleWord.Selection.TypeParagraphFOR i=1 TO jgo ireplace curtk1.tm WITH STRCONV(curtk1.tm,14) SET SAFETY OFFa=ALLTRIM(STR(i)+.+bmpOleWord.Selection.TypeText(alltrim(str(i)+.+curtk1.tm)DO CASECASE LEN(CURTK1.TP)=0OTHERWISEStrtofile(LEFT(curtk1.tp,LEN(curtk1.tp)-1),c:&a)OleWord.Selection.Typ

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论