基于B/S模式教师信息管理系统的设计与实现

时间:2023-06-08 09:00:12 教案设计 来源:网友投稿

摘要:随着计算机技术和网络技术的飞速发展,校园网大力建设和不断完善。为了满足对高校教师信息管理的需要,建设一个使用方便而且高效的B/S模式教师信息管理系统十分迫切。在系统中基于三层结构模型的ASP应用程序提高了系统的可重用性和可扩展性,同时运用子查询的方法,提高了数据库查询效率。

关键词:教师信息管理; ASP;模型;子查询

中图分类号:TP315文献标识码:A文章编号:1009-3044(2007)15-30627-02

The Design and Implementation of Teacher"s Information Management System Based on BROWSER/SERVER

LI Guo-zhong,TAN Guan-zheng

(College of Information Science&Engineering,CSU,Changsha 410083,China)

Abstract:With the rapid development of the computer and network technology,school campus networks are massivly constructed and being perfected For meeting the need of managing teacher"s information,construction of an utmost in convenience and efficient teacher"s information management system based B/S is an urgent need.Because the ASP application programs are buit on three-tier structural model,they impoved reusability and extensibility of the system.At the same time,subqueries increased efficiency of database queries.

Key words:Teacher"s information management;ASP;Structural model;Subqueries

1 引言

现今的人类社会已进入信息化的社会,人们在政治、经济、军事、文化、教育、科学、艺术等各种活动中都将产生大量的信息。对信息的处理和加工,如果仅依靠传统的人工构建纸质档案的管理方法,将越来越显得力不从心。各级学校都陆续建立了校园网,校园网的完善,不单指硬件的更新,还包括管理软件的实用性开发。历年我校教师在评职称时总感到信息的查找很繁琐,涉及到每学期的工作量和所教课程、论文著作、学期考核和班主任工作等,在填表格时教师们必须到各部门查找数据,同时这也给我校主管人员的管理工作带来不便。为了使从事教师信息管理的工作人员从复杂繁重的日常工作中解脱出来,便于其他教师的查询和互相学习,本文提出了一个基于B/S模式的教师信息管理系统,把它放在学校的服务器上,它可以在学期末的时候对每一位教师的各项指标进行审核,也可以对每一个教研室或系进行评审提供量化的依据,而且简单快捷。

2 系统概述

2.1系统流程

在启动应用程序时,首先将触发global.asa文件中的application_onstart事件,该事件处理程序用来创建一个全局变量。随后便进入登录界面进行用户的身份验证。如果用户的身份验证通过,就可以进入系统的相应页面进行操作和查询,系统流程图如图1。

图1

2.2系统建模

本教师信息管理系统比较全面的管理了与教师有关的信息:基本信息、教学信息、论文信息、奖励与科研信息、班主任工作信息、教师考评、教学资源和考勤等。这么多重要信息不可能全部公开发布到校园网上,而只能有针对性地供具体用户查询,同时还要方便管理员对这些数据信息进行添加、删除和修改等日常维护工作,从而需要设计查询模块和数据维护模块。

2.3查询模块

查询教师信息的用户包括:游客用户、普通用户、系级用户和院级用户。各查询用户级别不同,这就要求查询教师信息的结果不同。

2.4数据维护模块

数据的维护工作主要包括信息的添加、删除或修改,该项工作由各级用户来完成。

普通用户的文件上传模块功能主要是把文件上传到服务器。学术论文、奖励科研和教学资源查询模块主要针对全校性。教学资源包括课件教案、教学大纲及计划、备课资料和考卷仓库等內容。

系级用户的考勤模块主要功能是考勤,同时具备查询本部门人员考勤情况。

院级用户的信息统计模块包括学历、部门、教学和考评等统计功能,教学质量分析包括教师间教学质量对比和教学质量走势。

3 系统数据库设计

