999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Excel VBA的成績管理系統的探索與實現

2020-06-24 05:09:03楊發友曹瀚天黃恩相張光福鐵衛華
現代信息科技 2020年22期

楊發友 曹瀚天 黃恩相 張光福 鐵衛華

摘? 要:文章以云南水利水電職業學院的成績管理為研究對象,以Excel 2010為平臺,采用VBA編程,設計了一款能夠自動匯總班級成績并可以統計出補考學生名單的成績管理系統。利用Excel VBA實現學生成績管理的自動化處理,提高工作效率和數據處理能力,加強數據處理結果的準確性,實現學生成績信息管理工作流程的系統化、規范化和自動化,降低工作量,提高工作效率。

關鍵詞:VBA;自動生成;排版;成績管理

中圖分類號:TP311.52? ? ? 文獻標識碼:A 文章編號:2096-4706(2020)22-0011-05

Exploration and Implementation of Achievement Management System

Based on Excel VBA

YANG Fayou,CAO Hantian,HUANG Enxiang,ZHANG Guangfu,TIE Weihua

(Yunnan Water Resources and Hydropower Vocational College,Kunming? 650499,China)

Abstract:The article takes the achievement management of Yunnan Water Resources and Hydropower Vocational College as the research object,uses Excel 2010 as the platform,and uses VBA programming to design a achievement management system that can automatically summarize class results and make statistics on the list of students who take the retake exam. Using Excel VBA to realize the automatic processing of student achievement management,improve work efficiency and data processing ability,strengthen the accuracy of data processing results,realize the systematization,standardization and automation of student achievement information management workflow,reduce workload and improve work efficiency.

Keywords:VBA;automatic generation;typesetting;achievement management

0? 引? 言

經過多年的教育信息化發展,以互聯網為基礎的成績管理系統在各級各類學校中得到了普及。但經過調查,仍然有很多學校還沒有專門的成績管理系統,學校對成績的管理還停留在使用Excel進行管理。

Excel雖然本身具有很強的數據處理能力,但是存在以下兩個問題:一是由于Excel的網絡功能有限,對數據錄入的工作很難實現多人在線收集;二是雖然教師們都熟悉Excel,但是該軟件的強大的數據處理功能要想發揮出來,需要掌握復雜的公式或者VBA編程才能實現,這一點卻少有人能夠精通。

云南水利水電職業學院目前有5個二級學院,將近5 000名在校學生,開設26個專業,每學期開設約200門課程,包含理論課和實踐課。由于學院有在線成績管理系統,但有部分教師暫不能接受新系統使用操作,特別年長的老教師習慣了使用Excel統計各科成績后上報教務處,再由教務處按照要求錄入系統,生成班級成績匯總表,進行排名和補考統計。每次考試結束后,教務處的工作量非常大,不得不抽調其他工作人員進行支援。這樣做,不僅工作效率低,而且學生成績錄入錯誤的風險非常大。

解決這個問題最好的辦法是升級優化或重新采購一套操作更簡潔的在線成績管理系統,但是由于學校經費有限,近幾年都沒有這方面的資金預算。

鑒于以上原因,本文從云南水利水電職業學院成績管理需求出發,通過分析學校需求,從Excel本身的功能開發考慮,用VBA開發了一套低成本的解決方案。

1? 研究的意義

我國的教育信息化經過多年的發展,已經取得了長足的進步。市場上不乏優秀的成績管理系統,但是這些系統要么就是商業化嚴重,雖然好用,后臺服務也能及時跟進,但是價格不菲;要么就是地方教育行政管理部門推廣的系統,具有一定的優勢,但是售后服務跟不上。有的學校自己有能力開發各種子系統,但是也存在各子系統之間數據不統一等問題。

Microsoft Office是廣大學校教師最熟悉也是使用最多的辦公軟件,Excel軟件是有強大的數據處理能力的表格系統,可以存儲各種類型的數據。Visual Basic宏語言(Visual Basic for Application,VBA)是Office內嵌的一種完全面向對象的編程語言。Excel本身雖然具有非常強大的數據處理能力,但是往往需要大量復雜的公式或者用VBA進行二次開發,才能使Excel的功能得以充分發揮。運用VBA開發成績管理系統,Excel軟件既是應用程序又是數據庫,去避免了應用程序和數據庫軟件頻繁交換數據的問題。

學生成績是學生評先評優的重要依據,同時也是學生是否需要補考、能否達到畢業條件的重要考核指標。考試成績管理,是學校教學管理最重要的環節之一,成績能否及時收集固定、是否能準確無誤的進行統計匯總,關系學校管理的嚴肅性、嚴謹性。利用VBA技術,只需把Excel成績單模板進行格式統一,這樣就能使數據標準化,再利用VBA編程,就能輕松對成績進行收集、管理。

