毕业设计(论文)图书管理系统的设计.doc

上传人:文库蛋蛋多 文档编号:3974704 上传时间:2023-03-30 格式:DOC 页数:38 大小:979KB
返回 下载 相关 举报
毕业设计(论文)图书管理系统的设计.doc_第1页
第1页 / 共38页
毕业设计(论文)图书管理系统的设计.doc_第2页
第2页 / 共38页
毕业设计(论文)图书管理系统的设计.doc_第3页
第3页 / 共38页
毕业设计(论文)图书管理系统的设计.doc_第4页
第4页 / 共38页
毕业设计(论文)图书管理系统的设计.doc_第5页
第5页 / 共38页
点击查看更多>>
资源描述

《毕业设计(论文)图书管理系统的设计.doc》由会员分享,可在线阅读,更多相关《毕业设计(论文)图书管理系统的设计.doc(38页珍藏版)》请在三一办公上搜索。

1、湖南第一师范学院 毕业论文(设计)题目图书管理系统学生姓名学号指导教师 系(部)信息科学与工程系专业班级07计算机应用技术2班完成时间2010年4月23日目录第1章 绪论4 1.1软件概述41.2系统介绍41.3开发工具简介4第2章 总体设计分析52.1解决方案52.2业务流程分析62.3数据流程图分析62.4数据字典72.5处理描述82.6系统功能结构92.7数据库的设计9第3章 图书管理系统详细设计123.1主窗体的设计123.2登陆窗体设计133.3添加记录窗体设计133.3.1读者数据增加143.3.2读者类型管理163.3.3图书信息增加183.3.4图书类型管理203.3.5图书借

2、阅归还窗体213.4数据更新窗体设计273.4.1图书数据更新273.4.2读者数据更新293.5数据查询窗体设计323.5.1图书查询设计323.5.2读者信息查询设计34第4章 结束语37参考文献37图书管理系统的设计摘 要:图书管理系统是典型的信息管理系统(MIS),其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。对于前者要求建立起数据一致性和完整性强、数据安全性好的库。而对于后者则要求应用程序功能完备,易使用等特点。 因此本人结合开入式图书馆的要求,对MS SQL Server2000数据库管理系统、SQL语言原理、Delphi应用程序设计,Delphi数据库技术进

3、行了较深入的学习和应用,主要完成对图书管理系统的需求分析、功能模块划分、数据库模式分析,并由此设计了数据库结构和应用程序。系统运行结果证明,本文所设计的图书管理系统可以满足借阅者、图书馆工作人员和高级管理员三方面的需要。 实现了数据库表的浏览,记录的添加、删除和修改,报表的生成,实现了多数据库表的连接操作,实现了多条件查询和模糊查询,并灵活实现了对不可更新查询结果集的更新操作,实现了主从表操作,实现了密码维护功能,最后,系统还可以导入数据库以对任意同结构的数据库进行操作。 设计充分利用Delphi7.0、数据库技术的强大力量,提高了编程效率和可靠性。 关键词:数据库;Delphi7.0;数据库

4、组件;图书管理;窗体第1章 绪论1.1软件概述此软件是运行在Windows下的用与对图书馆图书信息,以及用户借阅信息进行记录的和管理的软件。利用delphi进行开发,数据通过附带的database desktop工具以表的方式录入保存,运用sql语句进行查询该系统拥有漂亮的图形化界面,操作简便,能完成添加图书信息,修改图书信息,查询图书信息,添加读者类别,修改读者类别,查询读者信息,修改读者信息等一系列图书管理功能,开发本系统的总体任务是实现图书管理的系统化和自动化,帮助管理人员更好更高效地完成图书管理工作。1.2系统介绍随着图书馆规模的不断扩大,图书数量也相应的增加,有关图书的各种信息量也成

5、倍增加,面对这庞大的信息量,传统的人工方式管理会导致图书馆管理上的混乱,由于是用手工进行抄写,且数据处理工作量大,容易出错。并且数据繁多,容易造成丢失,不易查找。人力与物力过多浪费,图书馆管理费用也会增加,从而使图书馆的负担过重,影响整个图书馆的运作和控制管理,因此,必须制定一套合理、有效,规范和实用的图书管理系统,对图书资料进行集中统一的管理。1.3开发工具简介本系统采用Delphi 7.0作为开发平台,它是操作系统中快速应用开发环境的最新版本。它也是当前Windows平台上第一个全面支持最新Web服务的快速开发工具。无论是企业级用户,还是个人开发者,都能够利用Delphi 7.0轻松、快捷

