图书馆数据库实验报告.doc

上传人:文库蛋蛋多 文档编号:2395293 上传时间:2023-02-17 格式:DOC 页数:19 大小:2.36MB
返回 下载 相关 举报
图书馆数据库实验报告.doc_第1页
第1页 / 共19页
图书馆数据库实验报告.doc_第2页
第2页 / 共19页
图书馆数据库实验报告.doc_第3页
第3页 / 共19页
图书馆数据库实验报告.doc_第4页
第4页 / 共19页
图书馆数据库实验报告.doc_第5页
第5页 / 共19页
点击查看更多>>
资源描述

《图书馆数据库实验报告.doc》由会员分享,可在线阅读,更多相关《图书馆数据库实验报告.doc(19页珍藏版)》请在三一办公上搜索。

1、图书馆数据库实验报告一、 数据库总体说明1、 表设计(SQLsever2000截图)表一:书表二:借书证表三:借书记录表四:管理员2、 表约束(SQLsever2000截图)2.1 外键二、E-R模型年份书号借书卡号借书卡号借书卡号借书卡号借书卡号操作维护类别管理员类别卡号姓名单位经手人借期借书证还期借书卡号借书书号借书记录作者价格库存总藏书量书名出版社书三、系统架构系统登陆界面1发系统主界面2图书管理系统界面3借书证管理系统界面4借还书系统界面5图书入库界面7图书查询界面6数据库(SQlsever2000)其中系统登录界面需连接数据库,与表“管理员”中的“管理员”及“密码”核对,正确才能进入

2、系统主界面。图书入库界面、图书查询界面、增添借书证界面及借还书系统界面都需连接数据库。数据库连接通过Delphi7中的SQLquery及dataconnection功能实现。本程序共8个界面,每个界面有一定的功能。界面1是登陆界面,用户输入ID和密码,若于数据库里的相关数据一致则可进入系统主界面;界面2是主界面,通过它可以进入图书管理系统界面、借书证管理系统界面和借还书系统界面;界面3是图书管理系统界面,通过它可以进入界面7即图书入库界面从而进行图书入库操作,也可进入界面6即图书查询界面进行图书查询操作;界面4是借书证管理系统界面,可进行借书证的删除与增加操作;界面5是借还书系统界面,可进行借

3、还书操作。四、采用技术说明1、所选开发环境Dlphi简介这次试验,我们选用了Delphi作为开发工具。Delphi是全新的可视化编程环境,为我们提供了一种方便、快捷的Windows应用程序开发工具。它使用了Microsoft Windows图形用户界面的许多先进特性和设计思想,采用了弹性可重复利用的完整的面向对象程序语言(Object-Oriented Language)、当今世界上最快的编辑器、最为领先的数据库技术。对于广大的程序开发人员来讲,使用Delphi开发应用软件,无疑会大大地提高编程效率,而且随着应用的深入,您将会发现编程不再是枯燥无味的工作Delphi的每一个设计细节,都将带给您

4、一份欣喜。Delphi实际上是Pascal语言的一种版本,但它与传统的Pascal语言有天壤之别。一个Delphi程序首先是应用程序框架,而这一框架正是应用程序的“骨架”。在骨架上即使没有附着任何东西,仍可以严格地按照设计运行。您的工作只是在“骨架”中加入您的程序。缺省的应用程序是一个空白的窗体(Form),您可以运行它,结果得到一个空白的窗口。这个窗口具有Windows窗口的全部性质:可以被放大缩小、移动、最大最小化等,但您却没有编写一行程序。因此,可以说应用程序框架通过提供所有应用程序共有的东西,为用户应用程序的开发打下了良好的基础。Delphi已经为您做好了一切基础工作程序框架就是一个已

5、经完成的可运行应用程序,只是不处理任何事情。您所需要做的,只是在程序中加入完成您所需功能的代码而已。在空白窗口的背后,应用程序的框架正在等待用户的输入。由于您并未告诉它接收到用户输入后作何反应,窗口除了响应Windows的基本操作(移动、缩放等)外,它只是接受用户的输入,然后再忽略。Delphi把Windows编程的回调、句柄处理等繁复过程都放在一个不可见的Romulam覆盖物下面,这样您可以不为它们所困扰,轻松从容地对可视部件进行编程。12、 Pascal语言简介Delphi的编程语言是以Pascal为基础的。Pascal语言具有可读性好、编写容易的特点,这使得它很适合作为基础的开发语言。同