2? 所用VBA關鍵技術的介紹

本系統直接用Excel+VBA進行開發。VBA是應用程序開發語言VB(Visual Basic)的子集,一般是嵌入Excel等已有應用程序中對其進行二次開發,提高自動化功能。VBA編程可以自定義Excel的工具欄、菜單和界面,對數據進行復雜的操作和分析,使Excel突破自身局限,成為開發平臺,從而實現基于VBA的成績管理系統的各項功能。

使用VBA開發有以下幾個好處:

(1)VBA設計的窗體雖然不能脫離Excel獨立運行,但可以讓Excel在后臺工作,并利用Windows API,可以設計浮動在桌面上的窗體,讓使用者感覺不出是Excel中的窗體;

(2)使用Excel軟件中的VBA開發系統,主要是要充分利用Excel軟件自身的優勢,Excel軟件還有很多內置的函數可以調用,在VBA中使用非常方便;

(3)VBE(VBA的編輯器)提供了模塊功能,可以根據功能需要編寫模塊代碼,實現模塊化編程功能,也非常利于系統功能的擴展升級;

(4)用VBA讀取Excel文件中的數據比讀取數據庫的數據更方便,而且程序的設計更簡單。

因此本系統選用Excel+VBA作為平臺和工具,是十分便捷和高效的。

3? 系統的設計分析與實現

本系統分別由成績報告單、成績收集匯總表、補考統計表、成績收集模塊、補考統計模塊、用戶窗體6部分組成。

3.1? 用戶登錄驗證及添加用戶窗體

運行軟件后,系統會自動進入此窗口,如圖1(a)所示,選擇對應的“用戶名”有“成績管理員、臨時用戶”兩種,輸入正確“密碼”即可登錄;也可以點擊“新用戶注冊”如圖1(b)所示,添加“用戶名”“密碼”后點“添加”即完成新用戶注冊。

(a)用戶登錄驗證窗口

(b)新用戶注冊窗口

圖1? 用戶登錄驗證及新用戶注冊窗口

此登錄驗證模塊能很好解決管理員用戶和普通用戶的權限問題,能夠有效追蹤成績出錯環節,從而進行責任劃分;同時也能添加不同用戶,方便管理。

實現程序代碼為:

Private Sub cmbUsername_Change()

End Sub

Public Sub cmdExit_Click()

Unload Me

Application.Quit

ActiveWorkbook.Close savechanges:=False

End Sub

Private Sub cmdNewyh_Click()

frmAddUser.Show

End Sub

Private Sub lblWelcome_Click()

End Sub

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)

If CloseMode = 0 Then

Cancel = True

End If

End Sub

Private Sub UserForm_Initialize()

N1 = Application.WorksheetFunction.CountA(Sheet3.Range("b:b"))

AA1 = "b2:b"& N1

Sheet3.Activate

cmbUsername.RowSource = AA1

End Sub

Private Sub cmdLogin_Click()

Dim I As Integer,Username As String,Password As String

N1 = Application.WorksheetFunction.CountA(Sheet3.Range("b:b"))

For I = 2 To N1

Username = cmbUsername.Value

Password = txtPassword.Text

If Username = Sheets(3).Cells(I,2) Then

If Password = Sheets(3).Cells(I,3)

ThenMsgBox cmbUsername.Value &",歡迎您進入系統!", 48,"提示"

Unload Me

ElseMsgBox "請正確輸入用戶名和密碼!",48,"提示"

cmbUsername.Value = ""

txtPassword.Text = ""

cmbUsername.SetFocus

End If

Exit Sub

End If

Next

End Sub

Private Sub cmdAdd_Click()

Dim sht As Worksheet

Set sht = Worksheets("用戶")

Dim X As Integer

X = sht.Range("A1").CurrentRegion.Rows.Count

sht.Cells(X + 1,1) = sht.Cells(X,1).Value + 1

sht.Cells(X + 1,2) = AddUsername.Value

sht.Cells(X + 1,3) = AddPassword.Value

End Sub

Public Sub cmdExit_Click()

Unload Me

Application.Quit

ActiveWorkbook.Close savechanges:=True

End Sub

3.2? 成績匯總統計模塊

