还剩8页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
图书馆管理系统的研究与开发-查询与借还书的实现摘要本文所提出的是图书馆管理系统的一个基于c/s结构的解决方案通过综合分析图书馆管理的当前需求、潜在需求以及系统开发成本、性能要求、拓展性能,得出采用C/S结构是一个能够较好适应多变需求环境的比较现实的方案它可以令我们以较低的投入,实现将易变的与稳定的要素分离,快速地增添和替换“瘦小”且互相独立的前台应用,保持数据的连续性和继承性通过C/S结构下的多用户应用可以更好地平衡服务器与客户机之间的负荷,大幅度降低网络传输的负荷图书馆管理系统具有方便、快捷、费用低的优点,能将人们从传统的图书管理方式中彻底的解脱出来本文主要介绍图书馆的用户查询以及借书、还书、今日盘点和借阅排行等功能以及其实现的方法其中内容有1.国内图书馆管理研究的现状以及开发本系统的意义2.本系统开发相关的主要技术以及所采用工具的介绍3.对系统的需求进行分析,设定系统的工作规则,并且阐述了选择C/S结构的原因4.系统总体结构和各子模块的介绍,因为图书馆的并发数据量以及所要求的稳定性不同,所以针对不同的需求提出不同的配置方案5.相关数据库的设计以及所实现系统功能模块与其实现方法的介绍6.系统的实施以及在实施中所遇到的关键问题关键词C/S结构、多用户应用、平衡负载、图书馆管理系统THERESEARCHANDDESIGNOFLIBRARYMANAGEMENTSYSTEM-implementationofQueryandBookManagementABSTRACTThispaperpresentsasolutiontodesignanLibraryManagementSystembasedonC/Sstructure.Integratetheanalysisoflibrary’spresentdemandpotentialdemandcostcapabilityandexpandabilityWecangetaconclusionthatusingC/Sstructureisoneofthemosteffectivesolutionswhichcanadapttheunsureandchangefuldemandconditions.Itcanletustousethefewercostingtoseparatethechangefulelementsandsteadyelementsaddandchangeclientapplicationquicklycausetheyaretinyandindependent.Inthatwaywecankeepdatacontinuouslyandinheritable.C/Sstructure’smulti-userstylebalancethepressureofServerandClientandreducemostpressureofnetworktransmission.LibraryManagementSystemwhichhavetheadvantageofconveniencefastandlowercostcanfreepeopleformthetraditionmanagementofLibrarythoroughly.Thispapermainlyintroducesfunctionsoflibrarywhichincludethequeryforreaderborrowbookreturnbooktoday‘sinventoryandlistofborrowfunctionitalsointroducedhowtocarryoutthosefunction.Themaincontentsofthepaperareasfollows
1.Thestatusofresearchofinternallibrarymanagementandthesignificanceofthissystem’sdevelopment.
2.Introducethemaintechnicalrelatedtothissystemandtoolsweused.
3.Analysissystem’sdemandestablishrulesofsystemthenexplainwhywechoseC/Sstructure.
4.Introduceoverallstructureandsub-modelofsystemfirstthenweproposedifferentsetupprojectsaimatthedeferentdemandofconcurrencydataquantityandstability.
5.Introducethedetaildesignofthedatabasesub-module’sinterfaceandthemethodofachieving.
6.Describeimplementationofsystemandtheproblemweresolved.KEYWORDS C/SStructureMulti-userApplicationPressureBalanceLibraryManagementSystem目录TOC\o1-3\h\z\u第一章前言81.1系统开发意义81.2系统简介81.3系统软件及开发平台9第二章开发工具及相关技术102.1C#和MSSQL102.1.1C#概述102.1.2C#开发工具-VisualStudio.Net2003112.2C/S体系结构简介122.2.1C/S结构的数据库应用12第三章系统分析133.1需求分析133.1.1图书馆管理系统的用例133.1.2借还书功能的工作规则143.1.3图书馆系统角色143.2图书馆管理系统的结构153.2.1图书馆管理系统采用C/S结构的原因15第四章总体设计174.1系统设计思想原则174.2系统功能模块设计184.2.1功能模块图184.2.2子功能模设计184.2.3系统物理配置设计19第五章详细设计225.1数据库设计225.2存储过程235.3系统模块设计245.3.1读者使用界面以及管理员登录入口245.3.2读者借还书模块265.3.3今日盘点模块295.3.4逾期查询模块295.3.4借阅排行模块30第六章系统实施316.1程序设计316.2解决的问题31致谢33参考文献34附录(核心代码)35图书馆管理系统的研究与开发-查询与借还书的实现第一章前言1.1系统开发意义在图书馆事业的巨大进步下,图书馆在新世纪的发展具备了坚实的基础全球信息化和高新技术的发展也为图书馆提供了更好的发展机遇现代化服务手段的实施必将取代传统手工的服务手段传统的服务方式是单个、重复、被动、琐碎的手工服务,图书馆采取手工方式对图书借阅情况进行人工管理,由于信息比较多,图书借阅信息的管理工作将会非常混乱和复杂如果要进行查询,就得在众多的资料中翻阅、查找这会使长期管理图书变的非常困难而通过计算机系统对图书进行管理,将会大幅提高管理的效率,并且更具便捷性与安全性本图书馆管理系统是以用户为中心,按照用户的需求提供服务根据日常图书馆的业务设计图书馆管理系统,为普通用户与工作人员提供一个便捷高效的服务平台1.2系统简介图书馆管理系统是一套在学校、工业、商业、企业、事业等各种单位广泛使用的管理系统其主要功能有
(1)读者、图书、用户信息的数据维护模块提供增加、删除、改变和查询、浏览等基本的数据维护功能
(2)综合查询模块可以通过用户选择的数据表和相应的查询条件来查询相关内容
(3)供普通用户用多种方式对图书进行查询的查询模块
(4)读者借还书功能可以实现读者借书、还书和查询读者借阅记录的功能,当读者所借阅的图书超期或者丢失后,对其进行相应的处罚
(5)今日盘点可供工作人员查看每日的进书、借书、还书或报损情况
(6)逾期查询可以通过选择日期来查看在某日下的图书到期或超期情况
(7)借阅排行用来查看在一段时间内的图书或者读者的借阅排行,可用于对借阅信息的挖掘,以便决策
(8)数据维护用于定期备份数据库信息当系统因病毒、误操作、硬件损坏等情况造成数据丢失,管理员可以根据最近一次的数据备份进行恢复1.3系统软件及开发平台操作系统Windows2000AdvanceServer或WindowsXP后台数据库系统SQLServer2000开发工具VisualStudio.Net2003主要的技术C#、ADO第二章开发工具及相关技术2.1C#和MSSQL2.1.1C#概述C#语言是Microsoft公司为推广.NET计划推出的核心编程语言C#语言从C++/C语言演变而来,它保持了C++语言的强大功能,同时简化了C++语言在类、指针、命名空间、多重继承、方法重载以及异常处理等方面的操作,并具有VisualBasic的易学、易用的特点C#进一步支持面向组件(component-oriented)的编程这种组件的关键之处在于它们提供了带有属性、方法和事件的编程模型;它们还具有提供关于组件声明信息的特性;同时,它们编入了自己的文档通过调用由C#大量提供的简便但是功能强大的组件,能够使开发者在较短的时间用简练的语句来实现强大的功能目前传统的商业应用软件开发受到了的各种基于WEB应用的软件开发的挑战,开发者被组织起来开发具有更短开发周期的各种应用,并且需要能够提供更好的可修正性,而不是建立一个可以长久使用的软件系统C#的设计正是充分考虑了这些因素C#会帮助开发者通过更少的代码完成相同的功能,并且能够更好的避免错误发生相比其他开发工具,现存的开发工具是在Internet出现前或是未得到充分应用前出现的,都不能很好的适应目前WEB技术的开发需要无法更好的利用现有的各种WEB标准,如HTML,XML,SOAPC#开发者可以方便的在MS网络平台上扩展自己的应用C#可以将任何组件转变为WEB服务,并且可以被运行于Internet上的任何平台的任何应用调用,重要的是C#对这一特性提供了内置的支持更重要的一点,C#充分考虑到开发人员的习惯,如WEB服务框架可以让任何WEB服务都看起来类似于C#的内置对象,所以让开发人员在开发过程中继续使用他们已经具备的面向对象的开发方法和技巧2.1.2C#开发工具-VisualStudio.Net2003VisualStudio.NET2003是Microsoft的第二代开发工具,用于构建和部署功能强大而安全的连接Microsoft.NET的软件VisualStudio.NET2003的出现主要为了推出C#这一新的开发工具,但是考虑到大量的VB和VC的程序员,它也增强并进一步完善了其前代产品的功能,并与前代产品高度兼容VisualStudio.NET2003在企业级应用程序和在最小的设备上部署应用程序上,都能提供强大的支持通过世界各地各种规模的公司的使用,VisualStudio.NET和.NETFramework提供了一个强大而完善的端到端工具,用以设计、开发、调试和部署用于MicrosoftWindows®和Web的安全的应用程序—这些应用程序强健而且易于使用VisualStudio.NET2003包含Windows.NETFramework的一个增强版本通过对.NETCompactFramework的集成支持,VisualStudio.NET2003也能够对移动和嵌入式设备进行强大的支持如今,开发人员能够使用同样的编程模型、开发工具及编程技能,来构建应用范围广泛的应用程序开发人员可以使用VisualStudio.NET来构建功能强大而且响应能力极好的基于Windows的应用程序构建功能强大而且响应能力极好的PocketPC应用程序构建完善而安全的Web应用程序构建对设备有智能感知能力的完善而安全的移动Web应用程序在以上任何一种应用程序中使用XMLWebservices避免“DLL灾难”消除代价高昂的应用程序部署和维护问题2.2C/S体系结构简介2.2.1C/S结构的数据库应用 C/S体系结构的数据库应用由两部分组成,其分别是客户应用程序和数据库服务器程序也可分别称为前台程序与后台程序C/S的工作方式是,启动服务器程序后,服务器程序随时等待响应客户程序的请求客户程序会将要对数据库中数据的操作发送给服务器程序,服务器程序根据预定的规则作出应答,然后送回结果C/S结构能够充分发挥客户端的处理能力,许多工作都能在客户端进行处理,然后再将请求发送个服务器端这样不仅能够降低服务器端的压力,还能大幅度降低网络传输的负载在C/S结构下,客户端与服务器端的分工明确,各自负责自己的功能,较好的实现了处理程序与数据库的分离,方便系统的拓展与维护在C/S体系的下,数据库真正变成了公共、专业化的仓库,受到独立的专门管理第三章系统分析图书馆在正常运营中面对大量书籍、读者信息,以及两者间相互联系产生的借书信息、还书信息如果采用人工记录的方法,那其不仅效率低下,且错误率较高这会大大影响图书馆的日常管理工作,也将提高管理的费用因此需要电子化的手段来对书籍资源、读者资源、借书信息、还书信息进行管理,了解各个环节中信息的变更,有利于管理效率的提高对于图书馆管理系统,需求分析是数据库信息管理系统开发的第一步也是最重要的一步3.1需求分析需求分析就是描述系统的需求,通过定义系统中的关键类来建立模型分析的根本目的是在开发者和提出需求的人之间建立一种理解和沟通的机制,因此,图书馆管理系统的需求分析也应该是开发人员和用户或者客户一起完成的需求分析首先应定义用例,确定系统的功能需求3.1.1图书馆管理系统的用例
(1)读者查询用例为普通用户提供的图书查询界面,具有多种查询方式
(2)读者信息维护用例实现图书信息的遍历、增加、修改、删除功能
(3)用户信息维护用例实现用户信息的遍历、增加、修改、删除功能
(4)读者借还书用例实现图书借阅记录查询、借阅图书、归还图书以及处罚功能
(5)综合查询用例提供对读者信息、用户信息、图书信息的查询功能
(6)今日盘点用例实现工作人员对每日进书、每日借书、每日还书或每日报损查询
(7)逾期查询用例实现查看某日的图书到期或超期情况的功能
(8)借阅排行用例实现对指定时间段内借阅排行的查看功能
(9)数据维护用例实现数据的备份与还原3.1.2借还书功能的工作规则
(1)读者信息维护在添加读者时,已借图书数这项自动赋为0;不能在修改读者信息模块中修改已借图书数;如果读者的已借书目不为0,不能删除该读者
(2)图书信息维护在添加图书时,图书总数必须等于图书在馆数;当图书总数不等于图书在馆数时,不能删除该图书
(3)读者借书检查读者是否可再借书—检查所借图书是否有库存-增加读者借阅记录-增加相应读者借阅书数量-减少相应图书库存数目
(4)读者还书判断读者所还书时候已经超期-删除读者借阅记录-增加相应图书库存数目
(5)罚款罚款分为超期罚款和遗失罚款,当为遗失罚款时候,在缴纳读者罚金的同时会对当前书库该图书的数量减13.1.3图书馆系统角色图书馆管理系统的角色可以划分为以下3类
(1)普通管理员拥有读者和图书的信息维护,以及读者借还书和综合查询的权限
(2)系统管理员拥有读者、图书、用户的信息维护,以及读者借还书和综合查询的权限但其主要用于用户信息维护
(3)读者可以通过各种方式对图书进行查询3.2图书馆管理系统的结构本系统采用C/S结构,由客户端捕捉动作和消息,将业务进行处理后,访问服务器端的数据库(进行数据的各种查询、填加、删除、检索等操作),最后将结果返回给客户端3.2.1图书馆管理系统采用C/S结构的原因
(1)当前确定的需求 C/S架构可以实现数据库数据的真正“统一”,使分布于两地的数据同步完全交由数据库系统去管理C/S架构的缺点在于如果需要建立“实时”的数据同步,就必须在两地间建立实时的通讯连接,保持两地的数据库服务器在线运行,这需要高昂的投资和复杂的技术支持,高的维护成本但是对于图书馆管理系统来说,主要应用在本地的局域网中,而普通用户只是进行图书查询功能,所以数据更新的频率是很低和集中于少数用户的大量可能的并发性操作来自查询 对于图书馆管理系统的应用要求和环境,C/S结构下的多用户应用可以更好地平衡服务器与客户机之间的负荷,大幅度降低网络传输的负荷
(2)潜在和不确定的需求 要想提高顾客的满意度,就必须真正理解用户的需求,尤其是那些潜在的需求比如,整个作业的节奏加快了,就可能提出更高的要求此外,业务量的不断发展,反映时间的要求不断提高,都会导致对电脑系统需求的提高 在图书馆管理系统中,用户的需求是不断变更的,但数据库的基本对象却是相对稳定并且有序扩充的,也就是说数据库的结构相对稳定 采用C/S结构的数据库应用能将易变的部分(应用和应用规则)和相对稳定的部分(数据和基本属性、结构)分离,能较好适应不确定和变化的需求环境的比较现实的方案它可以令我们以较低的投入,实现将易变与稳定的要素分离,快速地增添和替换“瘦小”而互相独立的前台应用,保持数据的连续性和继承性
(3)性能、开发与品质保证的考虑对于B/S结构来说,当数据量、用户数扩大时,巨大的网络传输量,以及浏览器与服务器之间的负荷无法平衡会导致系统性能的严重下降因此,大的数据容量和多用户环境,通常是采纳C/S结构的一个重要理由 对于开发者而言,C/S结构给予规划者更大的空间和更强的支持,易于实现不同应用间的合理分离,分别调试和投入应用前台应用和后台数据库的开发,被“强制”地分开;数据库部分的逻辑与规则,一经调试完成,就可以在将来的应用中一直保证下去;在一个动态改进或逐步扩充的开发环境,或复杂的应用环境中,这些都是提高系统可靠性有利因素第四章总体设计4.1系统设计思想原则一个新的系统应该按照客户的使用习惯来进行设计和开发,根据现代化管理的要求,建立一个实用、操作简单、易扩展并且与高效的工作平台
(1)实用根据图书馆的日常业务处理的需求而设计开发,能够满足图书馆办公人员和普通读者的需求
(2)操作简单根据各层用户的需求以及习惯,采取人性化的设计,能够使用最简单的操作方式,进行图书查询、数据库信息维护、借还书、高级查询等操作
(3)易扩展采用C/S结构,可以将易变的部分(应用和应用规则)和相对稳定的部分(数据和基本属性、结构)分离,能较好适应不确定和变化的需求环境的比较现实的方案它可以令我们以较低的投入,快速地增添和替换“瘦小”而互相独立的前台应用,保持数据的连续性和继承性
(4)高效前台应用和后台数据库的开发,被“强制”地分开;数据库部分的逻辑与规则,一经调试完成,就可以在将来的应用中一直保证下去;在一个动态改进或逐步扩充的开发环境,或复杂的应用环境中,这些都是提高系统可靠性有利因素4.2系统功能模块设计4.2.1功能模块图本论文所实现的功能模块如图
4.1所示图
4.1功能模块图4.2.2子功能模设计
(1)读者查询界面模块功能简介主要为普通读者提供图书信息查询功能,可以按照不同的查询方式来快速查找所需图书其中有按书名查询、按作者查询、按出版社查询和按摘要查询在该模块中,可以点击“模糊查询”按钮来执行范围更广且更为细致的查询
(2)读者借还书模块功能简介图书馆的日常业务之一,该模块包括读者借书记录的查询功能,读者借书功能,读者还书功能在进行还书的操作时,将会对读者的规定还书日期进行检查然后判断其是否已经超期,如果超期,将会跳出罚款处理框当获知读者遗失图书后,可以点击书籍遗失按钮来进行罚款
(3)今日盘点模块功能简介今日盘点能够让工作人员能够很快的统计出今日所进图书以及数量和价格、今日借出图书、今日归还图书和今日罚款汇总
(4)逾期查询模块功能简介通过遍历借书表,寻找在某指定日期下所有图书的到期或超期情况工作人员可以根据查询结果来进行相应的处理,如通知借阅人尽早回图书馆办理相关手续
(5)借阅排行模块功能简介通过选择查看的时间段以及借阅次数的限制,显示在该时间段中图书借阅的排行4.2.3系统物理配置设计由于图书馆的应用范围非常之广,系统的配置方案也不尽相同,配置方案要根据用户的实际情况设计,主要依据就是系统的吞吐量和系统对稳定性的要求A.软件配置软件配置主要包括数据库的选择和操作系统的选择图书馆管理系统的软件配置要根据用户对系统的稳定性要求、系统的容量以及用户的维护水平来确定,具体配置如表
4.1表
4.1数据库选择用户数据量(记录数)稳定性要求维护水平备选数据库中小学图书馆1000~5000低差AccessFoxPro专业大学数据库5000~50000中一般SQLServer县市级图书馆5000~50000中一般SQLServer省级图书馆50000~200000较高较好SQLServerOracle当然,这种选择并不是绝对的有时一个图书馆尽管藏书不多,但是用户量很大,要求数据库的吞吐量和稳定性较高,这就需要选择更好的数据库也有些情况,由于建设经费的限制,可以选择较为便宜的数据库,这要根据用户的需要而定数据库的选择还要考虑与操作系统的配合这里选择微软公司的SQLServer2000数据库
(2)操作系统选择可以根据用户量的大小选择不同的操作系统一般情况下,图书管理员对微软的Windows操作系统比较熟悉,所以,我们在此选择Windows2000或者WindowsXP操作系统B.硬件配置硬件配置主要包括客户端硬件的选择和服务器端硬件的选择图书馆管理系统的硬件配置要根据用户对系统的稳定性要求、系统的容量,以及用户的维护水平来确定
(1)客户端硬件选择可以根据稳定性要求选择不同的客户端一般情况下,对客户端的选择如表
4.2表
4.2客户端硬件选择用户稳定性要求备选客户端普通用户查询客户端低PentiumCPU/64MB/4GB前台借还书客户端高PentiumⅢ/256MB/20G管理员客户端中PentiumⅢ/256MB/20G
(2)服务器端硬件选择可以根据数据量和吞吐量的大小选择不同的服务器硬件服务器端的选择如表
4.3表
4.3服务器端硬件选择用户每秒数据库并发数据访问记录数稳定性要求维护水平备选服务器中小学数据库10~50低差PentiumⅢ/256MB/20G专业大学图书馆50~500中一般Xeon双CPU/1GB/RAID53×72GBC.网络配置图书馆管理系统的网络配置一般有如下几种类型
(1)单机模式即服务器和客户端在一台计算机上,适合中小学图书馆
(2)百兆模式计算机网络的速度为百兆,适合专业大学图书馆到省级图书馆
(3)千兆模式计算机网络的速度为千兆,适合综合性大学图书馆和国家级图书馆第五章详细设计5.1数据库设计本系统主要是用C#编写的终端对数据库的数据进行控制来达到实现图书信息、读者信息、用户信息的维护,以及读者借书、还书的功能数据库表主要为图书表、读者表、用户表、借书记录表1.图书表如表
5.1表
5.1图书表(Book)序列字段名数据类型说明1BookIDchar10图书编号2BookNameVarchar30图书名称3BookWriterVarchar20图书作者4BookPublishVarchar50出版社5BookPublishDatadatetime出版日期6BookPricefloat图书定价7BookSortvarchar20图书分类8BookAmountint图书库存数量9BookRemainint现在库存数量2.读者表如表
5.2表
5.2读者表Reader序列字段名数据类型说明1ReaderIDchar6读者编号2ReaderNamevarchar20读者姓名3ReaderPasswordvarchar10读者密码4ReaderPhoneNovarchar15电话号码5ReaderEmailvarchar50电子邮件6ReaderBorrowedbooksint借书数量3.用户表如表
5.3表
5.3用户表User序列字段名数据类型说明1UserIDchar10用户编号2UserPasswordchar10用户密码3UserSortvarchar10用户分类4.借书表如表
5.4表
5.4借书表BorrowBook序列字段名数据类型说明1ReaderIDchar6读者编号2BookIDchar10图书编号3BorrowDatedatetime借阅日期4ReturnDatedatetime应归还日期5FactReturnDatedatetime实际归还日期5.罚金表如表
5.5表
5.5罚金表BorrowBook序列字段名数据类型说明1ReaderIDchar6读者编号2BookIDchar10图书编号3PunishStylechar6处罚类型4Moneyint罚金数额5PunishDatedatetime处罚日期5.2存储过程存储过程(StoredProcedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它总的来说,存储过程具有以下一些优点存储过程允许标准组件式编程存储过程能够实现较快的执行速度存储过程能够减少网络流量存储过程可被作为一种安全机制来充分利用本系统所采用的存储过程有
(1)StoredProcedureBookNumber获取某图书的在馆图书数量
(2)StoredProcedureBorrowBook在进行借阅操作时,某图书的在馆图书数量减1
(3)StoredProcedureBorrowReader在进行借阅操作时,该读者的借书总数加1
(4)StoredProcedureReaderBorrowedNumber获取某读者的借书总数
(5)StoredProcedureReturnBook在进行还书操作时,该图书的在馆数量加1
(6)StoredProcedureReturnReader在进行还书操作时,该读者的借书总数减15.3系统模块设计5.3.1读者使用界面以及管理员登录入口读者在该页面能够采用多种方式对图书进行查询,其中包括
(1)按书名查找这是最普遍的查询方式,只要图书名中出现所提交的关键字,该图书就会被搜索出来供读者参考
(2)按作者查询当想要查询某位作者的相关图书或者只记得作者名的时候,该项查询功能将会派上很大的用处
(3)按出版社查询按出版社查询也是比较常见的查询方式,用来搜索出提交出版社名的所有图书
(4)按摘要查询非常实用的查询功能,图书主要涉及的内容不一定会体现的书名中,但都会出现在它的摘要中通过对摘要的查询,读者能够获取所有含有相关信息的图书其中主界面的查询主要是在判断查询什么数据项后,从文本框中获取关键字,然后调用查询方法来生成不同的SQL语句来访问数据库如按照书名查找,生成SQL语句如下SqlString=selectBookIDas图书编号BookNameas图书名称BookPublishas出版社BookWriteras作者BookPublishDateas出版日期BookSortas类别BookAmountas图书总数BookRemainas在馆数BookDescriptionas摘要fromBookwhereBookNamelike%+this.textReaderQuery.Text+%;;然后通过向sqlDataAdapter赋上该语句来访问数据库该模块界面如图
5.1所示图
5.1主界面当点击该界面的“模糊查询”按钮时,将跳出如下窗体,用以更加模糊的查询该界面主要用于获取更为模糊的查询条件,用来进行更为宽广的查询范围通过界面上下拉菜单来选择不同的查询数据项,然后根据文本框不同的组合来生成SQL语句界面如图
5.2所示图
5.2模糊查询5.3.2读者借还书模块图书馆的主要工作之一,本模块用于日常的借书、还书操作在执行借书、还书的操作时,对数据库的图书表、用户表、借书表都进行了修改借还书操作中非常重要的一点就是保证数据的统一,如在借出某一本书后,就得在借阅表中添加一条记录,然后在读者的借书数量中添加一本,同时在图书库存量中减少一本这样才能保证图书的总数是正确的在实现的代码中,首先通过访问数据库来判断该用户是否存在以及是否能够借阅某一本书接着通过存储过程来对读者表以及图书表进行该书的数量加减,当该存储过程成功后,再向数据库添加一条借阅的记录;如果失败,回滚已经执行过的操作务必保证数据的一致其中调用存储过程的方法为privateboolBorrowBookstringBookID{ifBorrowBookNumberthis.textBookID.Text0{SqlCommandborrowbook=newSqlCommand;borrowbook.Connection=this.sqlConnection1;borrowbook.CommandType=CommandType.StoredProcedure;borrowbook.CommandText=dbo.StoredProcedureBorrowBook;SqlParameterparinput=borrowbook.Parameters.Add@BookIDSqlDbType.Char;parinput.Direction=ParameterDirection.Input;parinput.Value=BookID;try{this.sqlConnection
1.Open;borrowbook.ExecuteNonQuery;this.sqlConnection
1.Close;returntrue;}catchSystem.Exceptione{this.ErrorHandlee;this.sqlConnection
1.Close;returnfalse;}}elsereturnfalse;}该模块的界面如图
5.3所示图
5.3读者借还书界面当点击书籍遗失按钮时,会跳出罚金处理对话框,用以对读者进行相应的处罚当读者在还书时,如果该图书已经会超期,也会自动跳出罚金处理对话框,通过超期日期来计算出相应的处罚金额其中罚款类型为“遗失书籍”的时候,必须对该书的图书数量减一界面如图
5.4所示图
5.4罚款处理界面5.3.3今日盘点模块通过点击借还书模块的今日盘点按钮,将会跳出一个菜单以供选择来分别查看每日进书、每日借书、每日还书或每日报损其中每日借书界面如图
5.5所示图
5.5每日借书5.3.4逾期查询模块通过点击借还书模块中的逾期查询按钮,就能进入逾期查询模块,通过该模块,工作人员能够及时了解图书逾期与否,从而可以通知借阅人来办理相关的手续逾期查询界面如图
5.6所示图
5.6逾期查询5.3.4借阅排行模块通过点击借还书模块中的借阅排行按钮,将会跳出借阅排行界面,通过选择统计的起始日期、结束日期以及借阅次数的限制数该界面会显示出在该段时间内的借阅排行借阅排行界面如图
5.7所示图
5.7借阅排行第六章系统实施系统实施是根据以上的系统设计方案,完成计算机系统的程序设计与调试、系统初始数据录入等工作6.1程序设计为了提高系统开发效率,本系统的开发工具选择了MicroSoft的VisualStudio.Net2003后台数据库选择了MicroSoftSQL2000经过系统分析、数据库设计以及工作流程的规定,接下来是该如何让其在界面上显示,以及如何获取操作、处理分析和返回结果了通过获取界面上控件的TEXT值,由业务处理层产生不同的SQL语句来访问数据库如果是查询,将查询结果返回用户界面,如果是借还书,通过调用存储过程来保证多个表之间的数据的联动对于今日盘点、逾期查询、借阅排行模块,都是基于原有数据库的数据,进行不同层面的挖掘所产生的这些模块基本上只要从控件中获取一个日期然后分别产生SQL语句去访问数据库,最终将返回的信息显示到用户界面上6.2解决的问题
(1)向界面添加的控件是由系统自动生成代码的,当要修改它初始化的代码的时候,系统会报错,导致编译失败查看代码的体系结构后,我把该控件自动的代码提取处来放到一个方法中,通过在初始化界面方法后面附加该方法来手动生成控件这样的好处在于增加控件的灵活性,通过这种方法还可以实现批量生成相同的控件
(2)我是采用系统自带的数据库控件来实现数据库访问的,其灵活性比较小,后来随着系统的开发,需要对数据库的访问进行修改通过修改控件的属性来实现新的功能比较吃力,而且并不是非常的满意虽然学到不少东西,但用类来实现数据库的处理才是灵活且高效的方法
(3)数据的联动一直是我比较头痛的问题在正常的情况下,是在对某个表进行操作后,再对其他表进行相应的操作但是,如果中间的某个环节出错了,而后面表的操作继续运行了,那么最后的数据还是会出错后来我采用存储过程,通过判断对表操作的存储过程运行成功后,再继续运行那么如果运行存储过程失败的话,它的数据是会自动回滚的,回到最初的状态致谢感谢郁晓红老师对我的指导与监督,正是她悉心的指点,使我能够顺利完成毕业设计感谢毕业设计课题的伙伴张杨波同学,在合作过程中,我们一起探讨图书馆管理系统的需求以及实现的方式,正是在他的帮助下,我们才能一步步去实现系统这里还要感谢实习公司的徐世坚同志,他在技术上提供了我许多帮助最后要感谢的是一直非常关心我的家人与朋友,在他们的关怀与支持下,使我能对前面的路途充满信心【参考文献】
[1]JasonPricehttp://www.cnforyou.com/query/bookquerylist.aspvcAuthor=Jason+Price.C#数据库编程从入门到精通[M].电子工业出版社http://www.cnforyou.com/query/bookquerylist.aspviPublishCode=4vcPublish=电子工业出版社.
2003.
[2]何鹏飞王征等.C#实用编程百例[M].清华大学出版社.
2004.45-
53.
[3]张奇李律松卫建伟.VisualC#数据库项目案例导航[M].清华大学出版社.
2005.37-
79.
[4]余彤鹰.为什么采用C/S体系结构[C].
2002.http://www.ee-forum.org/whycs.htmlhttp://www.ee-forum.org/whycs.html.
[5]李明华.信息交流与现代图书馆系统[M].书目文献出版社.
1996.
[6]周之英.现代软件工程[M].科学出版社.
2000.
[7]郑莉董渊.C++语言程序设计[M].北京希望电子出版社.
2001.
[8]ChristophWille..NET编程先锋C#[M].科学出版社.
2001.
[9]常金玲.信息系统的开发与质量管理[M].黄河水利出版社.
2005.
[10]张勤生.管理信息系统与管理支持系统[M].青岛海洋大学出版社.
2001.
[11]马健丽.数字图书馆的组织管理[J].山东图书馆季刊2002455:102-
111.
[12]CharlesPetzoldhttp://www.cnforyou.com/query/bookquerylist.aspvcAuthor=Charles+Petzold.ProgrammingMicrosoftWindowswithC#[M].世界图书出版公司http://www.cnforyou.com/query/bookquerylist.aspviPublishCode=27vcPublish=世界图书出版公司.
2002.
[13]MicrosoftCorporation“C#LanguageSpecification.”Whitepaper[M]2001:http://www.microsoft.com/msdn.
[14]EricGunnerson.AProgrammersIntroductiontoC#[M].
2000.
[15]MarkMichaelisPhilipSpokashttp://ring
000.china-pub.com/search/power_search/power_search.aspkey1=%A3%A8%C3%C0%A3%A9Mark+Michaelis%3BPhilip+Spokas\t_blank.C#DevelopersHeadstart[M].http://www.amazon.com/exec/obidos/tg/detail/-/0072191163/qid=1040348647/sr=1-1/ref=sr_1_1/104-5382126-8547153v=glances=books\t_blankMcGraw-Hillhttp://ring
000.china-pub.com/search/power_search/power_search.aspkey1=McGraw%2DHill\t_blank.
2002.
[16]JonesM.ComparingEvaluationsofDigitalCollectionEfforts[J].D-LibMagazine1999115:68-
87.
[17]HilL.AlexandriaDigitalLibrary:UserEvaluationStudiesandSystemDesign[J].JournaloftheAmericanSocietyforInformationScience2000513:246-
259.附录(核心代码)Login模块(读者查询页面以及管理员登录入口)stringUserCheckstringusernamestringuserpassword//用户登录判断{stringtxtSqlusersort;usersort=nobody;txtSql=SELECT*FROM[User];SqlCommandcheckuser=newSqlCommandtxtSqlthis.sqlConnection1;Try{this.sqlConnection
1.Open;SqlDataReadersqlreader=checkuser.ExecuteReader;whilesqlreader.Read//判断用户名和密码{ifsqlreader
[0].ToString.Trim==usernamesqlreader
[1].ToString.Trim==userpassword{usersort=sqlreader
[2].ToString.Trim;break;}}}sqlConnection
1.Close;returnusersort;}privatevoidselectbook//查询图书{ifthis.rbBook.Checked==true//按图书查询{SqlString=selectBookIDas图书编号BookNameas图书名称BookPublishas出版社BookWriteras作者BookPublishDateas出版日期BookSortas类别BookAmountas图书总数BookRemainas在馆数BookDescriptionas摘要fromBookwhereBookNamelike%+this.textReaderQuery.Text+%;;}ifthis.rbWriter.Checked==true//按作者查询{SqlString=selectBookIDas图书编号BookNameas图书名称BookPublishas出版社BookWriteras作者BookPublishDateas出版日期BookSortas类别BookAmountas图书总数BookRemainas在馆数BookDescriptionas摘要fromBookwhereBookWriterlike%+this.textReaderQuery.Text+%;;}ifthis.rbPublish.Checked==true//按出版社查询{SqlString=selectBookIDas图书编号BookNameas图书名称BookPublishas出版社BookWriteras作者BookPublishDateas出版日期BookSortas类别BookAmountas图书总数BookRemainas在馆数BookDescriptionas摘要fromBookwhereBookPublishlike%+this.textReaderQuery.Text+%;;}ifthis.rbDescri.Checked==true//按摘要查询{SqlString=selectBookIDas图书编号BookNameas图书名称BookPublishas出版社BookWriteras作者BookPublishDateas出版日期BookSortas类别BookAmountas图书总数BookRemainas在馆数BookDescriptionas摘要fromBookwhereBookDescriptionlike%+this.textReaderQuery.Text+%;;}GetDataSqlString;}读者借还书模块privatevoidbtnBorrow_ClickobjectsenderSystem.EventArgse//借阅图书{ifthis.textReaderID.Text=={MessageBox.Show请输入读者号码提示MessageBoxButtons.OK;}else{ifthis.textBookID.Text==MessageBox.Show请输入图书号码提示MessageBoxButtons.OK;else{ifIDCheckthis.textBookID.Text==exist{ifBorrowCheckthis.textBookID.Textthis.textReaderID.Text==exist{MessageBox.Show该读者已经借阅此书,不能重复借阅!警告;}else{DataRowrow=this.objDataSetBorrowReturn.Tables[BorrowBook].NewRow;row[ReaderID]=this.textReaderID.Text;row[BookID]=this.textBookID.Text;row[BorrowDate]=System.DateTime.Today;row[ReturnDate]=DateTime.Today.AddMonths1;this.objDataSetBorrowReturn.Tables[BorrowBook].Rows.Addrow;ifBorrowBookthis.textBookID.TextBorrowReaderthis.textReaderID.Text{this.UpdateDataSet;this.dataGrid
1.Refresh;}}}}}}//用于在借书后向数据库建设该书的在馆数(省略相似的BorrowBookNumber、ReaderBorrowedNumber等)privateboolBorrowBookstringBookID{ifBorrowBookNumberthis.textBookID.Text0{SqlCommandborrowbook=newSqlCommand;borrowbook.Connection=this.sqlConnection1;borrowbook.CommandType=CommandType.StoredProcedure;borrowbook.CommandText=dbo.StoredProcedureBorrowBook;SqlParameterparinput=borrowbook.Parameters.Add@BookIDSqlDbType.Char;parinput.Direction=ParameterDirection.Input;parinput.Value=BookID;try{this.sqlConnection
1.Open;borrowbook.ExecuteNonQuery;this.sqlConnection
1.Close;returntrue;}catchSystem.Exceptione{this.ErrorHandlee;this.sqlConnection
1.Close;returnfalse;}}elsereturnfalse;}WEB浏览器模块privatevoidAddNewPagestringurl//打开新的web浏览器{ifthis.Tabc.SelectedTab.Text==about:blank//如果为初始页,直接打开{this.axWebBrowser
1.DocumentComplete+=newAxSHDocVw.DWebBrowserEvents2_DocumentCompleteEventHandlerwebpage_DocumentComplete;try{objectanObject=null;this.axWebBrowser
1.NavigateurlrefanObjectrefanObjectrefanObjectrefanObject;}catch{}}else//不为初始页,开新页打开{AxSHDocVw.AxWebBrowserwebpage=newAxSHDocVw.AxWebBrowser;//为Table页添加相应网页标题的事件webpage.DocumentComplete+=newAxSHDocVw.DWebBrowserEvents2_DocumentCompleteEventHandlerwebpage_DocumentComplete;//捕捉用新开一页的事件webpage.NewWindow2+=newAxSHDocVw.DWebBrowserEvents2_NewWindow2EventHandlerwebpage_NewWindow2;webpage.Dock=DockStyle.Fill;//建立新table页,附加上web浏览器TabPagenewpage=newTabPage;newpage.Controls.Addwebpage;this.Tabc.TabPages.Addnewpage;this.Tabc.SelectedTab=newpage;try{Cursor.Current=Cursors.WaitCursor;objectanObject=null;webpage.NavigateurlrefanObjectrefanObjectrefanObjectrefanObject;}Cursor.Current=Cursors.Default;}}privateAxSHDocVw.AxWebBrowserCreateNewWebBrowser{AxSHDocVw.AxWebBrowseraxWebBrowser=newAxSHDocVw.AxWebBrowser;TabPagenewPage=newTabPage;newPage.Controls.AddaxWebBrowser;axWebBrowser.Parent=newPage;axWebBrowser.Dock=DockStyle.Fill;axWebBrowser.NewWindow2+=newAxSHDocVw.DWebBrowserEvents2_NewWindow2EventHandlerthis.webpage_NewWindow2;axWebBrowser.DocumentComplete+=newAxSHDocVw.DWebBrowserEvents2_DocumentCompleteEventHandlerthis.webpage_DocumentComplete;this.Tabc.TabPages.AddnewPage;this.Tabc.SelectedTab=newPage;returnaxWebBrowser;}读者查询界面模糊查询读者借还书借阅记录借阅图书归还图书罚款处理今日盘点书借阅排行逾期查询每日进书每日借书每日还书每日报损PAGE1。