图书馆数据库程序设计.docx
- 文档编号:8936730
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:20
- 大小:300.73KB
图书馆数据库程序设计.docx
《图书馆数据库程序设计.docx》由会员分享,可在线阅读,更多相关《图书馆数据库程序设计.docx(20页珍藏版)》请在冰豆网上搜索。
图书馆数据库程序设计
目录
第1章绪论................................................................2
第2章需求分析.............................................................2
§2.1数据需求.............................................................2
§2.2事务需求.............................................................3
§2.2.1用户登录...................................................3
§2.2.2数据录入...................................................3
§2.2.3数据更新/删除..............................................3
§2.2.4数据查询/统计.............................................3
§2.2.5借书/还书(关键业务)........................................3
§2.3业务规则...........................................................4
第3章总体设计...........................................................4
§3.1系统的软件结构图..................................................4
§3.2功能的操作流程....................................................5
§3.3安全设计..........................................................6
第4章数据库设计..........................................................6
§4.1概念结构设计.....................................................7
§4.2逻辑结构设计.....................................................8
§4.3物理结构设计.....................................................8
第5章编码..............................................................10
第6章总结.................................................................14
§6.1结论.................................................................14
§6.2学习体会............................................................14
附录4参考文献...........................................................15
第1章绪论
随着网络技术的普及,各个行业都在积极使用现代化的管理工具,不断改善服务质量,提高工作效率。
在图书馆管理中,人工管理工作量大,数据繁琐,容易出错,并且在工作流程中可能会出现各种各样的问题。
面对信息时代的机遇和挑战,利用科技手段提高图书馆管理无疑是一条行之有效的途径。
计算机管理系统满足了图书馆对资源管理的新要求,减少了资源管理过程中浪费的大量人力、物力和财力等。
信息与科技在图书馆管理中显现出越来越重要的地位。
管理系统解决了图书的入库,借阅,归还,查找,罚款,统计等一系列操作流程中的数据信息的处理问题,还可以提供一系列的数据分析,辅助采购者合理地选择购买图书,辅助图书馆领导查看各员工的工作情况,并对图书流通过程进行跟踪管理,相应流通的全程记录管理和有关信息的数据统计管理。
因此,图书管理系统的全面应用规范了业务流程,提高了图书馆的管理水平,减轻了工作人员的工作负担,加快了图书流通的速度,进而提高了图书的利用率。
本系统采用了结构化设计方法,并在数据量、并发数量等方面采取一定的技术,以实现数据库应用的相关要求。
第2章需求分析
§2.1数据需求
图书馆每位职工信息包括职工编号,职工姓名,性别,参加工作时间,职工职务,职工电话,职工工作馆室号,而且每一位职工都有一个职工编号,职工编号可以唯一标识职工。
用户登录系统时需要输入用户名和密码。
然后选择不同的用户类别,根据不同的类别查询该用户是否合法,判断是否可以正常登录。
密码有初始化默认值,还可由用户自己修改。
读者信息包括:
读者编号,读者姓名,读者性别,读者类别编号,读者所在学院,读者所属专业,读者的班级,办证日期;读者编号可以唯一标识读者。
图书数据包括:
图书编号,ISBN号,书名,作者,出版社,单价,图书类别编号,是否可借,状态(是否在库),馆室号,丢失罚款倍数;其中图书编号可以唯一标识图书。
读者类别信息包括:
读者类别编号,读者类别,允许借阅图书最大数(不同类别的读者有不同的借书数量限制),持有图书最长期限,借阅证期限;读者类别编号可以唯一标识读者类别。
图书类别包括:
图书类别编号,图书类别名,允许借书最大值(例如文学类最多可借两本),超期日罚款金额。
借阅信息包括:
读者编号,图书编号,借阅时间,借阅操作员,归还时间,归还操作员,应还时间,罚款金额(丢失罚款金额或超期罚款金额),罚款原因(丢失或超期)。
馆室信息包括:
馆室号,馆长,馆室图书库存量,馆室地点。
读者借书过程中需要有一定的借阅规则加以限制,不同类型的读者借阅不同类型的图书,允许借书的数量最大限制不同,允许持有的期限也不同,因此借阅规则包括:
图书类别编号,读者类别编号,允许借阅图书最大数,持有图书最长期限。
§2.2事务需求
在图书管理系统中,图书馆工作人员要为每个读者建立借阅账户,并给读者提供不同类别的读者编号,账户内存储读者的个人信息和借阅记录信息。
拥有读者编号的读者可以通过管理员(作为读者的代理人与系统交互)借阅、归还图书,不同类别的读者可借阅图书的范围、数量和期限不同,可通过互联网或图书馆内查询终端查询图书信息和个人借阅情况。
§2.2.1用户登录
用户登录系统时需要输入用户名和密码。
系统根据用户名找到用户的类别,然后根据不同的类别进入不同的登陆界面。
§2.2.2数据录入
1.由图书馆工作人员录入员工的详细信息情况
2.由图书馆工作人员录入读者的详细信息情况
3.由图书馆工作人员录入图书的详细信息情况
4.由图书馆工作人员录入图书借阅协议的详细情况
§2.2.3数据更新/删除
1.更新/删除员工信息
2.更新/删除读者信息
3.更新/删除图书信息
4.更新/删除图书借阅协议信息
§2.2.4数据查询/统计
1.按照员工编号或员工姓名查询员工的具体信息
2.按照读者编号或读者姓名查询读者信息,并且显示该读者信息和历史借阅情况
3.按照图书书名,图书索书号,作者,出版社等信息检索图书
4.分类查询图书馆的藏书情况,显示图书种类,册数,总价值
5.统计每位员工在某段时间的工作量
6.统计每类图书在某段时间的借阅量,并按照借阅量排序
7.统计指定读者在某段时间的借阅量
8.统计所有读者在某段时间的借阅量,并按照借阅量排序;按照读者所在的学院或专业分类统计借阅量;
9.统计所有图书在某段时间的借阅量,并按照借阅量排序;
§2.2.5借书/还书(关键业务)
借阅图书时,先输入读者的读者编号,系统验证借阅编号的有效性和读者是否可继续借阅图书,无效则提示其原因,有效则显示读者的基本信息,供管理员人工核对。
然后输入要借阅的图书编号,系统查阅图书信息数据库,显示图书的基本信息,供管理员人工核对。
最后提交借阅请求,若被系统接受则存储借阅纪录,并修改可借阅图书的数量,修改此本图书的状态。
归还图书时,输入图书编号(或丢失标记号),系统验证是否有此借阅纪录以及是否超期借阅,无则提示,有则显示读者和图书的基本信息供管理员人工审核。
如果有超期借阅或丢失情况,先转入过期罚款或图书丢失处理。
然后提交还书请求,系统接受后删除借阅纪录,并登记还书记录,修改可借阅图书的数量和图书状态。
§2.3业务规则
该系统的业务规则主要是对不同类型的读者及不同类型的图书的借书数量和时间的限制,比如说教职工和本科生的允许借书的最大量不同,允许借书的期限也不同,而文学类和自然科学类允许借书的数量也不同;如果图书丢失,不同的图书的罚款倍数不等;在超期的情况下,不同的图书,不同的读者类型,日罚款金额可能也不相同。
第3章总体设计
§3.1系统的软件结构图
系统的软件结构如图3-1所示。
图3-1
§3.2功能的操作流程
§3.2功能的操作流程
职工管理流程图:
读者管理流程图:
图书管理流程图:
图书借阅流程图:
图书归还流程图:
§3.3安全设计
数据库必须有口令保护。
在图书馆数据库中建立Adm(Username用户名,Password用户密码,UserStyle用户类型)关系表,用户在进入程序登录界面时需输入正确的用户名和用户密码(以确定用户的身份的合法性),才能访问数据库应用程序的功能实现。
不同类型的用户登录会进入不同的界面,拥有不同的查询或操作权限。
当用户以馆长的身份登录时,拥有对职工信息的管理(包括增加员工,删除员工,修改员工信息)权限及对职工某段时间工作量的查询统计等权限,而以普通职工登录时则没有此访问权限,只能对职工信息进行查询。
当读者登录时,只能在适合他们查询的窗口中看到所需的个人信息和图书信息,可以对图书进行检索,查询统计,而不能对图书信息进行修改,只有某些特定工作人员才能对数据库中的图书信息进行管理操作(增加,删除,修改),这样可以维护数据库数据的安全性和完整性。
第4章数据库设计
§4.1概念结构设计
根据前面的需求分析,首先图书馆系统数据库要包含图书信息,读者信息,管理员信息,这样就确定了图书(book),读者(reader),职工(staff)三个实体。
当读者借阅图书时会产生一条借阅记录,也将借阅(borrow)作为一个实体。
当借阅图书超期时需要进行罚款,且借阅提图书一定要有个允许借阅最大量,因此需对借阅制定一个规则,规定不同类型读者,不同类型图书的借阅限制,这样又将借阅规则(borrowrule)作为一个实体,同时也隐含了要将图书类型(BookStyle),读者类型(ReaderStyle)作为实体来考虑。
考虑到图书可能分布于各个馆室,职工在不同的馆室工作,不同的馆室又有不同的图书存储量,馆长可以查询统计自己所管理的馆室的职工的工作量,就将馆室(Room)也作为一个实体。
为安全考虑,用户登录系统时需要输入用户名和密码,根据不同的用户类别查询该用户是否合法,判断是否可以正常登录。
因此将用户登录(Adm)作为一个实体。
这样所涉及到的实体就确定下来了。
根据前面的需求分析及各实体间的联系,就可以确定出各实体的属性(限于篇幅不再列出,下边内容有所体现),并画出ER图如图4-1:
图4-1
§4.2逻辑结构设计
将概念模型转化为逻辑结构,给出关系模型,以关系模式的形式给出如下:
图书类别(图书类别编号,图书类别名,超期日罚款金额)
读者类别(读者类别编号,读者类别,借阅证期限)
职工(职工编号,职工姓名,职工性别,职工参加工作时间,职工职务,职工电话,职工工作馆室号)
读者(读者编号,读者姓名,读者性别,读者类别编号,读者所在学院,读者所属专业,读者的班级,办证日期)
馆室(馆室号,馆长,馆室图书库存量,馆室地点)
图书(图书编号,ISBN号,书名,作者,出版社,出版时间,单价,图书类别编号,是否可借,状态,馆室号,丢失罚款倍数)
借阅信息(读者编号,图书编号,借阅时间,借阅操作员,归还时间,归还操作员,应还时间,罚款金额,罚款原因)
借阅规则(图书类别编号,读者类别编号,允许借阅图书最大数,持有图书最长期限)
用户登录(用户名,密码)
§4.3物理结构设计
数据库设计中各表如下所示:
4-1图书借阅表
读者编号
RID
char
10
主键
图书编号
BID
char
10
借出日期
OutDate
datetime
8
借出经手人
OSID
char
10
外键
还书日期
InDate
datetime
8
还书经手人
ISID
char
10
外键
应还日期
SReturn
datetime
8
罚款金额
Fine
float
8
4-2图书信息表
图书编号
BID
char
10
主键
ISBN号
ISBN
char
20
索书号
SearchBook
char
20
书名
BName
char
50
作者
BAuthor
char
20
出版社
Press
char
20
出版日期
PressDate
char
20
价格
Price
float
8
图书类别编号
BSID
char
10
外键
是否可借
Borrow
char
6
在馆状态
State
char
10
馆室号
LID
char
10
外键
罚款倍数
Finetime
float
8
4-3图书类别表
图书类别编号
BSID
char
10
主键
图书类别名
BSName
char
10
日罚款金额
Dayfine
float
8
4-4借阅规则表
图书类别编号
BSID
char
10
主键
读者类别编号
RSID
char
10
最大借阅量
LimitNum
int
4
最大借书期限
DeadLine
int
4
4-5读者信息表
读者编号
RID
char
10
主键
读者姓名
RName
char
10
性别
RSex
char
2
读者类别编号
RSID
char
10
外键
读者院系
RCol
char
20
专业
RDep
char
20
班级
RClass
char
10
办证日期日期
RDate
datetime
8
4-6读者类别信息表
读者类别编号
RSID
char
10
主键
读者类别名
RS
char
10
入学时间
SchoolTime
int
4
借书最大量
BookMax
int
4
4-7馆室信息表
馆室号
LID
char
10
主键
馆长
Manager
char
10
馆室库存量
LBNum
float
8
地址
Address
char
10
4-8职工信息表
职工编号
SID
char
10
主键
职工姓名
SName
char
10
性别
SSex
char
2
工作时间
SDate
datetime
8
职务
SDuty
char
10
联系方式
STel
char
20
馆室号
LID
char
10
外键
4-9用户信息表
用户登陆名
Username
char
20
主键
密码
Password
char
20
用户类型
UserStyle
char
10
第5章编码
以下是自己设计模块的程序界面截图及编码实现的方法的简单介绍:
1.登录界面:
在这个界面实现过程中主要使用了TADOConnection,TEditTbutton,TADOQuery,TButton,Tlabel等控件,核心代码如下:
ADOQuery1->SQL->Add("select*fromAdmwhereUsername='"+Edit1->Text+"'andPassword='"+Edit2->Text+"'");
if(ADOQuery1->Eof)
{ShowMessage("用户名或密码错误!
");
return;}
if(AnsiStrComp(s.c_str(),tt.c_str())==1)
{Form3->Show();return;}
elseForm2->Show();
图6-1
2.借阅界面:
主要使用了TEdit,TDBGrid,TdataSource,TADOQuery,TADODataSet,TButton,Tlabel,Tpanel,TTimer等控件,核心代码如下:
if(Edit1->Text!
=""&&Edit8->Text!
="")
{AnsiStringsql;
ADOQuery1->SQL->Clear();
sql="insertinto借书显示表(RID,RName,BID,BName,OSID,OutDate,SReturn)VALUES('"+Edit1->Text+"','"+Edit2->Text+"','"+Edit8->Text+"','"+Edit9->Text+"','"+Edit16->Text+"','"+Panel2->Caption+"','"+Panel5->Caption+"')";
ADOQuery1->SQL->Add(sql);
ADOQuery1->ExecSQL();
ADODataSet1->Active=false;
sql="select*from借书显示表whereRID='"+Edit1->Text+"'";
ADODataSet1->CommandText="";
ADODataSet1->CommandText=sql;
ADODataSet1->Active=true;
MessageBox(Handle,"成功借出","提示",MB_OK);
}
elseMessageBox(Handle,"借书信息不完整!
!
","警告",MB_OK);
图6-2
3.职工管理界面:
主要使用了TcomboBox,TADOConnection,TEdit,TDBGrid,TdataSource,TADOQuery,TButton,Tlabel等控件。
核心编码如下:
if(ComboBox1->Text=="职工编号")
{
sql="select*fromStaffwhereSID='"+Edit1->Text+"'";
ADOQuery1->Active=false;
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add(sql);
ShowMessage("确定");
ADOQuery1->ExecSQL();
}
elseif(ComboBox1->Text=="职工姓名")
{
sql="select*fromStaffwhereSName='"+Edit1->Text+"'";
ADOQuery1->Active=false;
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add(sql);
ShowMessage("确定");
ADOQuery1->ExecSQL();
}
else
{
ShowMessage("请选择查询方式");
return;
}
ADOQuery1->Active=true;
}
if(ComboBox1->Text=="职工编号")
{
sql="select*fromStaffwhereSID='"+Edit1->Text+"'";
ADOQuery1->Active=false;
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add(sql);
ADOQuery1->ExecSQL();
sql1="deletefromStaffwhereSID='"+Edit1->Text+"'";
ADOQuery1->Active=false;
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add(sql1);
ShowMessage("删除成功!
");
ADOQuery1->ExecSQL();
}
elseif(ComboBox1->Text=="职工姓名")
{
sql="select*fromStaffwhereSName='"+Edit1->Text+"'";
ADOQuery1->Active=false;
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add(sql);
ADOQuery1->ExecSQL();
sql1="deletefromStaffwhereSName='"+Edit1->Text+"'";
ADOQuery1->Active=false;
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add(sql1);
ShowMessage("删除成功!
");
ADOQuery1->ExecSQL();
}
else
{ShowMessage("请选择查询方式");
return;}
图6-3
第6章总结
§6.1结论
本次课程设计,我在概念结构设计和逻辑结构设计方面都倾注了大量的时间和精力。
在应用程序设计方面,借阅和归还这两个核心业务都能够比较好的实现,并且还能实现读者管理,图书管理,个人信息维护,查询和统计等常用的功能。
在一定程度上保证了数据库中数据的完整性和准确性。
通过考虑多方面的因素,最终保证了程序一定程度的健壮性。
虽然程序能够实现基本功能,但是程序本身需要改进的地方还有很多,如物理结构设计方面还存在不足;界面设计还不够尽善尽美,可能还没有最大限度的方便用户使用;有些功能设计的时候考虑到了,但由于难度较大并没有实现。
§6.2学习体会
在本次设计过程
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 图书馆 数据库 程序设计