计算机毕业论文:CAI教学软件中数据的分割
时间:2022-10-08 03:52:00
导语:计算机毕业论文:CAI教学软件中数据的分割一文来源于网友上传,不代表本站观点,若需要原创文章可咨询客服老师,欢迎参考。
摘要:本文使用面向对象的高级语言VisualBasic6.0设计了一套既能编辑,又能应用于教学演示的高级cai软件。使用本软件,用指定的格式输入CAI数据,并在其中设置断点;同时,用本软件进行播放,可实现模拟教学目的。本文着重论述了如何输入数据、分割数据和显示数据的算法。
Abstract:UsingtheadvancedlanguageObjectOriented-VisualBasic6.0,theauthordevelopedasetofadvancedCAIsoftware,whichcanbeusedindataeditingandteaching.ThissoftwarecanbeusedtoinputCAIdatainassignedformatandsetbreakpoints.Atthemeantime,itcanbeusedtodisplaydatainordertorealizetheobjectiveofsimulatedteaching.Thisarticleemphasizesonthealgorithmofdatainput,datasplitanddatadisplay.
随着计算机的普及和网络技术的发展,计算机辅助教学(CAI)越来越受到人们的重视。但纵观目前流行的CAI软件,大多只能进行简单的放映,而不具备编辑能力,为数很少的几个能够编辑的软件,操作又很复杂,不能针对教学特点。基于此,作者设计了一个既能编辑,又能放映的CAI软件,该软件高度集成,易学易用。
1数据的输入
数据的输入采用了类似超文本语言的方法,规定了若干关键字。如:“\”表示一个特定的指令的开始;又如:“\titl^2、光的性质^”,titl:表示后边的内容是一条标题,位于“^……^”之间的数据为标题的内容,“^”为范围限定符。
所有的符号都可以在编辑状态下的屏幕上找到。如图一是编辑状态的一角,左边图1编辑状态
为文字区,右边为指令区。Fig.1editstatus2数据的分割
数据的分割分为两个步骤进行:
第一步:把文章以字形为根据分解成段落。字形的标识与命令标识相关。
程序如下:
''''把整个一页分成若个段落
PublicSubFunDivide(ByRefSourceStrAsString,ByRefDestinationAsString,ByRefPositionAsInteger,ByRefpropNameAsString)
DimControllCodeAsString
DimcodCommandAsString
1
DimssAsString
DimSourceLenAsLong
SourceLen=Len(SourceStr)
Destination=""
ControllCode=Mid(SourceStr,Position,1)
If(ControllCode="\")Then
Position=Position+1
codCommand=Mid(SourceStr,Position,4)
propName=codCommand
Position=Position+4
codCommand=Mid(SourceStr,Position,1)
IfcodCommand="^"Then
Position=Position+1
ss=Mid(SourceStr,Position,1)
DoWhiless<>"^"
ss=Mid(SourceStr,Position,1)
Ifss<>"^"Then
Destination=Destination+ss
EndIf
Position=Position+1
Loop
EndIf
EndIf
EndSub
第二步:把段落分别地分成一行一行,为向标签框内填充作准备。分行的依据是除去控件和图形的区域。图形位于右上角,用一条水平线和竖直线来分界。
''''分段为块
PublicSubLineDivide(ByRefafterDivideAsString,ByValSourceAsString,ByValScaleLOAsInteger)
DimLLAsInteger
DimLsAsString
DimstartAsInteger
start=1
LL=Len(Source)
Do
Ls=Mid(Source,start,ScaleLO)
start=start+ScaleLO
IfafterDivide=""Then
afterDivide=Ls
2
Else
afterDivide=afterDivide+Chr(13)+Chr(10)+Ls
EndIf
LoopWhile(start<=LL)
EndSub
这两个全局函数位于标准模块basCommFun.bas中,同时,在该模块中定义了许多全局变量和常量,用来监控程序的运行状态。如:
OptionExplicit
PublicjobStatusAsInteger''''jobStatus=0第一界面状态
''''jobStatus=1编辑界面模式
''''jobStatus=2教学界面模式
PublicConstMargin=50
PublicConstZLF=180''''小五号字的大小Twip
PublicConstZF=210''''五号字的大小Twip。正常显示内容。
PublicConstZLFo=240''''小四号字的大小Twip
PublicConstZFo=285''''四号字的大小Twip
PublicConstZLT=300''''小三号字的大小Twip。标题。
PublicConstZT=315''''三号字的大小Twip
3数据的演示
在数据显示时,首先在窗体上放置若干个标签框和四个图片框,并使他们处于不可见状态。在运行编辑时,显示用的控件都不可见;在运行演示时,编辑用的控件都不可见。通过控制变量jobStatus来实现这种功能。
显示程序如下:
PrivateSubcmdPreview_Click()
DimdspContent(2,10)AsString
DimCounterAsInteger
DimJJAsInteger
DimpicLeftsideAsInteger
DimpicBottomAsInteger
DimchrNumAsInteger
picLeftside=0
picBottom=0
DimLsStrAsString
picLeftside=
frmMainForm.Width图2运行状态
picBottom=frmMainForm.TopFig2runstatus
Counter=0
ForJJ=0To3
IfpicFigure(JJ).PictureThen
3
WithfrmMainForm
.picFigure(JJ).Left=.Width-Margin–100-picFigure(JJ).Width
.picFigure(JJ).Visible=True
IfJJ=0Then
picFigure(JJ).Top=.Top+1
picBottom=picBottom+.picFigure(JJ).Top+.picFigure(JJ).Height
Else
.picFigure(JJ).Top=.picFigure(JJ-1).Top+.picFigure(JJ-1).Height
picBottom=picBottom+.picFigure(JJ).Height
EndIf
EndWith
EndIf
picLeftside=frmMainForm.picFigure(0).Left
NextJJ
以上程序段用于计算图片框组的左边和累加起来的底边,分存储于变量picLeftSide和pciBottom中。用这两个变量在右上角上划出了一个区域,以保证文本不会显示在图形后面。
ForJJ=0To9
frmMainForm.lblDisplayContent(JJ).Left=1
Next
frmMainForm.txtContent.Visible=False
frmMainForm.cmdPreview.Visible=False
frmMainForm.cmdPreviewClose.Visible=True
上面的语句用于切换到预览状态或是关闭编辑状态。
DimLLAsString
DimstartAsInteger
start=1
4实例运行
frmMainForm.txtContent="\titl^第一章简谐振动^\text^物体运动时,如果离开平衡位置的位移(或角位移)按余弦函数(或正弦函数)的规律随时间变化,则这种运动称为简谐振动,简称谐振动。简谐振动是一种最简单和最基本的振动,一切复杂的振动都可以看作是由若干个简谐振动合成的结果。^\text^如图所示的弹簧振子,当水平放置时,弹簧为原长,物体所受的合力为零,处于平衡状态,此时物体所在的位置就是平衡位置,如果把物体略加位移后释放,这时由于弹簧被拉长或压缩,便有指向平衡位置的弹性力作用在物体上,迫使物体返回平衡位置。这样,在弹性力的作用下,物体就在其平衡位置附近作往复运动。^\text^据胡克定律,物体所受的弹性力与弹簧的伸长即物体相对平衡位置的位移成正比,由此可推出弹簧振子的运动是简谐振动。”^
1、把文件分割成段落,并显示文本
4
LL=frmMainForm.txtContent.Text
DoWhile(Len(frmMainForm.txtContent.Text)>start)
CallFunDivide(LL,dspContent(1,Counter),start,dspContent(0,Counter))
Counter=Counter+1
Loop
2、把段落分割成行
ForJJ=0ToCounter
WithfrmMainForm
.lblDisplayContent(JJ).Left=1
3、计算行宽和判断字号
IfdspContent(0,JJ)="titl"Then
.lblDisplayContent(JJ).FontSize=15
chrNum=(picLeftside-2*Margin-100)/ZLT
ElseIfdspContent(0,JJ)="text"Then
.lblDisplayContent(JJ).FontSize=10.5
chrNum=(picLeftside-2*Margin-100)/ZF
Else
EndIf
LsStr=""
CallLineDivide(LsStr,dspContent(1,JJ),chrNum)’分割成行
.lblDisplayContent(JJ).Caption=LsStr’装载数据
IfJJ>0Then
.lblDisplayContent(JJ).Top=.lblDisplayContent(JJ-1).Top
+.lblDisplayContent(JJ-1).Height
EndIf
4、显示数据
.lblDisplayContent(JJ).Visible=True
EndWith
NextJJ
EndSub
所有的数据以页为单位存储于数据中,编辑时,通过“上一页”和“下一页”来刷新数据;同理,在播放时也通过这两种指令来刷新窗体。所不同的是编辑时可以修改数据库,而在演示时不能修改数据库。
本软件很好地解决了在VB文本框中输入文字不能设置字体,不能回车换行
的问题,并且在编辑文本和图象时能够通过程序控制,动态调整界面控件位置,实现图文混排,在实际运行中取得了较好的效果。
5
参考文献
[1]WangDong.ProgramDesignWithVisualBasic6.0.TsinghuaUniversityPress.2000
[2]JarolS.GuidetoDevelopMultimediaProgramWithVisualBasic.SciencePres