6、地构建新一代电子商务应用。Delphi 7.0 是惟一支持所有新出现的工业标准的RAD环境,包括XML(扩展标记语言)/XSL(可扩展样式语言),SOAP(简单对象存取协议)和WSDL(Web服务器描述语言)等。Delphi 7.0 是可视化的快速应用程序开发语言,它提供了可视化的集成开发环境,这一环境为应用程序设计人员提供了一系列灵活而先进的工具,可以广泛地用于种类应用程序设计。在Delphi 7.0 的集成开发环境中,用户可以设计程序代码、运行程序、进行程序错误的调试等,可视化的开发方法降低了应用程序开发的难度。Delphi 7.0的基础编程语言是具有面向对象特性的Pascal语言,即Ob

7、ject Pascal 。Object Pascal具有代码稳定、可读性好、编译速度快等优点,并将面向对象的概念移使用Delph 7.0 ,我们几乎可以作任何事情,还可以撰写种各种类型的应用程序,动态链接库(DLL)、CON、或CORBA对象,CGI/ISAPI程序,Microsoft Back Office应用程序。程序的规模小到简单的个人数据库应用,大到复杂的企业的多层次分布式系统,都可以使用Delphi进行开发,其友好的集成开发界面,可视化的双向开发模式,良好的数据库应用支持高效的程序开发和程序运行,备受广大程序开发人员的好评。尤其是Delphi7.0对数据库应用的强大支持,大大提高了数

8、据库应用软件开发的效率,缩短了开发周期,深受广大数据库应用程序设计人员的喜爱。Delphi7.0为数据库应用开发人员提供了丰富的数据库开发组件,使数据库应用开发功能更强大,控制更灵活,编译后的程序运行速度更快。第2章 总体设计分析此软件的开发将根据用户的需求,按照用户的意图以及应用目标和范围进行设计。从权限角度考虑,在登陆窗体中,我们就必须设置系统管理员,来宾用户,一般用户等选项,并对系统管理员选项要设置口令密码,才能登陆。框架上来讲,一个系统要对图书进行管理,就必须要有图书类别,名称,编号等各项目进行统计,这样新书上架,图书的借阅归还的状态,我们都能清除的了解到。从读者角度来考虑,我们必须能

9、添加新的读者,并对读者的具体情况,进行管理。解决了这些问题这就给我们以后模块的设计提供了思路。2.1解决方案通过对图书馆工作流程的研究和详细地询问有关人员,对图书馆的各个方面的工作流程有了具体的了解,经过和图书馆的相关人员协商后,最终确定在图书管理系统中要具有以下几方面的内容:1.具有信息录入功能图书库的录入(入库功能)包括的内容是图书编号,分类号,种类号,图书名称,图书作者,出版社,单价,开本,进库日期。 读者库的录入包括的内容是借书证号,姓名,性别,单位,办证日期,读者类型。2.具有图书流通功能 读者借阅图书。 读者能够归还读书,如果图书超期,提示超期的天数和应罚款金额。3.具有信息的存储

10、功能对系统的所有操作功能能够存储。也就是系统可以存诸图书信息,读者信息,借书、还书信息等。4.具有浏览功能能够济览图书的详细信息。能够浏览读者的详细信息。能够浏览图书的清单,以及图书流通情况。5.具有查询功能能够按照读者的借书证号查询读者的相关信息。能够按照读者的借书证号查询读者的借况情况。能够按照图书的关键字(图书编号,书名,作者等)查询相关信息。6.具有特殊功能进入系统时要求提供操作者姓名和密码。可以设置读者类型的借阅期限和借阅册数。2.2业务流程分析图1 业务流程图2.3数据流程图分析数据流程图(Data Flow DFD)是描述实际业务管理系统工作流程的一种图形表示法。它描绘系统的逻辑

