【正文】
........ 21 參考文獻(xiàn): .................................................................................................................. 22 摘 要 隨著現(xiàn)代計(jì)算機(jī)科學(xué)的發(fā)展,計(jì)算機(jī)信息系統(tǒng)越來越受到重視,在學(xué)校管理中的許多工作都由計(jì)算機(jī)完 成。由于對(duì)課程的排列時(shí)一項(xiàng)繁瑣的工作,所以它已經(jīng)逐漸改為由計(jì)算機(jī)完成。首先介紹開發(fā)工具 Visual Basic,接著介紹了 Visual Basic 的常用函數(shù)和怎樣編寫高質(zhì)量的 Visual Basic,最后詳細(xì)講解了用 Visual Basic 開發(fā)排課系統(tǒng),這一部分主要講解系統(tǒng)功能的實(shí)現(xiàn),在最后做了開發(fā)總結(jié)。 由計(jì)算機(jī)進(jìn)行排課的方式于傳統(tǒng)的方式相比較,優(yōu)勢是顯而易見的,首先, 可以省去大量人工,加速現(xiàn)代化的進(jìn)程;其次,避免了人工排課出錯(cuò),使排課過程可以輕松進(jìn)行。 因此,開發(fā)一個(gè)排課系統(tǒng)是很有必要的。 第二章 關(guān)于 Visual Basic Visual Basic 的歷史 Visual Basic 是由 BASIC 演化而來的, BASIC 是 Beginner39。 BASIC 簡單、易學(xué),目前仍是計(jì)算機(jī)入門的主要學(xué)習(xí)語言之一。 第二階段:( 1975 年~ 80 年代中) 微機(jī)上固化的 BASIC 第三階段:( 80 年代中~ 90 年代初) 結(jié)構(gòu)化 BASIC 語言。這在當(dāng)時(shí)引起了很大的轟動(dòng)。其實(shí),以我們現(xiàn)在的目光來看, VB10 的功能實(shí)在是太弱了。這使得程序員欣喜之極,都嘗試在 VB 的平臺(tái)上進(jìn)行軟件創(chuàng)作。并且從 VB3 開始,微軟將 ACCESS 的數(shù)據(jù)庫驅(qū)動(dòng)集成到了VB 中,這使得 VB 的數(shù)據(jù)庫編程能力大大提高。 VB 功能強(qiáng)大,學(xué)習(xí)簡單。 通過幾年的發(fā)展,它已 成為一種真正的專業(yè)化的開發(fā)語言和環(huán)境。 Visual Basic 常用術(shù)語解釋 在以下討論 Visual Basic時(shí),經(jīng)??梢月牭竭@些術(shù)語,因此首先對(duì)這些術(shù)語進(jìn)行理解,以下是 Visual Basic中最常用到的幾個(gè)術(shù)語: 控件 — 提供程序可見界面的可重用對(duì)象。 事件 — 由用戶或操作系統(tǒng) 引發(fā)的動(dòng)作。 方法 — 嵌入在對(duì)象定義中的程序代碼,它定義對(duì)象怎樣處理信息并響應(yīng)某事件。 對(duì)象 — 程序的基本元素,它含有定義其特征的屬性,定義其任務(wù)和識(shí)別它可以響應(yīng)的事件的方法。 過程 — 為完成任務(wù)而編寫的代碼段。 屬性 — 對(duì)象的特征,如尺寸、位置、顏色或文本。屬性也用于為對(duì)象提供數(shù)據(jù)和從對(duì)象取回信息。系統(tǒng)引進(jìn)了窗體和控件的機(jī)制,用于設(shè)計(jì)應(yīng)用程序界面。 VB 的另一重要特點(diǎn)是事件驅(qū)動(dòng)。程序員不必?fù)?dān)心如何判斷事件是否已發(fā)生,只需要編寫一段代碼告訴計(jì)算機(jī)在事件發(fā)生以后應(yīng)該做什么工作就可以了。 利用 VB 的可視性特點(diǎn),可方便的設(shè)計(jì)了程序的窗體界面,并在各個(gè)窗體中的合適位置繪制所需的每種控件。 利用 VB 的事件驅(qū)動(dòng)性特點(diǎn),只需在窗體或控件上的代碼窗口中添加少量的代碼,便可達(dá)到告訴當(dāng)在相應(yīng)的窗體或控件上發(fā)生某一事件時(shí),它們?cè)谑录l(fā)生后應(yīng)該做什么工作的目的。 第三章 Visual Basic 技術(shù) Basic 常用函數(shù)介紹 Abs(n) 返回 n 的絕對(duì)值。 Cos(n) 返回 n 的余弦值,以弧度為單位。 Rnd(n) 產(chǎn)生 0 到 1 之間的一個(gè)隨機(jī)數(shù)。 Sin(n) 返回 n 的正弦值,以弧度為單位。 Str(n) 把數(shù)值值轉(zhuǎn)換成字符串。 Val(n) 把字符串轉(zhuǎn)換為數(shù)值值。 9 Fix(n) 返回?cái)?shù)字的整數(shù)部分。只在 以下有效 CDate Date CDbl Double CInt Integer CLng Long CSng Single CStr String CVar Variant ‘只在 以下有效 CVErr Error 39。也許你不相信,但是正確地 選擇數(shù)據(jù)類型可以大幅度提升代碼的性能。 在大多數(shù)情況下,程序員選擇使用 Single 或 Double 的原因是因?yàn)樗鼈兡軌虮4嫘?shù)。例如程序中約定有三位小數(shù),那么只需要將保存在 Integer 變量中的數(shù)值除以 1000 就可以得到結(jié)果。 2. 避免使用變體 對(duì)于一個(gè) VB 程序員來說,這是再明顯不過的事情了。通常使用變體類型的目的是為了減少設(shè)計(jì)的工 4 作量和代碼量,也有的程序員圖個(gè)省事而使用它。 3. 盡量避免使用屬性 在平時(shí)的代碼中,最常見的比較低效的代碼就是在可以使用變量的 情況下,反復(fù)使用屬性( Property),尤其是在循環(huán)中。 4. 盡量使用數(shù)組,避免使用集合 除非你必須使用集合( Collection),否則你應(yīng)該盡量使用數(shù)組。這個(gè)數(shù)字聽起來有點(diǎn)駭人聽聞,但是如果你考慮到集合是一個(gè)對(duì)象,你就會(huì)明白為什么差異會(huì)這么大。在這種情況下,你可以把循環(huán)展開。但是如果循環(huán)比較復(fù)雜,你就沒有必要這樣做了。在這種情況下,你可以把函數(shù)中的代碼拷貝到原來調(diào)用函數(shù)的地方。例如: 在上面的例子中,程序引用了兩個(gè)對(duì)象: Form1 和 Text1。但遺憾的是,沒有 辦法可以避免它。 8. 使用數(shù)組,而不是多個(gè)變量 當(dāng)你有多個(gè)保存類似數(shù)據(jù)的變量時(shí) , 可以考慮將他們用一個(gè)數(shù)組代替。 9. 使用動(dòng)態(tài)數(shù)組,而不是靜態(tài)數(shù)組 使用動(dòng)態(tài)數(shù)組對(duì)代碼的執(zhí)行速度不會(huì)產(chǎn)生太大的影響,但是在某些情況下可以節(jié)約大量的資源。 快速原型是利用原型輔助軟件開發(fā)的一種新思想。 由于種種原因,在需求分析階段得到完全、一致、準(zhǔn)確、合理的需求說明是很困難的,在獲得一組基本需求說明后,就快速地使其 “實(shí)現(xiàn) ”,通過原型反饋,加深對(duì)系統(tǒng)的理解,并滿足用戶基本要求,使用戶在試用過程中受到啟發(fā),對(duì)需求說明進(jìn)行補(bǔ)充和精確化,消除不協(xié)調(diào)的系統(tǒng)需求 ,逐步確定各種需求,從而獲得合理、協(xié)調(diào)一致、無歧義的、完整的、現(xiàn)實(shí)可行的需求說明。即先用相對(duì)少的成本,較短的周期開發(fā)一個(gè)簡單的、但可以運(yùn)行的系統(tǒng)原型向用戶演示或讓用戶試用,以便及早澄清并檢驗(yàn)一些主要設(shè)計(jì)策略,在此基礎(chǔ)上再開發(fā)實(shí)際的軟件系統(tǒng) 。 排課系統(tǒng)的使用: 課程設(shè)置 教師設(shè)置 班級(jí)設(shè)置 教室設(shè)置:在主界面的菜單上選擇設(shè)置,再進(jìn)入子菜單各項(xiàng),對(duì)課程,教師,班級(jí),教室分別進(jìn)行添加,并設(shè)置它所對(duì)應(yīng)的各項(xiàng)。 排列此老師:對(duì)老師進(jìn)行課程排列。代碼列舉如下: 39。 (a1).Text amp。 form3_Text7(b1) = ww End If Next b1 Close 1 End If Next a1 39。 amp。 form3_Text7(b1) = ww End If Next b1 Close 1 39。讀入班的 If (first_class).Text Then Open .\kcb_done\class_kcb\ amp。 .dat For Input As 1 For i = 0 To zong 1 Input 1, ww class_form3_yuan1(i) = ww Next i Close End If 添加刪除數(shù)據(jù) 該系統(tǒng)設(shè)計(jì)到了多個(gè)數(shù)據(jù)的添加刪除,對(duì)教師,教室,課程,班級(jí)添加刪除。 amp。 amp。 下面以添加刪除教室的代碼為例: Private Sub Command1_Click() If Empty Then //判斷文本框中內(nèi)容是否為空 Dim i As Integer For i = 0 To 1 = i If = Then MsgBox 不能重復(fù) !, , 警告! //判斷是構(gòu)添加教室名稱重復(fù) Exit Sub End If Next i Open .\data\ For Append As 1 //將教室添加到 文件中去 Dim M As String M = Write 1, M Close 1 Dim h As Integer () = Open .\kcb_done\class_kcb\ amp。 .dat For Output As 2 For h = 0 To CInt() 1 Write 2, Next h Close 2 Open .\kcb_done\class_kcb\ amp。 For Output As 2 For h = 0 To CInt() 1 Write 2, Next h Close 2 Open .\kcb_done\class_kcb\ amp。 For Output As 2 For h = 0 To CInt() 1 Write 2, Next h Close 2 Open .\kcb_done\class_kcb\ amp。 For Output As 2 Close 2 Open .\kcb_done\class_kcb\ amp。 For Output As 2 Close 2 SendKeys {home}+{end} Else MsgBox 請(qǐng)輸入一個(gè)班級(jí)名稱 , , 錯(cuò)誤 End If End Sub Private Sub ClassN_click() = 0 Dim qq As String Open .\kcb_done\class_kcb\ amp。 For Input As 1 Do Until EOF(1) Input 1, qq (qq) Loop Close 1 Open .\kcb_done\class_kcb\ amp。 For Input As 1 Do Until EOF(1) Input 1, qq (qq) Loop Close 1 For i = 0 To 1 = i = i ee = 星期 amp。 ,第 amp。 節(jié) //從文本文件中取出課程時(shí)間 (ee) Next i End Sub 課表設(shè)置功能 對(duì)課表樣式進(jìn)行設(shè)置,從下拉列表中選擇所需要的課表節(jié)數(shù)或者天數(shù),如下圖 代碼如下: //判斷設(shè)置的天數(shù)或者節(jié)數(shù)是否在預(yù)定的范圍之內(nèi) Private Sub Command1_Click() If CInt() 0 Or CInt() 7 Or CInt() 0 Or CInt() 9 Or CInt() 0 Or CInt() 9 Or CInt() 0 Or CInt() 9 Then MsgBox (數(shù)據(jù)溢出 !!) Exit Sub End If //將課表樣式的相關(guān)數(shù)據(jù)保存在文件 中 Open .\data\ For Output As 1 Dim w1 As String Dim w2 As String Dim w3 As String Dim w4 As String Dim w5 As String Dim w6 As String w1 = w2 = w3 = w4 = w5 = w6 = Write 1, w1 Write 1, w2 Write 1, w3 Write 1, w4 Write 1, w5 Write 1, w6 Close 1 完成了添加教室,教師,課程,以及設(shè)置好了課表樣式后,要對(duì)課程進(jìn)行跟教師,教師的關(guān)聯(lián)。如下圖 實(shí)現(xiàn)此功能的代碼如下 : //從文件中讀出已有課程的名稱, 以下拉列表的形式顯示出來 Private Sub selectedS_Click() Open .\data\lesson_name\ amp。 .dat For Input As 1 Do Until EOF(1) Input 1, ac If ac Then (ac) Loop Close 1 Open .\data\room_name\ amp。 For Input As 2 Do Until EOF(2) Input 2, ab If ab Then (ab) Loop Close 2 End Sub //將已關(guān)聯(lián)的教師姓名顯示出來 Private Sub Command1_Clic