計算機畢業論文:CAI教學軟件中數據的分割

時間:2022-10-08 03:52:00

導語:計算機畢業論文:CAI教學軟件中數據的分割一文來源于網友上傳,不代表本站觀點,若需要原創文章可咨詢客服老師,歡迎參考。

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