资源描述
编号: 数据库课程设计说明书题 目: 图书管理信息系统 系 别:计算机科学与工程学院 专 业: 信 息 安 全 学生姓名: xxxxxxxxx 学 号: 11003601xx 指导教师: 刘洪波 侯杰 2013年 9 月30 日题目类型: 理论研究 实验研究 工程设计 工程技术研究 软件开发目 录1、 系统的目标及任务51、1开发背景51、2课程设计的目的61、3课程设计的任务62、 系统需求分析62.1可行性分析62、2系统的详细需求73、 软件开发过程113、1系统设计113.2软件设计154、 软件测试过程184、1测试环境184、2功能测试185、小结19摘 要二十一世纪是信息的社会,信息作为社会最主要的资源,将成为战略资源引起人们广泛的关注。如何获取信息?图书是我们最好的获取信息的方式,但由于图书馆图书收藏量大大增加,使传统的图书管理员的工作日益繁重起来。迫使人们起用新的管理方法来管理图书,如何把图书管理员从繁重的工作中解脱出来呢? 本课程设计是一个图书信息管理系统的后台数据库的设计,首先要查阅资料对图书领域的基本知识有一定的认识,了解用户各个方面的需求,包括现有的以及将来的可能增加的需求。因此本人结合图书馆的要求,对MS SQL Server2000数据库管理系统、SQL语言原理、Delphi应用程序设计,Delphi数据库技术进行了较深入的学习和应用,按照数据库设计的六个阶段进行设计:需求分析、概念结构设计、逻辑结构设计、物理结构设计、数据库实施、数据库的运行和维护。数据库在各种信息的提供、保存、更新和查询方面都要求满足各种信息的输出和输入,符合用户的需求。应用Create、Drop、Alter、Select、Insert、Delete、Update对数据库进行信息的相关操作,用Grant、Revoke对数据库进行授权和回收操作。关键词:图书馆;信息;管理设计;数据库技术; Delphi 7;SQL server;引言一直以来人们使用传统的人工方式管理图书馆的日常工作,对于图书馆的借书和还书过程,想必大家都已很熟悉。在计算机尚未在图书馆广泛使用之前,借书和还书过程主要依靠手工。一个最典型的手工处理还书过程就是:读者将要借的书和借阅证交给工作人员,工作人员将每本书上附带的描述书的信息的卡片和读者的借阅证放在一个小格栏里,并在借阅证和每本书贴的借阅条上填写借阅信息。这样借书过程就完成了。还书时,读者将要还的书交给工作人员,工作人员根据图书信息找到相应的书卡和借阅证,并填好相应的还书信息,这样还书过程就完成了。 以上所描述的手工过程的不足之处显而易见,首先处理借书、还书业务流程的效率很低,其次处理能力比较低,一段时间内,所能服务的读者人数是有限的。利用计算机来处理这些流程无疑会极大程度地提高效率和处理能力。我们将会看到排队等候借书、还书的队伍不再那么长,工作人员出错的概率也小了,读者可以花更多的时间在选择书和看书上。为方便对图书馆书籍、读者资料、借还书等进行高效的管理,特编写该程序以提高图书馆的管理效率。使用该程序之后,工作人员可以查询某位读者、某种图书的借阅情况,还可以对当前图书借阅情况进行一些统计,给出统计表格,以便全面掌握图书的流通情况。“图书管理信息系统”主要目的是利用数据库软件编制一个管理软件,用以实现图书、读者以及日常工作等多项管理。同时对整个系统的分析、设计过程给出一个完整论证。图书管理系统是一种基于集中统一规划的数据库数据管理新模式。在对图书、读者的管理,其实是对图书、读者数据的管理。本系统的建成无疑会为管理者对图书管理系统提供极大的帮助。本系统的设计主要从以下几方面做起:系统的目标及任务、系统需求分析、系统业务流程分析、系统的功能设计、系统的数据库结构设计等。1、 系统的目标及任务1、1开发背景现代图书馆管理的本质在于创新,以往的图书馆管理完全手工操做,通过卡片记录信息,既浪费时间,又浪费人工、纸张,而且书籍和读者的信息查询比较麻烦,不能提供领导管理上需要的各种信息如本馆各种资料分布及借阅(流通)情况。随着电子信息技术的飞速发展,图书馆的工作也发生了实质性的进展和变化。现代化的服务手段逐渐替代传统的手工操作,计算机编目、光盘数据库和网络检索技术等新型的项目开始在图书馆领域普及。在计算机技术、网络技术的进一步冲击下,图书馆随着教育教学改革的深入和素质教育的全面推动,逐渐演变形成数字化图书管理,其作用也越来越重要了。为了使图书馆的管理更科学、更规范,减少重复劳动,节省图书馆建设和管理中的人力、财力,方便读者查询和借阅书籍,所以有必要建立一个图书馆管理系统。1、2课程设计的目的图书馆每天都有很多的书出借归还,使用图书馆管理系统可以大大地提高工作效率,减少工作中可能出现的错误,是提高图书馆办公自动化水平的重要手段之一。其开发主要包括后台数据库的建立和维护以及前端应用程序界面开发两个方面。在中国软件行业日益进步的今天,如何利用这些资源来帮助管理员可以快速的管理,让管理员以及借书者有利用更多的时间去从事其他的事情已成为一个非常注重的事情。因而设计一个好的图书馆管理信息系统,能提高图书馆的管理效率,有利于对图书信息的统计。论文旨在论述图书馆管理系统的设计与开发。通过图书馆管理信息系统的设计,熟练掌握Delphi 7、SQL server 2005等工具软件,系统地掌握需求分析、数据库设计、编码实现、测试等软件开发的流程,提高自身分析问题、解决问题的能力。1、3课程设计的任务本课程设计任务是通过开发一个数据库图书馆管理信息系统,学习数据库系统的设计与开发,采用Delphi 7和SQL server 2005等软件为开发工具。通过对计算机硬件和软件解决方案的论证,对应用领域进行调查分析,参考各种资料和进行数据库系统开发实践。在指导老师的帮助下,已经基本上成功地实现了设计任务书的要求,使得设计的数据库系统能够实现一般数据库的管理。2、 系统需求分析2.1可行性分析 为了对问题进行调研,以最小代价在最小时间内确定问题是否可解,经过对此项目进行详细调查,初拟本系统的实现报告,对软件开发中将要面临的问题及其解决方案进行初步设计及合理安排,明确开发目标。(1)技术可行性:本系统采用delphi7.0平台进行开发,它是一个集成于代码编写、运行、调试及发布等功能于一身的强大的开发环境,也集成了数据库浏览和SQL Sever 2000 等工具。开发web程序的效率非常高,环境也提供了自动代码生成机制,可以有效的减少代码编写量。基于web的应用程序,对于程序的发布也是十分容易的,因此,开发本系统在技术上完全可行。(2)经济可行性:该系统成本主要集中在软件的开发上,当系统投入使用后可以为图书馆管理部门节约大量的人力、物力。同时该系统也实现了开放性图书馆管理的现代化管理模式,达到充分利用和共享网络信息和管理资源,进行科学和规范化的管理,提高了管理人员的素质和工作质量。它所带来的效益远远大于系统软件的开发成本,在经济上完全可行。(3)操作可行性在设计系统的过程中,充分考虑到管理人员和学生的习惯。界面风格使用简约,使用方便,而无需进行任何软件的安装,操作简单;按权限使用并提供查询手段,在操作上可行。2、2系统的详细需求功能需求该项目系统包含的功能有:管理员信息管理,读者信息管理、图书信息管理、借阅信息管理,还书服务信息管理,以及各类统计和报表。其中每个功能由若干个相关联的子功能模块组成。如图所示:图书管理信息系统统计报表违章信息还书信息读者信息图书信息借阅信息管理员信息 图2.1系统功能模块(1) 管理员信息“读者信息管理”功能模块用于管理与读者相关的信息,包含的子功能模块如下图所示:管理员信息管理查询添加修改删除图2.2 “管理员信息管理”功能模块 “查询”功能模块用于查询读者信息,图书信息等。 “添加”功能模块用于添加读者信息,图书信息等。 “修改”功能模块用于修改读者信息,图书信息等。 “删除”功能模块用于删除读者信息,图书信息等。(2)读者信息管理“读者信息管理”功能模块用于管理与读者相关的信息,包含的子功能模块如下图所示:读者信息管理读者和图书信息查询读者信息添加读者信息修改读者信息删除图2.3 “读者信息管理”功能模块“读者和图书信息查询”功能模块用于查询读者的相关信息,包括读者条码、读者姓名、性别、证件号码;,以及对图书信息的查询权限。“读者信息添加”功能模块用于添加新近读者的相关信息,包括读者条码、读者姓名、性别、证件号码。“读者信息修改”功能模块用于修改已存读者的需修改的信息。“读者信息删除”功能模块用于删除读者的所有信息。(3)图书信息管理“图书信息管理”功能模块用于管理图书的相关信息,包括浏览、查询、添加、修改和删除功能。在进行图书信息的添加时,系统会自动检测所添加的图书信息中的书籍条码在书籍表中是否已经存在,如果存在,会提示用户该书已经存在。在进行图书信息的删除时,要首先弹出提示窗口让用户确认是否删除,只有用户确认后才能进行图书信息的删除。在进行图书修改时,不准用户修改书籍条码,因为书籍条码作为数据库中书籍表的主键是不同书籍的唯一标识,不准修改书籍条码可以防止不经意将书籍条码改错;如果确实要修改书籍条码,可以通过数据库管理员来实现,也可以先将错误书籍条码信息删除再添加正确的书籍信息,这样在删除时会弹出提示窗口让用户确认是否删除,给用户以提示,防止意外错误。其模块如下图所示:图书信息管理图书信息查询图书入库图书信息修改图书注销图2.4 “图书信息管理”功能模块“图书信息查询”功能模块用于查询图书的相关信息,包括书籍条码(BOOK_ID)、书名、出版社、作者、出版日期、尚能否借出。(4) 借阅信息管理 图书馆管理员通过此模块来进行借书操作。在进行借书信息的添加时,系统会自动检测该读者是否有权借书(过去借书历史中有超期未还的现象),所借书是否在馆内未被借出,只要有一个条件不满足,就会提示出错。“借书信息管理”用于登记读者借阅图书的记录并减少在库图书的库存量,登记内容包括读者编号、书籍条码(BOOK_ID)。(4)还书信息管理 图书馆管理员通过此模块来进行还书操作。在进行还书信息的添加时,系统会自动检测此次还书是否在规定的时间内,若超期,则锁定该读者,并给出提示信息。“还书信息管理”功能用于登记读者归还图书的记录并增加在库图书的库存量,登记内容包括读者姓名、书籍条码(BOOK_ID)、借书日期、归还时间、超期天数。(5) 违章信息、统计和报表 这是为了方便管理员查询等工作服务的。3、 软件开发过程3、1系统设计 为了方便理解,本次设置的管理员、读者、图书等信息追求简单明了。(1)Delphi界面: 登陆界面 管理员界面读者管理界面图书管理界面删除信息删除信息删除信息修改信息增加信息修改信息增加信息修改信息增加信息查询信息查询信息查询信息报表统计 图3.1 系统登陆界面(2)SQL基本表:图3.2基本表组成图3.3管理员信息定义图3.4管理员信息图3.5读者信息(3)图书管理员E-R图3.6:管理员姓名管理员性别工作号管理员管理员年龄所在职位联系方式 工作号管理员姓名管理员性别管理员年龄所在职位联系方式001002003(4)读者信息E-R图3.7:读者姓名读者性别读者编号读者备注所在院系读者年龄读者编号读者姓名读者性别读者年龄所在院系备注2013001201300220130042013005(5)图书信息E-R图3.8:作者图书名称图书编号(或书籍条码)出版社图书出版日期图书类别图书数量图书编号或书籍条码图书名称作者出版社出版日期图书类别借出数量剩余数量备注2013090012013090022013090042013090053.2软件设计(1)登录模块图3.1 登陆模块(2)管理员能访问模块有:图3.2 管理员主页图3.3 图书信息1模块图3.4 读者信息模块除此之外,管理员能访问模块还有借阅信息,违章信息等模块,在这就不一一截图了。(3)读者能访问模块图3.5 读者主页图3.6图书信息2模块(4)共同访问模块4、 软件测试过程4、1测试环境(1)硬件环境 个人笔记本,台式计算机或实验室环境都行。(2) 软件环境 SQL server 2005 , Delphi 7 (我个人使用时安装就是这两个,其他相关的也行)。(3) 数据环境 没太多要求,只要与数据库的数据保持一致,一般都没多大问题的。(4) 网络环境 这次设计没涉及网络问题,所以你可以不用担心网络延迟什么的。4、2功能测试 验收时候老师查看了,这里就不进行太多的讨论了。5、小结通过进行图书馆管理系统的开发,进一步明确了研制一个管理信息系统的方法和思路,将系统开发的各阶段的基本活动贯穿起来,使我更加形象、具体的了解了管理信息系统。系统开发的过程是一个巩固以前所学的计算机软件开发知识,掌握新技能的过程。在老师的讲解和同学的帮助下,我通过网络以及自身的学习,基本了解对delphi7、SQL Sever 2000的使用。由于条件和个人水平有限,软件相对简单,如果在实际情况下应用,会出现一定的问题,需进一步改善。本软件的特点和优点:本系统,旨在实现图书馆管理的信息化。本系统适用于图书馆管理者对读者信息、书籍信息、借阅信息的管理,有一定的权限要求,完善图书馆管理,以便提高工作效率。系统的功能包括:添加、修改、删除各种信息,查询各种信息,统计各种数量信息。本软件需要改进的地方有:统计部分有待于完善。后台数据库要应书社发展而升级。软件的界面需要更完美、更大方,改进空间很大。该数据库系统设计对一个学生来说是一个非常重要的学习过程,根据对SQL Sever 2005、Delphi7 、数据库基本知识的学习,到完成这个软件的基本设计,虽然这个软件还存在许多缺点,但是我在专业知识方面学到的东西是非常之多。而设计过程中也遇到了很多的困难,但在同学的帮助下,最终还是克服了困难完成了设计。这个过程更使我学到了面对困难应该持有积极的态度。总的来说,这次的系统设计是非常有意义的,在我们以后的学习中起了带头作用,让我们更有信心面对更多的知识,学到更多的内容。参考文献:1 王珊 萨师宣 编.数据库系统概论第四版.高等教育出版社2 马军 编.SQL语言与数据库操作技术大全基于SQL Server实现.电子工业出版社4 周爱民 编.delphi源代码分析. 电子工业出版社5 薛成华 编.管理信息系统.2000版.北京:清华大学出版社.2000年7月:345页附录: 源代码清单(1)登陆代码:procedure TForm1.Button1Click(Sender: TObject); beginadoquery1.SQL.clear;adoquery1.SQL.add(select * from 用户表 where 用户名=+edit1.text+ and 密码=+edit2.text+) ;adoquery1.Open; if (adoquery1.RecordCount0) and (adoquery1.FieldByName(priv).asstring=0) then form2.show else if (adoquery1.RecordCount0) and (adoquery1.FieldByName(priv).asstring=1) then form3.show else showmessage(你是忘记密码了吧?!) ;end;(2)管理员主页代码: 查询代码:beginsqltext:=;if edit1.Text thenbegin sqltext:=select * from 管理员 where 编号=+edit1.Text+; if edit2.Text then begin sqltext:=select * from 管理员 where 编号=+edit1.Text+ and 姓名=+edit2.Text+; end;endelsebegin if edit2.Text then begin sqltext:=select * from 管理员where 姓名=+Edit2.Text+; end;end;/ShowMessage(sqltext);if sqltext thenbeginwith adoquery1 dobegin close; sql.Text:=sqltext; open; if adoquery1.RecordCount=0 then begin showmessage(您要查找的记录没有发现); close; sql.Text:=select * from Stud; open; edit1.Clear; edit2.Clear; end;添加代码:begin SqlStr :=Select * from 管理员 where 编号=+Edit1.Text+ +and 姓名 = +Edit2.Text+ ; ADOQuery1.Close; ADOQuery1.SQL.Text:=SqlStr; ADOQuery1.Open; if ADOQuery1.RecordCount 0 then begin ShowMessage(此人已注册存在,请重新输入!); IfExist:=true; end else begin ADOQuery1.Close; ADOQuery1.SQL.Clear; ADOQuery1.SQL.Text:=insert into 管理员(编号,姓名,性别,年龄,职务,联系方式) values(:编号,:姓名,:性别,:年龄,:职务,:联系方式); ADOQuery1.Parameters.ParamByName(编号).Value:=trim(Edit1.Text); ADOQuery1.Parameters.ParamByName(姓名).Value:=trim(Edit2.Text); ADOQuery1.Parameters.ParamByName(性别).Value:=trim(Edit3.Text); ADOQuery1.Parameters.ParamByName(年龄).Value:=trim(Edit4.Text); ADOQuery1.Parameters.ParamByName(职务).Value:=trim(Edit5.Text); ADOQuery1.Parameters.ParamByName(联系方式).Value:=trim(Edit6.Text); ADOQuery1.ExecSQL; ADOQuery1.Close; ADOQuery1.SQL.Text:=select * from 管理员; ADOQuery1.SQL.add(SqlStr); ADOQuery1.Open; showmessage(添加成功!);修改代码:begin ADOQuery1.Close; ADOQuery1.SQL.Clear; tempId:=Edit1.Text; ADOQuery1.SQL.Text:=Update 管理员 SET 姓名=:姓名 where 编号=:tempId; ADOQuery1.Parameters.ParamByName(tempId).DataType:=ftstring; ADOQuery1.Parameters.ParamByName(tempId).Value:=tempId; ADOQuery1.Parameters.ParamByName(姓名).Value:=trim(Edit2.Text); ADOQuery1.ExecSQL; ADOQuery1.Close; ADOQuery1.SQL.Text:=select * from 管理员; ADOQuery1.Open; ShowMessage(修改成功!);end;删除代码:begin tempId:=DBGrid1.DataSource.DataSet.fieldbyname(编号).asString; ADOQuery1.Close; ADOQuery1.SQL.Clear; ADOQuery1.SQL.Text:=Delete from 管理员 where 编号=:编号; ADOQuery1.Parameters.ParamByName(编号).Value:=tempId; ADOQuery1.ExecSQL; ADOQuery1.Close; ADOQuery1.SQL.Text:=select * from 管理员; ADOQuery1.Open; ShowMessage(删除成功!);end;(3) 读者主页、图书查询等模块代码与管理员主页代码类似,不再给出。(4) 统计代码: 读者总数统计部分 begin adoquery1.SQL.Clear; adoquery1.SQL.Add(select count(编号) as 读者总数 from 读者信息) ; adoquery1.Open;end; 书籍种类统计部分 begin adoquery1.SQL.Clear; adoquery1.SQL.Add(select 种类, count(编号) as 书籍种类 from 图书信息 group by 种类) ; adoquery1.Open;end;
展开阅读全文