當用戶驗證成功后,在“成績收集匯總”表中點擊“一鍵收成績”,如圖2所示,在彈出的提示對話框內輸入需要匯總的“班級名稱”如:輸入“150175”確定后,系統即運行后臺程序代碼,把指定班級文件夾中收集的各科成績報告單進行匯總,并能自動排版和實現成績匯總和排名等功能,生成統一的匯總表可以直接打印和存檔。

實現程序為:

Sub 一鍵收集成績并匯總()

Dim myPath$,myFile$,AK As Workbook,Tk As Workbook,I,j,n,m,X,Y,Num1,Num2,Num3,Wjs As Integer

Application.ScreenUpdating = False

Sheet1.[A1].CurrentRegion.Clear

Dim className As String

className = Application.InputBox("請輸入班級名稱","班級名稱","",510,380)

If className = "" Then Exit Sub

myPath = ThisWorkbook.Path &"\"& className &"\"

Set Tk = ThisWorkbook

myFile = Dir(myPath &"*.xls")

Do While myFile <>""

If myFile <> Tk.Name Then

a = CreateObject("scripting.FileSystemObject").GetFolder (myPath).Files.Count

For j = 6 To 5 + a

Set AK = Workbooks.Open(myPath & myFile)

AK.Sheets(1).Unprotect Password:="cxb"

Num1 = AK.Sheets(1).Range("A2").CurrentRegion.Rows.Count? ? ? ? ?AK.Sheets(1).Range("f7").Copy Tk.Sheets(1).Cells(4,j)

AK.Sheets(1).Range("f8").Copy Tk.Sheets(1).Cells(3,j)

AK.Sheets(1).Range("f9").Copy Tk.Sheets(1).Cells(2,j)

Tk.Sheets(1).Cells(1,j) = AK.Sheets(1).[f6]? ? ? ? ? Tk.Sheets(1).[b1] = AK.Sheets(1).[f4]

Tk.Sheets(1).[b2] = AK.Sheets(1).[f3]

For I = 2 To Num1

AK.Sheets(1).Range("a"& I).Copy Tk.Sheets(1).Cells(I + 2,2)

AK.Sheets(1).Range("b"& I).Copy Tk.Sheets(1).Cells(I + 2,3)

Tk.Sheets(1).Cells(I + 3,1) = AK.Sheets(1).[f2]? ? ? ? ? ? ?AK.Sheets(1).Range("c"& I + 1).Copy Tk.Sheets(1).Cells(I + 3,j)

Next

Workbooks(myFile).Close False

myFile = Dir

Next

End If

Loop

Tk.Sheets(1).[A1] = "應考人數"

Tk.Sheets(1).[A2] = "專業"

Tk.Sheets(1).[a3] = "單人單科成績"

Tk.Sheets(1).[a4] = "班級"

Tk.Sheets(1).[e1] = "學期"

Tk.Sheets(1).[e2] = "考試類別"

Tk.Sheets(1).[e3] = "任課教師"

Tk.Sheets(1).[c1] = "日期"

Tk.Sheets(1).[d4] = "總分"

Tk.Sheets(1).[e4] = "名次"

Tk.Sheets(1).[d1] = "=today()"

Num2 = Tk.Sheets(1).Range("b5").CurrentRegion.Rows.Count

Num3 = Tk.Sheets(1).Range("f4").CurrentRegion.Columns.Count

Tk.Sheets(1).Cells(5,4).Select

For n = 5 To Num2 - 1

For m = 6 To Num3

Tk.Sheets(1).Cells(n,4) = "=Sum(RC[2]:RC["& Num3 - 4 &"])"

Next

Next

Tk.Sheets(1).Cells(5,5).Select

For n = 5 To Num2 - 1

Tk.Sheets(1).Cells(n,5).Select

ActiveCell.FormulaR1C1 = "=RANK(RC[-1],R5C4:R"& Num2 - 1 &"C4,0)"

Next

Num2 = Tk.Sheets(1).Range("b5").CurrentRegion.Rows.Count

Tk.Sheets(1).Cells(Num2,1) = "合計與不及格統計"

ActiveCell.FormulaR1C1 = "=SUM(R["& -Num2 + 5 &"]C:R[-1]C)"

Tk.Sheets(1).Cells(Num2,5).Clear

Tk.Sheets(1).[b3].Select

ActiveCell.FormulaR1C1 = "=R["& Num2 - 3 &"]C[2]/R[-2]C[0]/("& Num3 - 5 &")"

Selection.NumberFormatLocal = "0.000_ "

For m = 6 To Num3