数据库的设计合理才能使查询方便快捷,它以要求降低数据的冗余,保证数据完整性及一致性和提高数据并发性能力为原则。我们在教师信息系统的数据库设计过程中,注意到此要求,做到:符合第三范式(3NF),尽量消除数据冗余;各表之间外键连接,根据具体情况保留一定的冗作,以提高数据库的访问速度,保证数据的一致性和完整性。本系统开发涉及的数据库表有13个,它们之间的关系结构见图2。

本系统开发所创建的数据库名为jsxxxt,作为一个供ASP和其他程序调用的接口,为该数据库创建了一个名为jssjy的ODBC数据源。利用ASP程序来访问数据库。方法如下:

set con=server.CreateObject("adodb.connection")

con.Open "数据源名","用户名","密码"

有时可直接利用ADO进行连接,方法如下:

set con=server.CreateObject("adodb.connection")

con.open "provider=sqloledb; user id=用户名; password=密码; initial catalog=数据库名; data source=服务器名"

图2

4 系统ASP编程

4.1用户登录

在登录系统时,由于用户的级别不同,其查询到的相应教师信息也不同,所以我们要让相应的用户转到相应的查询页面去。

用户登录的页面名是login.asp。该页面功能主要是:用于提交用户名和密码的表单;用于接受用户名和密码数据并判断该用户的级别如何,然后转到相应权限的页面去。

4.2查询设计

登录页面重定向到yh.asp后,根据session(“权限”)来判断哪一级别的用户可查询哪些教师信息。因为在系统中我们常常是多表查询,我们要在每个字段前加上表名和".",就可以形成联合查询条件。但是数据库的SQL引擎在处理联合查询条件时,往往需要多次进行表与表之间的笛卡儿运算,特别是当表中的记录数很大时将大大影响服务器的性能。因此有必要对查询语句进行合理的优化,以提高查询效率。运用子查询的方法较为理想。子查询就是将每步的查询的范围限制在一张数据表中,从而可成倍的提高查询效率。对于每张表产生的查询条件,先生成依赖字段的子查询语句,再利用表与表之间的依赖关系,通过相互依赖字段使用in运算来实现子查询语句的连接,得到优化的SQL语句,并用session对象把它保存下来。

4.3维护设计

建立了系统的查询部分后,我们还需要对它进行数据维护管理,如教师的相关信息的添加、删除或修改。由于教师的基本信息、教学信息、论文信息、奖励科研信息和班主任工作等信息都是存放在数据库中的。我们只需要对数据库进行维护就可以。但是,如果我们使用SQL SERVER带的管理工具来管理的话,这将是一项非常繁琐的事情,特别是在处理很多数据库记录时。而ASP对数据库操作起来非常方便,而且它有很好的交互界面。因此,我们使用ASP与数据库结果来完成数据的维护。

登录页面重定向到gly.asp页面后,系统管理员便可以通过友好的交互界面来维护教师基本信息,教学信息等数据,现就以教师基本信息的添加、删除和修改编程举例。

4.4包含文件的编写

本系统开发过程中,涉及教师信息数据较多,编写数据维护设计程序的时候经常要用到重复代码,例如教学信息、论文信息等数据在管理员要添加时,为了维护数据的完整性,输入的数据要经过验证,验证代码往往是重复性的,我们可以将这些重复代码写入一个名为sryz.inc的包括文件,然后在各页面中使用文件包含指令减少代码的重复,同时也便于代码的维护。

4.5ASP编程安全

安全不仅是网管的事,编程人员也必须注意某些安全细节,养成良好的安全习惯,否则,会给黑客造成可乘之机。目前,大多数网站上的 ASP程序有这样那样的安全漏洞,但如果在写程序时注意的话,还是可以避免的。例如,我们可以采取如下措施来增加系统的安全性。

(1)涉及用户名和口令的程序封装起来。