6、时,使用编译器创建的应用程序只生成单个可执行文件(.EXE),正是这种结合,使得Pascal成为Delphi这种先进开发环境的编程语言。在编写自己的Object Pascal程序时,要注意程序的可读性。Pascal语言是英式结构语言,在程序中选择合适的缩排、大小写风格,并在需要时将程序代码分行,会使得程序代码能够很容易地被自己和他人读懂。一般的程序员都有这样的体验:如果不给程序加上适当的注解,一段时间后,自己也难以理清程序的流程。给程序及时地加上注释是良好的编程习惯。Delphi的注释需要加注在之间,编辑器会把它们处理成为空白。Delphi保留了Borland Pascal编辑器的风格,关键字

7、采用黑体字,被注释的部分会变暗,这使得编程风格良好,易读易写。在事件处理过程中,最常用到的工作就是把一个新值赋给一个属性或变量。在设计用户界面时,可以使用Object Inspector(Object Inspector)来改变其属性;但有时需要在程序执行时改变属性的值,而且有些属性只能在执行时改变,这些属性在Delphi的在线帮助的“Proprety”主题中被标为执行期属性。过程与函数是程序中执行特定工作的模块化部分。Delphi的运行库包含许多过程与函数以供您的应用程序调用。您不必了解过程与函数的逻辑,但要知道过程与函数的用途。在对象中说明的过程和函数称为方法(Method)。所有的事件处

8、理过程都是过程,以保留字procedure开头。每一个事件处理过程只包含了当这一事件发生时需要执行的程序代码。在事件处理过程中使用Delphi已经存在的过程与函数,只需在程序代码中调用它们即可。23、 delphi7中所用组件说明以下只介绍,我们所使用的Delphi组件,以及我在程序设计中的应用。(1).Standard栏的Lable组件,Edit组件,Memo组件,Button组件,Panle组件。分别简单介绍:Label部件 Label(标签)一般放在对象的旁边,用来标记这些对象,从而对用户的操作进行提示,也可以用来显示其它信息。您可以在标签中设置热键,也即在Caption属性值段中输入含

9、有“&”的字串,当用户使用“Alt+关键字母”时,将自动选中它所指向的对象。Edit部件 部件都是用作接收、显示用户输入文本的。ReadOnly在运行时间内控制对象是否可以进行Windows的操作,当此值为False时,该框内的文本就不能被复制到剪贴板上。MaxLength可以设置输入文本的长度限制。用PasswordChar属性可以按照显示隐蔽密码的方法显示用户输入文本Memo部件Memo是备注框,与以上对象不同的是,它可以接收多行文本输入。将ScrollBars设置成ssVertical,可以为它加上一个垂直的滚行条。Align属性调整该对象在窗口中的对齐情况,有alNone(无对齐指定)

10、、alBottom(底部对齐)、alClient(全窗口显示)等可以选择;而Alignment属性则决定了文本在框中的对齐显示格式。Button部件按钮是Windows常用的部件,前文的例程中我们已经基本掌握了Button和BitBtn的主要用法。它们一般用在对话框中,做为执行某种功能的指示。您也可以为它们设置内置返回功能,将ModelResult属性加以匹配,可以不用编程,直接实现系统内置的功能,这一点上和Kind属性颇类似。Panle部件Panle有标题,可以用文字表征成组部件的标题或信息。Panel部件也可以达到将部件分组的目的。通过编程向窗口加一个操作板部件,以书写提示和帮助信息,也不

11、失为一种好方法。(2). Additional栏的Bitbtn部件,Image部件。Bitbtn部件与Button基本相同,不过可以在旁边加入图案,使按钮功能更鲜明。Image部件 图象部件Image在Additional页上,用来在窗口中显示一幅图片,可以在picture属性中调入图象文件。Delphi支持位图(.BMP)、图标(.ICO)、图元(.WFM)三种文件格式。比较重要的属性是Autosize和Strech。它们决定了图象在窗口中的显示尺寸。Autosize属性为True表示按原尺寸显示,Strech属性为True表示图象按对象图框的大小显示,这时图象的大小可以人为改变。(3).

