图书馆管理系统 2.docx
《图书馆管理系统 2.docx》由会员分享,可在线阅读,更多相关《图书馆管理系统 2.docx(22页珍藏版)》请在冰豆网上搜索。
图书馆管理系统2
数据库
课程设计报告
设计题目:
图书馆管理系统
学生姓名:
系别:
专业:
班级:
学号:
指导教师:
目录
1系统需求分析3
1.1用户对功能的需求3
1.2数据流图4
2、图书馆管理系统数据字典7
2.1数据结构描述8
2.2数据流的描述8
2.3主要数据存储的定义10
3、数据库设计11
3.1数据库概念结构设计11
3.2数据库逻辑结构设计13
4、图书管理系统使用说明15
4.1图书管理系统登录界面15
4.2图书管理系统图书管理界面17
4.3新书审核界面18
4.4查询界面19
4.5借阅者及还书界面21
5、总结22
1系统需求分析
1.1用户对功能的需求
图书馆工作人员对功能的需求细分如下:
1、管理员信息的输入,查询,修改;
2、书籍信息的输入,查询,修改;
3、借书信息的输入。
4、还书信息的输入。
5、读者信息的查询。
读者对功能的需求
1、图书信息检索:
范围可按书名,作者,出版社,类别等检索款目进行任意条件组合精确或模糊检索,最快时间查找目标书籍;
2、读者个人信息的输入、修改。
查询。
建立读者个人信息档案,获取当前读者的个人信息。
并根据学号查询当前读者当前的借书情况,历史借书情况等。
1.2数据流图
2、图书馆管理系统数据字典
数据字典通常包括数据项、数据结构、数据流、数据存储和处理过程五个部分。
其中数据项是数据的最小组成单位,若干个数据项可以组成一个数据结构,数据字典通过对数据项和数据结构的定义来描述数据流、数据存储的逻辑内容。
2.1数据结构描述
名称:
图书(library)
含义说明:
图书基本信息
组成结构:
条形码+编号+书名+分类+出版日期+价格+库存+借出+在库
名称:
借阅者(user)
含义说明:
办理借书证的人员
组成结构:
借阅号+姓名+性别+年龄+借阅数+已借数+欠还罚单+上次归还+最近借阅
名称:
购书(buybook)
含义说明:
所购书和购书单位的说明
组成结构:
图书编号+书名+购书单位+联系电话+入库时间+数量
2.2数据流的描述
数据流名称:
借书单简述:
借阅者
数据流来源:
借阅者
数据流去向:
借阅者
数据流组成:
图书编号+书名+借阅证号等
数据流名称:
不合格借书单简述:
经借书处理模块验证不合格的借书单
数据流来源:
借书处理模块
数据流去向:
借阅者
数据流组成:
图书编号+书名+借阅证号等
数据流名称:
借书清单简述:
经借书处理模块处理后的借书情况数据单
数据流来源:
借书处理模块
数据流去向:
图书库存情况存档
数据流组成:
图书编号+图书名+借阅日期+借阅证号+管理员编号等
数据流名称:
图书简述:
借阅者从图书馆所借的图书
数据流来源:
借书处理模块
数据流去向:
借阅者
数据流组成:
图书编号+图书名+出版日期+入库日期+作者+单价等
数据流名称:
图书简述:
借阅者要准备归还给图书馆的图书
数据流来源:
借阅者
数据流去向:
还书处理模块
数据流组成:
图书编号+图书名+出版日期+入库日期+作者+单价等
数据流名称:
还书清单简述:
还书信息清单
数据流来源:
还书处理模块
数据流去向:
图书库存情况存档
数据流组成:
图书编号+图书名+借阅证号+还书日期等
数据流名称:
订书单简述:
订购新书的信息单
数据流来源:
采购员
数据流去向:
购书处理模块
数据流组成:
图书名+图书数量+价格+采购单位名称+图书出版社+出版日期等
数据流名称:
购书清单简述:
购买图书后的信息单
数据流来源:
购书处理模块
数据流去向:
管理员
数据流组成:
图书名+图书数量+价格+采购单位+联系电话等
数据流名称:
入库新书清单简述:
准备入库图书信息单
数据流来源:
管理员
数据流去向:
新书入库处理模块
数据流组成:
图书编号+图书名+数量+入库日期等
数据流名称:
入库清单简述:
刚新入库图书的信息单
数据流来源:
新书入库处理模块
数据流去向:
图书库存情况存档
数据流组成:
图书编号+图书名+数量+入库日期等
数据流名称:
销书计划简述:
准备从书库中撤除一部分图书的计划
数据流来源:
管理员
数据流去向:
销书处理模块
数据流组成:
图书编号+图书名称+入库日期+管理员编号+日期+数量等
数据流名称:
销书清单简述:
通过销书处理刚从书库中撤除的图书信息单
数据流来源:
销书处理模块
数据流去向:
图书库存情况存档
数据流组成:
图书编号+图书名称+入库日期+管理员编号+出库日期+数量+总价等
2.3主要数据存储的定义
(1)存储名称:
图书记录
输入:
流水号
输出:
图书所有信息及是否借出
数据结构:
流水号+分类号+索取号+书名+作者+价格+出版社+出版日期+是否借出
(2)存储名称:
读者记录
输入:
学号
输出:
读者信息及借书记录(所借书的流水号)
数据结构:
学号+姓名+流水号+书名+应还日期
(3)存储名称:
借阅记录
输入:
书号+读者编号+职工编号
输出:
图书的借阅记录信息
数据结构:
流水号+学号+职工编号+书名+借书日期+应还日期+归还标记
(4)存储名称:
归还记录
输入:
书号
输出:
图书的归还记录信息
数据结构:
流水号+学号+书名+还书日期
(5)存储名称:
输入:
职工编号
输出:
职工信息
数据结构:
职工编号+密码+姓名+性别+联系电话+所属部门
3、数据库设计
3.1数据库概念结构设计
1.数据库需要表述的信息有以下几种:
(1)图书信息
(2)借阅者信息
(3)购书信息
通过分析整理可得图书管理系统E-R图为:
由系统E-R图可得其主要数据流和主要处理过程:
1.主要数据流定义
(1)数据流名称:
图书信息
定义:
编号+书名+作者+分类+出版日期+价格+库存+借出+在库
(2)数据流名称:
借阅者信息
定义:
借阅号+姓名+性别+年龄+借阅数+已借数+欠还罚单+上次归还+最近借阅
(3)数据流名称:
购书信息
定义:
图书编号+书名+购书单位+联系电话+入库时间+数量
3.2数据库逻辑结构设计
通过E/R模型到关系模型的转化,可以得到如下关系模式:
图书(条形码,编号,书名,分类,出版日期,价格,库存,借出+在库)。
借阅者(借阅号,姓名,性别,年龄,借阅数,已借数,欠还罚单,上次归还,最近借阅)。
购书(图书编号,书名,购书单位,联系电话,入库时间+数量)。
数据项名
别名
数据类型
长度
图书编号
bkno
varchar
20
书名
bkn
varchar
8
作者
bkauthor
varchar
6
分类
bkkind
varchar
20
出版日期
bktime
varchar
4
单价
blcase
float
8
库存
Kucunshu
int
4
借出
bkborrow
int
4
在库
bklive
int
4
表2-2采购信息
数据项名
别名
数据类型
长度
图书编号
bkno
varchar
10
书名
bkn
varchar
20
购书单位
bka
varchar
50
联系电话
bktp
varchar
11
入库时间
bksyre
varchar
10
数量
bknum
int
4
表2-4借阅者信息
数据项名
别名
数据类型
长度
借阅号
bno
varchar
10
姓名
bn
varchar
20
性别
sex
varchar
2
年龄
bage
int
4
借阅数
bbw
int
4
已借阅
bbw
int
4
欠还罚单
bpunish
float
8
上次归还
brecord
varchar
10
最近借阅
brend
char
10
每个关系模式的主键码都用下划线标出。
(1)流水号是图书的键码,每本书有唯一的流水号。
一个读者可以同时借阅多本书,
(2)同一本书可以借给不同的同学,同一个读者可以再次借同一本书。
于是借书关系的键码为流水号,学号和借书日期的组合。
(3)要知道图书当前的状态,是在图书馆存放还是被借阅。
需要在图书的模式中增加对应项用以表示图书当前的状态,现在增加‘库存’项。
3.3.2数据库前台的设计
根据数据库的设计,该图书管理系统可以分成三个子模块:
1、图书管理系统管理模块
2、图书管理系统购书模块
3、图书管理模块查询模块
根据四个模块的不同功能,可以分别设计不同的操作界面,以实现其功能。
根据不同模块的权限不同,设计登录界面,根据不同的权限访问不同的子系统。
4、图书管理系统使用说明
4.1图书管理系统登录界面
(1)界面
界面核心代码:
LRESULTCALLBACKWndProc(HWNDhwnd,UINTmsg,WPARAMwparam,LPARAMlparam)
{
PAINTSTRUCTps;
switch(msg)
{
caseWM_SIZE:
cxClient=LOWORD(lparam);
cyClient=HIWORD(lparam);
break;
caseWM_PAINT:
hdc=BeginPaint(hwnd,&ps);
ShowWindow(hwnd,SW_SHOWMAXIMIZED);
hmendc=CreateCompatibleDC(hdc);
hbitmap=CreateCompatibleBitmap(hdc,cxClient,cyClient);
SelectObject(hmendc,hbitmap);
for(i=0;i<6;i++)
{
hbtm=LoadBitmap(hInst,MAKEINTRESOURCE(bit[i]));
SelectObject(hmendc,hbtm);
GetObject(hbtm,sizeof(BITMAP),&bitmap);
StretchBlt(hdc,0,0,cxClient,cyClient,hmendc,0,0,bitmap.bmWidth,bitmap.bmHeight,SRCCOPY);
Sleep(1000);
}
EndPaint(hwnd,&ps);
break;
4.2图书管理系统图书管理界面
(2)图书管理界面
图书管理模块核心代码:
voidCMyView:
:
Onxiugai()
{
UpdateData(TRUE);
m_pSet->Edit();
m_pSet->m_bkno=m_bkno2;
m_pSet->m_bkn=m_bkn2;
m_pSet->m_bkauthor=m_bkauthor2;
m_pSet->m_bkkind=m_bkkind2;
m_pSet->m_bktime=m_bktime2;
m_pSet->m_bkcost=m_bkcost2;
m_pSet->m_bksave=m_bksave2;
m_pSet->m_bkborrow=m_bkborrow2;
m_pSet->m_bklive=m_bklive2;
m_pSet->Update();
m_pSet->Requery();
MessageBox("记录修改成功");
UpdateData(FALSE);
}
4.3新书审核界面
(3)新书审核界面
购书模块核心代码:
voidCMyView:
:
Ontongji()
{
UpdateData(TRUE);
CStringstr="";
while(m_list.GetCount()>0)
m_list.DeleteString(0);
m_pSet->MoveFirst();
while(m_pSet->IsEOF()!
=1)
{
str.Format("%s%30s%16s%16s%16s%8d",m_pSet->m_bkno,m_pSet->m_bkn,m_pSet->m_bka,
m_pSet->m_bktp,m_pSet->m_bksave,m_pSet->m_bknum);
m_list.AddString(str);
m_pSet->MoveNext();
UpdateData(FALSE);
}
}
4.4查询界面
(4)查询界面
图书查询模块核心代码:
oidCMyView:
:
OnButton2()
{
UpdateData(TRUE);
CStringstr="";
while(m_list.GetCount()>0)
m_list.DeleteString(0);
m_pSet->MoveFirst();
while(m_pSet->IsEOF()!
=1)
{
if(strcmp(m_pSet->m_bkn,m_bkn)==0||strcmp(m_bkno,m_pSet->m_bkno)==0||m_pSet->m_bksave==m_bksave||strcmp(m_pSet->m_bktime,m_bktime)==0
||m_pSet->m_bklive==m_bklive||strcmp(m_pSet->m_bkkind,m_bkkind)==0||m_pSet->m_bkcost==m_bkcost
||m_pSet->m_bkborrow==m_bkborrow||strcmp(m_pSet->m_bkauthor,m_bkauthor)==0)
{str.Format("%8s%8s%8s%8s%8s%12f%8d%8d%8d",m_pSet->m_bkno,m_pSet->m_bkn,m_pSet->m_bkauthor,m_pSet->m_bkkind,m_pSet->m_bktime,
m_pSet->m_bkcost,m_pSet->m_bksave,m_pSet->m_bkborrow,m_pSet->m_bklive);
m_list.AddString(str);
m_pSet->MoveNext();
UpdateData(FALSE);
}
else
{
m_pSet->MoveNext();
}
}
}
4.5借阅者及还书界面
(5)借阅者及借书还书界面
借阅者模块核心代码:
voidCMy2View:
:
Ontianjia()
{
m_pSet->AddNew();
UpdateData(TRUE);
m_pSet->Update();
m_pSet->MoveLast();
m_pSet->Requery();
MessageBox("添加成功!
");
UpdateData(FALSE);
}
voidCMy2View:
:
Onshanchu()
{
m_pSet->Delete();
m_pSet->Requery();
MessageBox("已经删除当前记录");
UpdateData(FALSE);
}
voidCMy2View:
:
Onxiugai()
{
m_pSet->Edit();
UpdateData(TRUE);
m_pSet->Update();
m_pSet->Requery();
MessageBox("修改成功!
");
UpdateData(FALSE);
}
5、总结
本设计使用MicrosoftSQLServer2000创建后台数据库,使用MFC作为前台操作界面实现对图书管理系统的功能操作。
本图书管理系统实现了图书管理的基本功能,经过调试运行,表明该系统具有可行性和可扩充性。
但数据库还有待进一步的完善与规划,操作系统还有待于进一步的改善,使系统更加高效,更加人性化。
通过几周的设计练习,从系统的需求分析开始,到概念设计,逻辑设计,再到最后的系统实施与维护,一步步走下来虽然感觉有点累,但每一步都获益匪浅。
认认真真完成每一步,直到完成整个系统之后,忽然有一种破茧而出的感觉。
从这个设计中,不仅仅从实践中巩固提高了数据库的相关知识,体会了设计一个系统的过程,更学到了一种设计分析的思想,一种能力。
我们这组三人分工合作的很好,一个写代码,一个写需求分析,一个维护和测试。
不过有时候,一个人负责一个模块也很难应付过来,很多时候,三个人在一起讨论,一起发现问题,解决问题,从中找出最优解,就这样坚持下来了这两周,终于小有成就,数据库课程设计总算按时完成了,呵呵。
在这期间,无形中锻炼了我分析问题,解决问题的能里,锻炼了我自主学习的能力。
在课程设计期间,我体会到了学习的乐趣,体会到了付出之后获得回报的喜悦,与欣慰。
感谢老师的大力帮助和支持,感谢我的同学与朋友,在我遇到各种各样复杂问题的时候,给与我鼓励和帮助。
参考文献
[1]钱雪忠,黄建华.数据库原理及应用.北京邮电大学出版社2009
[2]CharlesPetzold.Windows程序设计.北京大学出版社2009
[3]杨章伟.21天学通VisualC++.电子工业出版社2009