[工学]图书管理系统.doc

上传人:音乐台 文档编号:1977076 上传时间:2019-01-27 格式:DOC 页数:38 大小:1.43MB
返回 下载 相关 举报
[工学]图书管理系统.doc_第1页
第1页 / 共38页
[工学]图书管理系统.doc_第2页
第2页 / 共38页
[工学]图书管理系统.doc_第3页
第3页 / 共38页
亲,该文档总共38页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《[工学]图书管理系统.doc》由会员分享,可在线阅读,更多相关《[工学]图书管理系统.doc(38页珍藏版)》请在三一文库上搜索。

1、数据库技术与应用大作业题目:数据库应用系统的设计和实现指导老师: 班级: 姓名: 学号: 中南大学信息科学与工程学院2009年12月 目 录1.需求说明 22.数据库结构设计2 2.1 概念结构设计 .2 2.2 逻辑结构设计 42.2.1关系模型 42.2.2系统总体结构 .42.2.3 表的建立.52.2.4规则的建立与绑定.102.2.5默认的建立与绑定102.2.6报表的设计(视图的设计).113.数据库行为功能设计和Delphi对界面的实现153.1安全控制.153.2数据操作.163.3存储过程设计.223.4触发器设计.24附1 Delphi实现相关功能的代码.24附2:参考文献

2、.36图书管理系统的设计和实现1 需求说明为满足图书管理发展的需要,提高竞争能力,开发一个界面友好,易于操作的图书管理系统进行自动化处理变得十分重要。现在要求设计一个图书管理系统来提高图书馆管理水平和工作效率。根据图书馆的日常需要,确定系统要实现六个基本功能:图书资料管理、学生资料管理、新增信息操作、删除信息操作、修改信息和查询处理。同时该系统具有强大的查询功能和可靠性。同时了解到图书馆的使用人员:(1)系统管理员:维护整个系统的正常运行、及时更新系统,给每个新用户建立读者信息,给每个注销用户删除相应的读者信息;(2)图书管理员:负责管理图书和给学生办理借书、还书;(3)学生:需要借书、还书的

3、一些用户。该系统的具体要求:(1)一个图书管理员管理所有图书和所有学生的业务;(2)一本图书可以由多个图书管理员管理和多个同学借阅;(3)一个学生可以借多本图书。数据库中要记录学生的借书情况、图书的借还的情况以及读者、图书管理员、图书的基本情况。除了对这些数据进行正常的维护之外,还需要产生一些报表,如学生借书表,内容包括学号、姓名、图书编号、图书名。2 数据库结构设计2.1 概念结构设计对于这个图书管理系统,其核心活动是图书,学生与图书之间是通过读者借书发生联系的,图书管理员与图书之间是通过图书管理员管理图书发生联系的,因此,此系统所包含的实体有:(1)图书:用于描述一本图书的基本信息,用图书

4、编号来标识此实体;(2)学生:用于描述一个学生的基本信息,由学号来标识;(3)图书管理员:用于描述一个图书管理员的基本信息,由管理帐号来标识;其初步E-R图如下:学生借书管理图书管理员图书mnmn实体的属性比较多,在画E-R图时,不一定要把所有的实体属性都画在E-R图上,可以另外用文字说明,如:经过初步分析,可知此系统中各实体所包含的基本属性为:图书:图书编号、图书名、出版社、编者;学生:学号、姓名、性别、系、专业、班级;图书管理员:管理帐号、管理员姓名、工作时间。2.2 逻辑结构设计22.1关系模型有了基本E-R图后,就可以进行逻辑结构设计了,也就是设计基本的关系模型。设计基本关系模式主要是

5、从E-R图出发,将其直接转换为关系模式。根据转换规则,这个E-R图转换的关系模式为:图书(图书编号、图书名、出版社、编者、是否在馆),主码为图书编号;学生(学号、姓名、性别、年龄、系、专业、班级),主码为学号;图书管理员(管理帐号、管理员姓名、工作时间),主码为管理帐号;借书(学号、姓名、图书编号、图书名、借书时间、还书时间、是否归还),主码为(学号、图书编号);管理(图书编号 、图书名、管理帐号、管理员姓名),主码为(图书编号、管理帐号)。2.2.2系统总体结构 2.2.3 表的建立在设计好了关系模式并确定好了每个关系模式的主码后,再看一下这些关系模式之间的关联关系,即确定关系模式的外码,可

