论文部分内容阅读
摘要:介绍了基于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个多月的快速分析开发后,现已在苏州大学成教院试用和测试,测试期间系统运行稳定、可靠。开发时间短和成本低廉是本系统的特色,这为其它同类管理系统的开发提供了借鉴。
关键词:成人教育;教务管理;组件技术;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个多月的快速分析开发后,现已在苏州大学成教院试用和测试,测试期间系统运行稳定、可靠。开发时间短和成本低廉是本系统的特色,这为其它同类管理系统的开发提供了借鉴。