版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第4章學(xué)校排課管理信息系統(tǒng)4.1系統(tǒng)開發(fā)功效分析4.2設(shè)計好自己數(shù)據(jù)庫4.3系統(tǒng)開發(fā)過程實現(xiàn)
4.4應(yīng)用程序打包和公布4.5相關(guān)開發(fā)技術(shù)介紹4.6最終運行結(jié)果查看第1頁4.1系統(tǒng)開發(fā)功效分析4.1.1設(shè)計目標(biāo)本管理信息系統(tǒng)主要功效是把各系別、班級或各講課部門課程進(jìn)行了匯總,然后依據(jù)學(xué)校教學(xué)計劃制訂各班級課程編排表。伴隨學(xué)校每年擴(kuò)招和專業(yè)不停細(xì)化,學(xué)校班級數(shù)、課程門數(shù)越來越多,每門課又包括很多信息,假如依然采取手工排課,則不可防止地會出現(xiàn)教室資源沖突或教師資源沖突情況。第2頁4.1.2需要實現(xiàn)系統(tǒng)功效本管理信息系統(tǒng)開發(fā)就是為了使紛繁、復(fù)雜課表編排變得更為準(zhǔn)確、合理和快速而設(shè)計。在確定了本系統(tǒng)設(shè)計目標(biāo)之后,在開發(fā)本系統(tǒng)時,在本系統(tǒng)中需要實現(xiàn)系統(tǒng)功效主要有以下所述幾點:
(1)提供靈活瀏覽和查找功效。能夠查看某個班級全部課程信息以及對課程信息提供查找方式。第3頁(2)掌握學(xué)校全部課程和教師信息,包含課程時間安排、班級以及任課教師姓名。
(3)能夠?qū)φn程信息和教師信息進(jìn)行刪除和編輯。
(4)實現(xiàn)對課程進(jìn)行變動管理,并實現(xiàn)盡可能自動排序功效。第4頁4.1.3開發(fā)和運行環(huán)境開發(fā)工具:VisualBasic6.0漢字版,后臺所用數(shù)據(jù)庫是Access。運行環(huán)境:Windows9x、WindowsNT、Windows或WindowsXP/操作系統(tǒng)。第5頁4.1.4系統(tǒng)功效模塊設(shè)計依據(jù)日常工作中實際需求,結(jié)合實際排課情況模塊分析,本系統(tǒng)在設(shè)計時所要實現(xiàn)主要功效以下:
1.實現(xiàn)數(shù)據(jù)裝載鑒于本系統(tǒng)數(shù)據(jù)流量比較龐大情況,在本系統(tǒng)開啟時必須有一個數(shù)據(jù)裝載模塊,等到數(shù)據(jù)完全被裝載后才能正常進(jìn)入本系統(tǒng)執(zhí)行程序。第6頁2.錄入教職員工信息為確保數(shù)據(jù)庫完整性和為后面排課提供可靠數(shù)據(jù)確保,錄入教職員工一些基本信息,如必需教職員工姓名、專業(yè)和介紹等信息。
3.課程編排管理課程編排管理是本系統(tǒng)關(guān)鍵部分,其作用是在自動排序基礎(chǔ)上實現(xiàn)手工排序。第7頁4.教職員工代課信息查詢教職員工代課信息查詢給用戶提供了一個排課結(jié)果查詢界面,利用此界面應(yīng)該能查詢到某個教師在一周內(nèi)代課全部班級和所帶課程上課時間以及課程名稱等內(nèi)容。
5.本學(xué)期課程設(shè)置本學(xué)期課程設(shè)置模塊功效是設(shè)置開設(shè)課程名稱。本系統(tǒng)總體功效結(jié)構(gòu)圖如圖4-1-1所表示。
第8頁圖4-1-1本系統(tǒng)總體功效結(jié)構(gòu)圖第9頁4.2設(shè)計好自己數(shù)據(jù)庫1.班級情況信息表(classArray)設(shè)計班級庫是描述班級信息數(shù)據(jù)表,包含以下部分:班級編號(cClassCode)、上課日期(iTimeW)、上課節(jié)次(iTimeN)、課程名稱(cSjName)。在數(shù)據(jù)庫中創(chuàng)建一個表,表名為“ClassArray”,其字段結(jié)構(gòu)如表4-2-1所表示。其中,cClassCode(班級編號)字段為該表主關(guān)鍵字(PrimaryKey,PK),它惟一標(biāo)識了一條班級統(tǒng)計。第10頁表4-2-1班級情況信息表(ClassArray)字段名字段說明類型寬度備注cClassCode班級編號文本7主關(guān)鍵字iTimeW上課日期數(shù)字
不能為空iTimeN上課節(jié)次數(shù)字
不能為空cSjName課程名稱文本7不能為空第11頁2.專業(yè)名稱表(Subject)設(shè)計專業(yè)名稱表是描述專業(yè)信息數(shù)據(jù)表,所存放域只有一個專業(yè)名稱(cSjName)。在數(shù)據(jù)庫中創(chuàng)建—個表,表名為Subject,其字段結(jié)構(gòu)如表4-2-2所表示。其中,cSjName(專業(yè)名稱)字段為該表外部關(guān)鍵字(ForeignKey,F(xiàn)K),它與ClassArray表cSjName字段組成了參考完整性。第12頁表4-2-2專業(yè)名稱表(Subject)字段名字段說明類型寬度備注cSjName專業(yè)名稱文本7外部關(guān)鍵字第13頁3.教師信息表(Teacher)設(shè)計教師信息表是描述教師信息數(shù)據(jù)表,包含以下部分:教師姓名(cTrName)、年紀(jì)(iAge)、簡單評述(cTrDetails)等部分。在數(shù)據(jù)庫中創(chuàng)建一個表,表名為Teacher,其字段結(jié)構(gòu)如表4-2-3所表示。其中,cTrName(教師姓名)字段為該表主關(guān)鍵字(PrimaryKey,PK),它惟一標(biāo)識了一條教師統(tǒng)計。第14頁表4-2-3教師信息表(Teacher)字段名字段說明類型寬度備注cTrName教師姓名文本7主關(guān)鍵字iAge年紀(jì)數(shù)字
不能為空cTrDetails簡單評述文本255能夠為空第15頁4.教師代課情況表(trClass)設(shè)計教師代課情況表是描述教師代課信息數(shù)據(jù)表,包含以下部分:班級編號(cClassCode)、專業(yè)名稱(cSubject)、代課教師(cTeacher)等部分。在數(shù)據(jù)庫中創(chuàng)建一個表,表名為trClass,其字段結(jié)構(gòu)如表4-2-4所表示。其中,cSubject(專業(yè)名稱)字段為該表外部關(guān)鍵字(ForeignKey,F(xiàn)K),它與Subject表cSjName字段組成了參考完整性。第16頁表4-2-4教師代課表(trClass)字段名字段說明類型寬度備注cClassCode班級編號文本7不能為空cSubject專業(yè)名稱文本7不能為空cTeacher代課教師文本7不能為空第17頁圖4-2-1數(shù)據(jù)庫關(guān)系設(shè)計圖中各表之間關(guān)系第18頁4.3系統(tǒng)開發(fā)過程實現(xiàn)4.3.1主窗體界面(frmSplash)設(shè)計在工程中添加類型為“展示屏幕”窗體,并將其命名為frmLoading.frm。本窗口設(shè)計視圖如圖4-3-1所表示。第19頁圖4-3-1frmSplash窗口設(shè)計視圖第20頁
在設(shè)計好本窗體中各控件之后,我們還需要對該窗體上控件及其屬性進(jìn)行一些詳細(xì)設(shè)置。對于本窗體中各控件,大家能夠依據(jù)自己對窗體中各控件設(shè)置喜好自行進(jìn)行設(shè)置。各控件設(shè)置屬性隨設(shè)置不一樣而有所改變。下面再來看看本窗體代碼設(shè)計。因為frmLoading窗體是本系統(tǒng)開啟時窗體,所以,當(dāng)frmLoading窗體被加載時,通常需要加載其背景圖像,并設(shè)置圖像位置和大小,最終再開啟時鐘。第21頁窗體加載事件處理函數(shù)代碼以下:PrivateSubForm_Load()'設(shè)置鼠標(biāo)指針Me.MousePointer=11DimX,YAsInteger'加載背景圖像ImgBg.Picture=LoadPicture(App.Path+"\back.jpg")'設(shè)置要加載圖像大小和位置
ImgBg.Width=Form1.WidthImgBg.Height=Form1.Height第22頁X=(Screen.Width-Form1.Width)/2Y=(Screen.Height-Form1.Height)/2'設(shè)置本窗口位置Form1.Left=XForm1.Top=Y'開啟窗口時鐘Timer1.Enabled=True
EndSub第23頁
程序在運行到這里時候,假如出現(xiàn)時鐘計時超出了一定數(shù)量,就會出現(xiàn)窗口自動消失,發(fā)出提醒聲音并打開用戶登錄窗口情況。詳細(xì)設(shè)計代碼以下:
PrivateSubTimer1_Timer()'Splash窗口消失
UnloadMe'打開用戶要登錄窗口
fmStart.Show'發(fā)出提醒聲音
Beep第24頁4.3.2設(shè)計系統(tǒng)登錄窗體(frmLogin)
因為本系統(tǒng)用戶分為系統(tǒng)管理員和教師兩大類,因而在設(shè)計登錄窗體時候,就需要在登錄窗體中增加一個ComboBox控件,用來表明用戶身份。其中0表示系統(tǒng)管理員身份,1表示教師類用戶身份。同時,為了防止非法用戶干擾,對于用戶登錄窗口,還需要設(shè)置假如用戶連續(xù)輸錯了三次密碼,則將會自動退出系統(tǒng)情況。第25頁圖4-3-2登錄窗體界面第26頁本窗口設(shè)計視圖如圖4-3-2所表示,詳細(xì)代碼以下:PublicLoginSucceededAsBooleanPrivateSubcmdCancel_Click()LoginSucceeded=FalseUnloadfmStartEndSub第27頁PrivateSubcmdOK_Click()IftxtPassword="password"ThenLoginSucceeded=TrueMe.HidefmStart.ShowElseMsgBox"InvalidPassword,tryagain!",,"Login"txtPassword.SetFocusSendKeys"{Home}+{End}"EndIfEndSub第28頁PrivateSubForm_Load()LoadfmStartfmStart.HideEndSub第29頁4.3.3實現(xiàn)程序主窗體(frmStart)設(shè)計系統(tǒng)主程序frmStart窗體不不過整個系統(tǒng)容器,同時還是整個系統(tǒng)主要操作界面,也是進(jìn)入本系統(tǒng)首先出現(xiàn)系統(tǒng)操作界面。因為本系統(tǒng)采取了基于對話框模式功效,如圖4-3-3所表示,所以,用戶只需要做一個簡單功效選擇就能夠進(jìn)入對應(yīng)功效模塊。第30頁圖4-3-3程序主窗體frmStart設(shè)計與運行界面第31頁1.定義窗體級變量本段代碼主要用來定義暫時字符串變量和統(tǒng)計時鐘周期變量。詳細(xì)代碼以下:
OptionExplicitDimstrRunAsStringDimiTpAsInteger'iTp統(tǒng)計時鐘周期第32頁2.單擊【確定】按鈕處理函數(shù)當(dāng)用戶在單擊【確定】按鈕時,系統(tǒng)能夠?qū)崿F(xiàn)依據(jù)用戶選擇確定進(jìn)入對應(yīng)模塊,這時候,就需要在本窗體代碼中接著添加以下代碼:第33頁PrivateSubCommand1_Click()'將鼠標(biāo)指針設(shè)為等候Me.MousePointer=11'開啟時鐘Timer1.Enabled=TruestrRun=LTrim$(RTrim$(Combo1.Text))'對應(yīng)該進(jìn)入模塊進(jìn)行判斷SelectCasestrRunCaseCombo1.List(0):Form1.Show第34頁CaseCombo1.List(1):Form2.ShowCaseCombo1.List(2):Form3.ShowCaseCombo1.List(3):Form4.ShowCaseCombo1.List(4):Form5.ShowCaseCombo1.List(5):Form6.Show第35頁CaseElse:MsgBox"請選擇一個正確操作項",vbInformation+vbOKOnly,"操作"EndSelect
EndSub第36頁3.單擊【作者信息】按鈕處理函數(shù)當(dāng)用戶單擊【作者信息】按鈕時,則會彈出【關(guān)于】對話框,顯示相關(guān)本系統(tǒng)名稱、版本和作者等信息。詳細(xì)代碼以下:
PrivateSubCommand2_Click()frmAbout.Show'這里frmAbout就是“關(guān)于”對話框窗體
EndSub第37頁4.窗口裝載預(yù)處理因為還需要在進(jìn)入窗口裝載之前做一些預(yù)處理工作,所以,需要在程序中加入以下代碼:第38頁PrivateSubForm_Load()Combo1.AddItem"教職員入庫信息"Combo1.AddItem"排課管理"Combo1.AddItem"教職員帶課查詢"Combo1.AddItem"本學(xué)期課程設(shè)置"Combo1.AddItem"打印課程表"Combo1.AddItem"打印教師帶課表"
EndSub第39頁5.窗口卸載事件處理代碼當(dāng)被裝載窗口需要卸載時,系統(tǒng)將彈出一個消息框,以提醒用戶退出本系統(tǒng)。詳細(xì)設(shè)計代碼以下:
PrivateSubForm_Unload(CancelAsInteger)iTp=MsgBox("你確定要退出本系統(tǒng)",vbYesNo+vbQuestion,"退出")第40頁IfiTp=vbNoThenCancel=1EndIfIfCancel=0ThenEndEndIf
EndSub第41頁6.處理時鐘事件代碼當(dāng)初鐘運行到整點時候,鼠標(biāo)指針就會變?yōu)檎P问?。詳?xì)代碼以下:
PrivateSubTimer1_Timer()'將時鐘關(guān)閉
Timer1.Enabled=FalseMe.MousePointer=0
EndSub第42頁4.3.4設(shè)計教員信息入庫窗體(Form1)界面為了便于查看和編輯教師信息,在這里特意設(shè)置了一個教員信息入庫窗體(Form1)。經(jīng)過該窗體,用戶就能夠利用單擊導(dǎo)航條,方便而快捷地逐條瀏覽數(shù)據(jù)庫中教師信息了。當(dāng)用戶單擊導(dǎo)航條中按鈕時,能夠從上面編輯框中逐條瀏覽教師信息。當(dāng)用戶單擊編輯欄中按鈕時,還能夠?qū)?shù)據(jù)進(jìn)行編輯操作。本窗體設(shè)計視圖如圖4-3-4所表示。第43頁圖4-3-4教員信息入庫(Form1.frm)窗口設(shè)計視圖第44頁1.定義窗體級變量代碼本段代碼主要用來定義暫時字符串變量和存放SQL語句暫時變量。詳細(xì)代碼以下:
DimconAsADODB.Connection'定義數(shù)據(jù)鏈接
DimrsAsADODB.Recordset'定義數(shù)據(jù)集
第45頁DimqrsAsADODB.Recordset'存放SQL語句暫時變量DimslSqlAsStringDimi,jAsInteger'暫時字符串變量DimstrBak(2)AsString第46頁2.【導(dǎo)航】按鈕單擊事件處理函數(shù)本【導(dǎo)航】按鈕單擊事件處理函數(shù)作用是使其能夠依據(jù)用戶單擊按鈕事件來瀏覽對應(yīng)統(tǒng)計。詳細(xì)設(shè)計代碼以下:第47頁PrivateSubCommand1_Click(IndexAsInteger)OnErrorGoToErr:DimcnAsIntegerForcn=0To2Text1(cn).Text=""Nextcn
Ifrs.RecordCount>0ThenSelectCaseIndexCase0:第48頁rs.MoveFirstCase1:rs.MovePreviousCommand1(2).Enabled=TrueCommand1(3).Enabled=TrueCase2:rs.MoveNextCommand1(0).Enabled=TrueCommand1(1).Enabled=TrueCase3:rs.MoveLast第49頁EndSelectdisplayInfoEndIfGoTook:Err:CalldataOverok:EndSub第50頁3.處理窗體加載事件代碼設(shè)置本窗體加載事件作用是實現(xiàn)在處理窗體加載事件基礎(chǔ)上,對系統(tǒng)數(shù)據(jù)源和數(shù)據(jù)連接進(jìn)行設(shè)置,并初始化系統(tǒng)參數(shù)。詳細(xì)代碼以下:第51頁PrivateSubForm_Load()DimcntAsInteger
'設(shè)置數(shù)據(jù)源和數(shù)據(jù)庫驅(qū)動信息Setcon=NewADODB.ConnectionSetrs=NewADODB.RecordsetSetqrs=NewADODB.Recordset第52頁con.Open"provider=Microsoft.Jet.OLEDB.4.0;datasource="&App.Path&"\dataUse.mdb"rs.Open"select*fromteacher",con,adOpenStatic,adLockOptimisticIfrs.RecordCount>0Then
第53頁rs.MoveFirstdisplayInfoCanSave(False)ElseCanSave(True)CallCommand2_Click(0)EndIfEndSub第54頁4.【編輯】按鈕單擊事件處理函數(shù)本段代碼作用主要是經(jīng)過【編輯】按鈕單擊事件,實現(xiàn)對所瀏覽統(tǒng)計增加、刪除和修改等功效。詳細(xì)設(shè)計代碼以下:第55頁PrivateSubCommand2_Click(IndexAsInteger)OnErrorGoToerrDealIfIndex=0OrIndex=2ThenCanSave(True)ElseCanSave(False)EndIf
SelectCaseIndex第56頁'添加新統(tǒng)計Case0:rs.AddNewCalltoNull'刪除選中統(tǒng)計
第57頁Case1:j=MsgBox("你確定要刪除本統(tǒng)計嗎?",vbYesNo+vbQuestion,"刪除")Ifj=vbYesThenrs.DeleteCalltoNullEndIf'修改選中統(tǒng)計第58頁Case2:rs.Deleters.AddNew'保留用戶設(shè)置
第59頁Case3:IfLen(LTrim$(RTrim$(Text1(0).Text)))>0Then'rs.AddNewFori=0To2IfLen(LTrim$(RTrim$(Text1(i).Text)))>0Then
rs.Fields(i)=Text1(i).TextEndIf
第60頁Nextirs.UpdateElseMsgBox"姓名不得為空",vbOKOnly+vbExclamation,"Error"EndIf'取消第61頁Case4:'將所編輯內(nèi)容清空
Fori=0To2Text1(i).Text=strBak(i)NextiCallCommand2_Click(3)
EndSelectExitSub第62頁'進(jìn)行異常處理errDeal:MsgBox"databaseError",vbExclamation+vbOKOnly,"error"'okEnd:EndSub第63頁5.處理用戶單擊【修改】按鈕事件代碼(1)
本段代碼作用是當(dāng)用戶單擊【修改】按鈕事件時候,來判斷用戶是否有權(quán)限使用該功效。詳細(xì)設(shè)計代碼以下:
PrivateSubCanSave(okAsBoolean)Frame1.Enabled=NotokFrame3.Enabled=ok'單擊“修改”按鈕,設(shè)置是否能夠使用該功效第64頁Fori=0To4Ifi<3ThenCommand2(i).Enabled=NotokElseCommand2(i).Enabled=okEndIfNextiEndSub第65頁6.處理用戶單擊【修改】按鈕事件代碼(2)
與前面介紹那個處理用戶單擊【修改】按鈕事件不一樣,本段代碼主要作用是用來顯示用戶查詢結(jié)果。詳細(xì)代碼以下:第66頁PrivateSubqueryComm_Click()slSql="select*fromTeacherwherecTrname='"+Text1(3).Text+"'"qrs.OpenslSql,con,adOpenStaticIfNotqrs.EOFThenqrs.MoveFirst'顯示查詢結(jié)果
i=j=0Fori=0To2第67頁'Text1(i).Text=""IfLen(qrs.Fields(i))>0ThenText1(i).Text=qrs.Fields(i)strBak(i)=Text1(i).TextEndIfNextiEndIfqrs.CloseEndSub第68頁7.瀏覽到最終一條數(shù)據(jù)統(tǒng)計時處理函數(shù)DataOver
本段代碼作用是當(dāng)用戶瀏覽到最終一條統(tǒng)計時候用來進(jìn)行對應(yīng)處理。詳細(xì)設(shè)計代碼以下:
PrivateSubdataOver()'第1條數(shù)據(jù)統(tǒng)計第69頁Ifrs.BOFThenCommand1(0).Enabled=FalseCommand1(1).Enabled=FalseCommand1(2).Enabled=TrueCommand1(3).Enabled=Truers.MoveFirstElse'最末一條數(shù)據(jù)統(tǒng)計第70頁Ifrs.EOFThenrs.MoveLastCommand1(0).Enabled=TrueCommand1(1).Enabled=TrueCommand1(2).Enabled=FalseCommand1(3).Enabled=FalseElse第71頁MsgBox"DatabaseError",vbExclamation+vbOKOnly,"Errorunknown"EndIfEndIfEndSub第72頁8.顯示數(shù)據(jù)輔助函數(shù)及全部數(shù)據(jù)統(tǒng)計本段代碼作用主要是用來當(dāng)用戶在瀏覽時顯示符合設(shè)定條件全部數(shù)據(jù)統(tǒng)計。詳細(xì)設(shè)計代碼以下:第73頁PrivateSubdisplayInfo()i=j=0Fori=0To2IfLen(rs.Fields(i))>0ThenText1(i).Text=rs.Fields(i)strBak(i)=Text1(i).TextEndIfNextiEndSub第74頁9.?dāng)?shù)據(jù)清零輔助函數(shù)設(shè)置本輔助函數(shù)作用是實現(xiàn)將用戶先前所設(shè)置條件進(jìn)行清0,以使其恢復(fù)到原始狀態(tài)。詳細(xì)設(shè)計代碼以下:
PrivateSubtoNull()Fori=0To2Text1(i).Text="“
strBak(i)=""NextiEndSub第75頁10.關(guān)閉窗體事件處理函數(shù)本段代碼主要是用來將數(shù)據(jù)統(tǒng)計集合釋放和關(guān)閉,釋放數(shù)據(jù)鏈接。詳細(xì)設(shè)計代碼以下:第76頁PrivateSubForm_Unload(CancelAsInteger)OnErrorGoToKKrs.Close'將數(shù)據(jù)統(tǒng)計集合釋放Setrs=Nothingqrs.CloseSetqrs=noting'關(guān)閉數(shù)據(jù)鏈接第77頁con.Close'釋放數(shù)據(jù)鏈接
Setcon=NothingKK:EndSub
第78頁4.3.5設(shè)計排課管理窗體(Form2)頁面經(jīng)過課程安排窗體能夠查看并修改各個班級、教師課程信息,并能夠查看最終課程編排表。設(shè)置本窗體操作方法是在工程中添加一個Form類型,然后將其命名為Form2.frm。其設(shè)計視圖如圖4-3-5所表示。第79頁圖4-3-5Form2窗口設(shè)計視圖第80頁1.定義窗體級變量本段代碼作用主要是用來定義數(shù)據(jù)連接、數(shù)據(jù)集和存放暫時變量以及各數(shù)據(jù)集。詳細(xì)設(shè)計代碼以下:第81頁OptionExplicit'定義數(shù)據(jù)鏈接DimconnAsADODB.Connection'定義教師數(shù)據(jù)集DimrsTrAsADODB.Recordset'定義學(xué)生數(shù)據(jù)集DimrsSjAsADODB.RecordsetDimi,j,sjCntAsInteger'儲存班級編號暫時字符串變量DimClassCodeAsStringDimTrChanged,ClassChangedAsBoolean'存放SQL語句暫時變量DimstrSqlAsString第82頁'存放教師信息數(shù)據(jù)集DimrsTrAryAsADODB.Recordset'存放各班級信息數(shù)據(jù)集DimrsClassAryAsADODB.RecordsetDimStrTr(9)AsStringDimstrSj(49)AsString
Dimminht,maxHtAsInteger第83頁2.窗體加載事件處理函數(shù)該函數(shù)作用主要是用來設(shè)置數(shù)據(jù)源和數(shù)據(jù)連接,并將系統(tǒng)參數(shù)進(jìn)行初始化。詳細(xì)代碼以下:第84頁PrivateSubForm_Load()Me.MousePointer=11
'為數(shù)據(jù)鏈接分配空間Setconn=NewADODB.ConnectionSetrsTr=NewADODB.RecordsetSetrsSj=NewADODB.RecordsetSetrsTrAry=NewADODB.RecordsetSetrsClassAry=NewADODB.Recordset第85頁'設(shè)置數(shù)據(jù)源conn.Open"provider=Microsoft.Jet.OLEDB.4.0;datasource="&App.Path&"\dataUse.mdb"rsTr.Open"select*fromteacher",conn,adOpenStatic,adLockOptimisticrsSj.Open"select*fromsubject",conn,adOpenStatic,adLockOptimisticminht=4090maxHt=9000第86頁'初始化統(tǒng)計集sjCnt=rsSj.RecordCountCallcomboInit
'設(shè)置窗體中各控件屬性EnableSave(False)cb(1).Enabled=False
'設(shè)置顯示窗口高度Me.Height=minhtMe.MousePointer=0EndSub第87頁3.當(dāng)系統(tǒng)允許進(jìn)行數(shù)據(jù)保留操作時處理函數(shù)本段代碼主要作用是當(dāng)系統(tǒng)在允許進(jìn)行數(shù)據(jù)保留操作時為其設(shè)置一些對應(yīng)控件Enable屬性。詳細(xì)代碼以下:
第88頁PrivateSubEnableSave(okAsBoolean)DimkAsIntegerFork=0To3Ifk<2Thencb(k).Enabled=NotokElsecb(k).Enabled=okEndIf第89頁NextkFrame7.Enabled=NotokFrame2.Enabled=okFrame3.Enabled=ok
EndSub第90頁4.顯示數(shù)據(jù)處理集輔助處理函數(shù)本段代碼作用是使得本控件能夠依據(jù)用戶所選擇班級來顯示對應(yīng)信息。詳細(xì)代碼以下:第91頁PrivateSubdisplayInfo()Forj=0TosjCnt-1strSql="selectcteacherfromtrclasswherecclasscode='"&ClassCode&"'andcsubject='"&Trim(Label2(j).Caption)&"'"SetrsTrAry=conn.Execute(strSql)第92頁'這里用另一個方法創(chuàng)建recordset'rsTrAry.IfNotrsTrAry.EOFThen
Combo2(j).Text=rsTrAry.Fields(0)'rsTrAry!cteacherCombo2(j).Tag=rsTrAry.Fields(0)'rsTrAry!cteacherElseCombo2(j).Text=""Combo2(j).Tag=""EndIf第93頁Nextj
Fori=0To49DimX,YAsIntegerX=Int(i/5+1)Y=iMod5+1strSql="selectcsjnamefromclassarraywherecclasscode='"&ClassCode&"'anditimew="&Y&"anditimen="&X第94頁SetrsClassAry=conn.Execute(strSql)IfNotrsClassAry.EOFThenCombo3(i).Text=rsClassAry.Fields(0)Combo3(i).Tag=rsClassAry.Fields(0)ElseCombo3(i).Text=""Combo3(i).Tag=""EndIfNextiEndSub第95頁5.時鐘1事件處理函數(shù)本函數(shù)作用主要是用來顯示課程表。其設(shè)計代碼以下:PrivateSubTimer1_Timer()IfCommand1.Caption=">>"ThenIfMe.Height<maxHtThenMe.Height=Me.Height+150ElseTimer1.Enabled=FalseCommand1.Caption="<<"Command1.ToolTipText="收起課程表!"第96頁Me.Height=maxHtTimer2.Enabled=FalseCommand1.BackColor=RGB(255,255,255)Shape2.BackColor=RGB(0,100,200)EndIfElseIfMe.Height>minhtThenMe.Height=Me.Height-150Else第97頁Timer1.Enabled=FalseCommand1.Caption=">>"Command1.ToolTipText="課程表在這里!"Me.Height=minhtTimer2.Enabled=TrueEndIfEndIfEndSub第98頁6.時鐘2事件處理函數(shù)本時鐘2事件處理函數(shù)主要用來控制導(dǎo)航條閃爍情況。詳細(xì)設(shè)計代碼以下:
PrivateSubTimer2_Timer()Staticr,g,bAsIntegerCommand1.BackColor=RGB(r,g,b)Shape2.BackColor=RGB(255-r,255-g,255-b)r=r+15g=g+39b=b+87第99頁Ifr>255Thenr=0EndIfIfg>255Theng=0EndIfIfb>255Thenb=0EndIf
EndSub第100頁7.單擊【瀏覽表】Frame中按鈕事件處理函數(shù)當(dāng)用戶在單擊【瀏覽表】Frame中按鈕事件時可利用本段代碼來實現(xiàn)對其進(jìn)行查看、修改和排定課程等功效。詳細(xì)代碼以下:第101頁PrivateSubcb_Click(IndexAsInteger)'設(shè)置鼠標(biāo)指針Me.MousePointer=11'進(jìn)行異常處理OnErrorGoToerrDealSelectCaseIndex'查看課程信息第102頁Case0:ClassCode=Trim(Combo1(0).Text)&"."&Trim(Combo1(1).Text)IfLen(Trim(Combo1(0).Text))>0AndLen(ClassCode)>1ThenCalldisplayInfocb(1).Enabled=TrueEndIf'修改課程信息第103頁Case1:cb_Click(0)EnableSave(True)cb(1).Enabled=False'保留課程信息第104頁Case2:IfTrChangedThenstrSql="delete*fromtrclasswherecclasscode='"&ClassCode&"'"conn.ExecutestrSqlDimstrTrNameAsStringFori=0TosjCnt-1strTrName=Trim(Combo2(i).Text)IfLen(strTrName)>0Then'設(shè)置SQL語句第105頁strSql="insertintotrclassvalues('"&ClassCode&"',"+"'"+Trim(Label2(i).Caption)+"',"+"'"+Trim(Combo2(i).Text)+"')"conn.ExecutestrSqlEndIfNextiTrChanged=FalsersTrAry.Requerycb(1).Enabled=FalseEndIf第106頁IfClassChangedThenconn.Execute"delete*fromclassarraywherecclasscode='"&ClassCode&"'"DimX,YAsInteger'設(shè)置課程表
Fori=0To49Y=iMod5+1X=Int(i/5)+1IfLen(Trim(Combo3(i).Text))>0ThenstrSql="insertintoclassarrayvalues('"&ClassCode&"',"&Y&","&X&",第107頁'"&Trim(Combo3(i).Text)&"')"conn.ExecutestrSqlEndIfNextiClassChanged=FalsersClassAry.RequeryEndIfEnableSave(False)'取消查詢到課程信息第108頁Case3:Fori=0TosjCnt-1Combo2(i).Text=Combo2(i).TagNextiFori=0To49Combo3(i).Text=Combo3(i).TagNextiEnableSave(False)cb(1).Enabled=FalseEndSelect第109頁GoTookerrDeal:MsgBox"ErrorUnknown"ok:Me.MousePointer=0
EndSub第110頁8.ComboBox控件初始化輔助函數(shù)利用ComboBox控件初始化輔助函數(shù)能夠很輕松地從數(shù)據(jù)庫中讀入課程信息并將其顯示在適當(dāng)位置上。詳細(xì)實現(xiàn)設(shè)計代碼以下:第111頁PrivateSubcomboInit()rsSj.MoveFirstDimtrCntAsIntegertrCnt=rsTr.RecordCountrsTr.MoveFirstCombo1(0).Text=""Combo1(1).Text=""
'為所編輯控件添加List元素第112頁Fori=1To12Combo1(0).AddItem(i)NextiFori=1To20Combo1(1).AddItem(i)Nexti
Fori=0To9Combo2(i).Text=""Ifi<sjCntThenLabel2(i).Caption=rsSj!csjname第113頁rsSj.MoveNextElseLabel2(i).Visible=FalseCombo2(i).Visible=FalseEndIfLabel3(i).Caption=i+1NextiFori=0TosjCnt?1Ifi>0ThenForj=0TotrCnt?1Combo2(i).List(j)=Combo2(0).List(j)第114頁NextjElsersTr.MoveFirstWhileNotrsTr.EOFCombo2(i).AddItem(rsTr.Fields(0))rsTr.MoveNextWendEndIfNextiFori=0To49Combo3(i).Text=""Forj=0TosjCnt?1第115頁Combo3(i).AddItem(Label2(j).Caption)NextjNexti
EndSub第116頁9.Combo2下拉選擇框Change事件處理函數(shù)該函數(shù)主要用來修改TrChanged參數(shù),方便于通知系統(tǒng)參數(shù)發(fā)生改變。詳細(xì)代碼以下:
PrivateSubCombo2_Change(IndexAsInteger)TrChanged=TrueEndSub第117頁10.Combo3下拉選擇框Change事件處理函數(shù)該函數(shù)主要用來修改TrChanged參數(shù),以通知系統(tǒng)參數(shù)發(fā)生了改變。詳細(xì)代碼以下:
PrivateSubCombo3_Change(IndexAsInteger)ClassChanged=TrueEndSub第118頁11.Command1單擊事件處理函數(shù)該函數(shù)作用是用來開啟時鐘。詳細(xì)代碼以下:PrivateSubCommand1_Click()Timer1.Enabled=TrueEndSub第119頁12.窗體大小改變事件處理函數(shù)利用窗體大小改變事件處理函數(shù)能夠調(diào)整Frame3位置。詳細(xì)設(shè)計代碼以下:
PrivateSubForm_Resize()
‘
設(shè)置Frame3高度
Frame3.Top=Me.Height-Frame3.Height-520EndSub
第120頁13.窗體關(guān)閉事件處理函數(shù)窗體關(guān)閉事件處理函數(shù)作用是用來實現(xiàn)用戶在關(guān)閉對應(yīng)窗體事件時釋放對應(yīng)數(shù)據(jù)統(tǒng)計和數(shù)據(jù)連接。詳細(xì)代碼以下:第121頁PrivateSubForm_Unload(CancelAsInteger)OnErrorGoToErr:rsTr.ClosersSj.ClosersTrAry.ClosersClassAry.CloseSetrsTr=NothingSetrsSj=Nothing第122頁SetrsTrAry=NothingSetrsClassAry=Nothingconn.CloseSetconn=NothingErr:EndSub第123頁4.3.6設(shè)計課程查詢窗體(Form3)頁面經(jīng)過課程查詢窗體能夠很方便地查看并修改各個教師代課信息,并能夠?qū)崿F(xiàn)查看修改后最終課程編排情況表。第124頁
其窗體控件設(shè)計步驟以下:
(1)在工程中添加一個Form類型,并將其命名為Form3.frm。
(2)在該窗體控件中設(shè)計如圖4-3-6所表示各種窗體控件。
(3)為不一樣窗體控件添加上對應(yīng)程序代碼。
(4)全部設(shè)計好之后,按F5鍵運行、調(diào)試、修正和完善程序代碼。第125頁圖4-3-6課程查詢窗體Form3設(shè)計視圖第126頁1.定義窗體級變量本段代碼作用主要是用來定義數(shù)據(jù)鏈接、數(shù)據(jù)集、數(shù)據(jù)結(jié)構(gòu)和存放暫時變量以及各數(shù)據(jù)集等。詳細(xì)設(shè)計代碼以下:
OptionExplicit'定義數(shù)據(jù)鏈接
DimconnAsADODB.Connection'定義暫時數(shù)據(jù)集
DimrsAsADODB.Recordset'定義教師數(shù)據(jù)集
DimrsTrAsADODB.Recordset第127頁'存放SQL語句暫時變量Dimi,j,value,idxAsIntegerDimstrName,strSqlAsString
'定義數(shù)據(jù)結(jié)構(gòu)DataGetPrivateTypeDataGetclassAsStringSjnameAsString第128頁TwAsIntegerTnAsIntegerEndType第129頁2.窗體載入事件處理函數(shù)該函數(shù)主要作用是用來設(shè)置數(shù)據(jù)源和數(shù)據(jù)連接,并初始化系統(tǒng)參數(shù)。詳細(xì)代碼以下:
PrivateSubForm_Load()Me.MousePointer=11第130頁OnErrorGoToKKaSetconn=NewADODB.Connection
conn.Open"provider=Microsoft.Jet.OLEDB.4.0;datasource="&App.Path&"\dataUse.mdb"SetrsTr=conn.Execute("selectctrnamefromteacher")Fori=0To9Label3(i).Caption=i+1Nexti第131頁WhileNotrsTr.EOFCombo1.AddItem(rsTr.Fields(0))rsTr.MoveNext
WendCallClearCombostrSql="selecttrclass.cclasscode,trclass.csubject,classarray.itimew,classarray.itimen"+"fromteacher,trclass,classarray"+"whereteacher.ctrname=trclass.cteacherandtrclass.cclasscode=classarray.cclasscode"第132頁+"andtrclass.csubject=classarray.csjnameandteacher.ctrname="
value=0GoTookKKa:MsgBox"ErrorUnknown"ok:Me.MousePointer=0
EndSub第133頁3.輸入數(shù)據(jù)事件處理函數(shù)該函數(shù)作用是直接調(diào)用Command1_Click,來完成對課程進(jìn)行查詢。詳細(xì)設(shè)計代碼以下:
PrivateSubOpn_Click(IndexAsInteger)'設(shè)定選項
value=IndexCallCommand1_Click
EndSub第134頁4.單擊【查詢】按鈕事件處理函數(shù)該函數(shù)作用是當(dāng)用戶在單擊【查詢】按鈕之后,實現(xiàn)對所查詢課程信息進(jìn)行查詢和顯示功效。詳細(xì)設(shè)計代碼以下:
PrivateSubCommand1_Click()OnErrorGoTobnEndMe.MousePointer=11
DimsSqlAsStringDimdgUseAsDataGet第135頁CallClearCombostrName=LTrim$(RTrim$(Combo1.Text))IfLen(strName)>0ThensSql=strSql&"'"&strName&"'"
Setrs=conn.Execute(sSql)IfNotrs.EOFThenWhileNotrs.EOFdgUse.class=rs.Fields(0)第136頁dgUse.Sjname=rs.Fields(1)dgUse.Tw=rs.Fields(2)dgUse.Tn=rs.Fields(3)idx=(dgUse.Tn-1)*5+dgUse.Tw-1Combo3(idx).Visible=TrueCombo3(idx).AddItem(dgUse.class&"班")Combo3(idx).AddItem(dgUse.Sjname)Combo3(idx).Text=Combo3(idx).List(value)rs.MoveNextWendElse第137頁MsgBox"沒有得到相關(guān)數(shù)據(jù),請檢驗",vbOKOnly+vbInformation,"數(shù)據(jù)捕捉"EndIfDimlcntAsIntegerForlcnt=0To49IfCombo3(lcnt).ListCount>2ThenCombo3(lcnt).BackColor=RGB(200,255,255)Combo3(lcnt).AddItem("注意有重課")
EndIf第138頁NextlcntElseMsgBox"請輸入或選擇一教職員工姓名",vbInformation+vbOKOnly,"查詢輸入"EndIfbnEnd:Me.MousePointer=0
EndSub第139頁5.去除ComboBox里內(nèi)容本段代碼功效設(shè)計比較簡單,詳細(xì)代碼以下:PrivateSubClearCombo()Fori=0To49Combo3(i).BackColor=RGB(255,255,255)
Combo3(i).Text=""Combo3(i).Visible=FalseCombo3(i).ClearNextiEndSub第140頁6.窗體卸載事件處理函數(shù)窗體卸載事件處理函數(shù)作用是用來實現(xiàn)用戶在關(guān)閉對應(yīng)窗體事件時釋放對應(yīng)數(shù)據(jù)統(tǒng)計和數(shù)據(jù)連接,關(guān)閉數(shù)據(jù)源詳細(xì)代碼以下:第141頁PrivateSubForm_Unload(CancelAsInteger)OnErrorGoToKK:rs.ClosersTr.CloseSetrs=NothingSetrsTr=Nothingconn.CloseSetconn=NothingKK:EndSub第142頁4.3.7課程設(shè)置窗體(Form4.frm)程序?qū)崿F(xiàn)利用課程設(shè)置窗體能夠讓用戶方便地設(shè)置本學(xué)期學(xué)校所開設(shè)課程名稱。本窗體中各控件設(shè)計也比較簡單,只要先在工程中添加一個“Form”類型,并將其命名為Form4.frm,然后再為其設(shè)計添加各種對應(yīng)控件,如圖4-3-7所表示。第143頁圖4-3-7Form4設(shè)計視圖第144頁1.定義窗體級變量本段代碼作用主要是用來定義一些慣用數(shù)據(jù)鏈接、數(shù)據(jù)集和暫時字符串變量。詳細(xì)設(shè)計代碼以下:OptionExplicit'定義數(shù)據(jù)鏈接DimconAsADODB.Connection'定義數(shù)據(jù)集DimrsAsADODB.Recordset'定義暫時字符串變量Dimstr(9)AsString第145頁2.窗口載入事件處理函數(shù)該函數(shù)主要作用是用來設(shè)置數(shù)據(jù)源和數(shù)據(jù)連接,并對本窗體中系統(tǒng)參數(shù)進(jìn)行初始化。詳細(xì)代碼以下:PrivateSubForm_Load()Setcon=NewADODB.ConnectionSetrs=NewADODB.Recordset
CallclearTxtCanSave(False)第146頁con.Open"provider=Microsoft.Jet.OLEDB.4.0;datasource="&App.Path&"\dataUse.mdb"rs.Open"select*fromsubject",con,adOpenStatic,adLockOptimisticCalldisplayInfo
EndSub第147頁3.修改窗口Enable屬性能夠?qū)Υ翱贓nable屬性進(jìn)行修改,詳細(xì)代碼以下:PrivateSubCanSave(bSaveAsBoolean)Frame1.Enabled=bSavecn(1).Enabled=bSavecn(2).Enabled=bSave
cn(0).Enabled=NotbSave
EndSub第148頁4.實現(xiàn)【修改】、【保留】和【取消】按鈕單擊事件處理函數(shù)這類函數(shù)作用是當(dāng)用戶在單擊【修改】、【保留】和【取消】按鈕之后,實現(xiàn)對所查詢信息進(jìn)行修改、保留和取消功效。詳細(xì)設(shè)計代碼以下:第149頁PrivateSubcn_Click(IndexAsInteger)DimlcntAsIntegerDimstrTxtAsString
SelectCaseIndex'修改所查詢到信息Case0:CanSave(True)'保留查詢信息第150頁Case1:con.Execute("delete*fromsubject")
Forlcnt=0To9strTxt=Trim$(LTrim$(Txt(lcnt).Text))IfLen(strTxt)>0Thenrs.AddNewrs!csjname=strTxtrs.UpdateEndIfNextlcntCanSave(False)'取消第151頁Case2:Forlcnt=0To9Txt(lcnt)=str(lcnt)NextlcntCanSave(False)EndSelect
ExitSub
ex:MsgBox"databaseerror",vbOKOnly+vbExclamation,"error"
EndSub第152頁5.顯示數(shù)據(jù)統(tǒng)計輔助函數(shù)這類函數(shù)作用是依據(jù)用戶所選擇相關(guān)課程,顯示對應(yīng)信息。詳細(xì)代碼以下:第153頁PrivateSubdisplayInfo()rs.MoveFirstDimlcntAsIntegerlcnt=0While(Notrs.EOFAndlcnt<10)
Txt(lcnt).Text=rs!csjnamestr(lcnt)=Txt(lcnt).Text第154頁lcnt=lcnt+1rs.MoveNext
Wend
EndSub第155頁6.去除編輯框漢字字輔助函數(shù)該函數(shù)主要作用是用來釋放編輯框中文字統(tǒng)計。詳細(xì)代碼以下:
PrivateSubclearTxt()DimlcntAsIntegerForlcnt=0To9Txt(lcnt).Text=""Nextlcnt
End
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年房地產(chǎn)銷售代理與新能源開發(fā)項目合作合同范本3篇
- 電力系統(tǒng)課程設(shè)計答案
- 2024年度隧道工程建設(shè)的擔(dān)保合同
- 2024年汽車抵押貸款押品管理合同范例3篇
- 2024年水文地質(zhì)勘探與水資源評估合同3篇
- 2024年標(biāo)準(zhǔn)保函擔(dān)保合同模板版B版
- 2024年度藥品專利申請與咨詢服務(wù)合同樣本3篇
- 研學(xué)餐飲課程設(shè)計
- 2024年汽車融資租賃合同擔(dān)保函3篇
- 硯北煤礦課程設(shè)計
- 山東電力積分商城系統(tǒng)建設(shè)方案v1.1
- 部編人教版五年級語文上冊期末測試卷含答題卡
- 內(nèi)陸漁政船建設(shè)項目可行性研究報告
- 環(huán)境材料學(xué)教學(xué)課件匯總完整版電子教案全書整套課件幻燈片(最新)
- 建設(shè)項目全過程跟蹤審計表格
- 企業(yè)員工上下班交通安全培訓(xùn)(簡詳共2份)
- T∕ZSQX 008-2020 建設(shè)工程全過程質(zhì)量行為導(dǎo)則
- 業(yè)務(wù)員手冊內(nèi)容
- pH值的測定方法
- 輸出軸的機(jī)械加工工藝規(guī)程及夾具設(shè)計
- 元旦文藝匯演校長致辭
評論
0/150
提交評論