11、模型图,其中没有任何具体的物理元素,只是描绘信息在系统中流动和处理的情况。因为数据流图是逻辑系统的图形表示,即使不是专业的计算机技术人员也容易理解,所以是极好的通信工具。此外,设计数据流图只需考虑系统必须完成的基本逻辑功能,完全不需要考虑如何具体地实现这些功能,所以它也是软件设计的很好的出发点。图书管理系统主要是为了对图书、读者基本信息等进行计算机管理。下面就是对各个步骤的流程分析:(1)登陆窗体,选择用户类型;(2)输入密码口令;(3)进入系统;(4)实现各种操作;(5退出系统)。综合上面的介绍,下面讲总体的流程图分析如图2:图2 系统数据流程图2.4数据字典(1)数据流字典 数据流名称:新

12、书入库单 标识符:TS1 数据结构: 01新书入库单 02日期(RQ) TS1(10) 02图书代码(CPDM) TS1(12) 02图书名称(CPMC) TS1(18) 02出版社名称(CBCMC) TS1(15) 02单位(DW) TS1(4) 02规格(GG) TS1(10) 02入库数量(RKSL) TS1(6) 排列方式:按图书类型,分架子排列 流量:最大 5000本次 来源:图书供应商 去向:流通,借出给学生,老师,其它人员 数据流名称:图书出库单 标识符:TS2 数据结构: 01产品出库单 02日期(RQ) TS1(10) 02图书代码(CPDM) TS1(12) 02图书名称(

13、CPMC) TS1(18) 02出版社名称(CBCMC) TS1(15) 02单位(DW) TS1(4) 02规格(GG) TS1(10) 02入库数量(RKSL) TS1(6) 流量:平均:2000本次 去向:流通,借出给学生,老师,其它人员2.5处理描述 处理名:录入入库图书 标识符:TS1 输入:数据流A1 输出:数据流 A2 处理定义: 当输入的图书编号不为空且不为非法字符,日期代码都正确,并且新的图书实物入库后,立即将这张入库单上的数据登入数据库,并记入账本。激发条件:图书入库发生时 处理名:登记借出图书 标识符:TS2 输入:输入图书的条码编号 输出:扫描记录图书的各种信息,并登记

14、记录 处理定义: 当某人借书,且图书的是已经存在在图书管的,并做了入库登记的,借出日期与当日日期相符。把图书的相关信息登记处理激发条件:每日借出处理2.6系统功能结构概念设计阶段主要任务和目标是根据需求分析的结果,包括一般联系实体,画出对应的结构图。对于复杂的系统,通常首先要对它的各功能模进行分析,模块化是指解决一个复杂问题时自项向下逐层把软件系统划分成若干个模块的过程。每个模块完成一个特定的功能,所有的模块按某种方法组织起来,成为一个整体,完成整个系统所要求的功能。本系统的主界面包括读者管理,图书维护,图书流通,系统设置,帮助,以及状态栏等六大部分。结合上面的系统功能模块分析,下面将本系统的

15、各大功能分别用图的结构形式分析如下设计新系统功能结构如图3所示。图3 系统功能结构图2.7数据库的设计利用delphi 7.0附带databasedesktop 工具,各种数据信息,都以表的形式保存。在上面的实体以及实体之间关系的基础上,形成数据库中的表格以及各个表格之间的关系。图书管理信息系统数据库中各个表格的设计结果如下面的几个表格所示,每个表格表示在数据库中的一个表。1.读者库作用:存放读者的基本信息表,如表1所示表1 读者信息表序号字段名类型宽度主键说明1借书证号字符8是2姓名字符83性别字符24单位字符30学生则表示所在院校,否则表示表示任职单位5办证日期日期默认6类型短整型表示该读

16、者的类型2.读者类型库作用:存放读者类型及相关信息,如表2所示。表2 读者类型信息表序号字段名类型宽度主键说明1类型号短整型默认是2类型名称字符303借期整型默认4借阅册数整型默认3. 借阅记录作用:存放所有的借书信息,如表3所示。表3 借阅记录表序号字段名类型宽度主键说明1借书证号字符8是2图书编号字符133借阅日期日期默认4归还日期日期默认5续接次数短整型默认4. 图书库作用:存放图书的基本信息,如表4所示。表4 图书信息表序号字段名类型宽度主键说明1图书编号字符13是2类型号字符33图书名称字符364图书作者字符265出版社字符246单价货币默认7开本字符108进库日期日期5.图书类型作

