计算机毕业论文:CAI教学软件中数据的分割

时间:2022-09-12 01:59:43

计算机毕业论文: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=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

上一篇:Oracle9i应用服务器特性剖析 下一篇:计算机毕业论文:FLASH与ASP的组合