Tk.Sheets(1).Cells(Num2,6).Select?Cells(Num2,m) = _"=COUNTIF(R["& -Num2 + 5 &"]C:R[-1]C,""<60"") +COUNTIF(R["& -Num2 + 5 &"]C:R[-1]C,""缺考"")+COUNTIF (R["& -Num2 + 5 &"]C:R[-1]C,""作弊"")+COUNTIF(R["& -Num2 + 5 &"]C:R[-1]C,""補缺"")"

Next

Num2 = Tk.Sheets(1).Range("b5").CurrentRegion.Rows.Count

Num3 = Tk.Sheets(1).Range("f4").CurrentRegion.Columns.Count

For X = 5 To Num2 - 2

For Y = 6 To Num3

If Cells(X,Y) <>"" Then

If Cells(X,Y) < 60 Or Cells(X,Y) = "缺考" Or Cells(X,Y) = "作弊" Or Cells(X,Y) = "補缺" Then

Cells(X,Y).Interior.Color = 13551615

End If

End If

Next

Next

Tk.Sheets(1).Range("a1").CurrentRegion.Select

With Selection

.Borders.Weight = xlThin

.HorizontalAlignment = xlCenter

.VerticalAlignment = xlCenter

End With

With Sheet1.Columns.AutoFit

End With

Dim myPath2 As String

Dim FileName2 As StringmyPath2 = "D:\學校成績收集匯總"

FileName2 = Tk.Worksheets(1).Range("a5").Value

Tk.Worksheets(1).SaveAs Filename:=myPath2 &"\"& FileName2 &"班成績匯總"

Application.ScreenUpdating = True

MsgBox "匯總完成,請查看!",64,"提示"

End Sub

3.3? 補考統計模塊

當用戶驗證成功后,在“成績收集匯總”表中點擊“一鍵統計補考”,如圖3所示,系統即運行后臺程序代碼,在匯總的成績報告表中,篩選出成績“小于60”“缺考”“作弊”“補缺”“緩考”的人員及名單及需“補考科目”等相關信息匯總到“補考統計”表中。

實現程序為:

Sub縱向補考便于教務用()

DimI

arr=Sheet1.[A1].CurrentRegion

ReDimBRR(1ToUBound(arr)*10,1To8)

ForI=5To(UBound(arr)-2)

Forj=6ToUBound(arr,2)

Ifarr(I,3)<>""Then

Ifarr(I,j)<60Orarr(I,j)="缺考"Orarr(I,j)="作弊"Orarr(I,j)= "補缺"Orarr(I,j)="緩考"Then

K=K+1

BRR(K,1)=arr(I,1)

BRR(K,2)=arr(I,2)

BRR(K,3)=arr(I,3)

BRR(K,4)=arr(4,j)

BRR(K,5)=arr(I,j)

BRR(K,6)=arr(3,j)

BRR(K,7)=arr(1,j)

BRR(K,8)=arr(2,j)

EndIf

EndIf

Next

Next

Sheet2.[A2].CurrentRegion.Offset(1).ClearContents

Sheet2.[A2].Resize(UBound(BRR),8)=BRR

Sheet2.UsedRange.Borders.LineStyle=xlNone

Sheet2.UsedRange.SpecialCells(xlCellTypeConstants,3).Borders.LineStyle=xlContinuous

WithSheet2

.[a1:h1]=Array("班級","學號","姓名","補考科目","成績","任課教師","學期","考試類別")

.Columns("a:h").AutoFit

EndWith

EndSub

4? 系統主要功能

4.1? 成績報告單規范化

通過設計統一的成績報告單,使過去老師們報告成績格式不統一的情況得以完全改善,成績報告單設置了工作表保護,任課教師不能隨意更改學生等信息,填入報告單的數據也只能按照設置統一格式填寫,這樣就規范了成績數據。

4.2? 成績自動收集匯總功能

考試結束后,班主任向老師們收集各班的各科成績后,報給教務員,教務員一鍵即可生成各班的成績匯總表,自動匯總、自動排名、一鍵打印。

4.3? 補考統計功能

過去補考統計也是一項復雜的工作,使用該系統后,教務員可一鍵統計出各班各同學的補考科目,真正實現辦公自動化。

5? 結? 論

研究環境以Excel 2010為平臺,利用VBA編程語言,開發出成績管理系統,能適用于各中小型規模學校,一方面能大大減輕教務處工作人員的工作量。經驗證,過去需要10多位老師加班五六天的工作量,使用該系統后,只需要教務員1人加班三個小時左右即可完成全部成績匯總和補考統計工作。此外,由于VBA編程語言的普適性,系統的可移植性也非常高,稍做修改就可改為其他類似的管理系統。

