摘要:介紹了基于ASENET技術的高校成教管理系統,該系統采用B/S結構。文章就系統的體系結構、數據庫設計和快速開發方法作了簡要的說明,并著重闡述了組件、系統安全、動態報表等技術在系統中的應用。
關鍵詞:成人教育;教務管理;組件技術;ASP.NET
0 引言
蘇州大學的成人教育事業由于開辦歷史長,基礎好,近年來發展非常迅速,學生超過數萬人。隨著成教事業的發展,對成教院的管理工作提出了更高的要求。本系統主要目的是解決各學院成人教育相關信息的計算機管理,允許上級主管部門、成教院和各學院能在統一的平臺下操作。系統將成教院用戶作為高級管理員,可管理所有院系的數據;而院系用戶作為一般管理員,只能操作相應院系的數據,其他院系的數據將被限制訪問,部分重要數據的操作,必須通過成教院用戶審核后方可生效。在安全性方面采用用戶、用戶組、模塊及其他方式如臨時表、日期限定等相結合的形式進行控制。該系統的實施使得成教管理從報名入學到畢業審核一系列的工作流進行得更加規范,且達到方便、省時、高效、安全的目的,實現了成教學生、報名考試、成績、畢業等信息管理的數字化、系統化和科學化。
1 數據庫E—R圖設計
本系統涉及的主要實體有:學生、班級、專業、院系、課程、開課計劃、課表、學生考試成績、學籍變動、用戶、用戶組、模塊等。它們之間的聯系如圖1數據庫邏輯設計所示。

數據庫邏輯設計中需要重點說明的是:
(1)新生錄取的數據主要包括“省下達招生計劃”和“錄取學生名單”,該信息主要來源于省教委,每次錄取時需要從省教委下發數據導入。導入前將上次數據全部移入備份庫。專業、班級和學生是錄取學生正式報到注冊后的學籍數據。
(2)教學計劃是一切教學活動的依據和判斷學生畢業的依據,也是申報新專業時必須提供的主要材料。
專業的教學計劃可以隨著時間的變化而進行修訂。因此,同一個專業不同年級的教學計劃可能不同。但同一專業同一年級的各個班級的教學計劃必須相同(指課程相同),只允許課程開課的時間不同。
按照不同的級別,教學計劃分為兩類:①專業教學計劃(模版);②教學班的教學計劃(開課計劃)。
(3)用戶、用戶組、模塊及用戶組權限分配。
本系統是一個授權訪問的系統。用戶是有權使用本系統的人。同一類用戶定義為一個組。用戶組分為兩類:
①系統組:即系統一開始就設定的組。系統組包括:超級管理員組、一般管理員組、院系管理員組、學生組、過客組。系統組是系統初始設定好的,不允許管理員刪除。

