計算機(jī)畢業(yè)論文:CAI教學(xué)軟件中數(shù)據(jù)的分割
時間:2022-10-08 03:52:00
導(dǎo)語:計算機(jī)畢業(yè)論文:CAI教學(xué)軟件中數(shù)據(jù)的分割一文來源于網(wǎng)友上傳,不代表本站觀點,若需要原創(chuàng)文章可咨詢客服老師,歡迎參考。
摘要:本文使用面向?qū)ο蟮母呒壵Z言VisualBasic6.0設(shè)計了一套既能編輯,又能應(yīng)用于教學(xué)演示的高級cai軟件。使用本軟件,用指定的格式輸入CAI數(shù)據(jù),并在其中設(shè)置斷點;同時,用本軟件進(jìn)行播放,可實現(xiàn)模擬教學(xué)目的。本文著重論述了如何輸入數(shù)據(jù)、分割數(shù)據(jù)和顯示數(shù)據(jù)的算法。
Abstract:UsingtheadvancedlanguageObjectOriented-VisualBasic6.0,theauthordevelopedasetofadvancedCAIsoftware,whichcanbeusedindataeditingandteaching.ThissoftwarecanbeusedtoinputCAIdatainassignedformatandsetbreakpoints.Atthemeantime,itcanbeusedtodisplaydatainordertorealizetheobjectiveofsimulatedteaching.Thisarticleemphasizesonthealgorithmofdatainput,datasplitanddatadisplay.
隨著計算機(jī)的普及和網(wǎng)絡(luò)技術(shù)的發(fā)展,計算機(jī)輔助教學(xué)(CAI)越來越受到人們的重視。但縱觀目前流行的CAI軟件,大多只能進(jìn)行簡單的放映,而不具備編輯能力,為數(shù)很少的幾個能夠編輯的軟件,操作又很復(fù)雜,不能針對教學(xué)特點?;诖耍髡咴O(shè)計了一個既能編輯,又能放映的CAI軟件,該軟件高度集成,易學(xué)易用。
1數(shù)據(jù)的輸入
數(shù)據(jù)的輸入采用了類似超文本語言的方法,規(guī)定了若干關(guān)鍵字。如:“\”表示一個特定的指令的開始;又如:“\titl^2、光的性質(zhì)^”,titl:表示后邊的內(nèi)容是一條標(biāo)題,位于“^……^”之間的數(shù)據(jù)為標(biāo)題的內(nèi)容,“^”為范圍限定符。
所有的符號都可以在編輯狀態(tài)下的屏幕上找到。如圖一是編輯狀態(tài)的一角,左邊圖1編輯狀態(tài)
為文字區(qū),右邊為指令區(qū)。Fig.1editstatus2數(shù)據(jù)的分割
數(shù)據(jù)的分割分為兩個步驟進(jìn)行:
第一步:把文章以字形為根據(jù)分解成段落。字形的標(biāo)識與命令標(biāo)識相關(guān)。
程序如下:
''''把整個一頁分成若個段落
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
第二步:把段落分別地分成一行一行,為向標(biāo)簽框內(nèi)填充作準(zhǔn)備。分行的依據(jù)是除去控件和圖形的區(qū)域。圖形位于右上角,用一條水平線和豎直線來分界。
''''分段為塊
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
這兩個全局函數(shù)位于標(biāo)準(zhǔn)模塊basCommFun.bas中,同時,在該模塊中定義了許多全局變量和常量,用來監(jiān)控程序的運(yùn)行狀態(tài)。如:
OptionExplicit
PublicjobStatusAsInteger''''jobStatus=0第一界面狀態(tài)
''''jobStatus=1編輯界面模式
''''jobStatus=2教學(xué)界面模式
PublicConstMargin=50
PublicConstZLF=180''''小五號字的大小Twip
PublicConstZF=210''''五號字的大小Twip。正常顯示內(nèi)容。
PublicConstZLFo=240''''小四號字的大小Twip
PublicConstZFo=285''''四號字的大小Twip
PublicConstZLT=300''''小三號字的大小Twip。標(biāo)題。
PublicConstZT=315''''三號字的大小Twip
3數(shù)據(jù)的演示
在數(shù)據(jù)顯示時,首先在窗體上放置若干個標(biāo)簽框和四個圖片框,并使他們處于不可見狀態(tài)。在運(yùn)行編輯時,顯示用的控件都不可見;在運(yùn)行演示時,編輯用的控件都不可見。通過控制變量jobStatus來實現(xiàn)這種功能。
顯示程序如下:
PrivateSubcmdPreview_Click()
DimdspContent(2,10)AsString
DimCounterAsInteger
DimJJAsInteger
DimpicLeftsideAsInteger
DimpicBottomAsInteger
DimchrNumAsInteger
picLeftside=0
picBottom=0
DimLsStrAsString
picLeftside=
frmMainForm.Width圖2運(yùn)行狀態(tài)
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中。用這兩個變量在右上角上劃出了一個區(qū)域,以保證文本不會顯示在圖形后面。
ForJJ=0To9
frmMainForm.lblDisplayContent(JJ).Left=1
Next
frmMainForm.txtContent.Visible=False
frmMainForm.cmdPreview.Visible=False
frmMainForm.cmdPreviewClose.Visible=True
上面的語句用于切換到預(yù)覽狀態(tài)或是關(guān)閉編輯狀態(tài)。
DimLLAsString
DimstartAsInteger
start=1
4實例運(yùn)行
frmMainForm.txtContent="\titl^第一章簡諧振動^\text^物體運(yùn)動時,如果離開平衡位置的位移(或角位移)按余弦函數(shù)(或正弦函數(shù))的規(guī)律隨時間變化,則這種運(yùn)動稱為簡諧振動,簡稱諧振動。簡諧振動是一種最簡單和最基本的振動,一切復(fù)雜的振動都可以看作是由若干個簡諧振動合成的結(jié)果。^\text^如圖所示的彈簧振子,當(dāng)水平放置時,彈簧為原長,物體所受的合力為零,處于平衡狀態(tài),此時物體所在的位置就是平衡位置,如果把物體略加位移后釋放,這時由于彈簧被拉長或壓縮,便有指向平衡位置的彈性力作用在物體上,迫使物體返回平衡位置。這樣,在彈性力的作用下,物體就在其平衡位置附近作往復(fù)運(yùn)動。^\text^據(jù)胡克定律,物體所受的彈性力與彈簧的伸長即物體相對平衡位置的位移成正比,由此可推出彈簧振子的運(yùn)動是簡諧振動?!盺
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’裝載數(shù)據(jù)
IfJJ>0Then
.lblDisplayContent(JJ).Top=.lblDisplayContent(JJ-1).Top
+.lblDisplayContent(JJ-1).Height
EndIf
4、顯示數(shù)據(jù)
.lblDisplayContent(JJ).Visible=True
EndWith
NextJJ
EndSub
所有的數(shù)據(jù)以頁為單位存儲于數(shù)據(jù)中,編輯時,通過“上一頁”和“下一頁”來刷新數(shù)據(jù);同理,在播放時也通過這兩種指令來刷新窗體。所不同的是編輯時可以修改數(shù)據(jù)庫,而在演示時不能修改數(shù)據(jù)庫。
本軟件很好地解決了在VB文本框中輸入文字不能設(shè)置字體,不能回車換行
的問題,并且在編輯文本和圖象時能夠通過程序控制,動態(tài)調(diào)整界面控件位置,實現(xiàn)圖文混排,在實際運(yùn)行中取得了較好的效果。
5
參考文獻(xiàn)
[1]WangDong.ProgramDesignWithVisualBasic6.0.TsinghuaUniversityPress.2000
[2]JarolS.GuidetoDevelopMultimediaProgramWithVisualBasic.SciencePres