6、通过E-R图中联系实体发现:借书关系中,学号和图书编号是外码,分别引用学生关系中的学号和课程关系中的图书编号;管理关系中,管理帐号、图书编号是外码,分别引用图书管理员关系中的管理帐号和图书关系中的图书编号;最后,确定表中各属性的详细信息,包括数据类型和长度等,代码如下:(1) 图书表:CREATE TABLE 图书表( 图书编号 char(20) NOT NULL PRIMARY KEY, 图书名 char(20), 编者 char(9),出版社 char(20),是否在馆 char(2)(2) 学生表: CREATE TABLE 学生表( 学号 int NOT NULL PRIMARY KE

7、Y, 姓名 char(9), 性别 char(2) default 男, 年龄 int, 系 char(20), 专业 char(20), 班级 char(10)(3) 图书管理员表:CREATE TABLE 图书管理员表( 管理帐号 int NOT NULL PRIMARY KEY, 管理员姓名 char(9),工作时间 char(10)(4) 借书表:CREATE TABLE 借书表( 学号 int NOT NULL, 姓名 char(9), 图书编号 char(20) NOT NULL, 图书名 char(20), 借书时间 char(10), 还书时间 char(10),是否归还 ch

8、ar(2)(5) 管理表:CREATE TABLE 管理表( 图书编号 char(20) NOT NULL, 图书名 char(20),管理帐号 int NOT NULL,管理员姓名 char(9) ) 为表添加记录(1)图书表:INSERT 图书表 (图书编号,图书名,出版社,编者,是否在馆)VALUES (TP311.56,Delphi促销存程序设计,清华大学出版社,陈惟彬,是)INSERT 图书表 (图书编号,图书名,出版社,编者,是否在馆)VALUES (73.964,Delphi程序设计入门,人民邮电出版社,Devra Hall,是)INSERT 图书表 (图书编号,图书名,出版社,

9、编者,是否在馆)VALUES (I211.56,朝花夕拾,人民文学出版社,鲁迅,否)INSERT 图书表 (图书编号,图书名,出版社,编者,是否在馆)VALUES (I211.34,围城,人民文学出版社,钱钟书,是)INSERT 图书表 (图书编号,图书名,出版社,编者,是否在馆)VALUES (I213.12,梦里花落知多少,作家出版社,三毛,是)INSERT 图书表 (图书编号,图书名,出版社,编者,是否在馆)VALUES (I213.13,雨季不再来,作家出版社,三毛,是)INSERT 图书表(图书编号,图书名,出版社,编者,是否在馆)VALUES (I213.14,撒哈拉的故事,作家出

10、版社,三毛,否)INSERT 图书表(图书编号,图书名,出版社,编者,是否在馆)VALUES (TP311.56DBJ2,Delphi编程技巧,中国电力出版社,裴红义,是)INSERT 图书表(图书编号,图书名,出版社,编者,是否在馆)VALUES (TP311.13,数据库技术,清华大学出版社,岳昆,是)INSERT 图书表(图书编号,图书名,出版社,编者,是否在馆)VALUES (V205.16,山水课徒稿,人民艺术出版社,王庆淮,是)(2)学生表:INSERT 学生表(学号,姓名,性别,年龄,系,专业,班级)VALUES(090908332,王若瑶,女,19,信息科学与工程学院,控制类,

11、0833)INSERT 学生表(学号,姓名,性别,年龄,系,专业,班级)VALUES(200107305,李天奇, 男,21,计算机科学与技术系,计算机应用技术,0701)INSERT 学生表(学号,姓名,性别,年龄,系,专业,班级)VALUES(200205064,姚冰冰, 女,20,工商管理学院,会计学,0812)INSERT 学生表(学号,姓名,性别,年龄,系,专业,班级)VALUES(200303102,刘进, 男,18,化学科学与工程学院,环境工程,0923)(3)图书管理员表:INSERT 图书管理员表(管理帐号,管理员姓名,工作时间)VALUES(135894,刘惟一,周一至周三

12、)INSERT 图书管理员表(管理帐号,管理员姓名,工作时间)VALUES(135763,王冰飞,周四至周天)(4)借书表:INSERT 借书表(学号,姓名,图书编号,图书名,借书时间,还书时间,是否归还)VALUES(090908332,王若瑶,TP311.56,Delphi促销存程序设计,2009-09-03,2009-12-03,是)INSERT 借书表(学号,姓名,图书编号,图书名,借书时间,还书时间,是否归还)VALUES(200107305,李天奇,73.964,Delphi程序设计入门,2009-09-16,2009-12-16,是)INSERT 借书表(学号,姓名,图书编号,图

13、书名,借书时间,还书时间,是否归还)VALUES(090908332,王若瑶, V205.16,山水课徒稿,2009-09-03,2009-12-03,是)INSERT 借书表(学号,姓名,图书编号,图书名,借书时间,还书时间,是否归还)VALUES(200205064,姚冰冰,I211.56,朝花夕拾,2009-11-03,2010-02-03,否)INSERT 借书表(学号,姓名,图书编号,图书名,借书时间,还书时间,是否归还)VALUES(200303102,刘进,I213.14,撒哈拉的故事,2009-12-23,2008-03-23,否)(5)管理表:INSERT 管理表(图书编号,

14、图书名,管理帐号,管理员姓名)VALUES(TP311.56,Delphi促销存程序设计,135894,刘惟一)INSERT 管理表(图书编号,图书名,管理帐号,管理员姓名)VALUES(73.964,Delphi程序设计入门,135894,刘惟一)INSERT 管理表(图书编号,图书名,管理帐号,管理员姓名)VALUES (I211.56,朝花夕拾,135894,刘惟一)INSERT 管理表(图书编号,图书名,管理帐号,管理员姓名)VALUES (I211.34,围城,135894,刘惟一)INSERT 管理表(图书编号,图书名,管理帐号,管理员姓名)VALUES (I213.12,梦里花落

15、知多少,135894,刘惟一) INSERT 管理表(图书编号,图书名,管理帐号,管理员姓名)VALUES (I213.13,雨季不再来,135894,刘惟一)INSERT 管理表(图书编号,图书名,管理帐号,管理员姓名)VALUES (I213.14,撒哈拉的故事,135894,刘惟一)INSERT 管理表(图书编号,图书名,管理帐号,管理员姓名)VALUES (TP311.56DBJ2,Delphi编程技巧,135894,刘惟一)INSERT 管理表(图书编号,图书名,管理帐号,管理员姓名)VALUES (TP311.13,数据库技术,135894,刘惟一)INSERT 管理表(图书编号,

16、图书名,管理帐号,管理员姓名)VALUES (V205.16,山水课徒稿,135894,刘惟一)INSERT 管理表(图书编号,图书名,管理帐号,管理员姓名)VALUES(TP311.56,Delphi促销存程序设计,135763,王冰飞)INSERT 管理表(图书编号,图书名,管理帐号,管理员姓名)VALUES(73.964,Delphi程序设计入门,135763,王冰飞)INSERT 管理表(图书编号,图书名,管理帐号,管理员姓名)VALUES (I211.56,朝花夕拾,135763,王冰飞)INSERT 管理表(图书编号,图书名,管理帐号,管理员姓名)VALUES (I211.34,围

17、城,135763,王冰飞)INSERT 管理表(图书编号,图书名,管理帐号,管理员姓名)VALUES (I213.12,梦里花落知多少,135763,王冰飞)INSERT 管理表(图书编号,图书名,管理帐号,管理员姓名)VALUES (I213.13,雨季不再来,135763,王冰飞)INSERT 管理表(图书编号,图书名,管理帐号,管理员姓名)VALUES (I213.14,撒哈拉的故事,135763,王冰飞)INSERT 管理表(图书编号,图书名,管理帐号,管理员姓名)VALUES (TP311.56DBJ2,Delphi编程技巧,135763,王冰飞)INSERT 管理表(图书编号,图书

18、名,管理帐号,管理员姓名)VALUES (TP311.13,数据库技术,135763,王冰飞)INSERT 管理表(图书编号,图书名,管理帐号,管理员姓名)VALUES (V205.16,山水课徒稿,135763,王冰飞)在SQL Server2000中建立上述表。将上述代码复制,在查询分析器中粘贴,点击运行,即可生成所需的表。表和表之间的约束关系,见代码中主码、外码的确立。2.2.4规则的建立与绑定规则:规则的绑定:2.2.5默认的建立与绑定默认:默认的绑定:2.2.6报表的设计(视图的设计)有了数据库的基本表之后,应该看一下这些基本表能否满足产生报表的需求。如:图书管理表管理(图书编号 、

19、图书名、管理帐号、管理员姓名)图书编号和图书名,可由图书表得到;管理帐号和管理员姓名可由图书管理员表得到,因此,可以满足图书管理表的要求,可以通过定义视图实现。使用SQL语句创建视图,代码:create view view1 as select 学生表.学号,学生表.姓名,借书表.图书编号,借书表.学号 from 学生表,借书表 where 学生表.学号=借书表.学号视图的实现快速创建报表(1)在Delphi中选择“File”“New” “other”选项,从中弹出的New Items对话框中选择Business页面,然后选择RuicklReport Wizard,如图1所示。(2)在图2中单

20、击“OK”,弹出图3,单击“Start Wizard”按钮将左边的选项都添加到右边去,点击“Finish”按钮。(3)然后在表弹出的表中右击运行,即可生成报表。 图1 图2 图3 图43 数据库行为功能设计和delphi对界面的实现3.1 安全控制任何数据库应用系统都需要安全控制功能,图书管理系统用户分为如下几类:(1)系统管理员:有系统的全部权限,可以新增、删除、修改等权限。(2)图书管理员:具有对学生的借书情况的维护权,对图书的管理权;(3)读者:具有对个人信息和借书情况的查询权。下图为系统的基本逻辑:现在来简单介绍一下此图书管理系统Form1是欢迎界面Form2是登录界面,在次界面读者,

21、图书管理员和系统管理员分别进入自己的界面,行使各自的权限。3.2 数据操作数据操作功能包括对这些数据进行录入、删除、修改功能。(1)数据查询只有具有相应权限的用户才能查询相应表中的数据。次系统中读者、图书管理员和系统管理员都有查询功能,但相应的查询信息还是有权限的。读者进入系统后,只能查询信息,可以查询个人信息也可以查询自己借书的情况。如下图借书情况的查询(2)数据删除只有具有相应权限的用户才能删除相应表中的数据。图书管理员可以对图书管理,进行查询、删除、图书录入的功能。如图图书查询时,可以分图书编号、图书名和出版社来查图书信息,如图(3)数据新增图书管理员新增图书(4)数据修改只有具有相应权

22、限的用户才能修改相应表中的数据。只有系统管理员才能新增读者的相关信息,对整个系统进行维护。如图新增信息后查询系统管理员可以删除学生的信息修改读者的信息修改成功系统管理员可以新增、修改和删除图书管理员和图书的信息,对系统进行维护,这儿就不在列举了。3.3存储过程设计存储过程的代码:CREATE PROCEDURE add_return 学号 char(9) ASdeclare total_num int,图书编号 char(20) select total_num = count(*) from 学生表 where 学号 = 学号if (total_num = 0) print该学生不存在!el

23、se begin declare tushu_cursor cursor for select 图书编号 from 图书表 open tushu_cursor fetch next from tushu_cursor into 图书编号 WHILE FETCH_STATUS = 0 begin select total_num = count(*) from 借书表 where 学号=学号 and 图书编号=图书编号 if (total_num 0) begin FETCH NEXT FROM tushu_cursor into 图书编号 continue end else begin ins

24、ert into 借书表(学号,图书编号,是否归还) values (学号,图书编号,1*rand() FETCH NEXT FROM tushu_cursor into 图书编号 end end close tushu_cursor DEALLOCATE tushu_cursor endGO3.4 触发器设计 触发器的代码: create trigger trig_sample on 学生表 for insert as select * from 学生表附1:Delphi实现相关功能的代码Form1的代码:var Form1: TForm1;implementation uses unit2

25、;$R *.dfmprocedure TForm1.Button1Click(Sender: TObject);begin Form1.Hide; form2.show; /界面与界面之间联系起来end;end.Form2的代码:var Form2: TForm2;implementation uses Unit1,Unit3,unit4,Unit5;$R *.dfmprocedure TForm2.btn1Click(Sender: TObject);begin if edt2.Text=edt1.Text then begin Form3.show; Form2.Hide; end els

26、e showmessage(用户名或密码错误) /读者界面登录end;procedure TForm2.btn2Click(Sender: TObject);begin if edt3.Text=edt4.Text then begin Form4.show; Form2.Hide; end else showmessage(用户名或密码错误) /图书馆里员界面end;procedure TForm2.btn3Click(Sender: TObject);begin if edt5.Text=edt6.Text then begin Form5.show; Form2.Hide; end el

27、se showmessage(用户名或密码错误) /系统管理员界面end;procedure TForm2.btn4Click(Sender: TObject);begin Form1.show; Form2.close;end;end.Form3的代码:var Form3: TForm3;implementation uses unit2;$R *.dfmprocedure TForm3.Button1Click(Sender: TObject);var str:string;begin str:=Form2.edt1.Text; With ADOQuery1 do begin Close;

28、 SQL.Clear; SQL.Add( Select * From 学生表 Where 学号=+str); Open; end; /学生个人信息 查询end;procedure TForm3.Button2Click(Sender: TObject);var str1:string;begin str1:=Form2.edt1.Text; With ADOQuery1 do begin Close; SQL.Clear; SQL.Add( Select * From 借书表 Where 学号=+str1); Open; end; /学生借书查询end;procedure TForm3.But

29、ton3Click(Sender: TObject);begin Form3.Close; Form2.Show;end; /退出end.Form7的代码:var Form7: TForm7;implementation uses unit6;$R *.dfmprocedure TForm7.Button1Click(Sender: TObject);begin With ADOQuery1 do begin Close; SQL.Clear; SQL.Add(Select * From 图书表 Where +Combobox1.ItemsCombobox1.ItemIndex+=+Edit1

30、.Text+); Open; end;end;procedure TForm7.Button2Click(Sender: TObject);begin form7.Close;form6.show;end;end.Form8的代码:var Form8: TForm8;implementation uses unit6;$R *.dfmprocedure TForm8.Button1Click(Sender: TObject);begin with ADOQuery1 do begin Close; SQL.Clear; SQL.Add(insert into 图书表 values(:图书编号,

31、:图书名,:编者,:出版社,:是否在馆); parameters.ParamByName(图书编号).Value:=Trim(Edit1.Text); parameters.ParamByName(图书名).Value:=Trim(Edit2.Text);parameters.ParamByName(编者).Value:=Trim(Edit3.Text);parameters.ParamByName(出版社).Value:=Trim(Edit4.Text);parameters.ParamByName(是否在馆).Value:=Trim(Edit5.Text); ExecSQL; showme

32、ssage(插入成功); 新增 end;end;procedure TForm8.Button2Click(Sender: TObject);var str:string;begin str:=Edit2.Text; With ADOQuery1 do begin Close; SQL.Clear; SQL.Add( Select * From 图书表 Where 图书名=+str); Open; end;end;procedure TForm8.Button3Click(Sender: TObject);begin Form8.close;Form6.show;end;end. Form12

33、的代码var Form12: TForm12;implementation uses Unit10;$R *.dfmprocedure TForm12.Button1Click(Sender: TObject); var str,str1:string;begin str:=Edit1.Text; str1:=Edit2.Text; with ADOQuery1 do begin Close; SQL.Clear; SQL.Add(update 学生表 set +Combobox1.ItemsCombobox1.ItemIndex+=+str1+ where 学号=+str); ExecSQL

34、; showmessage(修改成功); 修改 end;end;procedure TForm12.Button2Click(Sender: TObject);begin Form12.close; Form10.show;end;end.Form14的代码:var Form14: TForm14;implementation uses Unit5,unit15;$R *.dfmprocedure TForm14.Button1Click(Sender: TObject);begin with ADOQuery1 do begin Close; SQL.Clear; SQL.Add(inser

35、t into 图书表 values(:图书编号,:图书名,:编者,:出版社,:是否在馆);parameters.ParamByName(图书编号).Value:=Trim(Edit1.Text);parameters.ParamByName(图书名).Value:=Trim(Edit2.Text);parameters.ParamByName(编者).Value:=Trim(Edit3.Text);parameters.ParamByName(出版社).Value:=Trim(Edit3.Text);parameters.ParamByName(是否在馆).Value:=Trim(Edit3.

36、Text); ExecSQL; showmessage(插入成功); end;end;procedure TForm14.Button2Click(Sender: TObject);var str:string;begin str:=Edit1.Text; With ADOQuery1 do begin Close; SQL.Clear; SQL.Add(delete 图书表 where 图书编号=+str); ExecSQL; showmessage(删除成功); end; 删除end;procedure TForm14.Button3Click(Sender: TObject);begin

37、 Form14.hide; Form15.show;end;procedure TForm14.Button4Click(Sender: TObject);begin Form14.Close; Form5.show;end;procedure TForm14.Button5Click(Sender: TObject);var str1:string;begin str1:=Edit1.Text; With ADOQuery1 do begin Close; SQL.Clear; SQL.Add( Select * From 图书表 Where 图书编号=+str1); Open; end;end;end.附2: 参考文献1、Delphi程序设计技法范例 高辉编著 清华大学出版社;2、Delphi设计入门 Devra Hall主编 人民邮电出版社;3、数据库开发与应用 郝平 主编 科学出版社;4、数据库技术设计与应用实例 岳昆 主编 清华大学出版社;5、Delphi编程技巧典型案例解析 杂志社主编 中国电力出版社。 37

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

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1