12、System中的Timer部件。计时器部件Timer在System页上,还有一个(Timer计时器)部件,它能够有规律地触发OnTimer事件,发送信息给应用程序。它是编制应用程序时最为重要的部件之一。Enabled属性表示了计时器打开还是关闭;用Interval属性设置两个OnTimer事件间的间隔,单位是毫秒,也即千分之一秒。将间隔置为0相当于关闭计时器,Interval的最大允许值是32767,也即32.767秒。(4). Data Access栏中的DataSource部件DataSource部件,顾名思义是用来访问数据源的部件。(5). ADO栏中的ADOConnection部件,A

13、DOQuery部件。ADOConnection部件负责部相应的数据库进行连接的部件。它是存取磁盘上数据库表的媒介,它通过ADO存取数据库表中的数据,再与TDataSource 进行“对话”,使得数据浏览部件能够有效地从部件中访问数据并能显示和编辑其中的数据。ADOQuery部件 TQuery 并与TDataSource“对话”,实现数据浏览部件对数据库的访问。(6). DataControl栏里的DBGrid部件DBGrid用来显示查询数据库得到的内容。五、各模块说明1、系统登录界面双击exe文件会进入此界面:单击“进入登陆界面”会进入登陆界面:管理员输入登陆ID和密码后,点击“登陆”按钮,如

14、果验证通过(与数据库表“管理员”里的信息一致),则进入主界面;如果没通过,则关闭。非管理员只能通过右边登陆按钮登陆,登陆后直接到图书查询界面,该界面只能返回到登陆界面。即非管理员只能进行查询操作。附:登录按钮程序:procedure TForm1.Button1Click(Sender: TObject);var ID :string; code :string;beginwith ADOQuery1 do begin ID:=Edit1.Text; code:=Edit2.Text; SQL.Clear; SQL.Add(select * from 管理员 where 管理员ID=:a an

15、d 密码=:b); Parameters.ParamByName(a).Value:=ID; Parameters.ParamByName(b).Value:=code; Open; if not ADOQuery1.eof then form2.show; form1.close;end;end;退出按钮程序:procedure TForm1.Button2Click(Sender: TObject);beginclose;end;登陆按钮(右边)程序:procedure TForm1.Button3Click(Sender: TObject);beginform6.show;form1.C

16、lose;end;2、系统主界面 单击“图书管理系统”,进入图书查询与入库界面;单击“借书证管理系统”进入借书证管理界面;单击“借还书管理界面”进入借还书界面。附:图书管理系统按钮程序:procedure TForm2.Button1Click(Sender: TObject);beginform3.show;form2.hide;end;借书证管理系统按钮程序:procedure TForm2.Button2Click(Sender: TObject);beginform4.show;form2.Close;end;借还书管理系统按钮程序:procedure TForm2.Button3Cl

17、ick(Sender: TObject);beginform5.show;form2.Close;end;退出按钮程序:procedure TForm2.Button5Click(Sender: TObject);beginclose;end;3、图书查询与入库界面单击“图书查询”,进入图书查询操作界面;单击“图书入库”进入图书入库操作界面。附:图书查询按钮程序:procedure TForm3.Button1Click(Sender: TObject);beginform6.show;form3.Close;end;图书入库按钮程序:procedure TForm3.Button2Click

18、(Sender: TObject);beginform7.show;form3.Close;end;end.返回主界面按钮程序:procedure TForm3.Button3Click(Sender: TObject);beginform2.show;form3.Close;end;4、 借书证管理界面输入借书证卡号,单击“删除借书证”,如果输入的卡号在数据库里有记录,那么表“借书证”里的这个借书证将被删除。输入卡号、姓名、单位、类别后,如果卡号在表“借书证”里不存在,那么将被添加;类别只能填“学生”或“教工”。附:删除借书证按钮程序:procedure TForm4.Button1Clic

19、k(Sender: TObject);begin if edit1.Text= then begin Application.MessageBox(请填写读者证号!,提示,MB_ICONERROR); exit; end;try with ADOQuery1 do begin SQL.Clear; SQL.Add(select * from 借书证 where 卡号=:卡号); Parameters.ParamByName(卡号).Value := trim(Edit1.Text); Open; if RecordCounT=0 then begin MessageDlg(读者卡号不存在!,m

20、tError,mbok,0); edit1.Text:=; exit; end; if RecordCounT0 then begin SQL.Clear; SQL.Add(delete from 借书证 where 卡号=:卡号); Parameters.ParamByName(卡号).Value := trim(Edit1.Text); ExecSQL; Application.MessageBox(借书证删除成功!,提示,MB_ICONINForMATION); end; end; finally end; end;办理按钮程序:procedure TForm4.Button5Click

