1、摘要在当今的信息时代,随时掌握有效的信息对人们的成败气到了关键的作用,另一方面人类对知识的需求也飞速增长。虽然现代的网络技术可以使人们方便快捷的获得知识,但书本阅读起来却更加方便,所以,在这种形势下,书籍就渐渐地成为人们获取并增长知识的主要途径,而图书馆就理所当然的在人们的生活中占据了一定的位置,如何科学合理的管理图书馆不但关系到读者求知的方便程度,也关系到图书管的发展,因此,开发一套完善的图书管理系统,是必不可少的了。本文主要是介绍图书管理系统的环境、功能作用、所用到的语言、设计的方案等各方面的内容。主要是让使用者了解此系统,使他们能更好的运用本系统,使此系统发挥出应有的作用。
2、关键字图书管理系统Delphi7.0SQLServer2000数据库目录第一章绪论41.1绪论41.2软件设计开发与开发平台41.2.1数据库应用系统开发41.2.2数据库51.2.3数据库管理系统5第二章系统需求分析62.1可行性分析62.2需求分析62.3功能需求62.3.1功能划分62.3.2功能描述72.4安全性需求72.5系统数据流程分析72.6功能模块图8第三章系统数据库设计103.1读者实体103.2图书实体10
4、42第一章绪论1.1绪论随着学校规模的不断扩大,图书数量的急剧增加,有关图书的信息量也在不断成倍增长。面对庞大的信息量,就需要有图书管理系统来提高图书管理工作的效率。通过这样的系统,我们可以做到信息的规范管理和快速查询,从而减少了管理方面的工作量。传统手工的图书管理,管理过程繁琐而复杂,执行效率低,并且易于出错。通过这样的系统,我们可以做到信息的规范管理和快速查询,实现了图书管理的系统化、规范化和自动化,这样不仅减少了管理工作量,还提高了管理效率,降低了管理成本。随着科技的飞跃进步,对信息的管理也是越来越规范,越来越精确。不仅让信息合理规范的管理,同时也方便管理者方便的快
5、速查询,提高了管理的效率。对图书信息进行图书入库、借阅登记、借阅查询、过期提示等这些日常业务的需要。高效性的通过系统的实用,能够改变旧的图书管理模式,使对图书的管理、借阅、查询更加方便有效。1.2软件设计开发与开发平台1.2.1数据库应用系统开发数据库应用系统是针对某个特定目标,建立再数据库管理系统之上的计算机应用系统.组成数据库应用系统的要素:数据库,数据库管理系统(DBMS),应用程序和用户.数据库:强调数据;数据库管理系统:强调系统软件;数据库应用系统:强调数据库的整个运行系统,是以,某个特定数据库为基础的计算机应用系统,其作用就是使用户不能直接干预数据库而又方便
6、访问数据库中的资料.数据库应用系统是系统开发员通过调用DBMS提供的编程接口开发出来的.应用程序要使用数据库也必须通过此接口。在数据库应用系统开发之前,对开发数据库的基本概念应当先做下了解,对数据库的结构、开发数据库应用程序的步骤、开发体系及方法都应当有相当清晰的了解和认识。这样,有利于开发出一个长期适应于用户的软件产品。数据库应用系统开发的一般过程:需求分析;系统设计;系统实现;系统测试与维护。总的来说就是理解用户的需求,然后,把它们转变为有效的数据库设计。把设计转变为实际的数据库,并且这些数据库带有功能完备、高效能的应用。1.2.2数据库数据库由DBMS(数据库管
7、理系统)处理,DBMS则由开发人员和用户通过应用程序直接或间接地使用。它主要包括四个要素:用户数据、元数据、索引和应用元数据。本系统采用的数据库是SQLServer2000.下面即是SQLServer2000介绍:SQLServer2000是Microsoft公司最新开发的大型关系数据库管理系统,具有强大的关系数据库创建、开发、设计及管理功能。1.2.3数据库管理系统数据库管理系统(DBMS):强调系统软件,指数据库系统中管理数据的软件系统。DBMS是数据库系统的核心组成部分。对数据库的一切操作,包括定义、更新及各种控制,都是通过DBMS进行的。DBMS总是基于某种数据模
8、型,可以把DBMS看成是某种数据模型在计算机系统上的具体实现。根据数据模型的不同,DBMS可以分成层次型、网状型、关系型、面向对象型等。其中SQLServer2000就是一种关系型数据库管理系统。数据库管理系统(DatabaseManagementSystem)是一种操纵和管理数据库的大型软件,是用于建立、使用和维护数据库,简称DBMS。它对数据库进行统一的管理和控制,以保证数据库的安全性和完整性。用户通过DBMS访问数据库中的数据,数据库管理员也通过DBMS进行数据库的维护工作。它提供多种功能,可使多个应用程序和用户用不同的方法在同时或不同时刻去建立,修改和询问数据库。DBMS从
9、其他两个组件接受请求,并把它们翻译成对操作系统的命令,以便读写物理介质上的数据。DBMS还涉及事务管理、锁、备份和恢复。第二章系统需求分析2.1可行性分析随着学校与广大企事业单位内部网络的广泛建立,在通用信息平台上构筑高效实用的协同工作和自动化办公应用系统,有效实现内部知识管理,已成为众多用户的共同需求。图书管理系统,为学校与广大企事业单位自动化办公提供了一个较好的解决方案。在开发过程中,采用了SQLSERVER2000网络数据库,使得本系统可以方便的和其他子系统进行数据交换。同时,注意从软件的图形应用界面上优化软件质量,使得本系统具有
10、较强的可操作性。2.2需求分析随着学校规模的不断扩大,图书数量的急剧增加,有关图书的信息量也在不断成倍增长。面对庞大的信息量,就需要有图书管理系统来提高图书管理工作的效率。通过这样的系统,我们可以做到信息的规范管理和快速查询,从而减少了管理方面的工作量。传统手工的图书管理,管理过程繁琐而复杂,执行效率低,并且易于出错。通过这样的系统,我们可以做到信息的规范管理和快速查询,实现了图书管理的系统化、规范化和自动化,这样不仅减少了管理工作量,还提高了管理效率,降低了管理成本。2.3功能需求2.3.1功能划分图书管理系统主要实现以下5方面的功能:a.图书入库
11、b.查询c.修改信息d.图书借还e.系统管理2.3.2功能描述1.书籍管理功能:包括书籍类别管理和书籍信息管理两部分。2.读者管理部分:这一部分包括对读者信息进行管理的功能。3.借阅管理部分:这一部分包括借书信息管理和还书信息管理两部分。4.系统管理:包括修改系统用户密码、增加新用户以及退出系统等。2.4安全性需求每位用户根据自己的身份不同,进入不同的用户界面。管理员有权力行使所有的管理功能,普通用户只能进行一般的查询。2.5系统数据流程分析图书管理系统数据流程图如图2-1所示。读者基本信息录入录入图书基本信息录入录入读者
12、信息管理图书信息管理借阅信息录入图书借阅管理读者信息库图书信息库图2-1系统数据流程图2.6功能模块图本系统包括的模块主要有如下几个部分:图书管理模块、借阅管理模块、读者管理模块、系统管理模块、信息查询模块、用户管理模块具体的功能描述如下:图书管理:其功能是管理书库中图书的记录信息,对入库图书信息进行管理,并进行查询。借阅管理:其功能是对读者借阅信息进行查询。读者管理:其功能是对读者一般信息进行查询以及维护。系统管理:其功能是为系统的使用者进行帐户和密码管理以及基础数据维护。其子系统描述:1.图书管理包括图书入库
20、明细表字段名称数据类型大小图书编号int50图书名称varchar20作者varchar4出版社varchar5出版日期varchar50定价varchar50类别编号varchar15状态char6(3)图书类别字段名称数据类型大小类别编号smallint2图书类别nvarchar20(4)用户字段名称数据类型大小姓名varchar20性别varchar4类型varchar50联
23、d;procedureTfrmMain.SpeedButton4Click(Sender:TObject);varStr:string;beginStr:=图书管理系统+#13;Str:=Str+作者:李丽丽(L3)+#13;Str:=Str+这是我的第一次编程,请大家多多指教!;ShowMessage(Str);end;procedureTfrmMain.SpeedButton5Click(Sender:TObject);beginifmessagedlg(确定要退出本系统吗,mti
24、nformation,[mbyes,mbno],0)=mryesthenbeginShowMessage(谢谢你的使用);//form1.DestroyWnd;frmMain.Close;end;end;procedureTfrmMain.Timer1Timer(Sender:TObject);beginStatusBar1.Panels[2].Text:=日期:+DateToStr(Date);S
27、lear;SQL.Add(select*from用户where姓名=:usernameand密码=:passand类型=:GLY);Parameters.ParamByName(username).Value:=Edit1.Text;Parameters.ParamByName(pass).Value:=Edit2.Text;Parameters.ParamByName(GLY).Value:=管理员;Open;ifRecordCount<1thenbegin
30、in.Button4Click(Sender:TObject);beginfrmLendBook.Show;end;procedureTfrmAdmin.Button5Click(Sender:TObject);beginfrmYy.Show;end;procedureTfrmAdmin.Button6Click(Sender:TObject);beginfrmModifyPsw.Show;end;procedureTfrmAdmin.Button7Click(Sender:TObject);beginif
31、messagedlg(确定要退出吗,mtinformation,[mbyes,mbno],0)=mryesthenClose;end;procedureTfrmAdmin.Button9Click(Sender:TObject);beginADOTable1.Close;ADOTable1.Filtered:=false;ifComboBox1.Text=学号thenbeginADOTable1.Filter:=学号=+Edit1.Text+;ADOTable1.Filt
32、ered:=true;ADOTable1.Open;endelsebeginADOTable1.Filter:=姓名=+Edit1.Text+;ADOTable1.Filtered:=true;ADOTable1.Open;end;end;procedureTfrmAdmin.Button8Click(Sender:TObject);beginfrmReturnBook.Show;end;procedureTfrmAdmin.Button10Click(Send
33、er:TObject);beginbeginADOTable2.Close;ADOTable2.Filtered:=false;ifcombobox2.Text=图书编号thenbeginADOTable2.Filter:=图书编号=+Edit2.Text+;ADOTable2.Filtered:=true;ADOTable2.Open;endelsebeginADOTable2.Filter:=作者=
34、+Edit2.Text+;ADOTable2.Filtered:=true;ADOTable2.Open;end;end;end;procedureTfrmAdmin.BitBtn4Click(Sender:TObject);beginifApplication.MessageBox(确实要删除记录?该命令不可取消!,删除记录,MB_OKCANCEL)=IDOKthenADOTable1.Deleteelseabort;end;procedure
35、TfrmAdmin.Button3Click(Sender:TObject);varstrBookID:string;begin//更新图书信息表注销标志ifcombobox2.Text=图书编号thenbeginstrBookID:=Trim(Edit2.Text);DM.QueryReader.Close;DM.QueryReader.SQL.Clear;strSql:=update图书明细表set状态=注销where图书编号=+strBookID;DM.Q
36、ueryReader.SQL.Text:=strSql;DM.QueryReader.ExecSQL;DM.QueryReader.Close;ifDM.QueryReader.RowsAffected>0thenShowMessage(该书注销成功!)elseShowMessage(该书注销失败!);end;end;procedureTfrmAdmin.Button11Click(Sender:TObject);beginfrmBookType.Show;end;
37、end.4.2.4修改图书类型在系统管理界面中点击修改图书类型可进入如图4-5的编辑图书类别的界面,本模块主要实现管理员对图书类别进行删除和添加的管理功能。图4-5修改图书类型界面确定按钮代码:procedureTfrmBookType.btnSureClick(Sender:TObject);beginifedtTypeID.Text=thenbeginShowMessage(类别编号不能为空!);edtTypeID.SetFocus;Exit;end;ifedtBookT
38、ype.Text=thenbeginShowMessage(类别名称不能为空!);edtBookType.SetFocus;Exit;end;DM.QueryBookType.Close;DM.QueryBookType.SQL.Clear;DM.QueryBookType.SQL.Text:=insertinto图书类别(类别编号,图书类别)+values(:id,:name);DM.QueryBookType.Parameters.ParamByName(id).Value:=Trim(
39、edtTypeID.Text);DM.QueryBookType.Parameters.ParamByName(name).Value:=Trim(edtBookType.Text);{dm.QueryBookType.SQL.Text:=update图书类别set(类别编号,图书类别)+values(:id,:name);dm.QueryBookType.Parameters.ParamByName(id).Value:=trim(edtTypeID.Text);dm.QueryBookType.Parameters.ParamByName(name).Value:=t
40、rim(edtBookType.Text);}DM.QueryBookType.ExecSQL;DM.QueryBookType.Close;DM.QueryBookType.SQL.Clear;DM.QueryBookType.SQL.Text:=select*from图书类别;DM.QueryBookType.ExecSQL;DM.QueryBookType.Open;end;删除按钮代码:procedureTfrmBookType.btnDeleteClick(Sender:TObject);begini
41、fApplication.MessageBox(是否删除记录?,确定,MB_OKCANCEL)=IDOKthenDM.DataSourceBookType.DataSet.Delete;end;4.2.5图书借阅和归还本模块主要实现的功能是读者对图书的借阅和归还:(1)图书借阅模块输入图书编号按回车图书信息会自动显示,再输入借书证号按回车会显示已借书数,如图4-6所示:图4-6借阅图书界面借阅按钮代码:procedureTfrmLendBook.Button1Click(Sender:TObject);var
42、strBookID:string;beginifeditreaderID.Text=thenbeginShowMessage(借书证号不能为空!);editreaderID.SetFocus;Exit;end;ifeditBookID.Text=thenbeginShowMessage(图书编号不能为空!);editBookID.SetFocus;Exit;end;ifgetBookCount(editBookID.Text)<>0th
43、enbeginShowMessage(此书已经被借出!);Exit;endelsebeginstrBookID:=Trim(editBookID.Text);DM.QueryBorrow.Close;DM.QueryBorrow.SQL.Clear;DM.QueryBorrow.SQL.Text:=update借出信息set借出状态=1where图书编号=+strBookID;DM.QueryBorrow.Close;DM.QueryBorrow.SQL.
44、Clear;DM.QueryBorrow.SQL.Text:=insertinto借出信息(图书编号,借书证号,借出日期,借出状态)values(:BookID,+:readerID,:time,1);DM.QueryBorrow.Parameters.ParamByName(Bookid).Value:=trim(editBookID.Text);DM.QueryBorrow.Parameters.ParamByName(readerid).Value:=trim(editreaderID.Text);DM.QueryBorrow.Par
45、ameters.ParamByName(time).Value:=DateTimePicker1.Time;DM.QueryBorrow.ExecSQL;DM.QueryBorrow.Close;//更新图书信息表在库标志DM.QueryReader.Close;DM.QueryReader.SQL.Clear;strSql:=update图书明细表set状态=借出where图书编号=+strBookID;DM.QueryReader.SQL.Text:=strSql;DM
46、.QueryReader.ExecSQL;DM.QueryReader.Close;end;ifmessagedlg(借阅成功,还有要借的书籍吗?,mtconfirmation,[mbyes,mbno],0)=mryesthenbegineditBookID.Text:=;editreaderID.Text:=;editmax.Text:=;DBEdit3.Text:=;DBEdit4.Text:=;DBEdit5.Text:=;DBE
48、Exit;end;DM.QueryBook.Filtered:=false;DM.QueryBook.Filter:=图书编号=+editBookID.Text+;DM.QueryBook.Filtered:=true;end;end;functionTfrmLendBook.ViewBook(BookID:string):boolean;varQuery:TADOQuery;beginQuery:=TADOQuery.Create(self);Query.Connec
49、tion:=DM.ADOConnection1;Query.SQL.Add(select*from图书明细表where图书编号=:id);Query.Parameters.ParamByName(ID).Value:=BookID;Query.Open;ifQuery.RecordCount=0thenbeginResult:=false;;Exit;endelseResult:=true;end;functionTfrmLendBook.viewUser(use
50、r:string):boolean;varQuery1:TADOQuery;beginQuery1:=TADOQuery.Create(self);Query1.Connection:=DM.ADOConnection1;Query1.SQL.Add(select*from学生信息表where借书证号=:id);Query1.Parameters.ParamByName(ID).Value:=user;Query1.Open;ifQuery1.RecordCount=0thenbegin
51、Result:=false;Exit;endelseResult:=true;end;procedureTfrmLendBook.editreaderIDKeyPress(Sender:TObject;varKey:Char);beginifKey=#13thenbegineditmax.Text:=IntToStr(getOwnCount(editreaderID.Text));ifviewUser(editreaderID.Text)=falsethen
52、beginShowMessage(没有此用户,请重新选择!);Exit;end;end;end;functionTfrmLendBook.getOwnCount(userID:string):integer;varQuery2:TADOQuery;begintryQuery2:=TADOQuery.Create(self);Query2.Connection:=DM.ADOConnection1;Query2.SQL.Add(selectcount(
53、借书证号)from借出信息where借书证号=:id);Query2.Parameters.ParamByName(ID).Value:=userID;Query2.Open;Result:=Query2.Fields[0].Value;Query2.Close;Query2.Free;exceptResult:=0;end;end;functionTfrmLendBook.getBookCount(BookID:string):integer;varQuery2:
54、TADOQuery;begintryQuery2:=TADOQuery.Create(self);Query2.Connection:=DM.ADOConnection1;Query2.SQL.Add(selectcount(图书编号)from借出信息where图书编号=:idand借出状态=1);Query2.Parameters.ParamByName(ID).Value:=BookID;Query2.Open;Result:=Query2.Fields[0].Value;
55、Query2.Close;Query2.Free;exceptResult:=0;end;end;(2)图书归还模块输入图书编号按回车图书信息会自动显示,再输入借书证号按回车会显示已借出日期和还书日期以及是否超期的信息提示,如图4-7所示:图4-7图书归还界面归还按钮代码:procedureTfrmReturnBook.Button2Click(Sender:TObject);varBorrowBookID:string;BookID:string;strSql:strin
56、g;strBookID:string;strDate:string;beginstrDate:=trim(edtToday.Text);ifeditreaderID.Text=thenbeginShowMessage(借书证号不能为空!);editreaderID.SetFocus;Exit;end;ifeditBookID.Text=thenbeginShowMessage(图书编号不能为空!);editBookID.SetFocus;
57、Exit;end;BorrowBookID:=Trim(editreaderID.Text);BookID:=Trim(editBookID.Text);if(BorrowBookID<>)and(BookID<>)thenbeginQueryDelete.Close;QueryDelete.SQL.Clear;strSql:=update借出信息set借出状态=0,还书日期=+strdate+where图书编号=+BookID+and借书证号
58、=+BorrowBookID+and借出状态=1;QueryDelete.SQL.Add(strSql);QueryDelete.ExecSQL;ifQueryDelete.RowsAffected>0thenbeginShowMessage(还书成功!);//更新图书信息表在库标志strBookID:=Trim(editBookID.Text);DM.QueryReader.Close;DM.QueryReader.SQL.Clear
60、ct;varKey:Char);beginifKey=#13thenbeginifViewBook(editBookID.Text)=falsethenbeginShowMessage(没有此书,请重新选择!);Exit;end;DM.QueryBook.Filtered:=false;DM.QueryBook.Filter:=图书编号=+editBookID.Text+;DM.QueryBook.Filtered:=t
61、rue;edtToday.Text:=datetostr(date);end;end;procedureTfrmReturnBook.editreaderIDKeyPress(Sender:TObject;varKey:Char);beginifKey=#13thenbeginADOQueryReturn.Close;ADOQueryReturn.SQL.Clear;ADOQueryReturn.SQL.Add(select借出日期from借出信息where借书证号=+
62、editreaderID.Text+);ADOQueryReturn.ExecSQL;ADOQueryReturn.Active:=true;ifADOQueryReturn.RecordCount>0thenDBEdit1.Text:=ADOQueryReturn.fieldbyname(借出日期).AsString;edtOwnDays.Text:=inttostr(Daysbetween(date,strtoDate(dbedit1.Text)));ifdaysbetween(date,strtoD
63、ate(dbedit1.Text))>30thenedtOwnDays.Font.Color:=clRed;label12.Caption:=您超期了,请下次及时归还!;end;end;functionTfrmReturnBook.ViewBook(BookID:string):boolean;varQuery:TADOQuery;beginQuery:=TADOQuery.Create(self);Query.Connection:=DM.ADOConnection1;Query.SQL.Add(se
64、lect*from图书明细表where图书编号=:id);Query.Parameters.ParamByName(ID).Value:=BookID;Query.Open;ifQuery.RecordCount=0thenbeginResult:=false;;Exit;endelseResult:=true;end;4.2.6新书入库本模块主要实现的是管理员对新书的入库管理,打*号的是必填项目,置空会有信息提示该项不能为空,如图4-8所示:图4-
65、8新书入库界面确定按钮代码:procedureTfrmNewBook.Button1Click(Sender:TObject);beginifEdit2.Text=thenbeginShowMessage(图书名不能为空!);Edit2.SetFocus;Exit;end;ifEdit1.Text=thenbeginShowMessage(图书编号不能为空!);Edit1.SetFocus;Exit;end;ifEdit2.Text=thenbeginShowMessage(图书名不能为空!);Edit2.SetFocus;Exit;end;ifEdit3.Text=thenbeginShowMessage(作者不能为空!);Edit3.SetFocus;Exit;end;ifEdit5.Text=thenbeginShowM