17、用:存放图书的类型信息,如表5所示。表5 图书类型信息表序号字段名类型宽度主键说明1类型号字符3是2类型名称字符306. 用户库作用:存放系统操作员信息,如表6所示。表6 用户信息表序号字段名类型宽度主键说明1用户名字符8是2密码字符323类型短整数默认0:系统管理员1:一般用户2:操作员第3章 图书管理系统详细设计3.1主窗体的设计窗体的制作MDI窗体,一般采用系统自动生成的方法。这种方法简单但是产生很多用不到的信息。所以在此采用非自动生成的方法。在delphi7中,新建一个Application菜单。这样系统就有了一个普通窗体。通过修改窗体的”FormStyle”属性为”fsMDIForm

18、”,这样就可以把这个窗体改为MDI父窗体了。在这个系统中,进入系统后显示的是一个主窗体,主窗体的背景图片是一副图片,同时在主窗体的任务栏中显示当前的操作者,用户角色,当前日期和当前时间,并且日期和时间会随着系统时间的变化而变化。未了操作上的方便,需要在主窗体中增加工具栏,在这里要实现像办公软件中类似的工具栏,为了上述目的,在主窗体中增加了一个Timage组件和一个TcoolBar组件,4个Ttoolbar组件,和8个Ttoolbutton组件,一个Ttimer组件和一个TStatusbar组件。系统主界面如图4:图4 主窗体图事件分析及主要代码设置完成各个组件的属性后,就可以测试运行程序了。运

19、行程序时,发现各个菜单没有实现任何功能,这是因为没有给组件编写事件代码。1.实现的功能是在任务栏中,显示当前日期和时间。双击界面中的TTimer组件,出现的代码窗体中输入下面代码:statusbar1.Panels3.Text:=datetostr(date);statusbar1.Panels4.Text:=timetostr(time);2.背景图片的显示和隐藏N_xtsz_back.Checked:=not N_xtsz_back.Checked;Image1.Visible:=N_xtsz_back.Checked;4.系统退出代码Application.terminate;/结束应用

20、程序3.2 登陆窗体设计为了防止其他人员故意或者非故意修改信息。要求系统有一个用户登陆界面,这也是系统安全性的一个方面。在该界面中,用户的名称在一个下拉列表框中,用户主要选择操作员名称就可以了,然后再输入密码,当密码输入正确时,单击确定按钮即可进入系统否则不让登陆,密码三次输入不正确,系统自动退出。界面如图4:图4 登陆界面图主要代码分析如下: if not query1.Locate(用户名;密码,Vararrayof(combobox_name.Text, password.Text),) then begin Showmessage(密码不正确,请重新输入!); Li_Login:=Li

21、_Login+1; password.SetFocus; password.SelectAll; /有3次输入机会,3次不正确系统退出/ if Li_Login =3 then begin Showmessage(你是非法用户,系统退出); Close; Application.Terminate; end;3.3添加记录窗体设计3.3.1读者数据增加该窗体的作用就是增加读者信息.读者信息包括了借书证号、姓名、性别单位、办证日期、读者类型。界面如图5:图5:读者信息增加图主要程序代码如下:procedure TForm_dz_input.BitBtn1Click(Sender: TObject

22、);varS_sql:string;beginif dbedit1.Text= thenbegin showmessage(借书证号不能为空); exit; end ;if(length(dbedit1.Text)8)then begin showmessage(你输入的借书证号格式不对); exit; end;try strtoint(dbedit1.Text); except showmessage(借书证号只能输入数字。); exit; end ;query3.Close;query3.SQL.Clear;S_sql:=select *from 读者库 where 借书证号=+dbedi

23、t1.Text+;query3.SQL.Add(S_sql);query3.Open;if query3.RecordCount0 thenbegin showmessage(该借书证号已经存在。); exit; end ;if dbedit2.Text= thenbegin showmessage(读者姓名不能为空。); exit; end;if dbedit4.Text= thenbeginshowmessage(读者单位不能为空。); exit; end; query1.ApplyUpdates; showmessage(添加读者+dbedit2.Text+成功); query1.App