②自定義組:由超級管理員用戶定義的組。例如,可以定義:全權瀏覽組、審核組等。
一個用戶可以隸屬于多個組。用戶與組的多對多聯系通過“用戶組成員”體現。學生作為特殊的用戶,不記錄在該表內,而是在學生表內保存密碼,用學號作為登錄賬號。
(4)模塊及用戶組權限分配。
模塊是描述一組或一個功能頁面的實體。模塊組可以包含子組。子模塊組或功能模塊頁面通過“父編號”標識指定屬于哪個上級組。從而構成一顆模塊結構樹。模塊實體中的“文件名”是指包含相對路徑的完全文件名;“開始時間”和“結束時間”是指對記錄進行添加、刪除、修改的開放時間。若未指定,則表示無時間限制。
定義每個用戶組對每個模塊或模塊組的權限。如果某個用戶組對某個模塊沒有相關記錄,則認為該用戶組對該模塊沒有任何權限。一個用戶對某模塊是否具有某種權限,是由其所在組的權限、組對模塊的權限和模塊本身開放的權限三者共同限制的。判斷模塊開放時間限制的代碼如下(如果一個用戶屬于多個組,則取這些組對于某權限的或即“0r”):
User.Rights=UserGroups Rights And UserGroupModuleRights.
Rights And Modules.Rights And(When IsNull(Modules.
BeginDate,0)=0 Then 1 Else getDate0>=Modules.BeginDate
End)And(When IsNull(Modules.EndDate,0)=0 Then 1 Else
getDate()<=Modules.EndDate End)
2 系統體系結構
系統體系結構如圖2所示。本系統是一個完全基于ASP.NET技術的Web應用程序。系統體系結構為三層模式:表示層、業務邏輯層、數據訪問層。在表示層中,各個功能頁面劃分成許多自定義用戶控件及服務器控件,控件搭建成完整的功能頁面,數據訪問和安全設置放在控件中,使用模塊表進行管理,其目的是便于裝配和安全控制。數據訪問及業務邏輯層主要采用微軟提供的標準數據應用訪問塊ApplicationBlocks for.NET。該類庫集成了數據庫的連接、方法重載返回DataSet和DataReader訪問數據庫、以及ExecuteScalar方法重載更新和修改數據庫。在本系統中擴充了標準數據應用訪問塊的功能,以滿足數據訪問的要求和實現部分業務邏輯。數據庫采用微軟SQL Server2000。
3 系統快速實現方法
本系統采用快速開發方法,既保證了系統的功能又縮短了開發周期。
在基于SQL Server數據庫的邏輯和物理實現之后,就可用RapidTier工具軟件快速生成基于VB或C#代碼的三層架構的框架源代碼。自動生成的項目中BuildSolution.bat批處理文件為編譯產生源代碼文件;Import.bat批處理文件幫助產生Sql存儲過程(包括所有表的Insert、Add、Delete和Modify操作)。RapidTier工具產生的三層實現模式如圖3所示。在RapidTier工具產生的解決方案中包括如下三個獨立的工程:
Model工程該項目中的類為數據實體,類中只包含屬性,其屬性對應數據庫中表的各個字段信息。即數據實體類的實例對應一條記錄,可從數據庫提取記錄信息到該實體對象,或用該實體對象添加或修改數據庫中表的記錄。
DAL工程該項目為數據訪問層,所有的類均從DaoBase基類繼承,該基類提供可擴展的數據訪問功能,如連接信息、共有屬性等。該項目中的每一個類中的接口(即方法)提供一個表的Select、Insert、Updam等數據庫操作方法:Select方法通常返回DataTable或DataSet對象;Insert、Update方法返回Boolean或Integer。對于Insert和Update方法,參數類型為Model項目中的相應數據實體,該項目中實體對象的方法通常被BLL層中的對象調用。底層操作數據庫所采用的技術為微軟提供的數據應用訪問塊Application Blocks for.NET,其中SqlHelper類中的共享方法直接操作數據庫。
BLL工程該層為業務邏輯層,為表示層提供訪問接口。業務邏輯層控制如字段級的驗證。一些不能在單個列中表示的包含不同實體或概念的更高級的業務規則等,通常都放在該層中。業務邏輯層對象通過訪問DAL層中的方法返回DataTable、DataSet或數據實體到表示層。
三個工程的關系是:DAL工程負責直接對數據庫中的數據表進行存取。BLL工程通過調用DAL工程中的方法來實現對數據庫的間接操作,同時添加業務邏輯代碼;只有BLL工程可以直接調用DAL工程中的方法,不可以跨層調用(Web層不能直接訪問DAL層中的對象)。Web表示層(或桌面應用程序)通過調用BLL層的方法來實現與用戶的交互,同時Web層中對輸入數據進行一些初級驗證。Model提供數據實體供Web、BLL、DAL三層之間進行數據傳遞。DAL工程、BLL工程和Model工程均為類庫工程,編譯后為DLL動態連接庫。在ASP.NET中。它們的引用關系是Web工程引用BLL工程和Model工程即包含Imports qgI.BLL和Imports qgl.Model語句;BLLI程引用DAL工程和Model工程,其中qgl為該項目的名稱空間。
4 系統關鍵技術的實現
4.1 組件技術
在本系統中,主要使用了下列用戶控件:班級列表、學院列表、專業列表、課程列表以及它們的各種組合列表,另外還涉及驗證、日志記錄等自定義服務器控件。用戶控件的擴展名為ascx。其實它是一種小型的Web頁面,只是它不能作為獨立的Web頁來運行,而被包含在.aspx頁面文件中,用戶控件才能工作??梢詫⒚總€頁面中的共同部分、頁面初始化時所要執行的操作(如登錄驗證,角色驗證)封裝在用戶控件當中。
比如學院列表用戶控件Depart.ascx,該頁面中只包括一個標簽控件和一個下拉列表框控件DropDownXueYuan。在后臺代碼中集成了對院系表的訪問方法,提供的外部方法有:根據用戶級別填充下拉列表框FillDepartMent;獲得院系ID號GetDepartlD,因為ASP.NET的內部運行機制不允許簡單通過屬性的方式將控件在運行時的值傳遞到外部,所以必須通過方法來獲取控件的值;根據院系ID號在DropDownXueYuan中同步顯示相應的院系名稱TongBuDropDownDepartlD;以及提供DepartSelectChanged事件,在外部響應院系下拉列表框改變時,進行一些額外的操作。要想在aspx頁面中觸發下拉列表框的SelectedlndexChanged事件,必須在用戶控件中增加觸發事件功能。其實現代碼如下:
Public Event DepartSelectChanged(ByVal sender As Object.
ByVal e As EventArgsl Private Sub DropDownXueYuan_SelectedlndexChanged(ByVal
sender As_System.Object.ByVal e AS System.EventArgs)_ Handles DropDownXueYuan SelectedlndexChanged
RaiseEvent DepartSelectChanged(Me,e)End Sub
其它用戶控件的實現與學院列表用戶控件類似。
4.2 動態報表技術
目前基于ASP.NET的報表開發工具比較流行的主要有水晶報表設計器Crystal Report Designer,微軟的報表工具SQLServer 2000 Reporting Services以及各種第三方開發的報表設計器,如Data Dynamics公司開發的ActiveReports for.NET。本系統采用AcfiveReports for.NET組件進行報表設計。該組.件安裝后能與NET完美結合,用其設計的在Web上運行的報表與在桌面應用程序上運行的報表具有完全相同的模式。
在報表設計中,往往要根據用戶需求顯示不同字段數的動態報表,這類報表因在設計時不能固定字段的位置,設計難度較大。本系統班級學生基本信息打印,就具有該類動態報表性質。因為學生基本信息包括22個字段,在A4紙上根本不可能打印如此多的信息,通常只能選擇其中的若干個字段打印,而具體選擇哪些字段,是用戶自己決定的。此時需要考慮的問題有:字段頭標題的總長度、各字段變量值的總長度和單個字段值的最大長度(例如通訊地址字段,該字段數據可能都為空,也可能剛好具有30個漢字)、以及標題與值的對齊等??紤]到重用性,專門為動態生成報表創建了類DynamicReportServer,在構造函數中傳入紙張寬度、每行的寬度、要打印的數據表字段、以及標題名稱等信息。用私有過程SetEachFieldWidth從數據庫中獲得選擇字段的長度填充HASH變量HashFieldWidth,計算總長度和各字段所占比例,并通過GetFieldWidth屬性傳遞給外部。在過程SetEachFieldWidth中有一點要注意的是,當打印字段標題的長度大于該字段值的長度時,使用的寬度應該是標題的寬度。
5 結束語
本系統在經過6個多月的快速分析開發后,現已在蘇州大學成教院試用和測試,測試期間系統運行穩定、可靠。開發時間短和成本低廉是本系統的特色,這為其它同類管理系統的開發提供了借鑒。