摘 要
本系统采用B/S(Browser/Server)结构,ASP.NET为开发语言,SQL Server 2005为数据库来进行设计与开发。该系统主的功能是帮助人们管理学校人文科研项目等。基本功能包括登录、项目展示、成果展示、人员展示、科研分查询等。本论文,简要阐述了此次毕业设计题目“科研管理系统”的开发背景与开发环境,且对系统的构架进行分析,并由此划分出各个模块,有基础管理模块、人员管理模块、部门管理模块、项目管理模块、成果管理模块、科研分管理模块。详细介绍了系统各个模块与功能的实现原理,本文详细介绍了网上系统的需求分析、功能设计和系统设计等,并通过流程图和文字加以解释说明。在系统设计中给出数据库的设计和本系统的总体设计方案,在系统实现中具体介绍了各个功能的所能实现的情况和主要代码,同时附有运行界面图,最后总结开发阶段与测试阶段所遇到的问题与解决方法。
关键词:ASP.NET、SQL Server2005、三层结构、Ajax技术、角色、安全
目 录
第一章 系统开发理论依据 1
1.1 ASP.NET概述 1
1.1.1 ASP.NET基本含义和特点 1
1.1.2 ASP.NET的优点 1
1.2 SQL介绍 2
1.3 B/S结构介绍 2
1.4三层架构 3
第二章 需求分析和系统功能设计 5
2.1系统项目依据及目标 5
2.2系统功能模型的建立 6
第三章 系统规划和概要设计 8
3.1 系统功能模块 8
3.2 方法概要 10
3.3系统流程图 10
3.3.1系统的逻辑体系结构 10
3.3.2系统流程图 11
3.4系统解决方案项目构成 13
第四章 数据库层的设计与实现 15
4.1 数据库概念结构设计 15
4.2数据库表结构设计 15
4.3 存储过程设计 18
4.4 数据库安全设计 20
第五章 业务逻辑层设计与实现 22
5.1 实体类设计 22
5.2数据访问层设计 23
5.3业务逻辑层设计 24
第六章 界面表示层设计 26
6.1学术期刊的增、删、改、查、设计 26
第七章 系统测试,维护以及安全 30
7.1系统测试 30
7.1.2 系统运行 30
7.2系统维护 30
7.3系统安全 30
第八章 系统总结 33
参考文献 36
第一章 系统开发理论依据
1.1 ASP.NET概述
1.1.1 ASP.NET基本含义和特点
ASP是Active Server Page的缩写,意为“活动服务器网页”。ASP是微软公司开发的代替CGI脚本程序的一种应用,它可以与数据库和其它程序进行交互,是一种简单、方便的编程工具。ASP的网页文件的格式是.asp,现在常用于各种动态网站中。 ASP是一种服务器端脚本编写环境,可以用来创建和运行动态网页或web应用程序。ASP网页可以包含HTML标记、普通文本、脚本命令以及COM组件等。利用ASP可以向网页中添加交互式内容(如在线表单),也可以创建使用HTML网页作为用户界面的web应用程序。 与HTML相比,ASP网页具有以下特点:
(1)利用ASP可以实现突破静态网页的一些功能限制,实现动态网页技术;
(2)ASP文件是包含在HTML代码所组成的文件中的,易于修改和测试;
(3)服务器上的ASP解释程序会在服务器端制定ASP程序,并将结果以HTML格式传送到客户端浏览器上,因此使用各种浏览器都可以正常浏览ASP所产生的网页;
(4)ASP提供了一些内置对象,使用这些对象可以使服务器端脚本功能更强。例如可以从web浏览器中获取用户通过HTML表单提交的信息,并在脚本中对这些信息进行处理,然后向web浏览器发送信息;
(5)ASP可以使用服务器端ActiveX组建来执行各种各样的任务,例如存取数据库、发现那个Email或访问文件系统等。
(6)由于服务器是将ASP程序执行的结果以HTML格式传回客户端浏览器,因此使用者不会看到ASP所编写的原始程序代码,可放置ASP程序代码被窃取。
ASP.NET不仅仅是 Active Server Page (ASP) 的下一个版本,而且是一种建立在通用语言上的程序构架,能被用于一台Web服务器来建立强大的Web应用程序。ASP.net提供许多比现在的Web开发模式强大的优势。
1.1.2 ASP.NET的优点
ASP.NET的主要优点大概可以归纳如下:
(1)ASP.NET是把基于通用语言的程序在服务器上运行。不像以前的ASP即时解释程序,而是将程序在服务器端首次运行时进行编译,这样的执行效果,当然比一条一条的解释强很多。
(2)ASP.NET构架是可以用Microsoft(R)公司最新的产品 Visual Studio.net开发环境进行开发,WYSIWYG(What You See Is What You Get所见即为所得)的编辑。这些仅是ASP.net强大化软件支持的一小部分。
(3)因为ASP.NET是基于通用语言的编译运行的程序,所以它的强大性和适应性,可以使它运行在Web应用软件开发者的几乎全部的平台上(笔者到现在为止只知道它只能用在Windows 2000 Server上)。通用语言的基本库,消息机制,数据接口的处理都能无缝的整合到ASP.net的Web应用中。ASP.net同时也是language-independent语言独立化的,所以,你可以选择一种最适合你的语言来编写你的程序,或者把你的程序用很多种语言来写,现在已经支持的有C#(C++和Java的结合体),VB,Jscript。将来,这样的多种程序语言协同工作的能力保护您现在的基于COM+开发的程序,能够完整的移植向ASP.net。
ASP.NET一般分为两种开发语言,VB.NET和C#,C#相对比较常用,因为是.NET独有的语言,VB.NET则为以前VB程序设计,适合于以前VB程序员,如果新接触.NET,没有其他开发语言经验,建议直接学习C#。(4)ASP是运行在服务器端,所以无须担心浏览器是否支持ASP所使用的编程语言,用户端只要使用可执行HTML码的浏览器,即可浏览Active Server Pages所设计的网页内容。ASP在服务器端运行,当程序执行完毕后,服务器仅将执行的结果返回给客户浏览器,这样也就减轻了客户端浏览器的负担,大大提高了交互的速度。
(5)Active Server Pages的程序代码隐藏,在客户端上仅可以看到由ASP输出的动态HTML文件。因而可以避免所写的源程序被他人剽窃,也提高了程序的安全性。
(6)可使用服务器端的脚本来产生客户端的脚本。
(7)面向对象(Object oriented),并可扩展ActiveX Server组件功能。
(8)ActiveX Server Components(ActiveX服务器组件)具有无限可扩充性。可以使用任何编程语言来编写所需要的ActiveX Server 组件。
(9)可以通过ADO(ActiveX Data Objects,微软的一种新的数据访问模型,是一种可以提供WEB页面开发者轻松存取Inter的数据库,并可以在用户端实现网上立即、即时更新显示的最新WEB页面数据库技术。)非常方便地访问数据库,从而使存取数据库变得轻松容易。
1.2 SQL介绍
SQL是英文Structured Query Language的缩写,意思为结构化查询语言。SQL语言的主要功能就是同各种数据库建立联系,进行沟通。按照ANSI(美国国家标准协会)的规定,SQL被作为关系型数据库管理系统的标准语言。SQL语句可以用来执行各种各样的操作,例如更新数据库中的数据,从数据库中提取数据等。目前,绝大多数流行的关系型数据库管理系统,如Oracle, Sybase, Microsoft SQL Server, Access等都采用了SQL语言标准。虽然很多数据库都对SQL语句进行了再开发和扩展,但是包括Select, Insert, Update, Delete, Create,以及Drop在内的标准的SQL命令仍然可以被用来完成几乎所有的数据库操作。
1.3 B/S结构介绍
B/S(Browser/Server)结构即浏览器和服务器结构。它是随着Inter技术的兴起,对C/S结构的一种变化或者改进的结构。在这种结构下,用户工作界面是通过www浏览器来实现,极少部分事务逻辑在前端(Browser)实现,但是主要事务逻辑在服务器端(Server)实现,形成所谓三层3-tier结构。这样就大大简化了客户端电脑载荷,减轻了系统维护与升级的成本和工作量,降低了用户的总体成本(TCO)。
以目前的技术看,局域网建立B/S结构的网络应用,并通过Inter/Intra模式下数据库应用,相对易于把握、成本也是较低的。它是一次性到位的开发,能实现不同的人员, 从不同的地点,以不同的接入方式(比如LAN, WAN, Inter/Intra等)访问和操作共同的数据库;它能有效地保护数据平台和管理访问权限,服务器数据库也很安全。
1.4三层架构
随着软件工程的不断进步和规范以及面向对象编程思想的应用,人们对封装、复用、扩展、移置等方面的要求,使得双层架构显然更加臃肿繁琐,三层程序架构体系应运而生,可以说,三层架构体系结构是面向对象思想发展中的必然产物。所谓三层架构,是在客户/服务之间加入了一个"中间层",也叫组件层。它与客户层、服务器层共同构成了三层体系。这里所说的三层体系,不是指物理上的三层,不是简单地放置三台机器就是三层体系结构,也不仅仅有B/S应用才有三层体系结构,三层是指逻辑上的三层。通过引入中间层,将复杂的商业逻辑从传统的双层结构(Client-Server)应用模型中分离出来,并提供了可伸缩、易于访问、易于管理的方法,可以将多种应用服务分别封装部署于应用服务器,同时增强了应用程序可用性、安全性、封装复用性、可扩展性和可移置性,使用户在管理上所花费的时间最小化,从而实现了便捷、高效、安全、稳定的企业级系统应用。三层体系架构具体包括:表示层、业务逻辑层、数据访问层。
(1) 表示层:即用户接口层,是由ASP.NET技术的Web窗体和Web用户控件组合起来构成的。表示层运行在客户端浏览器上,产生用户视图。在业务逻辑层发生变化时通过改变表示层的组合以及做一些简单的调整就可以很好地适应新的业务逻辑层。
(2) 业务逻辑层:这一层是从整个系统功能设计中抽取大量具有共性的模块,把它们统一设计成为系统公共的可重用的组件。由COM+组件服务管理器统一配置管理组件。
(3) 数据访问层:用来管理和存储数据,实现数据访问功能,设计数据库,定义数据表结构、表的索引、数据表之间的关联,定义数据库中的视图以及操作数据的存储过程,设计数据库的安全等等。该层由数据库管理系统如SQL Server来管理和控制。
第二章 需求分析和系统功能设计
信息系统的开发不仅仅是一个应用程序的编写过程,最重要的是在系统分析和系统设计的阶段所做的的工作,科研管理系统是基于Microsoft Visual Studio 2008系统开发的Web应用程序,它针对有关目标设计系统开发背景,运行环境等进行分析,通过数据库需求分析、系统功能模块设计等实现系统及功能模块。科研水平逐渐成为衡量一个高校的重要指标,高校作为重要的科研机构,如何对学校大量的科研信息进行高效、安全的保存、处理、统计、加工等管理操作,将日常的科研管理工作更加规范化、科学化,建立高校科研管理系统进行科研管理工作是每一个高校必由之路。高校科研管理系统数据库设计是高校科研管理系统设计中的一项核心工作,所有的管理工作都必须以数据库为中心,进而建立高校科研管理系统。
2.1系统项目依据及目标
科研管理系统是以科研项目流程为核心,全方位通过计算机来管理科研项目申报、项目开题、项目合同、实施进度、项目结题、科研成果、项目经费、分类汇总分析和科研分计算等科研活动,以达到方便、高效地管理和控制,提高管理效能。该系统既满足学院领导和科研决策者对科研活动的宏观管理与决策的需要,满足科研管理部门对教师科研分的统计、汇总和查询,也满足各系部单位或本人对科研项目的查询和管理工作,同时也便于和教育厅的科研管理系统的数据进行对接。
系统项目内容:
1. 实现对科研日常事务的管理:科研项目、科研成果、完成情况等信息管理。
2. 实现对科研信息的查询、教师科研分的查询。
3. 提供全方位的科研管理服务,为学校各项科研管理业务提供信息化支持。
4. 辅助科研负责人或科研管理者管理相应的科研工作,及时掌握、了解学院教师的科研情况,方便且高效地完成科研管理工作。
系统目标及要解决的问题:
系统能及时为学校提供科研信息,辅助管理人员制定科研计划;分析科研计划及合同完成情况,实现对科研任务、科研计划、合同执行的管理和控制;完成科研工作量的计算、统计、审核;构建系统的安全解决方案,确保系统的安全性和保密性;实现对科研工作人员的管理及登录系统时的权限分配。
该系统需要解决的功能包括项目申报、成果管理、经费管理、综合查询、科研分管理、角色管理、部门及人员管理、数据安全性、数据导入导出等。
1. 项目管理功能
项目申报查询:用于按时间段、申报单位、项目名称、项目编号等条件下进行项目申报信息的总体信息查询;项目申报编辑:用于对个人申报的信息进行增、删、改等编辑操作;项目日常管理:用于对项目进程过程中日常信息的编辑管理工作。
2. 成果管理功能 提供科研成果信息的输入,编辑,查询等功能。
3. 经费管理功能 提供科研经费信息的输入,编辑,查询等功能。
4. 部门及人员管理功能
部门管理:设置相关部门名称;人员管理:查询或设置科研人员的基础资料。
5. 科研分管理功能 科研分的审核、统计、查询和报表等功能。
6. 角色管理功能
角色分配:建立系统操作中各类人员角色信息,用于进行权限控制,系统中角色分为四个层次:校管理级别、系部等二级部门级别、普通教师级别和系统维护级别。
7. 综合查询功能 用于查询本级及本级以下角色用户的项目信息。
2.2系统功能模型的建立
通过 对安徽财贸职业学院科研管理的需求调研、分析,将科研管理系统分为科研项目管理、科研成果管理、学校机构管理、部门人员管理、科研信息查询、基础数据维护、权限管理等几个主要的模块,使用该系统的人员可以分为系统维护员、系管理员、校管理员、一般教师等几种角色。
(1) 系统维护员:整个系统的管理者,具有最大的权限功能,主要完成用户角色信息的管理、部门信息的管理、系统基础数据的维护等。
(2) 系管理员:
(3 ) 校管理员:
(4 ) 一般教师:
不同的角色完成不同的功能。系统功能模型如图所示
第三章 系统规划和概要设计
3.1 系统功能模块
学校科研管理系统的主要任务是用计算机对各种科研信息进行日常的管理,如查询、修改、增加、删除以及存储等,迅速准确地完成各种科研信息的统计计算和汇总工作,快速打印出科研信息报表,针对系统服务对象的具体要求,设计了学校科研管理系统。系统主要包括基础管理、部门管理、人员管理、项目管理、成果管理、科研分管理六大模块。各模块之间并非各个独立,而是相互联系,相互关联在一起的,从而使本系统能够很好的完成所设计的功能。系统有四种不同角色:普通教员、系管理员、校管理员。不同角色可做不同的操作。该系统功能模块及其子模块如图3-1:
1.普通教员登录:可以浏览、查看基础管理中的所有信息、可以编辑个人信息,可以浏览、查看所在系信息和系中所有教研室信息,可以浏览、查看、编辑本人的项目、项目工作量信息,申报项目、项目经费,浏览查看本人成果、成果获奖信息,申报成果、成果经费,科研分根据项目和成果自动添加,可以查看、编辑本人的科研分。
2.系管理员登录:可以浏览、查看基础管理中的所有信息、可以编辑个人信息,可以浏览、查看所在系信息和系中所有教研室信息,可以新增、编辑教研室,可以浏览、查看、编辑系内的项目、项目工作量信息,申报项目、项目经费,浏览查看系内成果、成果获奖信息,申报成果、成果经费,科研分根据项目和成果自动添加,可以查看、编辑本系的科研分。
3.校管理员登录:可以浏览、查看基础管理中的所有信息、可以新增和编辑,可以编辑个人信息,可以浏览、查看所有系信息和系中所有教研室信息以及研究机构,可以新增、编辑系部、研究机构和教研室,可以浏览、查看、编辑校内所有项目、项目工作量信息,申报项目、项目经费以及审核申报的项目,浏览查看校内所有成果、成果获奖信息,申报成果、成果经费以及审核申报的成果,科研分根据项目和成果自动添加。,可以查看、编辑本校的科研分。
3.2 方法概要
科研管理系统是采用面向对象的程序设计思想进行编制的。用户可以通过主菜单调用系统的各项功能。
(1)面向对象设计不再是单纯的从代码的第一行一直编到最后一行,而是考虑如何创建类和对象,利用类和对象来简化程序设计,并提供代码的封装和可重用性,便于程序的维护与扩展。
(2)所谓的对象是一种抽象的名称,用来对应实现世界存在的“东西”。一个窗口、一个按钮、一个菜单都可视为一个对象,而按钮对象、菜单对象、又会出现在窗口对象中,因此按钮对象、菜单对象便是窗口的组件之一。对象内部的数据是不能随意更改的,必须由外部向其传递信息,再由对象按其方法加以处理。用户无需知道其任何细节,操作是封闭的,对象之间能通过方法调用相互通信。
(3)类可视为一个产品模具、一个模块。在面向对象设计中,类是对象的原型,是对象的制作器。类的概念是面向对象程序设计最重要的特征。所谓类,是指由数据结构及其相关操作所形成的集合,描述该类任一对象的共同的行为特征,是对一组性质相同的对象的程序描述,概括了对象的共同性质和数据。
3.3系统流程图
3.3.1系统的逻辑体系结构
本系统采用当前流行的B/S设计模式,基于Windows.NET平台构建Web应用程序,把系统划分为数据层、业务逻辑层和表示层。逻辑体系结构如图3-2所示:
3.3.2系统流程图
本系统分为三个角色:教员、系管理员、校管理员,每个角色具有自己不同的权限。下面会通过流程图一一做出分析介绍。
(1) 教师角色:教师登录系统后可以操作属于自己的信息,可以浏览查看学校的公共信息。可以申报自己的项目和成果、项目经费和成果经费、浏览查看自己的项目和成果信息、浏览查看自己的科研分情况等权限。
(2) 系管理员角色:系管理员也可以操作自己的信息和浏览学校的公共信息。此外系管理员还可以浏览本系的所有教研室及教研室人员,编辑、新增、删除教研室人员。浏览和编辑本系的所有项目和成果信息。浏览戏中科研分信息等。
(3) 校管理员角色:校管理员亦可以操作自己的信息。可以浏览、编辑、新增、删除学校的公共信息。审核申报的项目和成果,浏览和编辑项目和成果信息、项目经费和成果经费、科研分等信息。
流程图如图3-3和图3-4:
3.4系统解决方案项目构成
为了用B/S设计模式的三层体系结构实现本电子商务系统的设计,本人用Visual Studio.NET 2008简体中文企业版设计了一个名为“kyglSystem”的科研管理系统解决方案,用VC#语言在该解决方案中建立了四个项目,如图3-5所示,这四个项目的有机结合,构成了本科研管理系统。这四个项目分别和B/S设计模式的三层体系结,如图4-4。
图3-5 解决方案
这四个项目分别为:Web表示层、BLL业务逻辑类、DAL数据访问类、Model实体类。各层之间互相的引用联系是:首先要将实体类(Model)命名空间在其它各层全部引用,表示层(Web)命名空间中再引用业务逻辑类(BLL),业务逻辑类(BLL)再引用数据访问类(DAL)。
第四章 数据库层的设计与实现
4.1 数据库概念结构设计
(1)局部E-R图,下图为人员信息的E-R图(图4-1)。
图4-1 学术期刊E-R图
(2)集成E-R图,下图为人员信息表的部分关联信息,如图4-2。
图4-2 学术期刊集成E-R图
4.2数据库表结构设计
数据库是所有系统设计中的灵魂部分,没有数据库的系统是毫无价值的,是个残废的系统,所以,数据库是个很重要的部分。下面就详细介绍数据库的设计。
主管单位表:Charge_Unit_Code
Chage_unit_code(主管单位表):用来存储主管单位的详细信息,主键为主管单位编号Id,其为标识列,主管单位名称charge_unit_name。表各字段设计如表4-1
序号 列名 数据类型 长度 小数位 标识 主键 允许空 默认值 说明
1 id int 4 0 是 是 否
2 charge_unit_name nvarchar 30 0 否
表4-1
可以看出,主管单位表里主管单位名称不可以为空,因为员工编号是主键,主键不可以为空。
学术期刊表:Magazine
Magazine(学术期刊表):用来存储学术期刊信息,主键期刊编号Id,其同时也为标识列,还有期刊名称、主办单位、期刊等级、学科类型Id(为了查询方便才设置此列)、学科名称、发行单位、创刊日期、发行方式、发行周期、页数、开本、主编、联系电话、联系地址、电子邮箱、网址、CN号、ISBN号、CN和ISBN号。表各字段设计如表4-2
序号 列名 数据类型 长度 小数位 标识 主键 允许空 默认值 说明
1 id int 4 0 是 是 否
2 magazine_name nvarchar 30 0 否
3 publishUnit nvarchar 30 0 是
4 magazine_grade int 4 0 是
5 subject_id int 4 0 是
6 subjectName nvarchar 30 0 是
7 chargerUnit nvarchar 30 0 是
8 createDate datetime 8 3 是
9 publishForm nvarchar 30 0 是
10 publishCircle int 4 0 是
11 paperSize nvarchar 30 0 是
12 pageNum int 4 0 是
13 magazine_charge nvarchar 30 0 是
14 tel nvarchar 30 0 是
15 address nvarchar 30 0 是
16 email nvarchar 30 0 是
17 CN_code nvarchar 30 0 是
18 ISBN_code nvarchar 30 0 是
19 web_site nvarchar 50 0 是
20 code nvarchar 50 0 是
表5-2
在学术期刊表中期刊编号和期刊名称都不可以为空,因为这两个在数据库中都是起到关键的作用,所以,不可以为空。
主管单位表:main_manage_unit
main_manage_unit(主管单位表):用来存储主管单位的详细信息,主键主管单位编号Id,其同时也为标识列,还有主管单位名称、负责人姓名、联系电话、练习地址、电子邮箱、学校。其表各字段设计如表:4-3
序号 列名 数据类型 长度 小数位 标识 主键 允许空 默认值 说明
1 id int 4 0 是 是 否
2 unit_name nvarchar 30 0 否
3 charger_name nvarchar 30 0 是
4 tel nvarchar 30 0 是
5 address nvarchar 30 0 是
6 email nvarchar 30 0 是
7 univ_id nvarchar 30 0 是
表4-3
期刊等级表:Magazine_grade_Code
Magazine_grade_Code(期刊等级表):用来存储期刊等级的详细信息,主键为期刊等级编号Id,其同时也为标识列,另外还有期刊等级名称。其表各字段设计如表:4-4
序号 列名 数据类型 长度 小数位 标识 主键 允许空 默认值 说明
1 id int 4 0 是 是 否
2 magazine_grade_name nvarchar 30 0 否
表4-4
由于本系统数据库涉及的表太多,只列举四个,其他表与这些表类似,在此不一一列举。
其中学术期刊涉及到的表有:期刊等级表、出版周期表、学科分类表、主管单位表。
学校信息表涉及到的表有:主管单位表。
科研管理部门表涉及到的表有:学校信息表。
特殊人才表涉及到的表有:特殊人才类型表、学校信息表。
学科建设表涉及到的表有:学科表、年度表。
然后根据表的结构依次建立主外键的关系。
4.3 存储过程设计
数据库中的存储过程对应高级语言中的子程序,存储过程的内容是SQL语句,与高级语言的子程序一样,存储过程也有输入输出形参。
存储过程在服务器运行,存储过程执行一次后,就被编译为二进制代码且驻留在高速缓冲存储器中,在以后的操作中,只需从高速缓冲中调用已编译好的二进制代码,提高了系统性能。
在我所做的功能中涉及到了五十多个存储过程(如图4-3),这些存储过程主要是对实体的增删改查。
图4-3 存储过程
下面举例说明其他几个重要的存储过程:
(1)增加学术期刊的存储过程:这个存储过程是将Magazne表里面的所有字段作为参数,通过前台的添加数据,将记录添加到数据库中。
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
--项目名称:科研管理系统
--说明:
--时间:-10-26 10:37:57
ALTER PROCEDURE [dbo].[UP_Magazine_ADD]
@Id int output,
@magazine_name nvarchar(30),
@publishUnit nvarchar(30),
@magazine_grade int,
//……
AS
INSERT INTO [Magazine](
[magazine_name],[publishUnit],[magazine_grade],[subject_id],[subjectName]
)VALUES(
@magazine_name,@publishUnit,@magazine_grade,@subject_id,@subjectName
(2)显示所有学术期刊的记录:这个存储过程主要是提取Magazine表里面的所有记录。存储过程主要代码如下:
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
--用途:查询记录信息
--项目名称:科研管理系统
ALTER PROCEDURE [dbo].[UP_Magazine_GetList]
AS
SELECT
id,magazine_name,publishUnit,magazine_grade,subject_id,subjectName,chargerUnit,createDate,publishForm,publishCircle,paperSize,pageNum,magazine_charge,tel,address,email,CN_code,ISBN_code,web_site,code
FROM [Magazine]
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
(3)修改数据库里面的学术期刊的信息:这个存储过程是根据Magazine里面的Id字段查找到该条记录,然后再做修改,存储过程代码如下:
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
--用途:修改一条记录
--项目名称:科研管理系统
ALTER PROCEDURE [dbo].[UP_Magazine_Update]
@id int,
@magazine_name nvarchar(30),
@publishUnit nvarchar(30),
//……
AS
UPDATE [Magazine] SET
[magazine_name] = @magazine_name,[publishUnit] = @publishUnit
WHERE id=@id
//……
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
(5)编码表Magazine_gradeCode表中的存储过程:根据Id查询符合条件的记录,代码如下:
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
--用途:得到实体对象的详细信息
--项目名称:科研管理系统
ALTER PROCEDURE [dbo].[UP_Magazine_grade_code_GetModel]
@id int
AS
SELECT
id,Magazine_grade_name
FROM [Magazine_grade_code]
WHERE id=@id
获得所有信息的记录,代码如下:
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
--用途:查询记录信息
--项目名称:科研管理系统
ALTER PROCEDURE [dbo].[UP_Magazine_grade_code_GetList]
AS
SELECT
id,Magazine_grade_name
FROM [Magazine_grade_code]
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
由于本系统涉及的存储过程太多,其他存储过程均与以上相似,在此不一一列举。
4.4 数据库安全设计
在本系统中,数据库的安全主要通过数据库的存取控制机制实现的。首先定义各类管理人员的操作权限即角色,然后依据用户表将登录分配为相应的角色。由于人员的复杂性,角色分系统维护员、系管理员、校管理员、一般教师等几种角色。在用户登录时,提取出用户的角色,不同的角色进入系统后,主页中的菜单是不同的,从而保证每种角色的用户,只能看到的操作到自己权限范围内的数据,其他的数据根本看不到,从而基于角色,实现数据的存取控制的安全性。
主外键约束的关系图:
项目所涉及的各表间关系图:
第五章 业务逻辑层设计与实现
5.1 实体类设计
实体类层,即使公用参数层,它为其他各层提供公用的参数,可减少代码的编写量提供系统效率。每一张表都对应了一个实体类,故实体类层共包括了:主管单位类、学术期刊类、期刊等级类、主管单位类、主管单位人员类、特殊人才类、特殊人才类型类、发行周期类、学校信息类、学科建设类、学科类、年度类。
如实体类(Magazine)学术期刊信息类:
using System;
namespace kygl.Model
{
/// <summary>
/// 学术期刊类Magazine
/// </summary>
[Serializable]
public class Magazine
{
public Magazine()
{ }
#region Model
private int _id;
private string _magazine_name;
private string _publishunit;
//……
private string _code;
/// <summary>
/// 期刊编号
/// </summary>
public int Id
{
set { _id = value; }
get { return _id; }
}
/// <summary>
/// 期刊名称
/// </summary>
public string Magazine_name
{
set { _magazine_name = value; }
get { return _magazine_name; }
}
……//
#endregion
}
}
其他类如此类似在此不一一列举。
5.2数据访问层设计
数据访问层主要是系统采用的数据库管理系统(DBMS),在整套企业级数据库应用系统中,它是最重要的一环,其中主要的对象有表、视图、存储过程、函数、触发器等,数据的许多处理都应该由数据库本身去完成,例如将复杂的查询或者数据写入,都封装为存储过程和函数,将数据写入前后要进行的附加操作用触发器实现等等。对于表的创建一般应以数据库原理的第三范式规范来创建,允许一定的冗余。表及视图的创建规范直接影响到代码编写的难易度。如学术期刊访问类的期刊的添加和修改方法:
添加学术期刊的代码如下:
public int Add(kygl.Model.Magazine model)
{
SqlParameter[] parameters = {
new SqlParameter("@magazine_name", SqlDbType.NVarChar,30),
new SqlParameter("@publishUnit", SqlDbType.NVarChar,30),
new SqlParameter("@magazine_grade", SqlDbType.Int,4),
new SqlParameter("@subject_id", SqlDbType.Int,4),
//……
parameters[0].Value = model.Magazine_name;
parameters[1].Value = model.PublishUnit;
parameters[2].Value = model.Magazine_grade_code.Id;//FK
parameters[3].Value = model.SubjectCode.SubjectId;
parameters[4].Value = model.SubjectCode.SubjectName;
//……
return DBHelper.spExecuteCommand("UP_Magazine_ADD",parameters);
}
学术期刊删除代码如下:根据人员编号删除该条记录。
public int Delete(int id)
{
SqlParameter[] parameters = {
new SqlParameter("@id", SqlDbType.Int,4)};
parameters[0].Value = id;
return DBHelper.spExecuteCommand("UP_Magazine_Delete",parameters);
}
5.3业务逻辑层设计
由于组件项目中每个类都设计有一个对后台数据库进行连接的连接字符串成员,为了统一管理,把这个连接字符串成员提取到BLL类中。如学术期刊信息业务逻辑层,其主要代码如下:
using System;
……//
namespace kygl.BLL
{
/// <summary>
/// 业务逻辑类Magazine 的摘要说明。
/// </summary>
public class MagazineManager
{
private readonly MagazineService dal=new MagazineService ();
public MagazineManager()
{}
#region 成员方法
/// <summary>
/// 增加一条数据
/// </summary>
public int Add(kygl.Model.Magazine model)
{
return dal.Add(model);
}
/// <summary>
/// 更新一条数据
/// </summary>
public int Update(kygl.Model.Magazine model)
{
return dal.Update(model);
}
/// <summary>
/// 删除一条数据
/// </summary>
public int Delete(int id)
{
return dal.Delete(id);
}
/// <summary>
/// 得到一个对象实体
/// </summary>
public kygl.Model.Magazine GetModel(int id)
{
return dal.GetModel(id);
}
/// <summary>
/// 获得数据列表
/// </summary>
public IList<Magazine> GetList( )
{
return dal.GetList();
}
#endregion 成员方法
}
}
其他的业务逻辑类与此类似,在此不一一列举。
第六章 界面表示层设计
界面表示层主要是页面接受用户的请求,以及数据的返回,为客户端提供应用程序的访问。
6.1学术期刊的增、删、改、查、设计
学术期刊的主要包括增加学术期刊、删除学术期刊、修改学术期刊,根据根据学术期刊编号查询学术期刊列表的时候链接到学术期刊详情,如图6-1。主要代码为:
/// <summary>
/// 光棒效果和删除提示
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void gvMagazineList_RowDataBound(object sender, GridViewRowEventArgs e)
{
//指定当绑定的为数据列时
if (e.Row.RowType == DataControlRowType.DataRow)
{
e.Row.Attributes.Add("onmouseover", "currentcolor=this.style.backgroundColor;this.style.backgroundColor='#6699ff'");
e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor=currentcolor");
//改行的第个单元格,增加删除确认
e.Row.Cells[8].Attributes.Add("onclick", "return confirm('确认删除吗?')");
}
}
//……
图6-1 人员详细信息
删除学术期刊:是根据学术期刊编号查找该条记录并删除。主要代码是:
//指定当绑定的为数据列时
if (e.Row.RowType == DataControlRowType.DataRow)
{
e.Row.Attributes.Add("onmouseover", "currentcolor=this.style.backgroundColor;this.style.backgroundColor='#6699ff'");
e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor=currentcolor");
//改行的第个单元格,增加删除确认
e.Row.Cells[8].Attributes.Add("onclick", "return confirm('确认删除吗?')");
}
利用这种方法做删除特别注意的是要设置Link Button的Command Name的属性为Delete,人性化设置是在删除的时候应做删除提示,核心代码为Link Button添加事件,即e.Row.Cells[8].Attributes.Add("onclick", "return confirm('确认删除吗?')")如图6-2。
图6-3 删除学术期刊
学术期刊信息详细页如图6-4
图6-4
期刊信息修改页如图6-5
图6-5
第七章 系统测试,维护以及安全
7.1系统测试
7.1.2 系统运行
系统数据库连接上之后就可以运行了,在Microsoft Visual Studio中的工具栏中有一个绿三角图标,点击后就可以运行系统了。如果出现有错误,系统将提示错在什么位置,便于修改。
7.1.1单元测试
以后上所有功能实现后,就要对系统进行系统测试,测试主要是单元测试。
测试一:在学术期刊添加页添加学术期刊信息,按保存按钮,跳转到列表页面,看看是否有该新增的记录。
测试二:删除一条学术期刊信息,跳转到列表页面,看看是否有该条记录。
测试三:修改一条学术期刊信息,跳转到详情页面,看看该条记录是否修改过。
测试四:在查询页面里,随机填写几个查询条件,点击查询按钮,跳转到查询结果页面,看看有没有符合查询条件的记录。
7.2系统维护
软件投入使用后就进入软件维护阶段。系统如果没有维护,在遭到破坏时将造成不可收回的损失,任何一个系统都会有维护,维护工作是软件生存周期中时间最长的一个阶段,也所花费的精力和费用是最多的一个阶段,没有问题时可以很轻松,有问题时,将会很繁重。因此,系统维护一定要很完善。软件维护的内容有四种:校正性维护,适应性维护,完善性维护和预防性维护。如下:
校正性维护:软件使用后,由于软件开发过程中产生错误没有完全在测试中发现,因此有一部分隐含错误被带到维护阶段上来。这些隐含错误在特定使用环境下暴露出来。修改软件性能上的缺陷,应进行确定和修改错误的过程,叫校正性维护
适应性维护:为了使应用软件适应这种变化而修改的过程为使应性修改。
完善性维护:在软件漫长的运行时间中,用户往往会对软件提出新 的功能要求。
由于开发系统的时间比较紧,系统维护方面的工作还没有做,这是本系统最欠缺的部分。但是以后会逐步完成系统的维护功能。
7.3系统安全
因不同角色登录后的权限不同,如系管理员在添加期刊信息、修改期刊信息、删除期刊信息、查看期刊详细信息,如图8-1。
图8-1 人员信息新增
而普通教员登录的时候只能查看期刊信息列表和查看期刊详细信息。如图8-2和8-3。
图8-2
图8-3
第八章 系统总结
本系统是使用ASP.NET及SQL Server 2005数据库来进行设计与开发而成,该系统可以有效的实现科研信息的管理,有助于学校科研部门对信息的管理。本系统基本实现了:基础信息管理、部门管理、人员管理、项目管理、成果管理、科研分管理。虽然这些功能看起来不是很难,但是在毕业设计过程中却也是要花一番功夫的,并不是很容易就可以完成的。所以,本系统还是有很多可取之处的。
科研管理系统虽然说是利用了网络进行管理,但是,这只是大型系统的雏形,而且开发人员少,周期短等各方面因素造成系统的维护方面并不是很好,而且这个系统只能给较小的场所作为管理系统,并不是很适应大型系统开发,因为,大型系统要求的方面要更加精准,不可以存在什么漏洞,此次开发的科研管理系统必然存在漏洞或者是没有考虑全面的方面。而且,系统界面做的并不是很美观,有些地方很不适合科研管理系统。可是,总得来说,还是可以说是一个完整的系统。
上面也分析了,因为开发系统时各方面的原因,在将来可能会提出进一步完善系统,将可能发生的问题缩减到最小,并且进一步开发系统,使系统适应各种类型、各种方面的数据管理,并且把系统做到最完美,界面舒服大方。
心得体会
在这次毕业设计中,在胡配祥老师的指导下完成了科研管理系统的系统调研、平台论证、需求分析、总体设计、详细设计、界面设计。其中主要的可行性分析、需求分析、总体设计,它们都是比较重要的组成部分,也是后期设计软件的基础与必备。需求分析文档编辑的好坏直接影响整个软件设计工作。本系统基本能够实现学校对科研管理部门的管理的功能,在进一步完善的基础上,将可以投入实际的应用。
此次所作课题是科研管理系统,由于我的编程水平和经验不足,有些功能的实现并不完美、并不理想。在已经完成的程序中,也存在许多不尽人意的算法,也没有统一优化,系统有待进一步改善,而这些问题也让我充分认识到了软件开发的困难程度。
通过这次毕业设计,使我对管理类的网站的开发有了一定的了解。对软件开发方法和手段,我都有了一定的认识;丰富了我的软件开发的经验,提高了程序编写的水平。加深理解了在课程中、书本上学到的知识和理论,并使其在实际开发中得到运用。同时通过编写毕业设计论文,掌握了软件文档的书写方法和书写格式。
在很多老师的关心帮助支持下,经过很长的辛勤探索、不懈努力,终于顺利完成了本次毕业设计任务。并为我今后继续学习、深造奠定了基础,我非常感谢各位老师、同学的支持与帮助。
致谢词
感谢我们毕业设计的指导老师胡配祥老师,他严谨细致、一丝不苟的作风一直是我工作、学习中的榜样;他循循善诱的教导和不拘一格的思路给予我无尽的启迪。
感谢我的班主任房丙午老师,他严肃的科学态度,严谨的治学精神,精益求精的工作作风,深深地感染和激励着我。从系统设计的指导到系统的测试,房老师都始终给予我们这个小组细心的指导和不懈的支持。两年多来,房老师不仅在学业上给我以精心指导,同时还在思想、生活上给我以无微不至的关怀,在此谨向房老师致以诚挚的谢意和崇高的敬意。
在此,我还要感谢在一起完成这个项目的其他组员,正是由于你们的帮助和支持,我才能克服一个一个的困难和疑惑,直至本文的顺利完成。特别要感谢组长张学用同学,在我遇到困难的时候,积极帮我解决问题。
在论文即将完成之际,我的心情无法平静,从开始进入课题到论文的顺利完成,有多少可敬的师长、同学、朋友给了我无言的帮助,在这里请接受我诚挚的谢意!最后我还要感谢培养我长大含辛茹苦的父母,谢谢你们!
参考文献
[1]杜兆将 郭鲜凤 刘占文《SQL Server 数据库管理与开发》,北京大学出版社 2006-1
[2] 郑阿奇《ASP.NET 2.0 实用教程》,电子工业出版社 2009-1
[3] 郑阿奇,《C# 实用教程》,电子工业出版社 2008-1
[4]林义正 蔡文龙 吴昱欣 主编,《Visual C# 2005 完全开发指南》,北京科海电子出版社 2008-7
[5] Jsmes Foxall 著 陈秋萍 译,《Visual C# 2005 入门经典》,人民邮电出版社 2007-3 |