計算機畢業論文: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