《基于ASP_NET的科研管理系统的设计与实现.pdf》由会员分享,可在线阅读,更多相关《基于ASP_NET的科研管理系统的设计与实现.pdf(5页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 1994-2010 China Academic Journal Electronic Publishing House.All rights reserved.http:/第4卷第2期2005年3月杭州师范学院学报(自然科学版)Journa l of Hangzhou Teachers College(Na tura l Science Edition)Vol.4 No.2M ar.2005收稿日期:2005201207作者简介:姚争为(1977-),男,浙江海宁人,杭州师范学院信息工程学院教师,主要从事计算机网络应用方面的研究文章编号:100829403(2005)0220149205基
2、于A SP.N ET的科研管理系统的设计与实现姚争为(杭州师范学院 信息工程学院,浙江 杭州310012)摘要:描述基于A SP.N ET的科研管理系统的框架结构及各模块的主要功能,并阐述系统实现的一些关键技术:对照数据库验证用户凭据、使用存储过程、同时处理分页排序关键词:A SP.N ET;ADO.N ET;SQL;科研管理;中图分类号:TP317文献标识码:A0概述科学研究是高等学校的重要工作之一,对于一所综合性院校来说,学科门类多、科研项目及成果涉及领域广、数量亦比较大,给管理造成了一定的困难利用计算机技术、网络技术和数据库技术无疑是最科学和最有效的方法,它既可提高工作效率和工作质量,又
3、便于部门之间进行信息交流,实现资源共享1系统分析1.1系统目标1)通过该系统,用户可以在网上完成科研工作量科研津贴的计算、统计、审核,以及实现对数据的分类查询;2)提供科研标准、文件的实时修改、信息发布、资料下载功能,便于更新管理;3)系统可以自动生成教育部和各级教育管理部门要求的有关科研的各种统计报表;图1系统组成4)能够作为办公自动化系统,真正实现办公无纸化;5)整个系统具有良好的可扩展性及兼容性1.2系统结构考虑到系统的可扩展性和安全性,系统采用多层结构B?S模型,以.N ET技术和数据库技术为基础,利用“瘦客户端”W EB浏览器作为客户端1.3系统组成(见图1)1.3.1系统维护模块此
4、模块提供了数据备份和恢复功能,对科研机构 1994-2010 China Academic Journal Electronic Publishing House.All rights reserved.http:/和科研人员进行管理,包括机构设置、管理人员权限限定、密码修改等1.3.2科研管理模块整个科研系统的主要功能多在该模块中实现,使用者主要是学院科研机构办公人员,其子模块主要包括:科研津贴计算、科研成果统计、上报报表管理、信息查询等1.3.3信息查询及发布模块该模块提供了一些其他科研管理工作的功能,有文件管理、资料管理、信息发布功能,可方便地查看科研管理文件及留存的资料,通过校园网下发
5、有关通知、各种文件和表格2系统关键技术的实现2.1对照数据库验证用户凭据出于安全方面的原因,不应以明文的方式将密码存储在数据库中故该系统存储的是基于用户密码的单向哈希值为避免出现与加密技术有关的密钥管理问题,此方法首选使用为了提高安全性并降低与字典攻击有关的威胁,在创建密码哈希值之前将salt(使用加密技术生成的随机数)与密码结合起来2.1.1编辑应用程序的W eb.config文件,以配置该应用程序的表单身份验证authentication mode=Form s form s loginU rl=login.aspx name=sqlauthcookie timeout=60path=?f
6、orm s?authenticationauthorization deny users=?allow users=3?!-允许所有用户-?authorization2.1.2生成随机Salt值在表单验证文件的顶部引入以下两个命名空间I mports System.Security.CryptographyI mports System.W eb.Security使用加密技术生成的随机数Private Function CreateSalt(ByV al size A s Integer)A s StringD im rng A s RN GCryptoServiceProvider=N ew
7、 RN GCryptoServiceProvider()D im buff(size)A s Byterng.GetBytes(buff)返回与以64位数字为基组成的组等效的字符串,即随机数Return Convert.ToBase64String(buff)End Function2.1.3基于提供的密码和Salt值创建一个哈希值Private Function CreatePasswordHash(ByV al pwd A s String,ByV al salt A s String)A s StringD im saltA ndPwd A s String=String.Concat(
8、pwd,salt)D imhashedPwd A s String=Form sA uthentication.HashPasswordForStoringInConfigFile(saltA ndPwd,SHA 1)Return hashedPwdEnd Function051杭州师范学院学报(自然科学版)2005年 1994-2010 China Academic Journal Electronic Publishing House.All rights reserved.http:/2.2在ASP.NET中使用存储过程在A SP.N ET中,可以使用ADO.N ET完成存储过程Data
9、Set在ADO.N ET中用作数据容器,并在与数据库断开连接时使用DataSet包含一个或多个DataTable,每个DataTable都包含行集合对于那些熟悉传统ADO环境的用户来说,DataTable可被看作是断开连接的RecordsetDataA dapter在连接到数据库时工作 单个DataA dapter的作用是使用数据库中的数据填充某个DataTable,或将DataTable中的更改写回到数据库,或者二者兼而有之DataA dapter要求Command对象执行各种数据库操作Command对象存放SQL语句或指定数据访问实现方法的存储过程名称 每个DataA dapter有四个属
10、性,指定用于四种数据访问类型之一的命令对象SelectCommand:此Command对象用于从数据库中选择数据;UpdateCommand:此Command对象用于更新数据库中的现有记录;InsertCommand:此Command对象用于向数据库中插入新记录;DeleteCommand:此Command对象用于删除数据库中的现有记录图2用于访问存储过程的主要ADO.NET类以及它们之间的关系但是使用DataA dapter Configuration W izard在数据库中创建存储过程有一个不足之处:当用户向数据库中添加新记录时,系统不能自动生成主键(主键通常是按顺序分配的长整数)在科研
11、管理系统中,如Thesis(论文)表,就要求使用Identity列自动创建新发表论文的I D为新记录设置主键有两种基本技术 应用程序可调用生成下一个可用I D的存储过程,然后将此I D直接放到DataSet的新行中 或者,用于插入记录的存储过程可以为记录派生新I D,然后将其作为返回值传递回应用程序第一种技术需要一点额外的逻辑来获取新I D并将其放到新记录的相应位置但第二种技术要求在存储过程中使用一种新型参数,ReturnV alue参数因为存储过程为主键生成新值后,通常使用存储过程中的RETURN语句返回该值ReturnV alue参数与其他类型的参数有一个重要的区别通常,在ADO.N ET
12、中为Command对象配置的参数其顺序并不重要 参数名称只用来与存储过程中相应的参数相匹配 但是,对于ReturnV alue参数,它必须是列表中的第一个参数也就是说,为Command对象配置ReturnV alue参数时,必须首先在代码中配置该参数,这样它才能获取集合中的第一个数字索引 如果先配置任何其他参数,ReturnV alue参数将不能正常工作更改存储过程的具体代码如下:CREA TE PROCEDURE dbo.M SDN InsertThesis(ThesisN ame nvarchar(40),A uthorN ame nvarchar(10),Journal nvarchar
13、(40),Publishdate datetime,L evel smallint,W ordCount int,IfIndex bit,151第2期姚争为:基于A SP.N ET的科研管理系统的设计与实现 1994-2010 China Academic Journal Electronic Publishing House.All rights reserved.http:/ IndexCatalog nvarchar(10)A Sdeclare ThesisI D intSET NOCOUN T OFF;I N SERT I N TO Products(ThesisN ame,A uth
14、orN ame,Journal,Publishdate,L evel,W ordCount,IfIndex,IndexCatalog)VALU ES(ThesisN ame,A uthorN ame,Journal,Publishdate,L evel,W ordCount,IfIndex,IndexCatalog);SEL ECT ThesisI D=I DEN T ITYRETURN ThesisI D2.3同时处理分页和排序A SP.N ET最大的用处之一就是能够在W eb页中方便地显示数据A SP.N ET包含三个数据W eb控件(DataGrid、DataL ist和Repeater
15、),每个控件都是为丰富数据而设计的在这三个数据W eb控件中,最常用的是DataGrid,这主要是由于它有方便的内置功能集 具体来说,只要设置几个属性并创建两个事件处理程序,DataGrid就可以提供排序、分页或编辑支持 尽管创建可排序或可分页的DataGrid非常简单,但是要创建既可分页又可排序的DataGrid就比较困难了 而管理系统使用时又离不开这项功能,例如二级学院教工年度科研成果汇总表要求以总分或姓氏拼音为序,但由于教工人数多,还要同时实现分页显示的功能将这两个功能合并到一个DataGrid的困难在于:每种方法都使用不同形式的BindData()方法 可排序的DataGrid将字符串
16、参数传入BindData()中,以便指出要将DataGrid的哪一列作为排序依据相反,可分页的DataGrid却不这样做 在此要考虑下面的一系列事件:用户访问该页,就会显示按TeacherN ame字段进行排序的第一页数据 用户单击“Score”(总分)列标题超级链接,就会显示按“Score”(单价)排序的第一页数据 用户单击 导航超级链接,就会请求下一页数据,从而导致在回发时执行PageIndexChanged事件处理程序,以便检索按TeacherN ame排序的数据 因此,用户现在看到的是按TeacherN ame排序的第二页,而不是按Score排序的第二页在从PageIndexChang
17、ed事件处理程序调用BindData()时,需要某种方式来记住排序所依据的字段在往返于使用A SP.N ET的服务器时,可通过许多方法来保存状态;但是,因为在此只需要为当前的W eb页保存这些信息,而不需要为当前用户保存,所以最好的方法是在W eb页的V iewState中存储用户要作为排序依据的列A SP.N ET W eb页中的所有控件都具有一个V iewState,而且在将这些控件放到W eb窗体(formrunat=server)中时,它们的V iewState会保存到隐藏的HTML窗体字段中 这里可以用编程方式向V iewState中插入对象然后,插入的这些对象会与其余的V iewS
18、tate内容一起保存,这就表示这些值在回发时会被记住 关键代码如下:PrivateSubdgResultCollect-Sort(ByV alsourceA sObject,ByV aleA sDataGridSortCommandEventA rgs)dgResultCollect.CurrentPageIndex=0dgResultCollect为DataGrid名称V iewState(SortExprV alue)=e.SortExpressionBindData(e.SortExpression)End Sub有了这个V iewState变量,PageIndexChanged事件处理
19、程序就变得很容易编写 只需将DataGrid的PageIndexChanged属性设置为DataGridPageChangedEventA rgs的N ewPageIndex属性,然后调用251杭州师范学院学报(自然科学版)2005年 1994-2010 China Academic Journal Electronic Publishing House.All rights reserved.http:/BindData(),并传入V iewState对象SortExprV alue的值Private Sub dgResultCollect-Page(ByV al source A s Sy
20、stem.Object,ByV al e A s System.W eb.U I.W ebControls.DataGridPageChangedEventA rgs)Handles dgResultCollect.PageIndexChangeddgResultCollect.CurrentPageIndex=e.N ewPageIndexBindData(V iewState(SortExprV alue).ToString()End Sub最后一个操作是更新Page-Load事件处理程序,以便V iewState对象SortExprV alue被设置为要作为DataGrid默认排序依据的
21、列Private Sub Page-Load(ByV al sender A s System.Object,ByV al e A s System.EventA rgs)HandlesM yBase.LoadIf Not(Page.IsPostBack)ThenV iewState(SortExprV alue)=TeacherN ameBindData(V iewState(SortExprV alue).ToString()End IfEnd Sub3小结文章描述了一个基于A SP.N ET,ADO.N ET和SQL Server2000相结合的W eb科研管理系统的设计原理、总体结构及
22、功能实现,已有效解决了科研管理系统的W eb信息验证、动态发布、检索、更新等问题,并精心设计了DataGrid控件的排序分页方法来增加数据处理的灵活性 诸如网页的安全问题、错误处理中提供像W indow s的消息提示框等问题,有待今后的工作进一步解决参考文献:1Richard Anderson,Brian Francis,等.ASP.NET 1.0高级编程M.北京:清华大学出版社,2002:278312.2美狄金森,等.ADO.NET高级编程M.北京:清华大学出版社,2003:174225.3Petroutsos,等.V isualBasic.NET数据库编程从入门到精通M.北京:电子工业出版
23、社,2002:419470.4陈旭,张学杰.基于ASP.NET技术的W eb人事管理信息系统的设计与实现J.计算机应用研究,2004(11):217219.5叶德谦,马勤勇.使用ADO.NET对关系数据库的访问J.微型电脑应用,2001(8):3942.Design and i mplementation of a scientif ic research managementsystem based on ASP.NETYAO Zheng2wei(College of Information and Engineering,Hangzhou Teachers College,Hangzhou
24、 310012,China)Abstract:Based on A SP.N ET technique,this paper presents a scientific research management system,analyzes itsframework and main functions of each module,and illustrates the i mplementary procedure of some key techniques,including authentication of user credentials against the database,utilization of storage procedure and the multipage datasorting via datagrid.Key words:A SP.N ET;ADO.N ET;SQL;scientific research management351第2期姚争为:基于A SP.N ET的科研管理系统的设计与实现