图书管理系统设计s报告.docx
《图书管理系统设计s报告.docx》由会员分享,可在线阅读,更多相关《图书管理系统设计s报告.docx(50页珍藏版)》请在冰豆网上搜索。
图书管理系统设计s报告
图书管理系统
设计报告
学院:
信息科学与工程学院
摘要
本课程设计是一个图书信息管理系统的后台数据库的设计。
由于时间和精力的限制本设计仅实现了图书管理系统基本功能的设计与实现。
通过本次课程设计,达到了了解数据库应用系统的开发过程,熟悉了系统分析和设计的过程和方法的目的。
在实践中掌握了知识,达到了学以致用的目标。
本次设计首先通过查阅资料对图书领域的基本知识有一定的认识,了解用户各个方面的需求,包括现有的以及将来的可能增加的需求。
然后按照数据库设计的六个阶段进行了设计与实现:
需求分析、概念结构设计、逻辑结构设计、物理结构设计、数据库实施、数据库的运行和维护。
数据库在各种信息的提供、保存、更新和查询方面都要求满足各种信息的输出和输入,符合用户的基本需求。
应用sql建立数据库,选用Delphi作为开发工具,完成了对图书管理系统的实现。
索引关键词:
数据库设计sql应用Delphi设计
第一章绪论
随着数据库技术在各行各业的广泛应用,强大的数据库窗口技术、良好的数据库访问能力和友好的用户界面,日益成为设计者的得力助手。
1.1课题研究现状分析
在现今信息化发达的社会,图书的发行量与日俱增。
传统的图书馆需要制作有署名与对应编号的书卡,由读者按分类查找再交由图书管理员来处理借书工作,还书也要人工翻阅大量的记录,这样使得工作量大并及其繁琐,效率变得低下。
因此需要对书籍资源、读者资源、借书信息、还书信息进行管理,及时了解各个环节中信息的变更,有利用管理效率的提高。
建立网上电子图书管理系统的目的是实现无纸化图书管理,减轻管理员的工作量,方便读者查阅所需的图书,还可以利用网络实现提醒读者还书的功能。
管理员还可以对各种图书进行分析统计,对过时、损坏的图书进行删除,预约图书供应商订购更新的图书。
达到降低成本提高工作效率的目标。
1.2选题的目的及意义
目的:
图书管理系统主要目的是对图书馆种类繁多的书籍进行管理,并且合理管理好用户的借还信息。
提高图书馆的工作效率,降低管理成本。
意义:
通过完成从用户需求分析、数据库设计到上机编程、调试和应用等全过程,进一步了解和掌握本书中所讲解的内容。
1.3章节安排
第一章为绪论部分,介绍课题的基本情况。
第二章为系统需求设计分析,主要为数据流图和数据字典。
第三章介绍数据库的设计,主要介绍数据库的逻辑设计,结构设计等。
第四章主要为图书管理系统的各个界面说明。
第二章系统需求分析
2.1用户调查
1.图书馆工作人员对功能的需求
工作人员对功能的需求细分如下:
1、职工信息的输入,查询,修改;
2、书籍信息的输入,查询,修改;
3、借书信息的输入。
4、还书信息的输入。
5、读者信息的查询。
2.读者对功能的需求
1、图书信息检索:
范围可按书名,作者,出版社,类别等检索款目进行任意条件组合精确或模糊检索,最快时间查找目标书籍;
2、读者人个信息的输入、修改。
查询。
建立读者个人信息档案,获取当前读者的个人信息。
并根据学号查询当前读者当前的借书情况,历史借书情况等。
2.2图书管理系统数据流图
图2-2第0层数据流图
2.3数据字典
1.主要数据项的定义
1.图书信息表
属性名
数据类型
长度
允许空
备注
流水号
char
10
N
唯一
分类号
char
10
N
索取号
char
10
N
书名
char
50
N
作者
char
30
N
价格
money
Y
出版社
char
50
Y
出版日期
char
10
Y
是否借出
char
5
N
2.读者信息表
属性名
数据类型
长度
允许空
备注
学号
char
10
N
唯一
密码
char
10
N
姓名
char
30
N
性别
char
2
N
所属系
char
50
Y
电子邮件
char
50
Y
备注
char
100
Y
3.职工信息表
属性名
数据类型
长度
允许空
备注
职工编号
char
5
N
唯一
密码
char
10
N
姓名
char
30
N
性别
char
2
N
联系电话
char
11
Y
所属部门
char
3
N
4.部门信息表
属性名
数据类型
长度
允许空
备注
部门编号
char
3
N
唯一
部门名称
char
30
N
5.借阅图书信息表
属性名
数据类型
长度
允许空
备注
流水号
char
10
N
学号
char
10
N
书名
char
50
N
借书日期
datetime
N
应还日期
datetime
N
归还标记
char
5
N
6.归还图书信息表
属性名
数据类型
长度
允许空
备注
流水号
char
10
N
学号
char
10
N
书名
char
50
N
还书日期
datetime
N
2.主要数据存储的定义
(1)存储名称:
图书记录
输入:
流水号
输出:
图书所有信息及是否借出
数据结构:
流水号+分类号+索取号+书名+作者+价格+出版社+出版日期+是否借出
(2)存储名称:
读者记录
输入:
学号
输出:
读者信息及借书记录(所借书的流水号)
数据结构:
学号+姓名+流水号+书名+应还日期
(3)存储名称:
借阅记录
输入:
书号+读者编号+职工编号
输出:
图书的借阅记录信息
数据结构:
流水号+学号+职工编号+书名+借书日期+应还日期+归还标记
(4)存储名称:
归还记录
输入:
书号
输出:
图书的归还记录信息
数据结构:
流水号+学号+书名+还书日期
(5)存储名称:
职工记录
输入:
职工编号
输出:
职工信息
数据结构:
职工编号+密码+姓名+性别+联系电话+所属部门
第三章数据库设计
3.1数据库概念结构设计
1.数据库需要表述的信息有以下几种:
(1)图书信息,
(2)学生信息,
(3)管理员信息
(4)学生借阅归还图书信息
通过分析整理可得图书管理系统E-R图为:
由系统E-R图可得其主要数据流和主要处理过程:
1.主要数据流定义
(1)数据流名称:
读者信息
定义:
学号+密码+姓名+性别+所属系+电子邮件+备注
(2)数据流名称:
图书信息
定义:
流水号+分类号+索取号+书名+作者+价格+出版社+出版日期+是否借出
(3)数据流名称:
职工信息
定义:
职工编号+密码+姓名+性别+联系电话+所属部门
(4)数据流名称:
借阅图书
定义:
流水号+学号+书名+借书日期+应还日期+归还标记
(5)数据流名称:
归还图书
定义:
流水号+学号+书名+还书日期
(6)数据流名称:
部门信息
定义:
部门号+部门名称
2.主要处理过程的定义
(1)处理过程:
读者管理
输入:
读者编号输出:
读者的注册信息
处理操作:
对所有注册的读者信息建表,用学号作为读者统一编号,编号是唯一的。
(2)处理过程:
职工管理
输入:
职工编号号
输出:
职工的基本信息
处理操作:
对所有职工编号,建立职工信息表,职工编号具有唯一性,
(3)处理过程:
图书管理
输入:
流水号
输出:
图书的基本信息
处理操作:
对所有进馆的图书编号,建立图书信息表,图书编号具有唯一性,
(4)处理过程:
图书查询
输入:
流水号
输出:
所查询图书的相关信息
处理操作:
用户登录后可以查询图书信息,按图书编号可以查询到某本书的详细情况,也可以通过书名,作者,出版社进行模糊查询
(5)处理过程:
图书借出
输入:
流水号,学号
输出:
图书借阅信息
处理操作:
添加图书借阅记录,建立图书借阅信息表。
(6)处理过程:
图书归还
输入:
流水号
输出:
图书归还信息
处理操作:
添加图书归还记录,建立图书归还信息表。
3.2数据库逻辑结构设计
通过E/R模型到关系模型的转化,可以得到如下关系模式:
图书(流水号,分类号,索取号,书名,作者,价格,出版社,出版日期,是否借出)。
读者(学号,姓名,性别,所属系,电子邮件,备注)。
职工(职工编号,密码,姓名,性别,联系电话,所属部门)。
部门(部门号,部门名称)
借阅图书(流水号,学号,借书日期,书名,应还日期,归还标记)。
归还图书(流水号,学号,还书日期,书名)。
每个关系模式的主键码都用下划线标出。
(1)流水号是图书的键码,每本书有唯一的流水号。
一个读者可以同时借阅多本书,
一个管理员可以处理多个读者的借阅事宜。
(2)同一本书可以借给不同的同学,同一个读者可以再次借同一本书。
于是借书关系的键码为流水号,学号和借书日期的组合。
(3)要知道图书当前的状态,是在图书馆存放还是被借阅。
需要在图书的模式中增加对应项用以表示图书当前的状态,现在增加‘是否借出’项,并且约定取值和状态的对应关系如下:
0:
在图书馆中没有被借阅;
1:
已经被借出。
3.3数据库实施
3.3.1数据库及表结构的创建
设本系统使用的数据库名为图书管理系统,根据已设计的关系模式及各模式的完整性要求,现在就可以在SQLServer2005数据库系统中实现这些逻辑结构。
下面是创建基本表的SQL语句:
createtable读者信息(
学号char(10)notnullprimarykey,
密码char(10)notnull,
姓名char(30)notnull,
性别char(5)notnull,
所属系char(50),
电子邮件char(50),
备注char(100),
)
createtable职工信息(
职工编号char(5)notnullprimarykey,
密码char(10)notnull,
姓名char(30)notnull,
性别char(5)notnull,
联系电话char(11),
所属部门char(3)notnull,
)
createtable部门信息(
部门编号char(3)notnullprimarykey,
部门名称char(30)notnull,
)
createtable借阅图书信息(
流水号char(10)notnull,
学号char(10)notnull,
书名char(50)notnull,
借书日期datetimenotnull,
应还日期datetimenotnull,
归还标记char(5)notnull,
)
createtable归还图书信息(
流水号char(10)notnull,
学号char(10)notnull,
书名char(50)notnull,
还书日期datetimenotnull,
)
下面是使用sqlserver2005建立的图书管理系统:
系统各基本表的属性如下:
读者信息
图书信息:
职工信息:
部门信息:
借阅图书信息:
归还图书信息:
表与表关系的建立截图(部分):
3.3.2数据库前台的设计
根据数据库的设计,该图书管理系统可以分成四个子模块:
1、编目部子模块:
负责实现行图书信息的录入,修改以及查询。
2、流通部子模块:
进行图书的借阅,归还信息的处理。
3、办公室子模块:
负责进行职工信息的录入与修改及查询。
4、读者子模块:
进行读者信息的录入,借阅情况的查询,图书信息的查询。
根据四个模块的不同功能,可以分别设计不同的操作界面,以实现其功能。
根据不同模块的权限不同,设计登录界面,根据不同的权限访问不同的子系统。
第四章图书管理系统使用说明
4.1图书管理系统登录界面:
图书管理系统登录界面:
通过下拉菜单可以选择用户类型,共有五种类型:
读者,办公室,流通部,编目部,管理员。
输入正确的用户名和密码就可以分别进入对应的操作界面。
如下图:
登录部分相关代码为:
varcode:
string;
begin
casecombobox1.ItemIndexof
0:
begin
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add('select密码from读者信息where学号='''+edit1.text+'''');
adoquery1.Open;
code:
=adoquery1.fieldbyname('密码').asstring;
ifadoquery1.RecordCount=0then
begin
showmessage('该用户不存在');
edit1.Clear;
edit1.SetFocus;
edit2.Clear;
end
else
begin
ifedit2.Text=codethen
begin
showmessage('登陆成功');
form1.Hide;
form10.show;
end
else
begin
showmessage('密码错误');
edit2.Clear;
edit2.SetFocus;
end;
end;
end;
1:
begin
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add('select密码from职工信息where职工编号='''+edit1.text+'''');
adoquery1.Open;
code:
=adoquery1.fieldbyname('密码').asstring;
ifadoquery1.RecordCount=0then
begin
showmessage('没有此用户');
edit1.Clear;
edit1.SetFocus;
edit2.Clear;
end
else
begin
ifedit2.Text=codethen
begin
showmessage('登陆成功');
form1.Hide;
form3.show;
end
else
begin
showmessage('密码错误');
edit2.Clear;
edit2.SetFocus;
end;
end;
end;
2:
begin
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add('select密码from职工信息where职工编号='''+edit1.text+'''');
adoquery1.Open;
code:
=adoquery1.fieldbyname('密码').asstring;
ifadoquery1.RecordCount=0then
begin
showmessage('没有此用户');
edit1.Clear;
edit1.SetFocus;
edit2.Clear;
end
else
begin
ifedit2.Text=codethen
begin
showmessage('登陆成功');
form1.Hide;
form6.show;
end
else
begin
showmessage('密码错误');
edit2.Clear;
edit2.SetFocus;
end;
end;
end;
3:
begin
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add('select密码from职工信息where职工编号='''+edit1.text+'''');
adoquery1.Open;
code:
=adoquery1.fieldbyname('密码').asstring;
ifadoquery1.RecordCount=0then
begin
showmessage('没有此用户');
edit1.Clear;
edit1.SetFocus;
edit2.Clear;
end
else
begin
ifedit2.Text=codethen
begin
showmessage('登陆成功');
form1.Hide;
form2.show;
end
else
begin
showmessage('密码错误');
edit2.Clear;
edit2.SetFocus;
end;
end;
end;
对于读者,若未在该系统注册过则可以点击注册按钮进行注册。
注册界面如下:
按要求填写注册信息,点击注册按钮就可以成功注册为本系统的用户。
注册部分相关代码为“
adoquery1.Close;
adoquery1.sql.clear;
adoquery1.sql.add('insertinto读者信息(学号,密码,姓名,性别,所属系,电子邮件,备注)');
adoquery1.SQL.Add('values('''+edit1.text+''','''+edit3.text+''','''+edit4.text+''','''+combobox1.text+''','''+edit5.text+''','''+edit6.text+''','''+edit7.text+''')');
adoquery1.execsql;
showmessage('注册成功');
以管理员身份登录该系统,可以显示管理员界面,管理员可以快速进入各模块,没有权限限制。
4.2办公室子系统界面:
办公室系统主要进行对图书馆工作人员信息的管理。
可以进行添加,修改,删除,查询等操作。
上图为职工信息添加界面。
相关代码为:
adoquery1.Close;
adoquery1.sql.clear;
adoquery1.sql.add('insertinto职工信息(职工编号,密码,姓名,性别,联系电话,所属部门)');
adoquery1.SQL.Add('values('''+edit1.text+''','''+edit2.text+''','''+edit3.text+''','''+combobox1.text+''','''+edit5.text+''','''+edit6.text+''')');
adoquery1.execsql;
showmessage('添加成功');
职工信息修改界面:
修改职工信息时需填写欲修改的职工的职工编号,然后在需要修改的项目上填写新信息,不需要修改的地方可以不填写。
点击修改按钮确认职工信息的修改。
相关代码为:
adoquery1.Close;
adoquery1.sql.clear;
ifedit1.text=''then
begin
showmessage('职工编号不能为空');
end
else
begin
ifedit2.text<>''then
begin
adoquery1.sql.add('update职工信息set密码='''+edit2.Text+'''where职工编号='''+edit1.text+'''');
adoquery1.execsql;
end;
ifedit3.text<>''then
begin
adoquery1.sql.add('update职工信息set姓名='''+edit3.Text+'''where职工编号='''+edit1.text+'''');
adoquery1.execsql;
end;
adoquery1.sql.add('update职工信息set性别='''+combobox1.Text+'''where职工编号='''+edit1.text+'''');
adoquery1.execsql;
ifedit5.text<>''then
begin
adoquery1.sql.add('update职工信息set联系电话='''+edit5.Text+'''where职工编号='''+edit1.text+'''');
adoquery1.execsql;
end;
ifedit6.text<>''then
begin
adoquery1.sql.add('update职工信息set所属部门='''+edit6.Text+'''where职工编号='''+edit1.text+'''');
adoquery1.execsql;
end;
showmessage('修改成功');
职工信息查询界面:
可以按职工编号,姓名,所属部门进行职工信息查询,也可以查看全部职工信息。
相关代码为:
adoquery1.Close;
adoquery1.SQL.Clear;
casenof
1:
begin
adoquery1.SQL.Add('select职工编号,姓名,性别,联系电话,所属部门from职工信息where职工编号='''+edit1.text+'''');
end;
2:
begin
adoquery1.SQL.Add('select职工编号,姓名,性别,联系电话,所属部门from职工信息where姓名='''+edit1.text+'''');
end;
3:
begin
adoquery1.SQL.Add('select职工编号,姓名,性别,联系电话,所属部门from职工信息where所属部门='''+edit1.text+'''');
end;
end;
adoquery1.Open;
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add('select职工编号,姓名,性别,联系电话,所属部门from职工信息');
adoquery1.Open;
职工信息删除界面:
输入欲删除的职工编号可以删除该职工的所有信息。
相关代码为:
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.sql.add('deletefrom职工信息where职工编号='''+edit1.Text+'''');
adoquery1.execsql;
4.3编目部子系统界面: