图书管理借阅系统设计报告Word文件下载.docx
《图书管理借阅系统设计报告Word文件下载.docx》由会员分享,可在线阅读,更多相关《图书管理借阅系统设计报告Word文件下载.docx(23页珍藏版)》请在冰豆网上搜索。
3.2逻辑数据库设计9
第四章数据库应用系统的实现10
4.1数据库的定义10
4.2应用系统的开发16
第五章结束语25
第一章绪论
1.1数据库技术的国内外发展与应用现状
60年代后期,随着计算机技术从科学计算向数据处理的扩展,数据处理的规模越来越大,数据量急剧增长,文件系统作为数据管理的手段已经不能满足应用的需求。
为解决多用户、多应用共享数据的需求,使数据为尽可能多的应用服务,数据库技术应运而生,出现了统一管理数据的专门软件系统——数据库管理系统。
数据库系统的出现使信息系统的重心发生了转移,从以加工数据的程序为中心转向以数据共享为核心。
----数据库系统以其可靠的数据存储和管理,高效的数据存取和方便的应用开发等显著优点获得了广泛的应用。
从小型单项事务处理系统到大型信息系统;
从联机事务处理(OLTP)到联机分析处理(OLAP);
从传统的企业管理到计算机辅助设计与制造(CAD/CAM)、计算机集成制造系统(CIMS)、办公信息系统(OIS)、地理信息系统(GIS)等领域,都离不开数据库管理系统。
正是这些不断涌现的应用需求,推动了数据库技术从第一代的网状、层次数据库系统、第二代的关系数据库系统,发展到第三代以面向对象模型为主要特征的数据库系统。
我国数据库技术的研究与开发起步较晚,直到70年代末才真正开始。
80年代初,许多研究所和高等院校开始了关系数据库管理系统、分布式数据库管理系统和数据库应用系统的研制,既培养了人才又积累了技术。
从80年代中期开始,以Oracle公司为代表的国外数据库公司纷纷进入我国,他们带来了国外先进的产品和技术,同时也蚕食和瓜分了中国的数据库市场。
90年代,我国数据库界在国家“八五”、“九五”科技攻关计划、863高技术计划等项目的支持下,开展了数据库产品化的实践。
面对国外实力雄厚的数据库厂商,科技人员艰苦工作、无私奉献,用不到国外同行所用投资的百分之一的经费,研制了关系数据库、分布式数据库、并行数据库、面向对象数据库、嵌入式移动数据库等有自主版权的产品(原型),成为我国数据库产业的星星之火。
相信在国家有关政策和企业的支持下,这些星星之火一定能成燎原之势。
1.2、图书借阅管理数据库应用系统开发的意义
目前,图书管理人员在管理借阅书籍时,借阅时要经历登记,查找,统计,还书时要登记,分类等一系列枯燥繁琐的手续,这种操作不仅浪费时间,而且容易出错,许多记录不便于长期保存。
设计图书借阅管理系统将很好地改善这种局面,利用计算机中最友好,最简单的Windows界面进入本系统,让图书管理人员通过鼠标和键盘简单的敲击,来完成图书的借阅,归还,查询,以及对学生信息的统计工作和对图书管理人员的信息统计。
真正实现图书馆管理系统的自动化,极大地减轻了工作量,同时提高工作效率和成本!
第二章系统概要设计
2.1分析系统功能
根据图书馆的需求分析,图书借阅管理系统主要分为四大功能模块,每个功能模块又分为几个小的功能模块:
2.2.1学生信息管理
(1)查询学生信息:
查询学生借书情况。
可以查询所有专业的借书情况,也可以查询指定学生的借书情况。
(2)学生信息管理:
包括添加,修改和删除学生信息。
2.2.2图书信息管理
(1)查询图书:
查询图书的情况,包括借阅图书的信息,库存图书的信息,图书借阅时间等信息。
(2)整理图书馆:
包括删除图书信息,修改图书信息。
(3)借书:
图书借阅给学生,必须指定要借阅的图书。
记录借书的时间,编辑索书号。
(4)还书:
学生归还图书。
2.2.3借阅信息管理
主要对借阅数据的记录。
2.2.4图书管理人员信息管理
(1)查询图书管理员信息:
查询查询图书管理员借书情况。
(2)图书管理员信息管理:
包括添加,修改和删除图书管理员信息。
2.2系统功能模块图
本系统在启动后显示登陆界面,主要采取两种形式的登录,一种是普通管理员的登录,主要是对学生信息,借阅信息等的管理,一种是超级管理员,是对普通管理员的管理,其有权对普通管理员信息进行修改。
系统功能模块图
2.3数据流程图
系统数据流程图
第三章数据库系统设计
3.1分析数据库需求
根据系统功能和数据流,可以确定以下数据项和数据结构:
(1)学生信息表【XS】:
{借书证号,姓名,专业名,性别,出生时间,借书数,照片}
(2)图书信息表【BOOK】:
{ISBN,书名,作者,出版社,价格,复本量,库存量}
(3)借阅表【JY】:
{借书证号,ISBN,索书号,借书时间}
(4)管理员信息表【DL】:
{账号,姓名,密码,联系电话,身份}
1.学生信息管理
调用学生信息表,图书信息表,借阅信息表。
调用学生信息表。
2.图书信息管理
调用图书信息表,借阅信息表。
调用图书信息表。
3.借阅信息管理
调用借阅信息表
4.图书管理人员信息管理
调用管理员信息表。
3.2概念数据库设计(E-R图)
3.2.1设计方法及关键技术
由于E—R数据模型不是面向实现,而是面向现实世界的,设计时的出发点是有效和自然地模拟现实世界,而不是首先考虑它在计算机中如何实现。
因此,一切要从实际出发,根据数据的需要来设计数据库,把可能用到的数据包含进去,因此,没有一种万能的数据模型,设计者需要依据自己的数据库的需要来设计E—R模型图。
其实质的联系就是:
实体集的实体之间的对应方式。
其基本的联系有四种:
一对一,一对多,多对多,以及isa。
3.2.2系统的E-R图
第四章数据库应用系统的实现
4.1数据库的定义
4.1.1数据库的定义
1.数据库对象的定义
将设计的数据库表用SQL语言(createtable****)或企业管理器定义(界面)
关系图:
2.数据库的创建
根据系统的E—R图和要求,设计了四张表,分别是XS表(学生信息表),BOOK表(图书信息表),JY表(借阅表),DL表(管理员信息表)。
数据结构表如下图:
XS表(学生信息表)
字段名
数据类型
长度
是否允许空
说明
借书证号
Char
8
否
主关键字
姓名
专业名
12
性别
Bit
1
出生时间
Datetime
是
借书数
Int
4
照片
Image
16
BOOK表(图书信息表)
ISBN
书名
26
作者
出版社
20
价格
Float
复本量
库存量
JY表(借阅表)
索书号
10
借书时间
DL表(管理员信息表)
账号
密码
联系电话
身份
3.3数据库的实现
1.创建学生信息表
2图书信息创建
3.借阅表的创建
4,图书管理员信息表的创建
4.2应用系统的开发
主要功能模块对应的主要界面,完成的主要功能及主要应用程序。
登陆界面:
主要代码:
Active:
=false;
sql.Clear;
SQL.Add('
select*fromDLwhere账号='
+Trim(Edit1.Text)+'
and密码='
+Trim(Edit2.Text));
Active:
=true;
ifIsEmptythenbeginShowMessage('
用户信息错误,请核对您的账号密码后再登录!
或者与管理员联系!
'
);
Edit2.Text:
='
;
sPAS:
Abort;
endelsebeginclose;
ifEdit1.Text='
1'
thenbeginShowMessage('
恭喜ID为'
+Trim(Edit1.text)+'
的管理员登陆成功!
!
Form3.show;
Form1.Visible:
endelsebeginShowMessage('
恭喜id为'
的用户登陆成功!
fmbook.show;
end
主界面
借书:
iflength(trim(etssh.Text))=10then
begin
btjs.Enabled:
adqup.SQL.Clear;
str:
INSERTINTOjy(借书证号,ISBN,索书号,借书时间)VALUES('
=str+QuotedStr(adqxs.FieldValues['
借书证号'
])+'
'
+QuotedStr(dbtext7.Caption)+'
+QuotedStr(etssh.Text)+'
+QuotedStr(etrq.Text)+'
)'
adqup.SQL.Add(str);
adqup.ExecSQL;
adqbook.Active:
showmessage('
借书成功!
endelse
索书号不是10位数'
还书:
bths.Enabled:
str:
deletefromjywhere借书证号='
+QuotedStr(adqxs.FieldValues['
]);
=str+'
and索书号='
+QuotedStr(adqjy.FieldValues['
索书号'
adqup.SQL.Clear;
adqup.SQL.Add(str);
adqup.ExecSQL;
adqjy.Active:
查询:
procedureTfmbook.adqxmAfterScroll(DataSet:
TDataSet);
varstr:
string;
begin
selectb.姓名,a.借书证号,a.ISBN,c.书名,a.索书号,a.借书时间,b.照片fromjya,xsb,bookc'
wherea.借书证号=b.借书证号anda.ISBN=c.ISBN'
casergcx.ItemIndexof
0:
=str+'
anda.借书证号='
+QuotedStr(adqxm.FieldValues['
1:
anda.ISBN='
ISBN'
2:
anda.借书证号in(select借书证号fromxswhere专业名='
名称'
)'
end;
aopen(adqjy,str);
dgjy.Columns[6].Visible:
end;
procedureTfmbook.rgcxClick(Sender:
TObject);
select姓名as名称,借书证号fromxs'
select书名as名称,ISBNfrombook'
selectdistinct专业名as名称fromxs'
维护:
部分主要代码:
astpxsbook.ProcedureName:
delete_XS_1;
astpxsbook.Parameters.CreateParameter('
@jszh'
ftString,pdInput,8,adqwh.FieldValues['
@flag'
ftInteger,pdInputOutput,0,1);
astpxsbook.ExecProc;
ifastpxsbook.Parameters.ParamValues['
]=0then
application.MessageBox('
删除成功'
提示'
0)else
借书未还请,删除失败'
0);
astpxsbook.ProcedureName:
update_XS_1;
@jszh'
@xm'
姓名'
@zym'
ftString,pdInput,12,adqwh.FieldValues['
专业名'
@xb'
ftBoolean,pdInput,0,adqwh.FieldValues['
性别'
@cssj'
ftDateTime,pdInput,0,adqwh.FieldValues['
出生时间'
@jss'
ftInteger,pdInput,0,adqwh.FieldValues['
借书数'
管理员信息表:
第五章结束语
通过做这次数据库的大作业,收获很多,从刚开始的什么都不懂,到后来的一知半解,再到最后的慢慢的掌握和了解,时间虽然不长,但是却也经过了几个星期。
数据库的完成主要以本书作为参考,遇到无法理解书中的代码含义,就通过上网查询,尽量看一些尽量简洁的,容易看懂看懂的代码。
当遇到的问题时就就不断地想办法去解决,通过问同学,看一些别人的代码,上网搜索。
从刚开始的用户登录之后显示用户名,到后来的存储过程、sql语句执行时候的报错,问题虽然很多,的确实花了我一段时间去解决,书上、网上到处去找资料,也让自己对delphi的掌握更深了一点,这的确是很难得的,其实,刚开始时难倒我的不是怎么用ADO组件去连接数据库,而是界面的设计问题,由于以前没有接触过,对于这种面向对象的编程语言还是有点不适应,而且以前的练习都是一些小型的程序,这次是一个系统的,大型的程序,而通过老师的讲解,则慢慢的明白了事件的概念,不同的代码应该写在不同的事件下面,这样事件触发时才会得到你想要的结果。
处理问题要一个一个的来,不能一蹴而就。
对于我的图书管理系统,最大的优点是简单,但是却也比较全面,该实现的功能也基本上都有了,各种动态sql语句在代码里面都有很多,再就是这个系统易懂,由于我几乎在每个事件下面都有一个showmessage(弹窗提示),用户操作起来也会更加方便,所以在这个方面应该算是一件比较好的事,我主界面使用了一个Pagecontrol,只要一点即可实现借书,还书,查询,维护功能的实现,同时还有就是个性化的查询与维护方式,通过Radiogroup,可以实现不同条件的查询与维护。
说到缺点,也有很多没有解决的问题,由于没有可以专业的参考书籍,只能一步一步的独一空间进行摸索,对于各种组件的搭配操作还显的不够熟练,这样显得界面也很单调,所以说我对于各种最基本组件的搭配使用还有问题,再就是代码的问题,几乎是千篇一律,模块化做的还不够好,有时候修改起来就比较困难,这也是亟待解决的一个问题。
同时,对于图书管理员界面操作比较简单,还有一些不合理的地方。
还有就是数据库的问题,因为对数据库的了解仅仅停留在建表上面,对于各种存储过程、触发器、索引、约束、关系和视图等还不了解,这个还有待加强。
对于以后,虽然数据库大作业已经交了,但是对于这个图书管理系统的完善还没有停止,下一步要做的应该是对于代码编写的模块化,还有数据库的各种约束的建立。
并更多的去了解数据库中对数据的各种定义。
同时,逐渐完善系统的各项功能,使其更加人性化。
参考文献:
1《数据库系统概论》王珊、萨师煊著高等教育出版社;
2《Delphi7程序设计与上机指导》曹蕾著冶金工出版社;
3《图书管理系统实验报告》;
4《Delphi7编程思想与实力经典》马晓凯著冶金工业出版社。