本系统访问数据库是利用到ADO技术或ODBC数据源,这两种方法如果直接在ASP文件中出现,那就没有安全可言。为了避免这种事情的出现,本人在编写程序时,主要利用在global.asa页面的application_onstart事件处理器中建立一个全局变量。代码如下:

sub application_onstart

application("con")="provider=sqloledb;user id=用户名;password=密码;initial catalog=数据库名;data source=服务器名"

end sub

最后在ASP程序中引用即可:

set con=server.CreateObject("adodb.connection")

con.Open application("con")

当然组件技术能更好解决这类问题,在下面我们会详谈。

(2)页面过期设置。

在维护模块中,考虑到系统的安全性,利用ASP的response对象的expires属性和clear方法,通过设置response.expires=0和response.clear可以使管理员页面立即过期,非法用户不能通过重复利用管理员的登录页面进入维护页面。

(3)用于数据维护的机器IP限制。

也就是说用于数据维护只能用一台专用的计算机。

(4)访问页面权限设置。

(5)防止SQL指令植入式攻击。

在设计或者维护WEB网站时,会担心它们会受到某些卑鄙用户的恶意攻击。

的确,IIS服务器的安全漏洞可能招致恶意攻击,但安全检查清单不应该仅仅是IIS安全性这一条。有些代码通常是专门为数据驱动的WEB网站而设计的。实际上往往同其它IIS漏洞一样存在严重的安全隐患。这些潜伏在代码中的安全隐患就有可能被称为“SQL指令植入式攻击”(SQL INJECTION)的手段所利用而导致服务器受到攻击。

SQL指令植入式攻击技术使得攻击者能够利用WEB应用程序中某些疏远防范的输入机会动态生成特殊的SQL语句。现就以本系统开发如何防止SQL指令植入式攻击举实例。

在登录页面,用户在输入框输入ID号和密码通过输入验证,以语句set rs=con.Execute("select 部门id,权限 from jbxx where id=""&Request("text1") &""and 密码=""&replace(Request("password1"),"" or "","")&""")在基本信息表中查找是否有此注册用户,如果有,则进入相关业务页面。为何在Request("password1")前加入replace()函数呢?具体又起何作用?如果我们把Request("password1")前的replace( )函数及参数去掉,试试用合法用户ID号和密码登录,成功!现在我们在密码输入框中输入***’ or ‘1’=’1时,看到登录成功!也就是说,非法用户一样登录,原因在于此时在基本信息表查找是否有此注册用户语句变成了set rs=con.Execute("select 部门id,权限 from jbxx where id=""&Request("text1")&""and 密码=""& Request("password1")&"" or 1=1 "),这样,SQL服务器将返回jbxx表中的所有记录,而ASP脚本将会因此而误认为攻击者的输入符合jbxx表中的第一条记录,从而允许攻击者以该用户的名义登录网站。解决办法就是利用replace( )函数剔除导致此事发生的语句。

还一种情况就是,在gly.asp页面中输入ID号来修改某用户的信息,在gledit.asp页面出现时发现地址栏中的语句是gledit.asp?cdid=ID号,如果我们直接在地址栏中输入gledit.asp?cdid=

**** or 1=1一样可以非法登录此页面,解决办法就是ASP脚本语句session("cdid")=clng(Request.QueryString("cdid")),即在Request.QueryString("cdid")前加函数clng( )来实现。

(6)输入数据验证。

一个好的表单处理脚本在处理数据前,应先验证输入表单的信息是否有效,验证脚本可以检验用户输入到表单的信息类型是否正确。

(7)开发基于组件技术的三层结构模型的ASP应用程序。

ASP具有良好的扩充性,我们用户访问数据库时,采用的时ADO对象,访问文件时,采用的是文件系统对象(FSO),其实这时程序已经是三层结构的应用程序了,只不过由于是利用内置的对象而为意识到罢了。这些对象都遵循COM/ActiveX接口,因此我们自己也可以开发遵循这个接口的对象,以便提高系统代码的可重用性和可扩展性。我们就以管理班主任信息为例讲述如何创建自己的三层结构的ASP应用程序。它大致可分为组件的创建、注册和应用三步。

