图书管理系统设计与实现.docx
《图书管理系统设计与实现.docx》由会员分享,可在线阅读,更多相关《图书管理系统设计与实现.docx(30页珍藏版)》请在冰豆网上搜索。
图书管理系统设计与实现
毕业论文(设计)
题目图书管理系统设计与实现
学生姓名
学号
系别计算机科学系
年级级
专业计算机科学与技术
指导教师
职称
完成日期
毕业论文(设计)诚信声明书
本人郑重声明:
兹提交的毕业论文(设计)《图书管理系统设计与实现》,是本人在指导老师的指导下独立研究、撰写的成果;论文(设计)未剽窃、抄袭他人的学术观点、思想和成果,未篡改研究数据,论文(设计)中所引用的文字、研究成果均已在论文(设计)中以明确的方式标明;在毕业论文(设计)工作过程中,本人恪守学术规范,遵守学校有关规定,依法享有和承担由此论文(设计)产生的权利和责任。
声明人(签名):
年月日
摘要
本设计是一个图书信息管理系统的后台数据库的设计。
由于时间和精力的限制本设计仅实现了图书管理系统基本功能的设计与实现。
通过本次设计,达到了了解数据库应用系统的开发过程,熟悉了系统分析和设计的过程和方法的目的。
在实践中掌握了知识,达到了学以致用的目标。
本次设计首先通过查阅资料对图书领域的基本知识有一定的认识,了解用户各个方面的需求,包括现有的以及将来的可能增加的需求。
然后按照数据库设计的六个阶段进行了设计与实现:
需求分析、概念结构设计、逻辑结构设计、物理结构设计、数据库实施、数据库的运行和维护。
数据库在各种信息的提供、保存、更新和查询方面都要求满足各种信息的输出和输入,符合用户的基本需求。
应用SQLSERVER建立数据库,选用C#作为开发工具,完成了对图书管理系统的实现。
本文从图书管理系统的意义和发展入手,随后进行了系统需求分析,接着进行了系统总体结构设计和数据库设计,最后给出系统的详细设计和实现。
索引关键词:
数据库设计SQLSERVERC#设计
1绪论
1.1课题的提出、现状及研究意义
图书馆是文献情报中心,是为教学和科研服务的学术性机构。
它履行搜集、加工、存贮和传播知识信息的职能,与各系资料室互为补充,共同承担为教学和科研提供文献情报资料保障的任务。
图书馆的自动化经历了三个时期:
发展初期、发展时期和网络化时期。
19世纪末到20世纪40年代是图书馆自动化发展的早期阶段,这一时期的主要特点是利用部分机械装置替代人力从事部分图书馆工作,减轻人员的劳动强度。
自1946年首台电子计算机问世后,就有人开始研究计算机应用于图书馆管理的可能性。
1954年,美国海军兵器中心图书馆使用IBM701型计算机实现了单元词组配检索,成为最早使用计算机的图书馆。
但随着各大管理系统的相继应用,单独一台计算机处理复杂图书馆业务的弊病日渐明显,于是出现了图书馆的网络化。
美国俄亥俄州立大学图书馆在1967年建成了第一个书目联机检索系统,成为图书馆管理进入网络化时期的标志。
网络化使各协作网的成员降低了文献情报数据处理的费用,同时网络内的情报资源也得到了平衡。
我国图书馆自动化的发展起步较晚,从70年代中期开始,经历了如下几个阶段:
发展初期、单向业务系统阶段和集成系统阶段。
自70年代,我国开始研究图书馆的自动化。
到1980年,我国陆续引进了多种国外文献磁带数据库,利用这些磁带开展联机检索服务,是我国图书馆自动化的发展初期。
从80年代中期开始进入单项业务系统阶段。
由于经费充足和技术力量雄厚,高校图书馆的自动化工作进展最为迅速,但开发的系统多为单业务系统,并且有一大部分只能处理西文图书与期刊。
随着微机价格的下降和中文系统平台开发成功,图书馆管理也进入了集成系统的开发阶段。
进入90年代以来,计算机网络迅速发展,几乎所有的国家都建成了国家级的教育科研计算机网络,并互相连接成国际性网络。
而我国计算机网络也日渐成熟,数字数据网可满足多媒体通讯和组建高速计算机通信网的需要,各类专业广域网纷纷建成并投入使用,如教育科研网CERNET主干网已经连通并投入使用。
计算机网络全球性互连,对图书馆系统自动化的影响远远超出人们的始料,它决定了图书馆自动化发展的方向。
目前许多图书馆根据联网技术要求都对自己的自动化系统进行改造。
计算机网络给图书馆自动化发展带来了更好的前景。
1.2课题的目的和意义
目前,我国有不少的大型图书馆实现了图书管理的计算机化,与此同时,在计算机软件市场上不断涌现出一批功能优异的应用于图书馆的自动化集成软件。
另一方面,现在学校正在应用的系统,界面单调、操作乏味、效率低。
基于这种局面,开发一个应用于Windows平台上的、具有先进的图形界面的中小型图书信息管理系统是我们面临的一项重要课题。
图书馆作为一种信息资源的集散地,图书和用户借阅资料繁多,包含很多的信息数据的管理,现今,有很多的图书馆都是初步开始使用,甚至尚未使用计算机进行信息管理。
根据调查得知,他们以前对信息管理的主要方式是基于文本、表格等纸介质的手工处理,对于图书借阅情况(如借书天数、超过限定借书时间的天数)的统计和核实等往往采用对借书卡的人工检查进行,对借阅者的借阅权限、以及借阅天数等用人工计算、手抄进行。
数据信息处理工作量大,容易出错;由于数据繁多,容易丢失,且不易查找。
总的来说,缺乏系统,规范的信息管理手段。
尽管有的图书馆有计算机,但是尚未用于信息管理,没有发挥它的效力,资源闲置比较突出,这就是管理信息系统的开发的基本环境。
数据处理手工操作,工作量大,出错率高,出错后不易更改。
图书馆采取手工方式对图书借阅情况进行人工管理,由于信息比较多,图书借阅信息的管理工作混乱而又复杂;一般借阅情况是记录在借书证上,图书的数目和内容记录在文件中,图书馆的工作人员和管理员也只是当时对它比较清楚,时间一长,如再要进行查询,就得在众多的资料中翻阅、查找了,造成查询费时、费力。
如要对很长时间以前的图书进行更改就更加困难了。
基于这个问题,我认为有必要建立一个图书管理系统,使图书管理工作规范化,系统化,程序化,避免图书管理的随意性,提高信息处理的速度和准确性,能够及时、准确、有效的查询和修改图书情况。
1.3论文的章节安排
整篇论文是基于图书管理为背景,从图书管理的知识、体系结构等方面,介绍图书管理的图书管理系统设计与开发实现。
具体章节安排如下:
第一章绪论阐明了论文课题的提出及其意义,以及本课题研究内容。
第二章介绍系统的需求分析,并重点分析了系统功能需求分析以及系统的UML图等。
第三章介绍系统设计,并对系统的数据库设计进行的重点分析。
第四章进行系统实现设计的分析,包括界面分析和代码说明。
第五章是结束语。
总结论文所做的主要工作及取得的研究成果;并对系统下一步要做的工作进行了分析。
2相关技术介绍
2.1C#.NET简介
C#(Csharp)是微软对这一问题的解决方案。
C#是一种最新的、面向对象的编程语言。
它使得程序员可以快速地编写各种基于Microsoft.NET平台的应用程序,Microsoft.NET提供了一系列的工具和服务来最大程度地开发利用计算与通讯领域。
正是由于C#面向对象的卓越设计,使它成为构建各类组件的理想之选——无论是高级的商业对象还是系统级的应用程序。
使用简单的C#语言结构,这些组件可以方便的转化为XML网络服务,从而使它们可以由任何语言在任何操作系统上通过Internet进行调用。
.NET是MicrosoftXML图书管理平台。
XML图书管理允许应用程序通过Internet进行通讯和共享数据,而不管所采用的是哪种操作系统、设备或编程语言。
Microsoft.NET平台提供创建XML图书管理并将这些服务集成在一起之所需。
而.NETFramework是一个新的开发平台,它为局域网(LAN)和Internet上的分布式图书信息管理应用提供了一致和有效的支持。
.NETFramework由两个主要部分组成:
CLR(通用语言运行时,CommonLanguageRuntime)和一组统一的类库,包括ASP.NET、ADO.NET、WindowsForms和其他能力。
C#是一个语言,.net是一个平台,上面支持用C#或者VBdotNet写代码。
另外,C#不但可以开发基于.net的应用程序,也可以开发基于WinForm的程序,这就是区别。
若是单纯以概念来说,你可以把.net当做一个工作平台一般,它是一个开发环境的基底,提供你开发Windows、Web、Mobile、XML...等应用程式一个共通的平台,若是要了解深一点,则再去了解其运作的相关机制那是有助于你利用它来开发.C#和.NET主要是应用在网际网路.
C#(读做C-sharp)编程语言是由微软公司的AndersHejlsberg和ScottWillamette领导的开发小组专门为.NET平台设计的语言,它可以使程序员移植到.NET上。
这种移植对于广大的程序员来说是比较容易的,因为C#从C,C++和Java发展而来,它采用了这三种语言最优秀的特点,并加入了它自己的特性。
C#是事件的驱动的,完全面向对象的可视化编程语言,我们可以使用集成开发环境来编写C#程序。
使用IDE,程序员可以方便的建立,运行,测试和调试C#程序,这就将开发一个可用程序的时间减少到不用IDE开发时所用时间的一小部分。
使用IDE迅速建立一个应用程序的过程称为快速反映开发。
.NET是Microsoft的XMLWeb服务平台。
不论操作系统或编程语言有何差别,XMLWeb服务能使应用程序在Internet上传输和共享数据。
Microsoft®.NET平台包含广泛的产品系列,它们都是基于XML和Internet行业标准构建,提供从开发、管理、使用到体验XMLWeb服务的每一方面。
XMLWeb服务将成为您今天正在使用的Microsoft的应用程序、工具和服务器的一部分—并且将要打造出全新的产品以满足您所有业务需求。
更具体地说,Microsoft正在五个方面创建.NET平台,即工具、服务器、XMLWeb服务、客户端和.NET体验。
1、泛型:
在我看来,泛型就是通过将数据类型参数化从而实现了代码的更为灵活的复用,泛型的出现使得C#能够使用同一段代码来操作多种数据类型。
泛型无疑是C#2.0最重大的改进,它的出现赋予了C#代码更强的类型安全,更好的复用,更高的效率和更清晰的约束。
2、匿名方法:
匿名方法允许我们将代码直接与委托实例相关联,使委托实例化工作更加直观和方便。
在我看来,这只是C#又多了一种语法格式而已,不再像以前必须将方法名传给委托实例,而是又多了一种选择。
3、迭代器:
迭代器允许我们更加方便的编写用于foreach语句的类型。
在我看来,迭代器的出现只不过是改进了1.0中不便的可用foreach语句类型的编写限制,简化了一些接口。
4、局部类型:
局部类型允许我们将一个类的代码分别写在不同的cs文件中。
最典型的应用就是使用VS2005创建Form文件时,VS会自动将系统生成的代码与用户代码分开。
局部类型通过partial关键字来声明。
5、空属类型:
空属类型是一种像int,一样可以为空的变量类型。
本质上是一种泛型的应用,是System.Nullable<>的一种类型实例化。
6、静态类:
静态类是只用于包含静态成员的类型,它既不能实例化,亦不能被继承。
2.3SQLSERVER数据库简介
数据库技术的应用,也叫数据库应用技术,是应用数据库开发工具进行数据管理(包括采集、处理、存储、查询、统计、传输、报表)的技术。
在任何应用领域,任何数据管理需求层次,任何档次的机型,都可以采用数据库技术。
实际上,各行各业的信息系统,甚至是国际互联网的信息系统都是基于数据库技术的。
可以说,数据库已成为信息社会的重要基础设施,在计算机应用领域堪称最有应用价值和市场前景的技术。
数据库技术的具体应用过程,是一个典型的把数据转换成信息的过程。
具体来说,就是围绕各用户单位日常手工操作的业务数据、管理数据,在数据库管理系统环境下,运用数据处理技术,开发出相应的业务处理及管理决策系统,并利用系统派生出的高附加值信息,达到提高业务或管理效率、避免浪费或失误、并辅助领导决策的目的。
数据库技术的应用,由于其派生信息的巨大价值,一般都具有很高的投入产出比,并产生可观的经济效益和社会效益。
数据库技术可以开发面向业务处理和综合决策的管理信息系统,比如财务、人事、库存、资料、资产设备、销售、日程、以及会议活动等任何涉及大量规则数据管理方面的程序。
图书资料管理是其中最典型的应用之一。
数据库应用的解决方案包括软件工程的基本思想、数据库理论、用户前端访问界面等三方面的重要内容。
本方案以数据库理论为指导,贯穿软件工程思想,注重用户界面的设计。
方案中的数据流分析对应到软件工程中的需求分析,实体关系图及相应的用户前端访问界面划分对应到软件工程中的概要设计。
在数据库应用系统开发之前,对开发数据库的基本概念应当了解,对数据库的结构、开发数据库应用程序的步骤、开发体系及方法都应当有相当清晰的了解和认识。
数据库应用系统开发的目标是建立一个满足用户长期需求的产品。
开发的主要过程为:
理解用户的需求,然后,把它们转变为有效的数据库设计。
把设计转变为实际的数据库,并且这些数据库带有功能完备、高效能的应用。
SQL(StructuredQueryLanguage),结构化查询语言。
SQL语言的主要功能就是同各种数据库建立联系,进行沟通。
按照ANSI(美国国家标准协会)的规定,SQL被作为关系型数据库管理系统的标准语言。
SQL语句可以用来执行各种各样的操作,例如更新数据库中的数据,从数据库中提取数据等。
绝大多数流行的关系型数据库管理系统都采用了SQL语言标准。
虽然很多数据库都对SQL语句进行了再开发和扩展,但是包括Select,Insert,Update,Delete,Create,以及Drop在内的标准的SQL命令仍然可以被用来完成几乎所有的数据库操作。
SQLServer2005是一个全面的数据库平台,使用集成的商业智能(BI)工具提供了企业级的数据管理。
SQLServer2005数据库引擎为关系型数据和结构化数据提供了更安全可靠的存储功能,使您可以构建和管理用于业务的高可用和高性能的数据应用程序
SQLServer2005特性概况
。
SQLServer2005数据引擎是本企业数据管理解决方案的核心。
此外SQLServer2005结合了分析、报表、集成和通知功能。
这使您的企业可以构建和部署经济有效的BI解决方案,帮助您的团队通过记分卡、Dashboard、Webservices和移动设备将数据应用推向业务的各个领域。
与MicrosoftVisualStudio、MicrosoftOfficeSystem以及新的开发工具包(包括BusinessIntelligenceDevelopmentStudio)的紧密集成使SQLServer2005与众不同。
无论您是开发人员、数据库管理员、信息工作者还是决策者,SQLServer2005都可以为您提供创新的解决方案,帮助您从数据中更多地获益。
4.3数据库设计
4.3.1概念设计
实体——联系方法(Entity—RelationshipApproach)是最常用的表示概念性数据模型的方法。
这种方法使用E-R图来描述现实世界中的实体,而不涉及这些实体在系统中的实现方法,即使不熟悉计算机技术的用户也能理解它。
根据该系统涉及的实体有:
4.3.2逻辑设计
逻辑结构设计的任务就是把概念结构设计阶段设计好的基本E-R图,转换为逻辑结构。
本系统的数据库通过physicaldesign的数据库建模生成sql语句文件,在通过SQLserver的查询分析器运行该文件生成数据库,主要包含了几个数据库表,详细内容请参看系统实现。
5系统实现
5.1系统数据库连接实现
在系统开发过程中,采用三层架构模式开发,因为要多处涉及到对数据库的连接,如果这些连接都在各个ASP.NET程序中去实现,那样将会非常繁琐,代码重复量比较大,因此,为了简化这些连接操作,在开发时设计了一个可重用的类DbHelperSQL.cs,把对数据库的操作都封装在在这个类中,需要用到时生成对象调用便可,其工作流程图如图5-1所示。
其中DbHelperSQL.cs文件和App.config文件的主要代码由如下所示:
DbHelperSQL.cs文件中的主要代码:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Text;
usingSystem.Data.SqlClient;
usingSystem.Configuration;
usingSystem.Data;
usingSystem.Collections;
namespaceDBUtility
{
publicclassDbHelperSQL
{
privatestaticstringstr=ConfigurationManager.ConnectionStrings["CONN"].ConnectionString;
publicstaticDataSetGetAll(stringcomtex)
{
DataSetds=newDataSet();
using(SqlConnectioncon=newSqlConnection(str))
{
con.Open();
SqlDataAdapterdapt=newSqlDataAdapter(comtex,con);
dapt.Fill(ds);
}
returnds;
}
///
///执行SQL语句,返回影响的记录数
///
///SQL语句
///影响的记录数
publicstaticintExecuteSql(stringcomtex)
{
using(SqlConnectioncon=newSqlConnection(str))
{
using(SqlCommandcmd=newSqlCommand(comtex,con))
{
try
{
con.Open();
introws=cmd.ExecuteNonQuery();
returnrows;
}
catch(System.Data.SqlClient.SqlExceptionE)
{
con.Close();
thrownewException(E.Message);
}
}
}
}
publicstaticDataSetSelectAll(stringcomtex)
{
DataSetds=newDataSet();
using(SqlConnectioncon=newSqlConnection(str))
{
con.Open();
SqlDataAdapterdapt=newSqlDataAdapter(comtex,con);
dapt.Fill(ds);
}
returnds;
}
publicstaticvoidExecuteSqlTran(ArrayListSQLStringList)
{
using(SqlConnectionconn=newSqlConnection(str))
{
conn.Open();
SqlCommandcmd=newSqlCommand();
cmd.Connection=conn;
SqlTransactiontx=conn.BeginTransaction();
cmd.Transaction=tx;
try
{
for(intn=0;n{
stringstrsql=SQLStringList[n].ToString();
if(strsql.Trim().Length>1)
{
cmd.CommandText=strsql;
cmd.ExecuteNonQuery();
}
}
tx.Commit();
}
catch(System.Data.SqlClient.SqlExceptionE)
{
tx.Rollback();
thrownewException(E.Message);
}
}
}
}
}
5.2数据库辅助类的设计实现
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Text;
usingSystem.Data;
usingSystem.Data.SqlClient;
usingSystem.Configuration;
namespaceDBUtility
{
publicclassSqlDBHelper
{
privatestaticstringstr=ConfigurationManager.ConnectionStrings["CONN"].ConnectionString;
#region查询语句
publicstaticDataSetSelectAll(stringsql)
{
DataSetds=newDataSet();
using(SqlConnectioncon=newSqlConnection(str))
{
con.Open();
SqlDataAdapterdapt=newSqlDataAdapter(sql,con);
dapt.Fill(ds);
}
returnds;
}
#endregion
#region增删改
publicstaticintExecuteSql(stringsqlInsert)
{
using(SqlConnectioncon=newSqlConnection(str))
{
using(SqlCommandcmd=newSqlCommand(sqlInsert,con))
{
try
{
con.Open();
introws=cmd.ExecuteNonQuery();
returnrows;
}
catch(System.Data.SqlClient.SqlExceptionE)
{
con.Close();
thrownewException(E.Message);
}
}
}
}
#endregion
#region数据备份
publicstaticvoidSave(stringsql)