24、end;end;end.3.3.2读者类型管理该窗体主要是编辐读者类型的。读者类型信息包括了类型号(主键),类型名称(在读者增加窗体中显示)、借阅期限和借阅的册数。要求可以增加,删除,修改读者类型就可以了。界面如图6:图6:读者类型管理图主要程序代码如下:procedure Tform_edit_dzlx.BitBtn1Click(Sender: TObject);begintable1.Append;end;procedure Tform_edit_dzlx.BitBtn2Click(Sender: TObject);begin table1.Delete;end;procedure Tfo

25、rm_edit_dzlx.BitBtn3Click(Sender: TObject);begin table1.Append;end;procedure Tform_edit_dzlx.BitBtn4Click(Sender: TObject);beginClose;end;procedure Tform_edit_dzlx.FormCreate(Sender: TObject);begintable1.CachedUpdates:=true;end;end.3.3.3 图书信息增加建窗体的作用就是增加图书信息民。图书信息包括了图书编号、图书类型、图书名称、图书作者、出版社、单价、开本、和进库

26、日期等信息。图书类型是通过类型窗估编辑得到的。根据需要可以在图书类型编辑窗体中增加和删除图书类型。界面如图7:图7:图书信息增加图主要程序代码如下:procedure Tform_input_book.BitBtn1Click(Sender: TObject);varS_sql:string;beginif dbedit1.Text= then begin showmessage(图书编号不能为空); exit; end;if (length(dbedit1.Text)13) then begin showmessage(你输入的图书编号格式不对); exit; end; Try StrToI

27、nt64(dbedit1.Text); except showmessage(休想蒙混过关!图书编号只能输入数字。); exit; end; Query1.Close; query1.SQL.Clear; S_sql:=select *from 图书信息表 where 图书编号=+dbedit1.Text+; query1.SQL.Add(S_sql); Query1.Open; if query1.RecordCount0 then begin showmessage(该图书编号已经存在。); exit; end;if dbedit3.Text= thenbegin showmessage(

28、图书名不能为空。); exit; end;if dbedit4.Text= thenbegin showmessage(图书作者不能为空。); exit; end;if dbedit5.Text= thenbegin showmessage(图书出版社不能为空。); exit; end;if dbedit6.Text= thenbegin showmessage(单价不能为空。); exit; end; if dbedit7.Text= thenbegin showmessage(开本不能为空。); exit; end;table1.ApplyUpdates;showmessage(添加图书+

29、dbedit3.text+成功);table1.Append;end;end.3.3.4 图书类型管理该窗体用于设置图书的种类,包括图类型号(主键)和图书类型的名称(显示用)。对于功的要求比较简单,只要可以增加、删除、修改即可。界面如图8:图8:图书类型管理图主要程序代码如下:procedure Tform_edit_booltype.BitBtn1Click(Sender: TObject);begintable1.Append;end;procedure Tform_edit_booltype.FormCreate(Sender: TObject);begintable1.CachedUp

30、dates:=true;end;procedure Tform_edit_booltype.BitBtn2Click(Sender: TObject);begintable1.Delete;end;procedure Tform_edit_booltype.BitBtn3Click(Sender: TObject);begintable1.AApplyUpdates;end;procedure Tform_edit_booltype.BitBtn4Click(Sender: TObject);beginclose;end;end.3.3.5图书借阅归还窗体该窗体的作用是进行图书的借阅和归还操作

31、。在图书馆中每本书都有一个独立的编号,这个编号是不会重复的。当输入编号后,系统会自动判断图的状态,是在书库还是已经外借。界面如图9:图9:图书借阅归还图主要程序代码如下:procedure Tform_pass_book.FormCreate(Sender: TObject);beginedit1.MaxLength:=13;edit2.MaxLength:=8;edit2.Enabled:=false;bitbtn1.Enabled:=false;bitbtn2.Enabled:=false;end;procedure Tform_pass_book.Edit1Change(Sender:

32、TObject);var S_sql:string;begin if length(edit1.Text)=13 then begin query1.Close; query1.SQL.Clear; S_sql:=select 图书信息表.图书名称,图书类型信息表.类型名称,图书信息表.图书编号,图书信息表.图书作者,图书信息表.出版社+ from 图书信息表 inner join 图书类型信息表 on (图书信息表.类型号=图书类型信息表.类型号)+ where 图书编号=+edit1.Text+ ; query1.SQL.Add(S_sql); query1.Open; if query1