21、(Sender: TObject);begin if (trim(edit5.Text)=) or (edit2.Text=) or (edit3.Text=) or (edit4.Text=)then begin Application.MessageBox(请填写完整!,提示,MB_ICONERROR); exit; end; with ADOQuery1 do begin adoquery1.close; adoquery1.SQL.Clear; adoquery1.sql.add(insert into 借书证(卡号,姓名,单位,类别); adoquery1.SQL.Add(value

22、s(+trim(edit5.text)+,+edit2.text+,+edit3.text+,+edit4.text+); adoquery1.ExecSQL; showmessage(注册成功); Edit5.Text:=; Edit2.Text:=; Edit3.Text:=; Edit4.Text:=; end;end;返回主界面按钮程序:procedure TForm4.Button6Click(Sender: TObject);beginform2.Show;form4.Close;end;5、 借还书界面同学借还书,首先输入借书证卡号,显示其已借书信息。然后再输入书号和ID可借书,

23、如果书号在表“书”里存在,卡号在表“借书证”里存在,ID在表“管理员”里存在,且书号对应的库存大于0,那么借书成功,该书的库存将被减去1,借书记录里会记录下借书记录(借书书号、卡号、借期、还期、经手人);再输入书号可还书,该书库存将被加1,同时相应的借书记录将被删除。附:确定按钮:procedure TForm5.Button4Click(Sender: TObject);beginwith ADOQuery1 do begin sql.clear;SQL.Add(select * from 借书记录 where 借书卡号= +Edit2.text+ ); ADOQuery1.Open; en

24、d;end;借书按钮程序:procedure TForm5.Button1Click(Sender: TObject);vari:integer; begin with ADOQuery1 do begin SQL.Clear; SQl.Add(select * from 书 where 书号=:书号); Parameters.ParamByName(书号).Value:=trim(edit1.Text); open; i:=fieldbyName(库存).Asinteger; if i= 0 then begin Application.MessageBox(对不起,该书已全部借出,提示,M

25、B_ICONINFORMATION); end; if i0 then with ADOQuery1 do begin SQL.Clear; SQl.Add(update 书 set 库存=:库存 where 书号=:书号); Parameters.ParamByName(书号).Value:=trim(Edit1.Text); Parameters.ParamByName(库存).Value:=i-1; ADOQuery1.ExecSQL; end; with ADOQuery1 do begin SQL.Clear; SQl.Add(insert into 借书记录(借书卡号,借书书号,借

26、期,还期,经手人) values (+Edit2.Text+,+Edit1.Text+,20110106,20110215,+Edit4.Text+); ExecSQL; ShowMessage(借书成功!) end; end; end;还书按钮程序:procedure TForm5.Button2Click(Sender: TObject);begin ADOQuery1.SQL.Clear; if (Edit3.Text= ) then ShowMessage(您要还什么书哦!) else beginADOQuery1.SQL.Add( delete from 借书记录 where 借书书

27、号=+Edit3.Text+ and 借书卡号=+Edit5.Text+);ADOQuery1.SQL.Add( update 书 set 库存=库存+1 where 书号=+Edit3.Text+);ADOQuery1.ExecSQL; ShowMessage(还书成功!);end; end;返回主界面程序:procedure TForm5.Button3Click(Sender: TObject);beginform2.show;form5.Close;end;6、 书查询进行书查询,先选择查询项,再输入内容,可以选择模糊查询。查询后右边的框里将显示结果,框下面会显示查询到的数量。附:查询

28、按钮程序:procedure TForm6.Button1Click(Sender: TObject);varquery_Str : String;begintryquery_Str :=trim(Edit4.Text);if CheckBox1.Checked then query_Str := %+query_Str +%;with ADOQueryBookQuery do begin SQL.Clear; if RadioButton1.Checked then begin SQL.Add(select * from 书 where 书号 like :书号); Parameters.Pa

29、ramByName(书号).value := query_Str; end; if RadioButton2.Checked then begin SQL.Add(select * from 书 where 书名 Like :书名); Parameters.ParamByName(书名).value := query_Str; end; if RadioButton3.Checked then begin SQL.Add(select * from 书 where 出版社 like :出版社); Parameters.ParamByName(出版社).value := query_Str; e

30、nd; if RadioButton4.Checked then begin SQL.Add(select * from 书 where 作者 like :作者); Parameters.ParamByName(作者).value := query_Str; end; ADOQueryBookQuery.Open; Label2.Caption := 共查到+IntToStr(RecordCount)+条记录; / Application.MessageBox(查询成功!,提示,MB_ICONINFORMATION); end; except MessageDlg(查询失败,mtError,m

31、bok,0); end; end;返回主界面按钮程序:procedure TForm6.Button2Click(Sender: TObject);beginform2.show;form6.Close;end;7、 图书入库分为新书入库,和已有数目入库。在左边输入书号等信息,如果书号在表“书“里已存在,那么将会被提醒到界面右边办理;反之也一样。目的在于,对于已存在的数目进行入库操作,只需输入书号即可,减少工作人员的工作量。新书入库后,藏书量和库存量都为1。对于已存在数目入库,库存和藏书量都将被加1。附:入库(左边)按钮程序:procedure TForm7.Button1Click(Send

32、er: TObject);beginwith ADOQuery1 do /检查卡号是否存在 begin SQL.Clear; SQl.Add(select * from 书 where 书号=:书号); Parameters.ParamByName(书号).value := Edit1.Text; Open; if RecordCount 0 then begin MessageDlg(该书号已经存在,请到已有书目入库进行入库操作!,mtError,mbok,0); Edit1.SetFocus; Exit; end; Close; end; with ADOQuery1 do begin S

33、QL.Clear; SQl.Add(insert into 书(书号,类别,书名,出版社,年份,作者,价格,总藏书量,库存)+ values(:书号,:类别,:书名,:出版社,:年份,:作者,:价格,:总藏书量,:库存); Parameters.ParamByName(书号).Value:=trim(Edit1.Text); Parameters.ParamByName(类别).Value:=trim(Edit2.Text); Parameters.ParamByName(书名).Value:=trim(Edit3.Text); Parameters.ParamByName(出版社).Valu

34、e:=trim(Edit4.Text); Parameters.ParamByName(年份).Value:=trim(Edit5.Text); Parameters.ParamByName(作者).Value:=trim(Edit6.Text); Parameters.ParamByName(价格).Value:=trim(Edit7.Text); Parameters.ParamByName(总藏书量).Value:=1; Parameters.ParamByName(库存).Value:=1; ExecSQL; Application.MessageBox(图书入库成功!,提示,MB_I

35、CONINFORMATION); end; end; 入库(右边)按钮程序: procedure TForm7.Button3Click(Sender: TObject);vari,j:integer;beginwith ADOQuery1 do /检查卡号是否存在 begin SQL.Clear; SQl.Add(select * from 书 where 书号=:书号); Parameters.ParamByName(书号).value := Edit8.Text; Open; if RecordCount 0 then begin i:=fieldbyName(库存).Asinteger

36、+1; j:=fieldbyName(总藏书量).Asinteger+1; end; if RecordCount =0 then begin MessageDlg(该书号不存在,请在新书入库进行入库操作!,mtError,mbok,0); Edit8.SetFocus; Exit; end; Close; end; with ADOQuery1 do begin SQL.Clear; SQl.Add(update 书 set 库存=:库存 where 书号=:书号); Parameters.ParamByName(书号).Value:=trim(Edit8.Text); Parameters

37、.ParamByName(库存).Value:=i; ExecSQL; end; with ADOQuery1 do begin SQL.Clear; SQl.Add(update 书 set 总藏书量=:总藏书量 where 书号=:书号); Parameters.ParamByName(书号).Value:=trim(Edit8.Text); Parameters.ParamByName(总藏书量).Value:=j; ExecSQL; Application.MessageBox(图书入库成功!,提示,MB_ICONINFORMATION); end; end; 返回主界面按钮程序: procedure TForm7.Button2Click(Sender: TObject);beginform2.show;form7.close;end;六、 成员分工描述本组成员有韩臣才和唐佳杰两位同学。分工描述:韩臣才:数据库建设,数据库建在分发的10.214.6.98上;借助相关资料编写7个界面的程序;整合7个模块程序(经唐佳杰修改)成为exe文件;美工;实验报告填写;唐佳杰:借助相关资料,不断修改调试韩臣才编的7个模块程序;说明:由于我们两人住得很近,实际中很多事情都是一起做的。本图书馆数据库采用友好的视窗操作,申请加分! 韩臣才、唐佳杰

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

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号