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

来源 :电脑知识与技术 | 被引量 : 0次 | 上传用户:monishibi
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:随着计算机技术和网络技术的飞速发展,校园网大力建设和不断完善。为了满足对高校教师信息管理的需要,建设一个使用方便而且高效的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格式阅读原文。
其他文献
摘要:本文深入浅出地阐述了C语言连接和处理Oracle数据库系统的Pro*C程序,结合作者实践经验,举例说明如何编写、编译和运行Pro*C程序。  关键词:Oracle数据库;Pro*C程序;嵌入式SQL  中图分类号:TP311.13 文献标识码:A文章编号:1009-3044(2007)15-30622-02  Briefly Bewrite the Pro*C Program in the
期刊
摘要:随着互联网的发展,Web数据库的应用越来越广泛,用户对访问Web数据库页面的速度的要求也越来越高。访问Web页面的速度取决于很多因素,主要取决于网络的速度、Web页面所在服务器的性能、Web页面本身的设计以及web数据库设计等多方面原因。本文主要从WEB页面设计这一方面介绍基于ASP的动态网站优化策略。  关键词: ASP;WEB数据库;动态网站;静态网站;查询优化  中图分类号:TP393
期刊
摘要:用CMTS+CM技术实现宽带接入是有线电视的主流方向。本文对其传输的原理、技术指标、改造注意事项及综合性能进行了分析。  关键词:CMTS+CM;有线电视;双向传输;原理  中图分类号:TP393 文献标识码:A文章编号:1009-3044(2007)15-30697-02  The Principle of Cable Network Two-way Transmission Based
期刊
摘要:当今世界,信息已经成为各个部门的重要财富和资源。在信息系统的实现过程中,需要经常编写数据库连接代码。通过对.NET技术的研究,实现基于ADO.NET技术的SQL SERVER动态连接组件的设计和实现。在信息管理系统软件开发中,达到实现代码的复用,提高软件开发的效率和稳定性,减小软件后期维护的难度的目的。  关键词:信息管理系统;数据库连接;动态组件;ADO. NET  中图分类号:TP311
期刊
摘要:本文提出了一种使用Ajax+WebService开发Web应用的模式,并探讨了该模式将吸引越来越多开发者关注的原因。本文观点对于Web应用开发人员具有参考价值。  关键词:Ajax;WebService;模式  中图分类号:TP312文献标识码:A文章编号:1009-3044(2007)15-30712-01  Building WebApps in Use of Ajax & Web Se
期刊
摘要:针对IP网络普遍运行主要路由协议IGP,从管理平面和控制平面探讨了监测方法, 分析网络拓扑改变对互连网性能的影响,从而提高网络响应拥塞和拓扑改变的能力,为实施网络SLA提供有效的保障手段。  关键词:路由;监测;管理平面;控制平面  中图分类号:TP393 文献标识码:A文章编号:1009-3044(2007)15-30704-02  Research on the Method of IG
期刊
摘要:通常在一个网站中会有几十个甚至几百个风格相似的页面,如果每次都重新设定网页结构以及相同栏目下的导航条、各类图标就显得非常麻烦,不过我们可以利用网页模板功能来简化操作。其实,模板的功能就是把网页布局和网页内容分离,在布局设计好之后将其存储为模板,这样相同布局的页面可以通过模板创建,因此能够极大提高工作效率。在网页的后期维护中,网页模板也发挥着同样巨大的作用,让网页更新变得不再困难。  关键词:
期刊
摘要:首先分析了现有的图书联机编目系统的局限性,进而根据现有的网络技术,提出一种基于 Web Service 的图书联机编目改进方案,并给出了具体的功能模块。  关键词:联机编目;Web Service;Z39.50  中图分类号:TP393文献标识码:A文章编号:1009-3044(2007)15-30674-02  A Study on Union Catalogue Based on Web
期刊
摘要:MapObjects是一种功能强大的GIS开发组件,但它并未提供一个专用的地质、矿产地图形符号库。利用Visual Basic 6.0 和MapObjects以及数据库软件Access设计了基于TrueType字体可扩展的矿产地符号库,通过MapObjects的渲染功能,实现矿产地符号与TrueType代码索引之间关联,通过符号的组合,颜色的改变,可进行矿产地符号的快速、无限的扩充。  关键
期刊
摘要:基于Vrml技术完成了三维虚拟校园的设计和实现,对建模、交互控制及优化技术进行了详细的介绍和分析,为研究和探索Vrml技术在虚拟建筑展示领域的应用提供了有益的思路。  关键词:虚拟校园;Vrml;建模;交互控制;优化  中图分类号:TP393文献标识码:A文章编号:1009-3044(2007)15-30671-02  Research and Implementation of Virtu
期刊