由于筆者的技術水平有限,該系統基于Excel 2010采用VBA編程開發,沒有考慮在線收集成績的功能,所以還需要人工點選收集匯總。最新版本Office或WPS網絡功能得以增強,后續可以在網絡功能開發上進一步開發,就可以設計出適應其他學校需要的成績管理系統。

參考文獻:

[1] Excel Home.Excel 2007 VBA實戰技巧精粹 [M].北京:人民郵電出版社,2013.

[2] Excel Home.別怕,Excel VBA其實很簡單:第1版 [M].北京:人民郵電出版社,2012.

[3] 郭剛.Excel VBA入門與應用典型實例 [M].北京:北京希望電子出版社,科學出版社,2009.

[4] 王鴻儒.Excel VBA程序設計 [M].北京:中國鐵道出版社,2005.

[5] 魏汪洋.從零開始學Excel VBA:第2版 [M].北京:電子工業出版社,2014.

[6] 伍遠高.Excel VBA編程實戰寶典 [M].北京:清華大學出版社,2014.

[7] 李政,王月,鄭月鋒,等.VBA應用基礎與實例教程:第2版 [M].北京:國防工業出版社,2009.

[8] 張峋.Excel VBA入門與典型實例 [M].北京:清華大學出版社,2007.

[9] 李洋.Excel函數、圖表與數據分析應用實例 [M].北京:清華大學出版社,2007.

作者簡介:楊發友(1985.09—),男,漢族,云南賓川人,實驗師,本科,研究方向:網絡與信息安全;曹瀚天(1984.10—),男,漢族,云南祿豐人,講師,本科,研究方向:電氣工程;黃恩相(1970.12—),男,漢族,云南梁河人,高級實驗師,本科,研究方向:電氣工程及自動化;張光福(1979.06—),男,漢族,云南雙江人,經濟師,本科,研究方向:高校內控及信息化;鐵衛華(1975.12—),男,漢族,云南賓川人,高校講師,在職研究生,研究方向:電氣工程及計算機。

主站蜘蛛池模板: 日本道综合一本久久久88| 国产00高中生在线播放| 国产va在线观看免费| 激情亚洲天堂| 欧美日韩国产精品va| 亚洲综合亚洲国产尤物| 狠狠色综合网| 国产91蝌蚪窝| 91最新精品视频发布页| 久久精品嫩草研究院| 国产电话自拍伊人| 欧美国产菊爆免费观看| 素人激情视频福利| 国产香蕉在线视频| 二级特黄绝大片免费视频大片| 欧美成人影院亚洲综合图| 狠狠v日韩v欧美v| 欧美人与性动交a欧美精品| 国产精品jizz在线观看软件| 特级aaaaaaaaa毛片免费视频| 色综合色国产热无码一| 国内精品久久久久鸭| 久久综合九色综合97婷婷| 国产香蕉在线| 国产精品熟女亚洲AV麻豆| 国产精品免费p区| 天天躁日日躁狠狠躁中文字幕| 最新国产网站| 国产精品永久不卡免费视频| 色男人的天堂久久综合| 欧美高清三区| 亚洲欧美成人| 欧美人人干| 久久福利片| 五月激情婷婷综合| 欧美性久久久久| 国内精品91| 国产三级视频网站| 国产肉感大码AV无码| 国产亚洲视频中文字幕视频| 3D动漫精品啪啪一区二区下载| 精品在线免费播放| 综1合AV在线播放| 亚洲欧洲日产无码AV| 日本五区在线不卡精品| 国产第一色| 刘亦菲一区二区在线观看| 99在线观看免费视频| 色综合久久88| 欧美 亚洲 日韩 国产| 国产精品永久免费嫩草研究院| 亚洲第一色网站| 日本欧美中文字幕精品亚洲| 全部毛片免费看| 国产午夜小视频| 中文字幕有乳无码| 国产精品无码作爱| 福利片91| 秋霞一区二区三区| 亚洲综合片| 日韩麻豆小视频| 福利小视频在线播放| 香蕉久久永久视频| 国产精品久久自在自线观看| 亚洲精选高清无码| 日韩免费毛片| 欧美色亚洲| 丝袜无码一区二区三区| 免费人欧美成又黄又爽的视频| 香蕉精品在线| 青青操视频在线| av在线5g无码天天| 亚洲人成影视在线观看| 亚洲国产欧美国产综合久久 | 亚洲最大综合网| 丁香婷婷激情网| 国产精品第一区| 亚洲中文字幕在线一区播放| 国产原创演绎剧情有字幕的| 久久永久免费人妻精品| 亚洲a级毛片| 亚洲精品无码av中文字幕|