王翔


摘 要:使用VBA在Excel2010環境下設計和開發信息處理系統,具有通俗易操作,易用易推廣和維護的特點。中職校運會信息處理系統分六個模塊進行了功能設計,系統設計了個性化系統界面,直接在Excel工作表中進行操作,符合大多數人的使用習慣,合理的設計工作表,簡化操作流程,展示部分關鍵功能的代碼,對系統運行做了說明,并對系統的開發做了展望。系統的實現大大減輕了校運會的組織管理工作量,系統的運行能即時對競賽成績進行計分、排名統計,及時發送到相關部門處理,使校運會的節奏更融洽。
關鍵詞:Excel VBA 校運會 信息處理系統 中職
中圖分類號:TP311 文獻標識碼:A 文章編號:1674-098X(2015)09(b)-0050-02
中等職業學校學生精力旺盛,為豐富校園文化生活,強健學生體魄,每年舉行一次校園運動會,對促進學生身體鍛煉,活躍校園文化氛圍具有重要意義。然而從報名到成績錄入統計等都需要大量的人力物力配合,怎樣快速的統計及安排賽事、錄入統計成績,就顯得尤為重要,采用VBA(Visual Basic for Applications)在Excel下設計及開發校運會信息處理系統可以很好地解決上述問題,由于Excel的環境為大多數師生所熟悉,所以通俗易操作,易用易推廣,并且系統也易于維護。
1 系統設計
1.1 功能設計
系統設計功能主要分為六個模塊:系統設置及維護模塊、報名信息處理模塊、賽事分組道模塊、預賽管理模塊、成績錄入統計模塊、記錄更新輸出模塊。
系統設置及維護模塊主要用來設置競賽的項目、進入決賽的人數、徑賽的道數、年級組別、名次得分設置以及系統相關的密碼和相應維護設置;報名信息處理模塊需配合FTP服務器使用,各班級通過報名表選擇需要報選的項目和學生姓名,完成后點擊上傳按鈕則可以自動檢測是否有錯,無錯后自動上傳到FTP服務器,不用人工干預,報名表收集完成后進行匯總,生成序號<唯一>;賽事分組道模塊需先設置分組道的一些設置,比如單項每組分多少道,成績取前多少名等,然后分年級分性別進行隨機分組道,分組時(徑賽)按照同一班盡量不安排同一組,分道時(徑賽)同一班盡量不安排同一道的原則,以盡量做到分組道的公平;預賽管理模塊主要實現需要預賽項目的信息處理,包括成績錄入統計、決賽分組道情況匯入總表等;成績錄入統計模塊則包括所有決賽項目的成績錄入、按項目統計排名、按班級進行統計排名,分年級統計總分排名等功能;記錄處理模塊將根據當前屆比賽情況自動更新校運會新記錄、并可將記錄輸出等。
1.2 窗體設計
為了簡潔系統操作界面,使用Custom UI Editor For Microsoft Office軟件將原Excel2010界面上默認功能區全部取消隱藏,另行創建系統相關功能區,如圖1所示。
系統工作界面則采用直接在工作表中完成,通過主工作表(總表)衍生出一系列相關工作表,在相應的工作表中放置相應功能的按鈕,通過設置項,選擇或輸入數據,通過點擊相應的按鈕來實現相應的功能,如圖2(錄入成績)就是一個典型的工作界面。
1.3 工作流程
按照校運會進行的邏輯順序,整個系統的運行分為三個階段,第一階段為各班報名,完成報名后系統進行匯總,然后進行分組、分道的處理,將分好組道的數據生成秩序冊下發到各相關工作人員和各班;第二階段則是組織預賽,并將預賽成績進行處理后生成決賽信息匯總到數據總表;第三階段是進行決賽的數據處理,這個階段要求決賽的數據能錄入進系統后能即時進行排名和計算得分,并生成相應的報表和輸出打印,分別交相關小組進行處理,最后所有賽事完成后,能分年級進行匯總排名計算獎勵班級,并生成各班的成績報表便于各班核查成績,最后更新校運會記錄和輸出優勝者名單,具體工作流程如圖3所示。
2 系統實現
2.1 工作表設計
系統包含的工作表主要有:總表、分組道、成績錄入、統計、預賽總表、預賽處理、班級信息、記錄、導航、系統設置等10個工作表。班級信息、記錄、系統設置三個表用來存放班級的男女生人數、基本分等基本信息,上屆校運會的各項記錄,項目設置、名次得分等;總表是各班報名表的匯總處理,里面存放了各個項目的信息,是整個系統最關鍵的表,而預賽總表、分組道等表是從此表衍生而出的;分組道、成績錄入、統計、預賽處理則是對總表和預賽總表根據賽程推進而進行的操作,其中生成了一些文檔性數據,如秩序冊、班級成績報表、班級成績排名、單項成績報表等;導航表用來選擇進入系統的相應功能。
2.2 系統的關鍵功能
系統實現的功能較多,而較為關鍵的有報名表自動上傳、分組道、成績錄入、成績得分統計、記錄更新等。對于運動會來說,打破記錄是一項令人歡欣鼓舞的事情,所以每一屆校運會記錄的更新也顯得尤為重要,更新記錄按鈕CommandButton2的代碼如下(篇幅所限,其他代碼不一一列舉):
(1)Private Sub CommandButton2_Click()
(2)Dim i, j, k, m As Integer'更新記錄
(3)For i = 1 To Sheet9.Range("I19") 'sheet9是記錄表,I19存放破紀錄人次
(4)For j = 1 To 12 '循環項目
(5)If Sheet9.Cells(20 + i, 5) = Sheet9.Cells(4 + j, 1) And Sheet9.Cells(20 + i, 9) = 1 Then '按破紀錄的項目進行更新
(6)For k = 1 To 2 '循環年級
(7)For m = 1 To 2 '循環性別
(8)If Sheet9.Cells(20 + i, 4) = Sheet6.Cells(m + 7, 2) And Sheet9.Cells(20 + i, 6) = Sheet6.Cells(k + 1, 2) Then '更新記錄
(9)Sheet9.Cells(4+j,2+(k-1)*8+ (m - 1) * 4) = Sheet9.Cells(20 + i, 7) '成績
(10)Sheet9.Cells(4 + j, 3 + (k - 1) * 8 + (m - 1) * 4) = Sheet9.Cells(20 + i, 1) '姓名
(11)Sheet9.Cells(4 + j, 4 + (k - 1) * 8 + (m - 1) * 4) = Sheet9.Cells(20 + i, 2) '班級
(12)Sheet9.Cells(4 + j, 5 + (k - 1) * 8 + (m - 1) * 4) = Sheet9.Range("B2") + 1986.11 '日期
(13)GoTofindnext '記錄已更新,跳轉到下一條記錄
(14) End If
(15) Next m
(16)Next k
(17)End If
(18)Next j
(19)findnext: '跳轉
(20)Next i
(21)Sheet9.Range("b2") = Sheet9.Range("b2") + 1 '屆數增加1
(22)Sheet9.Range("L2") = Sheet9.Range("X1") '改寫更新日期
(23)End Sub
3 系統運行
(1)由于該程序的開發涉及到了宏的使用,所以第一打開該文件,會彈出“安全警告”,如下圖4所示,點擊“啟用內容”即可。
(2)收集報名表時需用到FTP服務器,所以需架設FTP服務器,使用Serv-u很容易實現,只需要在Serv-u的用戶項中新建一個用戶,名稱和密碼與報名表系統設置中一致即可。需要注意的是,建立用戶時一定要賦予用戶目錄具有“寫”的權限。
(3)系統運行中為降低系統數據丟失的風險,系統設置了每隔五分鐘以“系統文件名+系統時間”另存一次當前數據的功能,而保存時,如果路徑中出現中文字符則容易出錯,所以,系統文件建議放到D:\sport或E:\sport下,并在其中建立bak文件夾用來保存另存的數據。
(3)目前該系統已經在筆者所在學校兩屆的校運會中運行,從運行的過程和結果來看,完全滿足了校運會的需要,能夠對輸入的成績即時進行計分、排名統計、輸出,獲得了校運會組織部門的高度評價。
4 系統展望
系統中,報名部分是獨立的,為保證報名數據中姓名、班別以及姓名的一致性,需要在報名表中事先預存全校參賽班級及學生的信息,這就要求管理員在報名之前先將這些信息存放進去,工作量也較為繁雜,所以進一步的打算是開發一個接口程序將校園網與報名表對接,直接從校園網中獲取最新信息,免去人工操作的繁雜和出錯。
系統的設計與實現,總是與需求相關的,所以在使用過程中,根據實際情況,系統也會進一步的升級和增加功能。比如有一年學校要選拔學生參加市運動會,需要將每個項目前三名的男女生姓名、成績等輸出,這個功能系統之前是沒有的,接到需求后,很快系統就添加了這個功能。
5 結語
VBA 易于學習掌握,可以使用宏記錄器記錄用戶的各種操作并將其轉換為VBA 程序代碼,這樣用戶可以容易地將日常工作轉換為VBA 程序代碼,使工作自動化。因此,對于在工作中需要經常使用Office軟件的用戶,學用VBA 有助于使工作自動化,提高工作效率。作為中職信息技術教師,使用office軟件是及其頻繁是平常的,平時多觀察多研究,利用專業知識和技能開發信息系統,可以使自己和同事從教學、生活中哪些繁瑣,重復性的工作中解脫出來,以利于更好的學習和生活。當然信息系統的開發不是一朝一夕的事,需要靜下心來,溝通需求,尋找方法,仔細研究,才能逐步實現。
參考文獻
[1] 羅剛君.Excel2010VBA編程與實踐[M].北京:電子工業出版社,2012.
[2] 羅剛君.ExcelVBA程序開發自學寶典[M].北京:電子工業出版社,2011.
[3] 劉洪花.基于VBA的Excel考試系統的制作[J].電腦編程技巧與維護,2012(18):42-44.
[4] 劉本斌.基于Excel VBA的考試系統的設計與實現[J].現代計算機,2012(17):78-80.
[5] 畢克書.基于Excel VBA開發干部管理信息系統[J].中國管理信息化,2012, 15(5):51-52.