(a)Qtgc.qtlei组件的创建

用VISUAL BASIC6.0创建一个新的ACTIVEX DLL项目,然后把项目名改为qtgc,把类模块名改为qtlei,由于我们要操作数据库,使用到ADO和ASP,因此我们还得引用MICROSOFT ACTIVEX DATA OBJECT 2.5 LIBRARY和MICROSOFT ACTIVE SERVER PAGES OBJECT LIBRARY。组件编写代码如下所示:

Option Explicit

Private conn As ADODB.Connection

Private rs As ADODB.Recordset

Public Sub opendb()

‘opendb方法

Set conn = New ADODB.Connection

Set rs = New ADODB.Recordset

conn.Open "provider=sqloledb;user id=用户名;password=密码;initial catalog=数据库;data source=服务器名"

rs.Open "select * from qt", conn

End Sub

Public Sub nextqt(id As Variant, name As Variant, bj As Variant, rq As Variant, kh As Variant, bm As Variant)

‘nextqt方法

Dim rs1 As New ADODB.Recordset

On Error Resume Next

If iseof = True Then

Err.Raise vbObject + 1, "information", "end of cursor"

Exit Sub

End If

id = rs.Fields("id")

name = rs.Fields("姓名")

bj = rs.Fields("班级")

rq = rs.Fields("任期")

kh = rs.Fields("考核")

Set conn = New ADODB.Connection

Set rs1 = New ADODB.Recordset

conn.Open "provider=sqloledb;user id=用户名;password=密码;initial catalog=数据库;data source=服务器名"

rs1.Open "select 部门 from bmdm where 部门id="" & rs("部门id") & """,conn, 3

bm = rs1("部门")

rs.MoveNext

End Sub

(b)组件的注册

存工程名为qtgc.vbp和保存类名为qtlei.cls,然后点击“文件”->“生成qtgc.dll”编译成动态连接库文件,VB在编译好动态连接库文件的同时也已经将该组件注册到注册表里了。

(c)组件的应用

在显示页面(glqt.asp)中的代码:

<%

dim xszj

set xszj=server.CreateObject("qtgc.qtlei")

xszj.opendb

while xszj.iseof=false

xszj.nextqt id,name,bj,rq,kh,bm

%>

通过上述例子,可以发现组件应用的优点,即可把数据封装,提高数据的安全性,又可以方便应用在程序开发中模块的扩充。

5 结束语

用ASP技术来实现基于B/S模式的教师信息管理系统,能够很方便地发布多种教师信息来满足教师信息现代管理的需要。今后可以根据需要来增加教师信息的种类,如教师的教学情况,达到对教师信息的完全自动化管理和发布。

参考文献:

[1]陈峰棋,林志强.完全接触ASP之基础与实例.电子工业出版社,2002.1.

[2]曹建,杨静.HTML.VBSCRIPT与ASP.电子工业出版社.

[3]谈亮,刘艺,蒋丹丹.全面精通SQL SERVER2000.中国水利水电出版社,2001.9.

[4]李存斌,樊建平.ASP高级编程及其项目应用开发.中国水利水电出版社,2003.3.

[5]四维科技,胡标.ASP网络编程技术与实例.人民邮电出版社,2004.5.

[6]E.winermiuer,J.KoffB.Heyman,R.Groom,顾斌,扬德斌.译.Visual Basic6.0 编程技巧.清华大学出版社.

[7]李代平,章文.中文SQL Server 2000数据库应用基础.冶金工业出版社,2002.

[8]飞思科技产品研发中心,ASP&SQL Server网站设计与实现[M].电子工业出版社,2001.

注:本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。

推荐访问:信息管理系统 模式 教师 设计