33、.RecordCount=1 then begin query3.Close; query3.SQL.Clear; S_sql:=select * from 借阅记录信息表 where 图书编号=+edit1.Text+; query3.SQL.Add(S_sql); query3.Open; if query3.RecordCount=1 then begin query2.Close; query2.SQL.Clear; S_sql:= select 读者库.姓名,读者类型信息表.类型名称, 读者库.性别,读者库.单位,读者类型信息表.借期+ from 读者库.DB 读者库 inner j

34、oin 读者类型信息表.DB 读者类型信息表 on (读者库.类型=读者类型信息表.类型号)+ where 借书证号=+query3.fieldbyname(借书证号).AsString+; query2.SQL.Add(S_sql); query2.Open; edit2.Text:=query3.fieldbyname(借书证号).AsStringg; bitbtn1.Enabled:=false; bitbtn2.Enabled:=true; end else begin edit2.Enabled:=true; edit2.SetFocus; end end end else begi

35、n edit2.Enabled:=false; bitbtn1.Enabled:=false; bitbtn2.Enabled:=false; dbedit1.Text:=; dbedit2.Text:=; dbedit3.Text:; dbedit4.Text:=; dbedit5.Text:=; end; if length(edit1.Text)13 then begin edit2.Text:=; dbedit6.Text:=; dbedit7.Text:=; dbedit8.Text:=; dbedit9.Text:=; end;end;procedure Tform_pass_bo

36、ok.BitBtn1Click(Sender: TObject);varS_sql:string;D_gh:Tdatetime;beginif length(edit1.Text)13 thenshowmessage(你输入的图书证号不对!); dateseparator:=/; shortdateformat:=m/d/yyyy; query3.Close; query3.SQL.Clear; s_sql:= select * from 借阅记录信息表 where 借书证号=+Edit2.text+and 归还日期+datetostr(date)+; query3.SQL.Add(s_sql

37、); query3.Open; if query3.RecordCount0 then showmessage(该用户有超期未还的书籍,不能节约其他书籍。) else begin query4.Close; query4.SQL.Clear; s_sql:=select 读者类型信息表.借期 from 读者库 inner join 读者类型信息表.DB 读者类型信息表 on (读者库.类型=读者类型信息表.类型号) where 借书证号=+edit2.text+; query4.SQL.Add(s_sql); query4.Open; D_gh:=date+query4.fieldbyname

38、(借期).asinteger; query3.Close; query3.SQL.Clear; S_sql:=insert into 借阅记录信息表 Values(+edit2.text+,+edit1.text+,+datetostr(date)+,+datetostr(d_gh)+,0); query3.SQL.Add(S_sql); query3.ExecSQL; bitbtn1.Enabled:=false; edit1.Text:=; showmessage(借书成功); end;end;procedure Tform_pass_book.BitBtn3Click(Sender: T

39、Object);beginclose;end;procedure Tform_pass_book.BitBtn2Click(Sender: TObject);vars_tsh,S_sql:string;I_days:Double;begin if query3.FieldByName(归还日期).AsDateTimeDate then begin query4.Close; query4.SQL.Clear; S_sql:=delete from 借阅记录信息表 where 图书编号=+edit1.Text+; query4.SQL.Add(S_sql); query4.ExecSQL; bi

40、tbtn2.Enabled:=false; edit1.Text:=; showmessage(归还成功); end else begin I_days:=date - query3.fieldbyname(归还日期).AsDateTime; S_tsh:=该书超期+floattostr(I_days)+天,确定归还该书?; if messagebox(0,pchar(s_tsh),图书管理系统,MB_OKCANCEL+MB_ICONQUESTION+MB_DEFBUTTON2)=IDok then begin query4.Close; query4.SQL.Clear; S_sql:=delete from 借阅记录信息表 where 图书编号=+edit1.Text+; query4.SQL.Add(s_sql); query4.ExecSQL; bitbtn2.Enabled:=false; end end end;procedure Tform_pass_book.E

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号