中文文献检索系统的设计与开发毕业设计


     ……………………. ………………. ………………… XX大学 毕 业 论 文 题目:中文文献检索系统的设计与开发 院 部 信息科学与工程学院 专业班级 网络工程班 届 次 学生姓名 学 号 指导教师 二ОXX 年 X 月 X 日 装 订 线 ……………….……. …………. …………. ……… 中文文献检索系统的设计与开发 The Design and Development of the Chinese Literature Retrieval System 专业 Speciality 网络工程 Network Engineering 学生 Undergraduate A 指导教师 Supervisor XX大学 二○XX 年 X月 XX Agricultural University June, 20XX 目 录 1 引言 1 1.1 开发背景 1 1.2 开发目的和意义 1 1.3 文献检索背景知识 2 2需求分析 5 2.1 可行性分析 5 2.2 功能分析 5 2.3 系统实体联系图 6 3 系统设计 9 3.1 系统总体规划 9 3.2 概要设计 9 3.2.1 系统总体功能模块图 9 3.2.2 系统的业务流程 10 3.3 数据库设计 11 3.3.1 管理员数据库设计 11 3.3.2 用户数据库设计 11 3.3.3 文献数据库设计 12 3.3.4 文献类别数据库设计 12 3.3.5 目录结构 12 3.3.6 数据库关系图 12 4 主要功能设计 14 4.1 通用模块 14 4.2 登陆模块 14 4.3 用户注册模块 15 4.4 用户信息修改模块 15 4.5检索模块 15 4.6 文献上传模块 18 4.7 文献修改模块 19 4.8 用户管理模块 19 4.9 系统简介模块 19 5 主要问题及解决方法 21 5.1 主要问题及解决方法 21 5.2 待改进的方面 22 6结束语 23 参考文献 24 致谢 25 附录 26 Contents 1 INTRODUCTION 1 1.1 DEVELOPMENT BACKGROUND 1 1.2 DEVELOPMENT AIM AND BACKGROUND 1 1.3 LITERATURE RETRIEVAL BACKGROUND KNOWLEDGE 2 2 SYSTEM ANALYSIS 5 2.1 FEASIBILITY ANALYSIS 5 2 .2 FUNCTION ANALYSIS 5 2 .3 SYSTEM ENTITY CONTACT FIGURE 6 3 SYSTEM DESIGN 9 3.1 System Overall Planning 9 3.2 Constructional Design 9 3.2.1 System Function Module Diagram 9 3.2.2 System Business Process 10 3.3 Database Design 11 3.3.1 Administrator Database Design 11 3.3.2 User Database Design 11 3.3.3 Literature Database Design 12 3.3.4 Document Categories Database Design 12 3.3.5 Directory Strcture 12 3.3.6 Database Relationship Chart 12 4 THE MAIN FUNCTION DESIGN 14 4.1 GENERIC MODULE 14 4.2 LANDING MODULE 14 4.3 USER REGISTRATION MODULE 15 4.4 USER INFORMATION MODIFY MODULE 15 4.5 RETRIEVAL MODULE 15 4.6 LITERATURE UPLOAD MODULE 18 4.7 LITERATURE REVISION MODULE 19 4.8 USER MANGEMENT MODULE 19 4.9 SYSTEM INTRODUCTION MODULE 19 5 THE MAIN PROBLEMS AND SOLUTIONS 21 5.1 THE MAIN PROBLEMS AND SOLUTIONS 21 5.2 STAY IMPROVED 22 6 CLOSING 23 REFERENCES 24 ACKNOWLEDGEMENT 25 APPENDIX 26 中文文献检索系统的设计与开发 网络工程班 指导教师 【摘要】本系统是一个简单的中文文献检索系统,采用B/S架构,.NET的开发平台;其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面,采用SQL Server为后台数据库、Visual C#编程语言作为前台开发语言。本系统主要是实现用户注册、用户登录、信息修改、检索文献、在线预览文献、下载文献的用户功能,检索文献主要分为综合检索、按字母检索、按类别检索三类;管理员登陆、文献上传、文献删除、文献更新、文献修改、用户信息的删除等管理员功能。基本上可以满足中小型文献管理部门的信息化管理工作。 【关键词】文献检索系统;Visual C#;SQL Server The Design and Development of the Chinese Literature Retrieval System 【Abstract】This system is a simple chinese literature system, by B/S architecture,.NET development platform ;Its development contains two handles: The creation and maintenance of the background database and the future applications.It adopts SQL Server database as background database,Visual C# programming language as future development tools.The system is mainly to reach the function of user registration、user login、information modifying、retrieval literature、literature online preview、download documents etc administrator function,search literature is divided into comprehensive search,alphabetical search,search by category three;administrator landing、literature upload、literature delete、literature update、document revision、deletion of user information etc administrator function. Basically to meet the document management sector, small and medium sized information management. 【Key words】Chinese literature retrieval System;Visual C#;SQL Server 1 引言 1.1 开发背景 文献检索[1]是将信息按一定的方式组织和存储起来,并根据信息用户的需要找出有关的信息过程,又称“信息的存储与检索(Information Storage and Retrieval)”。在计算机尚未在文献管理部门广泛使用之前,检索和获取过程主要依靠手工。一个最典型的手工处理过程就是:用户将前往文献资料中心,根据自己的检索内容通过手工缓慢查找的方法,找到相关的文献资料,这将耗费大量的人力和时间,之后将借阅证交给工作人员,工作人员进行记录,这样获取文献的过程就完成了。以上所描述的手工过程的不足之处显而易见,首先检索的效率很低,其次处理能力比较低,一段时间内,所能服务的用户人数是有限的,并且同一个文献只能同时被一个用户借阅并使用,不能处理并发多用户需要同一文献资料的冲突情况。利用计算机来处理这些流程无疑会极大程度地提高效率和处理能力。 人们要适应这个信息社会,必然和web信息打交道,但这样大量且还在指数上升的信息是人们变得茫然,如何从浩瀚的信息海洋中以较低的代价和较高的效率筛选信息,甄别信息,成为一个突出的问题;同时,Internet作为开放、分布的信息空间,其本身固有的特点也阻碍了人们充分利用Internet上的信息资源。因此,人们迫切需要一个真正意义上的、能以一定的策略在互联网上搜集、发现信息,对信息进行理解、提取、组织、处理并为用户提供检索服务,具有信息导航作用的工具,来帮助他们迅速、高效的找到所需的全部信息。 本课题就是利用Internet的现有网络资源和已有的庞大电子文献资料库设计一个基于B/S模式的文献检索系统,用于改善传统检索的现状,帮助在校学生、老师、科技人员等更便捷、快速的获得相关的文献资料和信息知识。 1.2 开发目的和意义 在传统的手工文献检索中,科技文献的标引和检索都是人工完成的,随着电子文献的增多,手工处理文献已经显得力不从心,为了对大量的文献进行自动的处理,需要从文献的标引到检索都用计算机进行处理,使文献处理的数量和速度都大大增加,信息检索系统经过几十年的发展,取得了长足的进展,实现了很多信息检索系统,从基于简单好用的布尔模型系统,到基于向量空间模型和概率模型的检索系统等,使信息检索的精度不断提高,但是不同的检索系统面对不同的文献会显示出不同的性能。中文科技文献 [2]和其他文献比较,有自己的特点:用词规范;在不同级别的刊物上发表的文章,对检索者的相关程度一般不一样,刊物的级别越高,其相关程度越高;科技文献的结构也比较标准,结构清晰等。为了提高信息检索系统的针对性,对现有检索系统进行改进以适应中文科技文献,是很实用和必要的。从而提高中文文献检索系统的性能。 搜索引擎[3]的实现目标就是满足Internet所有用户的需要,用户可以足不出户的检索文献,同时信息要具有实时性、真实性、有效性等特点,这就要求搜索系统的索引数据库及时、准确、有效的更新,与此同时还需给用户提供简洁、优美的操作平台,方便用户更有效地利用系统功能模块,进而达到在最短的时间内获得最大限度的有效数据的目的。学校信息主要语言为简体中文,因此我们初步完善中文信息搜索系统功能。 本课题的目的是设计一个基于B/S模式文献检索系统,主要内容和模块包括:文献数据库的建立,用户的管理,登录身份的管理,文献的查询和检索,文献的上传和下载,文献检索策略的制定和实现,文献资料的后台管理。本课题要求学生掌握的主要相关的知识和技术有:数据库的原理和技术,某一数据库管理系统(sql),网站开发技术,动态网页制作技术,软件工程的方法等。 1.3 文献检索背景知识 文献分为[4]零次文献、一次文献、二次文献、三次文献。 零次文献指未经正式发表的或未形成正规载体的一次文献的形式;一次文献指作者以本人的研究成果为基本素材而创作或撰写的文献,不管创作时是否参考或引用了他人的著作;二次文献指文献工作者对一次文献进行加工、提炼和压缩之后所得到的产物,是为了便于管理和利用一次文献而编辑、出版和累计起来的工具性文献。三次文献指对有关的一次文献和二次文献进行广泛深入的分析综合概括而成的产物。 文献检索语言[5]有分类语言、主题语言、关键词语言、自然语言等。 分类语言是将表达文献信息内容和检索课题的大量概念,按其所属的学科性质进行分类和排列,成为基本反映通常科学知识分类体系的逻辑系统,并用号码来表示概念及其在系统中的位置,甚至还表示概念与概念之间关系的检索语言;主题语言指经过控制的,表达文献信息内容的语词;关键词语言指从文献内容中抽出来的关键的词,这些词作为文献内容的标识和查找目录索引的依据关键词不需要规范化,也不需要关键词作为索引和查找图书资料的工具;自然语言指文献中出现的任意词。 文献搜索途径有著者途径、题名包括书刊名等途径、分类途径、主题途径、引文途径、序号途径、代码途径、专门项目途径等。 著者途径指利用索引从著者、编者、译者、专利权人的姓名或机关团体名称顺序进行检索的途径;一些检索系统中提供按题名字顺检索的途径,如书名目录和刊名目录;分类途径指按学科分类体系来检索文献;文献所附参考文献或引用文献,是文献的外表特征之一,利用这种引文而编制的索引系统,称为引文索引系统,他提供从被引论文去检所引用论文的途径,称为引文途径;依编成的各种序号索引可以提供按序号自身顺序检索文献信息的途径称为序号途径;代码途径指利用事物的某种代码编成的索引,如分子式索引、环系索引等,可以从特定代码顺序进行检索;专门项目途径指从文献信息所包含的或有关的名词术语、人名、地名等的特定顺序进行检索,可以解决某些特别的问题。 文献检索方法[6]有直接法、顺查法、倒查法、抽查法、追溯法、循环法等方法。 直接法又称常用法,指直接利用检索系统检索文献信息的方法;顺查法指按时间顺序,由远及近地利用检索系统进行文献信息检索的方法;倒查法指由近及远、从新到旧,逆着时间的顺序利用检索工具进行文献检索的方法;抽查法指针对项目的特点,选择有关该项目的文献信息最可能出现或最多出现的时间段,利用检索工具进行重点检索的方法;追溯法指不利用一般的检索系统,而是利用文献后面所列的参考文献,逐一追查原文,然后在从这些原文后所列的参考文献目录逐一扩大文献信息范围,一环扣一环的追查下去的方法。循环法是分期分交替使用直接法和追溯法,以期取长补短,相互配合,获得更好的检索结果。 文献检索步骤: (1);明确查找目的与要求。 (2):选择检索工具。 (3):确定检索途径和方法。 (4):根据文献线索,查阅原始文献。 检索工具[7]有(1):目录、索引、文摘目录。(2)百科全书,参考工具书之王。(3):年鉴,按年度系统汇集一定范围内的重大事件、新进展、新知识和新资料,供读者查阅的工具书。(4):手册名录是汇集经常需要查考的文献、资料、信息及有关专业知识的工具书。(5):词典是最常用的一类工具书。(6):表谱、图录。(7):类书、政书。 文献检索的类型:数据检索:以文献中的数据为对象的一种检索;事实检索:以文献中的事实为对象,检索某一事件发生的时间、地点或过程;文献检索:以文献原文为检索对象的一种检索,手段为:手工检索、计算机检索。 2需求分析 2.1 可行性分析 可行性分析是在进行初步调查后所进行的对系统开发必要性和可能性的研究,所以也称为可行性研究。本系统也应从技术可行性,经济可行性和社会可行性三方面来论证[8]。通过一段时间的观察与实践,我认为文献检索系统的可行性分析如下: (1)经济可行性分析 作为文献检索系统这样的小型在线管理系统,其经济成分比重相对较少,主要是支出的费用:其中包括服务器设备购置费、软件开发费用、管理和维护费、人员工资等。由于文献管理系统实行管理员统一操作,系统共享,人员工资,维护费用相对较少,前期的资金投入主要集中于购置服务器设备上。 (2)技术可行性分析 技术上的可行性分析主要分析现有技术条件能否顺利完成开发工作,硬件、软件配置能否满足开发者的需要,各类技术人员的数量,水平,来源等。文献检索系统的工作主要是在用户和文献内容之间架起一座桥梁,能随时随地获取自己所需的文献资料。这一特点非常适合计算机特点,通过网络Internet技术,发挥计算机的信息传输速度快、准确度高的优势。计算机硬件和软件技术的飞速发展,为系统的建设提供了技术条件。 (3)社会可行性分析 社会可行性有时也称为操作可行性,主要论证新系统在企业或机构开发和运行的可能性以及运行后可能一起的对企业或机构的影响,即组织内外是否具备接受和使用新系统的条件。在当前信息技术飞速发展的大环境下,计算机技术和软件技术的更新使文献管理机构完全有可能也有能力采用这样先进的管理技术。它对文献检索带来的影响可以看到:对传统管理理念的冲击,可能引起管理层的变动和人员的调整。对文献管理工作人员的要求提高,使文献管理机构在一定的可能下进行精简,迫使工作人员继续学习新知识。 2.2 功能分析 抽象出当前系统的逻辑模型。在理解当前系统“怎么做”的基础上,抽取其“做什么”的本质,从而从当前系统的物理模型抽象出当前系统的逻辑模型。在物理模型中有许多物理因素,随着分析工作的深入,有些非本质的物理因素就成为不必要的负担,因而需要对物理模型进行分析,区分出本质的物理因素就成为不必要的负担,因而需要对物理模型进行分析,区分出本质的和非本质的困素,去掉那些非本质的困素即可获得反映系统本质的逻辑模型 [9]。 多途径文献检索系统开发的目的是方便用户搜索并访问网络数据库中的文献信息资源,所以本系统应包含功能强大的搜索引擎,它能有针对性的在指定的数据库中以多种手段检索用户需求的文献资料。具体的前后台功能需求说明如下: 1.前台系统功能需求 前台系统是提供给用户,通过网站登录文献检索系统并通过检索引擎进行文献检索操作,并下载相关文献资料。同时也能够进行个人信息修改等其他操作。 (1) 用户能够注册、登录,并对自己的信息进行修改; (2) 用户在个性化搜索引擎中输入关键字,系统可搜索服务器上与该关键字相匹配的文献资料;检索方式需要尽量丰富,满足用户的实际需要。 (3) 用户能够对检索到的文献资料进行下载操作,将服务器上的文献下载到本地进行浏览。 (4) 用户可以查找帮助信息获得使用指导。 2.后台系统功能需求 后台系统主要由管理员登录并进行相关操作,目的是为了维护文献数据库并及时更新文献资料,使得文献数据库保持时效性。 (1) 系统管理员可通过登录页面进入后台管理页面进行数据库管理; (2) 系统管理员可以上传文献资料,同时可以对已经上传的文献进行修改,删除等操作。 2.3 系统实体联系图 根据数据流图[10],抽象出实体类型及实体间联系,用E-R图表示数据模型。系统E-R图如下图2.1所示: 用户 访问 浏览 登录 站点 索引目录 检索系统 检索 建立 提供 检索服务器 Web服务器 解析 系统管理员 管理 图2.1 系统E-R图 从图中可以看到,WEB服务器通过域名解析[11]对应多个站点,多个站点都可以进行检索操作并且检索一个检索服务器,多用户可以访问多个不同站点,可以登录文献检索系统,并进行检索操作,用户在得到检索结果后可以浏览索引目录,而索引目录是由检索服务器建立的,系统管理员可以对文献检索系统进行管理。文献检索系统是由检索服务器[12]提供的。 其中,用户的实体联系图如图2.2所示: 用户 编号 密码 性别 邮箱 名称 图2.2 用户实体E-R图 用户包括用户名、用户密码、邮箱、性别等属性,其中编号为主键。起到区分不同用户的作用。 管理员实体联系图如图2.3所示: 管理员 编号 密码 名称 图2.3 管理员实体E-R图 与用户类似,管理员包括登录名、管理员密码等属性,其中编号为主键。一个文献检索系统可以包含多个管理员。 书籍实体联系图如图2.4所示: 文献 编号 书名 作者 关键字 期刊名 地址 图2.4 文献实体E-R图 文献的字段较多,包括书名、作者、关键字、期刊名、文献地址等属性,其中编号为主键。地址字段显示文献的上传地址,可以从这个地址中进行下载,大大简化了数据库的操作。 3 系统设计 3.1 系统总体规划 本系统从结构上主要划分为两大块:前台用户对文献的查询和后台数据库的设计。查询主要是针对用户需求进行的,主要分综合查询,按字母查询及按类别查询。数据库设计比较有技巧的是对文献的存储,首先文献是大量的数据的集合,直接存入数据库会使数据库的启动比较慢,而且数据库中存入非常庞大的文献数据会使得数据库的管理比较困难,杂乱无章;针对这种情况,把文献的地址存入数据库中,就解决了上述问题,在访问文献时能根据数据地址进行访问,也大大简化了操作流程。 这两块主要结构的设计使前台和后台自然的连接起来,更加方便用户的使用,有利于优化文献检索系统的结构。 3.2 概要设计 3.2.1 系统总体功能模块图 在文献检索系统中,需要用户和管理员两级。用户可以自行登录检索系统,并且可以下载到本地进行详细阅览。文献资料的上传、维护、删除等操作需要由管理员完成。在该系统中,为管理员设计了管理员登录、上传文献、文献管理、用户管理等模块;为用户提供了注册登录、三种检索方式:综合检索、按字母检索、按类别检索,并提供了文献资料的下载等模块。下面分别描述各模块的主要功能,下图给出部分功能模块结构: 登录模块:该模块分为管理员登录子模块和用户登录子模块,分别实现管理员和用户的登录。 上传文献模块:该模块面向已登录的管理员,实现了文献资料的上传以及相关信息的填写,将上传文献以及相关信息存入文献数据库中,以供日后用户检索下载使用。 文献管理模块:面向已登录的管理员,实现已上传文献的信息修改、删除的功能。 用户管理模块:面向已登录的管理员,实现用户信息的删除等功能。 用户注册模块:面向系统用户,第一次使用该系统的用户需要进行注册获得一个登录许可,注册时需要填写个人相关信息,以及姓名密码等信息。 检索模块:是核心模块,有三种检索方式:综合检索、按字母检索、按类别检索;综合检索即对文献数据库中的资料进行检索,可自定检索 文献检索系统 管理员登录模块 用户登录模块 文献上传 文献管理 用户管理 用户注册 信息修改 综合检索 文献检索 字母检索 类别检索 图3.1系统功能模块图 的字段,例如文献名称、作者、关键字、期刊等信息。字母检索增加一项首字母字段,该字段将检索文献名第一个字的字母与所选字母相同的结果。类别检索增加一项类别字段,将在用户所选的类别中进行检索。 文献预览模块:文献被检索出来后可以进行在线预览,查看检索出来的文献是否是用户所需的文献。 文献下载模块:允许登录用户下载检索出来的文献。 3.2.2 系统的业务流程 前台用户操作流程: (!):若没有注册则先注册系统,然后转入系统登录界面,若不是第一次登陆可以直接登陆系统。 (2):登陆后可以修改相应信息,确定后存入后台数据库。 (3):可以根据提示输入相应的条件,检索出来文献之后可以进行在线预览或下载。 (4):点击退出则到重新登陆界面。 后台管理员操作流程: (1):以管理员的身份登录系统。 (2):可以根据提示进行文献的修改、用户信息的修改(修改载入数据库)。 3.3 数据库设计 数据库的设计是本系统的关键部分,因为文献检索系统所存的数据比较多,格式复杂,所以好的数据库是它的关键所在,access数据库虽然可以满足它的基本需要,但是它存储的数据量比较小,不宜对文献或系统的扩充,因此选用比较流行的SQL Server数据库;数据库分为四个表,分别为管理员信息表、用户信息表、文献信息表、文献类别信息表。 3.3.1 管理员数据库设计 管理员信息,包含管理员编号,姓名,登录口令三个属性,如表3.1: 表3.1 管理员信息表 编号 字段名称 数据类型 标识 性质 1 sno int 管理员编号 主键 2 sname nchar(10) 姓名 3 spawd nchar(10) 密码 3.3.2 用户数据库设计 读者信息,包含用户编号,用户姓名,性别,密码、邮箱、昵称这几个属性,如表3.2: 表3.2 用户信息表 编号 字段名称 数据类型 标识 性质 1 cno int 用户编号 主键 2 cname varchar(50) 姓名 3 cpawd varchar(50) 密码 4 csex varchar(50) 性别 5 cemail varchar(50) 邮箱 6 cnickname varchar(50) 昵称 3.3.3 文献数据库设计 文献信息,包括文献编号,文献名称,文献作者,关键字,期刊名,上传地址,分类,上传日期,字母几个属性,如表3.3: 表3.3 文献信息表 编号 字段名称 数据类型 标识 性质 1 Bid int 文献编号 主键 2 Bname nvarchar(200) 书名 3 author nvarchar(50) 作者 4 keywords nvarchar(50) 关键字 5 qkname nvarchar(50) 期刊名 6 location nvarchar(200) 文献地址 7 class nchar(10) 类别 8 uptime datatime 上传时间 9 code nchar(10) 首字母 3.3.4 文献类别数据库设计 文献类别有类别的编号及类别名称两个字段。 表3.4 文献类别信息表 编号 字段名称 数据类型 标识 性质 1 bno int 文献类别号 主键 2 bname nvarchar(50) 类别名 3.3.5 目录结构 App_Code:数据库链接类。 App_Data:存放数据库。 图片文件夹:存放网站显示中的图片。 网站文件夹:存储系统的操作脚本,系统的主要部分。 音乐文件夹:存储网站的后台音乐。 3.3.6 数据库关系图 数据库的相关关系如下:bookclass(文献类别)是依赖于Book表的, bookclass表中的bname字段函数依赖于Book表中的class字段。 图3.2 数据库关系图 4 主要功能设计 4.1 通用模块 Class1的主要功能是实现数据库的连接,因为很多网页中都有连接数据库的操作,把它放入Class1.cs中,可以避免重复编程。代码如下: public static SqlConnection create() { System.Data.SqlClient.SqlConnection con = new System.Data.SqlClient.SqlConnection("server=(local);initial catalog=Northwind;database=xuyanjie;uid=sa;pwd=891112;"); return con; } create()方法返回一个SqlConnection连接,供其他类进行连接时调用。 4.2 登陆模块 文献检索系统的登陆界面如下: 图4.1 用户或管理员登陆界面 用户填写已经注册的用户名和密码,或管理员输入用户名和密码之后,点击登录按钮,系统将数据传至数据库进行判断,若用户名密码正确,则提示登陆成功,否则提示用户名或密码错误。 4.3 用户注册模块 用户注册通过填写用户名、密码、确认密码、Email、昵称、性别相关信息单击注册按钮完成注册功能,系统将用户信息存入数据库,今后用户可以根据注册的内容登录系统。如图所示: 图4.2 用户注册页面 4.4 用户信息修改模块 用户可以根据提示输入相应的修改内容,如密码、Email、昵称等信息,修改存入数据库中,用户以后可根据修改的密码进行登录。界面如下: 图4.3 用户信息修改界面 4.5检索模块 系统的主要部分是检索部分,分为综合检索、按字母检索、按文献检索三种检索方式。综合检索需要用户指定部分或全部检索条件,包括文献名称、作者名称、期刊名、关键字,用户不填写的字段为默认为全部检索;按字母检索比综合检索多了一个字母字段,需要用户选择文档的首字母进行检索;按类别检索多了一个类别字段,需要用户选择文档的类别进行检索。 综合检索: 本部分介绍综合检索部分,用户可以根据提示输入检索字段,然后通过系统数据库的互连可以将文献检索出来,检索字段可以为空,示例将只输入关键字部分,如图: 图4.4 综合检索页面 检索结果显示出来,点击预览,会以相应的格式显示出来。检索结果及预览结果如下图所示: 图4.5 检索结果及预览结果 下载可将文献下载保存到指定的位置,查看文献内容。点击下载结果如下图所示: 图4.6 下载页面 按字母检索模块: 选择文章的首字母可以检索出来所需的文献,实例如下图所示,只选择了首字母字段,没有选中的默认为全部检索。 图 4.7 按字母检索页面 可以进行在线预览和下载。检索结果如下: 图4.8 检索结果 按类别检索: 选择文献类别可以将文献检索出来,示例如下所示,选择类别字段和期刊字段进行检索,没选中的默认为全部检索。 图 4.9 按类别检索页面 可以进行在线预览和下载。检索结果如下: 图4.10 检索结果 4.6 文献上传模块 文献上传是管理员把现有的资料上传入数据库,并在文献修改中全部显示出来,上传如文献名、作者、文献关键字、期刊名、类别、首字母等,并把文献资料传入文献文件夹中。页面如所示: 图4.11 文献上传页面 4.7 文献修改模块 文献修改模块主要是管理员对文献的修改,可根据文献内容进行更新,删除整条文献等。 图4.12 文献修改模块 4.8 用户管理模块 本模块提供管理员对某用户信息的修改,当某用户进行违法操作或不符合操作要求时,管理员可以强制删除其信息。页面如下图: 图4.13 用户管理模块 4.9 系统简介模块 为用户提供了文献检索系统的应用帮助,解决用户在系统使用中的部分常见问题,页面如下: 图4.14 系统简介模块 5 主要问题及解决方法 5.1 主要问题及解决方法 在软件的安装和系统的设计过程中遇到了很多的问题,当然有的是很细微的问题,但是正是这些细小的问题使软件无法运行或系统无法操作,经过耐心的学习,在老师和同学们的帮助下,终于使问题得到了解决。 (1):软件安装问题 因为之前没有接触过sql Server,不知道它和Visual studio[13]有什么样的关系,所以直接就先安装了Visual studio,再安装sql Server 2005时发现它的有些功能是重叠的,如sql server中有Sql Server Business Inteligence Development studio,它的功能和Visual Studio的功能就有些类似,但是功能不全面;在Visual Studio中也有SQLEXPRESS功能[14],这项功能和SQL Server功能有冲突,必须在安装时自定义安装把它掠过,这样SQL Server才能正确的运行。 在初学sql时也遇到了很多问题,但经过仔细的检查,最终使问题得以解决,这里不再详述。 (2):有关框架与模板的问题 在课堂上学的ASP.Net都用框架来划分网页,使之有各样的功能,但是frameset不能和body同时存在,也就是说在框架外不能存在其他的table之类的标记,这样影响了网页的美观性;换一种方法,我学习了模板[15]的知识,使用模板能使网页显示在相应的页面内,使用很灵活,页面做起来更加美观大方。 (3):控件触发的问题 点击LinkButton的查询按钮没有反应,刚开始以为没有触发相应的条件,但是经过仔细检查发现存在OnClick=“LinkButton1_Click“条件”从网上找到解决的办法是:添加CausesValidation=“false”就可以了。 (4):GridView的有关问题 GridView[16]控件的功能很强大,能满足用户的很多需要,例如数据绑定是它的基本功能,要把数据库中的数据在GridView中显示出来并可以进行编辑、删除等操作就需要数据绑定,他可以有两种方法,第一是在控件中根据提示输入相关的内容,在前台生成代码如下: 因为数据的编辑、删除等操作需要获取GridView中的一行即它的Bid,在前台获取是比较困难的,因此转向后台的代码操作,并与数据库进行连接,主要代码如下: string bid = GridView1.DataKeys[e.RowIndex].Value.ToString();//获取GridView中第一行的编号,并记录下来。 string bname=(TextBox)(GridView1.Rows[e.RowIndex].Cells[1].Controls[0])).Text.ToString();//获取第二列的内容即姓名,以此类推。 5.2 待改进的方面 由于时间有限,有些地方做得不是很完善,需要相应的改进。 (1):用户注册、用户信息修改及文献上传等模块中,对用户输入文本框的内容进行验证的不充分,可能使有的不合格的格式输入数据库,给数据库的管理带来麻烦。 (2):由于没有通过批量录入的方式上传文献资料,因此在文献导入和更新等工作流程中,采用了由管理员输入逐个上传的工作方式,使得效率低下,在实际的运用中,需要改进这些地方。 (3):文献检索方式不是很细致明确,有时检索出来的文献可能不是很符合用户要求,因此在检索方式上应该有所改进。 (4):要想在实际生活中得到应用还应有很多的改进,如数据库的设计方面,网页设计方面,使得系统更加满足用户的需要。 6结束语 本次毕业设计是一个简单的中文文献检索系统,在这次毕业设计过程中,了解了SQL Server数据库的基本功能和使用方法,加深了对所学的C#知识的认识,也了解了软件开发所需要的流程,从需求分析到模块设计、再到数据库设计,时刻都要遵循面向对象的原则。 毕业设计要求理论知识和实践的结合,在实践中提高对理论的进一步认识,这次设计不再是教学当中的填鸭式的教育,老师让做什么就做什么,而是一种主动学习的过程,可能设计过程中需要全新的知识,就需要通过各种途径去获得相应的知识,如上网、阅览室查询、询问老师或同学等。这次过程不仅锻炼了自己的动手能力,还增强了与人交流沟通的能力。 回首整个开发过程,让我感悟最深的是一个人的心态问题,计算机是比较高端的技术,有时候学习起来比较困难,有的同学就以各种理由来证明自己不爱学习计算机,说它太难,自己不感兴趣等等,但是细究其原因是一个惰性问题,因为遇到问题根本就不想去解决,没想着去查资料、问老师,最终只能说太难了,学不会之类的来搪塞。通过这次设计,我想真正的去改正自己的这种思想,以全新的面貌迎接未来的挑战。 当然本次毕业设计还有不足之处,希望老师能给予批评指正。 参考文献 [1] 苏文.基于B/S结构的体育文献的设计与实现,2002(01):20-22 [2] 杨宏波,基于Web的中国化学文献检索系统的设计,2007-5-1 [3] 吕鸿略,基于向量空间的中文科技文献信息检索系统研究,2006-12 [4] 瞿亮,基于语义的专业文献学习系统研究与实现,2006-12-20 [5] 宗宁,小型中文全文检索系统的设计与实现,安徽省立医院信息中心,安徽合肥 230001. [6] 王力纲,孙丽芳,白秀梅,基于TRS系列产品制作的三大索引全文检索系统,2001-10 [7] 万延芝,校园网中文信息检索系统的设计与实现,2005-11 [8] 王慧斌,于洪珍。网络多媒体数据库信息检索系统设计方法研究[J].计算机工程与应用:2001-12 [9] 汪肇兵,朱桂林,陈震岳,石教英。个性化智能信息检索的设计与实现[J].计算机工程与应用:2001-14-17 [10] Wolfgang Schult,Andreas Polze.Aspect-Oriented Programming with C# and .NET[M].IEEE Computer;2002 [11]Tim Bray,Jean Paoli.Extensible Markup Language(XML)1.0 [M].W3C Recommendation:Feb2004 [12]Kamalsinh F Chavada.Anatomy of a Web service[M].The Journal of Computing in Small Colleges:2004 [13] 沈洁,杨华Visual Studio与SQL Server开发指南—最优架构与实例(第7版).计算机数据库:2008-9-26 [14] 颜炯 Visual Studio2005 Team System 软件测试专家教程-B5.计算机/网络.2011-04-01 [15] 吴雷 Visual Studio 2005 高级编程.编辑应用程序配置文件.2008-5-22 [16] 李建忠 Microsoft .NET Framework Programming 清华大学出版社 2000-10-12 致谢 在论文的写作过程中遇到了无数的困难和障碍,都在同学和老师的帮助下度过了。尤其要强烈感谢我的论文指导老师-**老师,她对我进行了无私的指导和帮助,不厌其烦的帮助进行论文的修改和改进,她对我的精心指导和严格要求令我印象深刻,她渊博的知识、丰富的阅历、高深的学术造诣、踏实勤奋的敬业精神和严谨求实的治学作风是我学习的榜样,导师高尚的人格情操和坦荡无私的胸怀,更令我终身敬仰。师恩深重,终生难忘,在此表示衷心的感谢。另外,在校图书馆查找资料的时候,图书馆老师也给我提供了很多方面的支持和帮助。在此向帮助和指导过我的各位老师表示最衷心的感谢。 感谢这篇论文所涉及到的各位学者,本文引用了数位学者的研究文献,如果没有各位学者的研究成果的帮助和启发,我将很难完成本篇论文的写作。 感谢我的舍友和帮助过我的同学,在论文的写作过程中给予了我很多素材,还在论文的撰写和排版过程中提供热情的帮助。 感谢我的父母,他们对我的养育之恩永生难忘,他们含辛茹苦把我养大,给我一次上大学的机会,感谢他们对我所做的一切。 由于我的学术水平有限,论文难免有不足之处,恳请各位老师和学友批评和指正。 附录 1:登录模块主要代码: protected void Button1_Click(object sender, EventArgs e) { SqlConnection con = Class1.create();//创建数据库对象 con.Open();//连接数据库 SqlCommand cmd = new SqlCommand("select * from client where cname='"+this.TextBox1.Text+"'and cpawd='"+this.TextBox2.Text+"'",con); //定义尝试从用户表中查找用户名和密码为用户输入的用户名和密码 SqlDataReader sdr = cmd.ExecuteReader();//执行sql命令 if (sdr.Read())//如果有符合的数据 { Session["cname"] = sdr["Cname"].ToString();//将用户名用Session存储起来 if (RadioButtonList1.SelectedValue == "用户")//判断是不是选择用户登录 { Response.Write("");//弹出对话框登陆成功并转入系统公告页面 } } else { Response.Write("");//条件不符合则转入登陆页面 } con.Close();//关闭连接 SqlConnection con1 = Class1.create();//重新建立数据库对象 con1.Open(); SqlCommand cmd1 = new SqlCommand("select * from server where sname='" + this.TextBox1.Text + "'and spawd='" + this.TextBox2.Text + "'", con1); //定义尝试从管理员表中查找用户名和密码为用户输入的用户名和密码 SqlDataReader sdr1 = cmd1.ExecuteReader(); if (sdr1.Read()) { Session["sname"]=sdr1["sname"].ToString(); if (RadioButtonList1.SelectedValue == "管理员") { Response.Write(""); Response.Redirect("文件上传.aspx"); } } else { Response.Write(""); } con1.Close(); } 2:用户注册模块主要代码: protected void Button1_Click(object sender, EventArgs e) { try { SqlConnection con = Class1.create();//创建数据连接对象 con.Open();//打开数据库 SqlCommand cmd = new SqlCommand();//定义sql命令 cmd.Connection = (SqlConnection)con; cmd.CommandText = "insert into client(cname,cpawd,csex,cemail,cnickname)values(@cname,@cpawd,@csex,@cemail,@cnickname)"; //向数据库中插入数据 cmd.Parameters.Add("@cname", SqlDbType.VarChar);//定义变量类型 cmd.Parameters.Add("@cpawd", SqlDbType.VarChar); cmd.Parameters.Add("@csex", SqlDbType.VarChar); cmd.Parameters.Add("@cemail", SqlDbType.VarChar); cmd.Parameters.Add("@cnickname", SqlDbType.VarChar); cmd.Parameters["@cname"].Value = this.TextBox1.Text;//给对象赋值 cmd.Parameters["@cpawd"].Value = this.TextBox2.Text; cmd.Parameters["@csex"].Value = this.RadioButtonList1.SelectedValue; cmd.Parameters["@cemail"].Value = this.TextBox4.Text; cmd.Parameters["@cnickname"].Value = this.TextBox5.Text; cmd.ExecuteNonQuery();//执行操作语句 con.Close();//关闭连接 Response.Write("");//弹出注册成功对话框,转入登陆页面 this.TextBox1.Text = ""; this.RadioButtonList1.SelectedValue = ""; this.TextBox4.Text = ""; this.TextBox5.Text = "";//将文本框清空 } catch { Response.Write("");//弹出注册失败窗口 } } 3:用户信息修改模块主要代码: protected void Button1_Click(object sender, EventArgs e) { try { SqlConnection con = Class1.create();//创建连接对象 con.Open();//打开连接 SqlCommand cmd = new SqlCommand();//创建数据库操作对象 cmd.Connection = (SqlConnection)con; cmd.CommandText = "update client set cpawd='" + TextBox2.Text + "', cemail='" + TextBox4.Text + "', cnickname='" + TextBox5.Text + "' where cname='" + Session["cname"].ToString() + "' ";//更新数据库内容并存储 cmd.ExecuteNonQuery();//执行操作 con.Close(); Response.Write("");//弹出修改成功界面并转入登陆界面 } catch { Response.Write("");//提示修改不成功 } } 4:综合检索模块主要代码: 以下是综合检索的sql语句: protected void LinkButton4_Click(object sender, EventArgs e) { string str = "";//检索条件 string sqlstr = "select * from Book";//检索使用的sql语句 if (this.TextBox1.Text.Trim() != "")//判断文献名的文本框是否为空 { if (str.Trim() == "")//判断检索条件是否为空 { str = "Bname like '%" + TextBox1.Text.Trim() + "%'"; }//增加文献名字段到检索条件中 else { str = str + "and Bname like'%" + TextBox1.Text.Trim() + "%'"; } }//增加文献名字段到检索条件中 if (this.TextBox2.Text.Trim() != "")//判断作者文本框是否为空 { if (str.Trim() == "")//判断检索条件是否为空 { str = "author like '%" + TextBox2.Text.Trim() + "%'";//增加作者字段到检索条件中 } else { str = str + "and author like'%" + TextBox2.Text.Trim() + "%'";//增加作者字段到检索条件中 }} if (this.TextBox3.Text.Trim() != "")//判断期刊文本框是否为空 { if (str.Trim() == "")//判断检索条件是否为空 { str = "qkname like '%" + TextBox3.Text.Trim() + "%'"; //增加期刊到检索条件中 } else { str = str + "and qkname like'%" + TextBox3.Text.Trim() + "%'"; }//增加期刊名到检索条件中 } if (this.TextBox4.Text.Trim() != "")//判断关键字的文本框是否为空 { if (str.Trim() == "")//判断检索条件是否为空 { str = "keywords like '%" + TextBox4.Text.Trim() + "%'";//增加关键字到检索条件中 } else { str = str + "and keywords like'%" + TextBox4.Text.Trim() + "%'";//增加关键字到检索条件中 } } if (str.Trim() != "")//判断检索条件是否为空 { sqlstr = sqlstr + " where " + str;//不为空则在之前加上where构成的一条sql语句 } Session["strr"] = sqlstr.ToString();//将sql语句存入Session变量中用于传递 Response.Redirect("综合检索条件.aspx");//跳转至综合检索条件页面 } 以下用于绑定数据库中的文献信息,呈现在GridView中: protected void Page_Load(object sender, EventArgs e) { { list();//调用list()函数用于文献的下载 } if (Session["strr"] != null)//若sql语句不为空 { BookBinder();//调用BookBinder()函数,用于数据绑定 } } private void BookBinder()//数据绑定 { try { string str = Session["strr"].ToString();//传递sql语句 SqlConnection con = Class1.create();//建立数据库连接对象 con.Open();//打开数据连接 SqlDataAdapter sdr = new SqlDataAdapter(str, con);//读数据 DataSet ds = new DataSet(); //只能用sqldataadapter不能用datareader否则服务器端无法分页 sdr.Fill(ds, "Book");//使用获得的数据填充临时表Book this.GridView1.DataSource = ds.Tables["Book"].DefaultView;//使用默认的试图填充表格 this.GridView1.AllowPaging = true;//设置可以分页 this.GridView1.DataBind();//绑定数据 if (ds.Tables["Book"].Rows.Count == 0) {//判断当前如果没有数据给个提示 this.Label2.Text = "对不起,没有符合的数据!"; } else { this.Label2.Text = ""; } } catch { } } private void list() { SqlConnection con1 = Class1.create();//创建数据库对象 con1.Open();//打开连接 SqlCommand cmd = new SqlCommand("select * from Book",con1); SqlDataReader sdr = cmd.ExecuteReader();//使用数据集存储执行结果 if (sdr.Read())//判断是否有数据 { Session["download"] = Convert.ToString(sdr["location"]);//下载的变量存储在Session中 } con1.Close();//关闭连接 } 5:文献上传模块主要代码: protected void Button1_Click(object sender, EventArgs e) { string filename = this.FileUpload1.FileName;//定义上传组件的文件名 string type = filename.Substring(filename.LastIndexOf(".")+1);//上传类型 string wpath = "文献\\" + filename; if (type == "pdf" || type == "doc" || type == "caj"|| type == "txt") { //判断上传的是否是所列出来的文献类型 this.FileUpload1.SaveAs(Server.MapPath("文献") + "\\" + filename); }//使用文件上传控件将文献上传至定义的路径下 else { Response.Write("");//弹出上传的文献格式有误对话框 } SqlConnection con = Class1.create();//定义数据库连接对象 con.Open();//打开数据连接 SqlCommand cmd = new SqlCommand();//定义数据库操作对象 cmd.Connection=(SqlConnection)con; cmd.CommandText = "insert into Book (Bname,author,keywords,qkname,class,uptime,code,location) values('" + this.TextBox1.Text + "','" + this.TextBox5.Text + "','" + this.TextBox2.Text + "','" + this.TextBox3.Text + "','" + this.TextBox6.Text + "','" + DateTime.Now + "','" + this.TextBox8.Text + "','" + wpath.ToString() + "')";//将文献信息插入数据库 cmd.ExecuteNonQuery();//执行数据操作 con.Close();//关闭数据连接 Response.Write("");//弹出数据添加成功对话框 } 6:文献修改模块主要代码: protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { Databind("select * from Book");//调用Databind函数 } } public void Databind(string sql) { SqlConnection con = Class1.create();//创建数据库连接对象 con.Open();//打开数据连接 SqlDataAdapter sdr = new SqlDataAdapter(sql, con); DataSet ds = new DataSet(); sdr.Fill(ds, "Book"); this.GridView1.DataSource = ds.Tables["Book"].DefaultView; this.GridView1.DataBind(); con.Close(); } protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e) {//编辑文献信息 GridView1.EditIndex = e.NewEditIndex; Databind("select * from Book"); } protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e) {//更新文献信息 string bid = GridView1.DataKeys[e.RowIndex].Value.ToString();//获取文献编号 string bname = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[1].Controls[0])).Text.ToString();//获取文献名称,以下依次类推 string Author = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[2].Controls[0])).Text.ToString(); string Keywords = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[3].Controls[0])).Text.ToString(); string Qkname = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[4].Controls[0])).Text.ToString(); string Location = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[5].Controls[0])).Text.ToString(); string Class = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[6].Controls[0])).Text.ToString(); string Uptime = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[7].Controls[0])).Text.ToString(); SqlConnection con= Class1.create();//创建数据库操作对象 con.Open();//打开数据连接 SqlCommand cmd = new SqlCommand();//定义数据操作对象 cmd.Connection = (SqlConnection)con; cmd.CommandText = "update Book set Bname='" + bname + "', author='" + Author + "', keywords='" + Keywords + "', qkname='" + Qkname + "',location='" + Location + "', class='" + Class + "' where Bid='" + bid + "'";//更新文献 cmd.ExecuteNonQuery();//执行操作 GridView1.EditIndex = -1; Databind("select * from Book"); } protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e) {//执行删除操作 string bid = GridView1.DataKeys[e.RowIndex].Value.ToString(); SqlConnection con = Class1.create(); con.Open(); SqlCommand cmd = new SqlCommand(); cmd.Connection = (SqlConnection)con; cmd.CommandText = "delete from Book where Bid='" + bid + "'"; cmd.ExecuteNonQuery(); GridView1.EditIndex = -1; Databind("select * from Book"); } protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e) { GridView1.EditIndex = -1; Databind("select * from Book"); } protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) {//当鼠标放在某一行时使之变色 int i; //执行循环,保证每条数据都可以更新 for (i = 0; i < GridView1.Rows.Count; i++) {//首先判断是否是数据行 if (e.Row.RowType == DataControlRowType.DataRow) {//当鼠标停留时更改背景色 e.Row.Attributes.Add("onmouseover", "c=this.style.backgroundColor;this.style.backgroundColor='#00A9FF'");//当鼠标移开时还原背景色 e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor=c"); } } } protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e) { GridView1.PageIndex = e.NewPageIndex; Databind("select * from Book"); //重新绑定GridView数据的函数 } 7:用户管理模块主要代码: //SQL语句执行删除操作,用户删除相关用户的信息 本文档由香当网(https://www.xiangdang.net)用户上传

    下载文档到电脑,查找使用更方便

    文档的实际排版效果,会与网站的显示效果略有不同!!

    需要 10 香币 [ 分享文档获得香币 ] 0 人已下载

    下载文档

    文档贡献者

    zhuanyewenku

    贡献于2019-07-09

    下载需要 10 香币 [香币充值 ]
    亲,您也可以通过 分享原创文档 来获得香币奖励!
    下载文档