扶婕
(江西財經(jīng)大學(xué)軟件學(xué)院,南昌 330032)
隨著社會的發(fā)展以及教育質(zhì)量的提高,我國中小學(xué)教學(xué)規(guī)模不斷擴大,招生人數(shù)日漸增多,所教學(xué)的課程以及對學(xué)生的考核形式也逐漸多樣化,這使得教務(wù)管理工作在數(shù)量和難度上都大大增加。學(xué)生考試成績管理在教務(wù)管理工作中處于核心地位,考試成績管理工作是衡量教學(xué)及管理質(zhì)量的重要指標。而當今不少中小學(xué)對成績管理依然采用傳統(tǒng)的人工管理方式,這種管理方式不僅效率低下,并且隨著時間的推移,將產(chǎn)生大量的文件和數(shù)據(jù),對于查找、更新和維護都帶來諸多的困難和不便。
在目前信息時代下,利用計算機技術(shù)進行信息處理無疑是更好的解決方案。使用微軟.NET框架中的WPF技術(shù)以及C#高級編程語言,能夠高效率地開發(fā)出Windows平臺下的桌面應(yīng)用程序。利用這些技術(shù)開發(fā)一款學(xué)生成績管理系統(tǒng),能夠幫助教務(wù)管理者對學(xué)生成績信息更加高效地管理、維護,從而對教學(xué)質(zhì)量有進一步的提升。
針對當今中小學(xué)狀況來看,不同地區(qū)、不同學(xué)校的教學(xué)手段不盡相同,甚至可能有著較大的區(qū)別,在學(xué)生成績管理工作中則主要體現(xiàn)在其所開設(shè)課程以及考核方式等不同。例如對于高中而言,各班級具有理科班、文科班等區(qū)分,對其所開設(shè)的考試也有不同的側(cè)重處,因此在本系統(tǒng)中應(yīng)當實現(xiàn)課程管理、班級管理和考試管理功能,使得教學(xué)管理人員能夠針對不同課程、不同班級進行不同的考核方式。
考試成績管理工作能夠影響到學(xué)校中的每一位師生,而考試成績管理系統(tǒng)也是如此。教師需要使用該系統(tǒng)對其所教授課程的考試進行分數(shù)錄入、導(dǎo)出打印等,學(xué)生可以通過該系統(tǒng)及時地對考試成績進行查詢、并且與其他同學(xué)或家長進行分享等。
由上,系統(tǒng)所主要面向的用戶可分為三大類:教學(xué)管理員、教師以及學(xué)生,各用戶類別可進行的操作如下:
(1)教學(xué)管理員:課程管理、班級管理、考試管理、用戶管理;
(2)教師:分數(shù)錄入、分數(shù)導(dǎo)出;
(3)學(xué)生:分數(shù)查詢。
系統(tǒng)采用 C/S(Client/Server,客戶端/服務(wù)器)架構(gòu)。在該架構(gòu)中,客戶端通過互聯(lián)網(wǎng)與服務(wù)器形成連接,整個系統(tǒng)的工作將合理地分配到客戶端與服務(wù)器中,能夠充分地利用兩端的硬件資源,并降低系統(tǒng)的資源開銷。該架構(gòu)模型如圖1所示。
在本系統(tǒng)中,客戶端主要負責數(shù)據(jù)呈現(xiàn)、操作提示、數(shù)據(jù)錄入查詢等功能,服務(wù)器端則主要負責數(shù)據(jù)庫的維護功能。
圖1 C/S架構(gòu)模式圖
根據(jù)本系統(tǒng)所面向的用戶分類,系統(tǒng)的功能模塊主要劃分為教學(xué)管理員用戶模塊、教師用戶模塊以及學(xué)生模塊。系統(tǒng)功能模塊圖如圖2所示。各模塊所實現(xiàn)功能詳細描述如下:
(1)管理員用戶模塊
①課程管理:對學(xué)校所開設(shè)的所有課程進行添加、刪除、修改等;
②班級管理:根據(jù)不同的學(xué)年,對班級進行添加、刪除等更改;
③考試管理:根據(jù)不同班級、不同課程進行考試的管理;
④用戶管理:對本系統(tǒng)的用戶進行管理,包括教師、學(xué)生。
(2)教師用戶模塊
①分數(shù)錄入:對自身教授課程所開設(shè)的考試進行分數(shù)的錄入;
②分數(shù)導(dǎo)出:能夠?qū)⒛炒慰荚嚨某煽儼窗嗉墑澐謱?dǎo)出成Excel文檔;
③個人信息管理:更新個人信息。
(3)學(xué)生用戶模塊
①分數(shù)查詢:對參加過的考試進行分數(shù)查詢;
②個人信息管理:更新個人信息。
圖2 系統(tǒng)功能模塊
系統(tǒng)采用MySQL數(shù)據(jù)庫,其具有體積小、速度快等優(yōu)點,足夠用于保存成績管理系統(tǒng)所需數(shù)據(jù)。系統(tǒng)數(shù)據(jù)庫共包含以下12個數(shù)據(jù)表:用戶信息表、學(xué)生表、教師表、系統(tǒng)管理員表、年級表、班級表、課程表、課程分配表、考試表、考試班級表、考試課程表、分數(shù)表。各數(shù)據(jù)表所包含字段信息如下:
(1)用戶信息表:id、用戶類型、學(xué)/工號、性別、年齡、聯(lián)系方式、登錄密碼;
(2)學(xué)生表:id、對應(yīng)用戶信息外鍵、所在班級外鍵;
(3)教師表:id、對應(yīng)用戶信息外鍵;
(4)系統(tǒng)管理員表:id、對應(yīng)用戶信息外鍵;
(5)年級表:id、學(xué)年值;
(6)班級表:id、所在年級外鍵、班級序號;
(7)課程表:id、課程名稱;
(8)課程分配表:id、對應(yīng)課程外鍵、對應(yīng)班級外鍵、對應(yīng)教師外鍵;
(9)考試表:id、考試名稱、考試日期時間;
(10)考試班級表:id、對應(yīng)考試外鍵、考試班級外鍵;
(11)考試課程表:id、對應(yīng)考試外鍵、考試課程外鍵;
(12)分數(shù)表:id、對應(yīng)考試課程外鍵、對應(yīng)學(xué)生外鍵、得分。
系統(tǒng)采用WPF技術(shù)進行開發(fā),能夠編寫出美觀的界面,為用戶提供良好的交互體驗。并且使用MVVM(Model-View-ViewModel,模型-視圖-視圖模型)開發(fā)模式進行開發(fā)。其中模型即代表所用數(shù)據(jù),視圖即為用戶使用該系統(tǒng)時所能夠看見的頁面、外觀(UI),而視圖模型相當于數(shù)據(jù)與視圖間的媒介,通過數(shù)據(jù)創(chuàng)建好視圖模型后傳遞給視圖進行數(shù)據(jù)的呈現(xiàn)。不同于MVC(Model-View-Controller,模型-視圖-控制器)模式通過控制器進行主要業(yè)務(wù)邏輯處理,MVVM模式則主要通過數(shù)據(jù)模型中所包含操作命令(Command)以及XAML中的綁定器(Binder)等對數(shù)據(jù)進行邏輯處理。這種模式能夠更好地促進視圖層開發(fā)與其他層次的分離,使得程序開發(fā)更為模塊化,從而提升開發(fā)效率。
本系統(tǒng)中數(shù)據(jù)庫連接、操作使用.NET框架下的Entity Framework(簡稱EF)實現(xiàn)。使用EF對數(shù)據(jù)庫進行操作主要分為代碼優(yōu)先模式和數(shù)據(jù)庫優(yōu)先模式,由于本系統(tǒng)中數(shù)據(jù)庫結(jié)構(gòu)較為復(fù)雜,因此采用數(shù)據(jù)庫優(yōu)先模式,即根據(jù)已經(jīng)創(chuàng)建好的數(shù)據(jù)庫在項目中直接生成數(shù)據(jù)庫中各項數(shù)據(jù)表所對應(yīng)的實體類。
要對MySQL數(shù)據(jù)庫使用EF數(shù)據(jù)庫優(yōu)先模式,在開發(fā)機器中必須安裝MySQL for Visual Studio、MySQL Connector Net,并且在項目中通過NuGet包管理器添加MySQL.Data以及MySQL.Data.Entity包,且該4項軟件包的版本必須相互對應(yīng),否則無法進行正常運作,一個可行的對應(yīng)版本號有:2.0.5、6.10.7、6.10.7、6.10.7。各軟件包安裝完成后,只需通過新建項在項目中添加ADO.NET實體數(shù)據(jù)模型,并按照對應(yīng)提示連接數(shù)據(jù)庫、選擇數(shù)據(jù)模型和數(shù)據(jù)表后即可自動生成所選擇的數(shù)據(jù)表對應(yīng)的實體類以及一個DbContext類,所有對數(shù)據(jù)庫進行的操作均通過該類來進行。例如讀取所有考試班級的示例代碼如下:
var list=dbContext.ExamClasses.Include(nameof(Exam?Class.exam))
.Include(nameof(ExamClass.t_class).ToList();
其中dbContext即為DbContext類的示例,Exam?Classes為數(shù)據(jù)庫中的所有考試班級,后兩項Include則表示各個考試班級需包含其對應(yīng)的考試以及班級信息。
系統(tǒng)采用NPOI開源庫進行Excel數(shù)據(jù)導(dǎo)出功能的實現(xiàn),需首先通過NuGet包進行安裝該庫。使用NPOI可在系統(tǒng)未安裝Office組件時完成對Word、Ex?cel等文檔的讀寫,并同時支持97-2003版本及其以后版本的Office文檔。以下示例代碼為將DataTable中的內(nèi)容導(dǎo)出至filepath所指的xlsx文檔:
var wbook=new XSSFWorkbook();
var sheet=wbook.CreateSheet(“sname”);
int colcnt=table.Columns.Count;
int rowcnt=table.Rows.Count;
for(int ri=1;ri<=rowcnt;ri++){
var row=sheet.CreateRow(ri);
for(int ci=0;ci row.CreateCell(ci,CellType.String) .SetCellValue(table.Rows[ri-1][ci].ToString()); } } using(var stream=File.Create(filepath)) wbook.Write(stream); 以上代碼中首先創(chuàng)建XSSFWorkbook實例作為文檔的對象,并通過CreateSheet方法在該文檔內(nèi)創(chuàng)建表格Sheet對象,隨后通過遍歷DataTable中的各行各列往表格中插入數(shù)據(jù),最后通過FileStream以及Write方法將文檔實際保存至filepath文件中。 本文簡要介紹了使用.NET框架中WPF技術(shù)對面向中小學(xué)的學(xué)生考試成績管理系統(tǒng)進行分析、設(shè)計以及實現(xiàn),相信對使用WPF技術(shù)的開發(fā)人員具有一定的借鑒性,并希望該系統(tǒng)能夠為中小學(xué)的教務(wù)管理人員帶來工作效率的提升。4 結(jié)語