资源描述
图书馆管理信息系统设计与实现报告正文
———————————————————————————————— 作者:
———————————————————————————————— 日期:
2
个人收集整理 勿做商业用途
1引言
1。1课题背景
现代图书馆管理的本质在于创新,以往的图书馆管理完全手工操做,通过卡片记录信息,既浪费时间,又浪费人工、纸张,而且书籍和读者的信息查询比较麻烦,不能提供领导管理上需要的各种信息如本馆各种资料分布及借阅(流通)情况。随着电子信息技术的飞速发展,图书馆的工作也发生了实质性的进展和变化。现代化的服务手段逐渐替代传统的手工操作,计算机编目、光盘数据库和网络检索技术等新型的项目开始在图书馆领域普及。在计算机技术、网络技术的进一步冲击下,图书馆随着教育教学改革的深入和素质教育的全面推动,逐渐演变形成数字化图书管理,其作用也越来越重要了[1]。为了使图书馆的管理更科学、更规范,减少重复劳动,节省图书馆建设和管理中的人力、财力,方便读者查询和借阅书籍,所以有必要建立一个图书馆管理系统。
1.2课程设计目的
图书馆每天都有很多的书出借归还,使用图书馆管理系统可以大大地提高工作效率,减少工作中可能出现的错误,是提高图书馆办公自动化水平的重要手段之一。其开发主要
包括后台数据库的建立和维护以及前端应用程序界面开发两个方面。
在中国软件行业日益进步的今天,如何利用这些资源来帮助管理员可以快速的管理,让管理员以及借书者有利用更多的时间去从事其他的事情已成为一个非常注重的事情。因而设计一个好的图书馆管理信息系统,能提高图书馆的管理效率,有利于对图书信息的统计.论文旨在论述图书馆管理系统的设计与开发。
通过图书馆管理信息系统的设计,熟练掌握Visual C++、Access 2003等工具软件,系统地掌握需求分析、数据库设计、编码实现、测试等软件开发的流程,提高自身分析问题、解决问题的能力[2]。
1。3课程设计任务
本课程设计任务是通过开发一个数据库图书馆管理信息系统,学习数据库系统的设计与开发,采用Visual C++和Access 2003等软件为开发工具。通过对计算机硬件和软件解决方案的论证,对应用领域进行调查分析,参考各种资料和进行数据库系统开发实践。在指导老师的帮助下,已经基本上成功地实现了设计任务书的要求,使得设计的数据库系统能够实现一般数据库的管理。
2 系统分析
2。1 功能需求分析
该项目系统包含的功能有:图书信息管理、读者信息管理、借书服务管理,还书服务管理,其中每个功能由若干个相关联的子功能模块组成。如图所示:
图2.1 系统功能 模块
(1) 图书信息管理
“图书信息管理”功能模块用于管理图书的相关信息,包括浏览、查询、添加、修改和删除功能。在进行图书信息的添加时,系统会自动检测所添加的图书信息中的书籍条码在书籍表中是否已经存在,如果存在,会提示用户该书已经存在。在进行图书信息的删除时,要首先弹出提示窗口让用户确认是否删除,只有用户确认后才能进行图书信息的删除。在进行图书修改时,不准用户修改书籍条码,因为书籍条码作为数据库中书籍表的主键是不同书籍的唯一标识,不准修改书籍条码可以防止不经意将书籍条码改错;如果确实要修改书籍条码,可以通过数据库管理员来实现,也可以先将错误书籍条码信息删除再添加正确的书籍信息,这样在删除时会弹出提示窗口让用户确认是否删除,给用户以提示,防止意外错误[3]。
其模块如下图所示:
图书信息管理
图书信息查询
图书入库
图书信息修改
图书注销
图2.2 “图书信息管理”功能模块
“图书信息查询"功能模块用于查询图书的相关信息,包括书籍条码(BOOK_ID)、书名、出版社、作者、出版日期、尚能否借出。
(2) 读者信息管理
“读者信息管理"功能模块用于管理与读者相关的信息,包含的子功能模块如下图所示:
读者信息管理
读者信息查询
读者信息添加
读者信息修改
读者信息删除
图2.3 “读者信息管理”功能模块
“读者信息查询"功能模块用于查询读者的相关信息,包括读者条码、读者姓名、性别、证件号码。
“读者信息添加”功能模块用于添加新近读者的相关信息,包括读者条码、读者姓名、性别、证件号码.
“读者信息修改"功能模块用于修改已存读者的需修改的信息。
“读者信息删除”功能模块用于删除读者的所有信息.
(3)借书服务管理模块
图书馆管理员通过此模块来进行借书操作。在进行借书信息的添加时,系统会自动检测该读者是否有权借书(过去借书历史中有超期未还的现象),所借书是否在馆内未被借出,只要有一个条件不满足,就会提示出错。
“借书服务管理”用于登记读者借阅图书的记录并减少在库图书的库存量,登记内容包括读者编号、书籍条码(BOOK_ID)。
(4)还书服务管理模块
图书馆管理员通过此模块来进行还书操作。在进行还书信息的添加时,系统会自动检测此次还书是否在规定的时间内,若超期,则锁定该读者,并给出提示信息。
“还书服务管理”功能用于登记读者归还图书的记录并增加在库图书的库存量,登记内容包括读者姓名、书籍条码(BOOK_ID)、借书日期、归还时间、超期天数。
2.2 系统流程图
在用户需求分析的基础上把系统划分为三个子模块:读者信息管理、图书信息管理、图书流通管理.这三个模块之间,紧密结合,共享信息资源,形成一种完美的学校图书管理系统流程图[4].如下图所示:
读者信息管理
管理员
图书信息管理
读者信息
流通管理
图书信息
图书借阅
图书归还
图2.4 系统流程图
3 数据库设计
根据系统功能需求,数据库采用Microsoft Access 2003建立。Microsoft Access 2003是一个桌面级的数据库管理系统,简单易用,功能强大。支持的数据类型较丰富,操作简单,维护费用比较低[5].
3。1 概念结构设计
概念结构设计是指对用户的需求进行综合、归纳与抽象,形成一个独立于具体DBMS的概念模型,是整个数据库设计的关键。
系统基本E-R图
(1) 图书管理系统基本E-R图如下所示:
图3。1系统基本E—R图
(2) 各子系统功能E-R图
1、图书信息管理所需管理的内容E-R图如下所示:
图3。2图书信息管理E—R图
2、读者信息管理所需管理的内容E-R图如下所示:
图3。3读者信息管理E—R图
3、借、还书服务管理所需管理的内容E—R图如下所示:
图3。4图书信息管理E-R图
3。2 逻辑结构设计
逻辑设计阶段的任务是把概念结构转换为选用DBMS(数据库管理系统)所支持的模式[6]。
根据模块的设计,以及根据规范化的设计要求,该系统的数据库设计如表3—1至3—5所示,表3—1主要用来存放管理员的登录信息,表3-2主要用来存放可借的书籍信息,表3—3用来存放读者信息,表3-4是借书信息表,表3-5是借还历史表。
表3—1 登录信息表(CLERK)
字段名称
数据类型
字段属性
字段大小
描述
必填字段
索引
是主键否
Name
文本
8
管理员ID
是
有(无重复)
是
PassWord
文本
8
管理员密码
是
无
否
表3-2 书籍信息表(BOOK)
字段名称
数据类型
字段属性
字段大小
描述
必填字段
索引
是主键否
BOOK_ID
文本
30
书籍条目
是
有(无重复)
是
BOOK_NAME
文本
50
书籍名称
是
无
否
AUTHOR
文本
30
作者
否
无
否
PRESS
文本
50
出版社
否
无
否
PRESS_DATE
文本
50
出版日期
否
无
否
FLAG_BORROW
文本
10
是否可借
是
无
否
表3-3 读者信息表(READER)
字段名称
数据类型
字段属性
字段大小
描述
必填字段
索引
是主键否
READER_ID
文本
30
读者条目
是
有(无重复)
是
NAME
文本
50
姓名
是
无
否
IDCARD
文本
30
身份证号
否
无
否
MAXNUM_CAN_BORROW
数字
-
最大可借数
否
无
否
FLAG_BORROW
文本
10
是否有权借
是
无
否
表3-4 借书信息表(BORROW)
字段名称
数据类型
字段属性
字段大小
描述
必填字段
索引
是主键否
ID
自动编号
—
记录号
是
有(无重复)
是
READER_ID
文本
30
读者条目
是
无
否
BOOK_ID
文本
30
书籍条目
是
无
否
BORROW_DATE
日期/时间
-
借书日期
是
无
否
B_CLERK_ID
文本
30
借书管理员
是
无
否
表3-5 借还书历史表(HISTORY)
字段名称
数据类型
字段属性
字段大小
描述
必填字段
索引
是主键否
ID
自动编号
—
记录号
是
有(无重复)
是
READER_ID
文本
30
读者条目
是
无
否
BOOK_ID
文本
30
书籍条目
是
无
否
续表
字段名称
数据类型
字段属性
字段大小
描述
必填字段
索引
是主键否
BORROW_DATE
日期/时间
—
借书日期
是
有(无重复)
是
RETURN_DATE
日期/时间
—
还书日期
是
无
否
B_CLERK_ID
文本
30
借书管理员
是
无
否
R_CLERK_ID
文本
30
还书管理呗
是
无
否
4 系统实现
4。1登录模块实现
(1) 模块功能
该功能模块实现的功能是实现管理员到图书管理系统的登录操作,登录信息(用户名、密码).
(2) 界面设计
【系统登录】对话框界面如图4.1所示。
图4.1【系统登录】对话框界面
其中主要控件的属性设置及功能如表4—1所示。
表4-1 对话框IDD_ DIALOG_LOGIN中的主要控件
控件类型
ID
属性设置
Button
IDC_CON FIRM
Caption 设为“登录"
Button
IDC_CANCEL
Caption 设为“取消"
Static Text
默认
Caption 设为“请输入用户名和密码”
Static Text
默认
Caption 设为“用户名”
Static Text
默认
Caption 设为“密码”
Edit Box
IDC _LOGIN_NAME
Styles选中Number
Edit Box
IDC _LOGIN_PASSWORD
默认
Picture
IDC _STATIC
Styles选Frame(BLACK)
Picture
IDC _ STATIC
Styles选Frame(BLACK)
核心代码如下:
void CLoginDlg::OnConfirm()
{
CClerkDataSet mrsDataSet; /*声明记录集*/
CString mSqlStr;
UpdateData(TRUE);
if (m_strName。IsEmpty()) /*判断用户名信息是否为空*/
{
AfxMessageBox("请输入用户名!”);
return;
}
if (!mrsDataSet.Open(AFX_DB_USE_DEFAULT_TYPE, mSqlStr))
{
AfxMessageBox(”CLERK表打开失败!");
return;
}
(3) 主界面
当管理员登录信息正确时,将登录到主界面,该模块中有“图书资料” ,“读者资料” ,“借书管理”,“还书管理”功能模块.如下图所示:
图4。2 主界面
主界面的控件设置和说明表4—2所示.
表4—2 主界面控件设置及其说明
控件ID号
说明
IDC_BUTTON_BOOK
“图书资料”按钮
IDC_BUTTON_READER
“读者资料”按钮
IDC_BUTTON_BORROW
“借书管理”按钮
IDC_BUTTON_RETURN
“还书管理”按钮
IDC_BUTTON_GOODBYE
“退出"按钮
核心代码如下:
CLoginDlg Dlg;
if (Dlg.DoModal() == IDOK)
{
{
m_strUserName = Dlg。m_strName ;
CLibraryDlg Dlg;
Dlg。DoModal();
}
}
4。2图书资料模块实现
在进入该功能模块后,我们可以看到库存图书的详细信息。在该模块中还包含有对新图书的入库功能(添加新图书的记录),对已有图书资料的注销功能(删除已有图书的记录),对已有图书信息的修改功能,以及按书名和书籍条码等搜索的功能[7]。如图所示:
图4。3 “图书信息”界面
界面的控件设置和说明表4-3所示。
表4—3 对话框控件设置及其说明
控件ID号
说明
IDC_STATIC
表示“书名”静态文本框
IDC_STATIC
表示“书籍条码"静态文本框
IDC_STATIC
表示“作者”静态文本框
IDC_STATIC
表示“出版社”静态文本框
IDC_STATIC
表示“书籍条码"静态文本框
IDC_STATIC
表示“出版日期”静态文本框
IDC_STATIC
表示“尚能借出"静态文本框
IDC_STATIC
表示“Y/M/D”静态文本框
IDC_FIRST
“第一条[&F]”按钮
IDC_PRIOR
“上一条(&P]”按钮
IDC_NEXT
“下一条[&N]”按钮
IDC_LAST
“末一条(&L]”按钮
IDC_NEW
“增加[&N]”按钮
IDC_EDIT
“修改[&E]”按钮
IDC_DELETE
“删除[&D]”按钮
IDC_ENQUERY
“查询[&Q]"按钮
IDC_SAVE
“保存[&S]”按钮
IDC_CANCEL_REC
“取消[&C]”按钮
IDC_EXIT
“退出[&X]"按钮
IDC_BOOKNAME
书名编辑框
IDC_AUTHOR
作者编辑框
IDC_PRESS
出版社编辑框
IDC_BOOKID
书籍条码编辑框
IDC_PRESSDATE
出版日期编辑框
IDC_FLAG_BORROW
尚能借出编辑框
核心代码如下:
void CBookDataSet::AssertValid() const
{
CRecordset::AssertValid();
}
void CBookDataSet::Dump(CDumpContext& dc) const
{
CRecordset::Dump(dc);
}
4.3读者资料模块实现
该模块主要实现对已存在的读者信息进行管理,主要有对新增加读者信息的添加功能,对已存在读者信息的修改功能,对已存在读者信息按读者编号进行删除的功能,以及对已存在读者信息按读者条码或姓名模糊查找功能.如下图所示:
图4.4 “读者信息”界面
界面的控件设置和说明表4-4所示。
表4-4 对话框控件设置及其说明
控件ID号
说明
IDC_STATIC
表示“读者姓名”静态文本框
IDC_STATIC
表示“读者条码"静态文本框
IDC_STATIC
表示“身份证号”静态文本框
IDC_FIRST
“第一条[&F]”按钮
IDC_PRIOR
“上一条(&P]”按钮
IDC_NEXT
“下一条[&N]”按钮
IDC_LAST
“末一条(&L]”按钮
IDC_NEW
“增加[&N]”按钮
IDC_EDIT
“修改[&E]”按钮
IDC_DELETE
“删除[&D]”按钮
IDC_ENQUERY
“查询[&Q]”按钮
IDC_SAVE
“保存[&S]”按钮
IDC_CANCEL_REC
“取消[&C]”按钮
IDC_EXIT
“退出[&X]"按钮
IDC_READERID
读者条码编辑框
IDC_READERNAME
读者姓名编辑框
IDC_IDCARD
身份证号编辑框
核心代码如下:
void CReaderDataSet::AssertValid() const
{
CRecordset::AssertValid();
}
void CReaderDataSet::Dump(CDumpContext& dc) const
{
CRecordset::Dump(dc);
}
4.4借书管理模块实现
进入此模块首先看到的是借出图书服务模块,,在此模块中通过书号(BOOK_ID)来实现对在库图书的借出操作,在借阅图书时会显示该读者是否能借书的功能,具体如图所示:
图4。5 “图书借出”界面
界面的控件设置和说明表4—5所示.
表4-5 对话框控件设置及其说明
控件ID号
说明
IDC_STATIC
表示“读者编码”静态文本框
IDC_STATIC
表示“书籍编码”静态文本框
IDC_CONFIRM
“确定[&O]”按钮
IDC_CANCEL
“取消[&C]"按钮
IDC_READER_ID
读者编码编辑框
IDC_BOOK_ID
书籍编码编辑框
核心代码如下:
void CBorrowDataSet::AssertValid() const
{
CRecordset::AssertValid();
}
void CBorrowDataSet::Dump(CDumpContext& dc) const
{
CRecordset::Dump(dc);
}
4.5图书管理模块实现
进入此模块首先看到的是借出图书的信息,主要是对所借图书的日期记录,是否按时还书。对书本进行一个入库的操作,具体情况,如图所示:
图4。6 “还书管理”模块
界面的控件设置和说明表4-6所示。
表4-6 对话框控件设置及其说明
控件ID号
说明
IDC_STATIC
表示“图书代码:"静态文本框
IDC_STATIC
表示“读者姓名:”静态文本框
IDC_STATIC
表示“应还书日期:”静态文本框
IDC_STATIC
表示“借书日期:”静态文本框
IDC_STATIC
表示“超期天数:”静态文本框
IDC_EDIT
“修改[&E]”按钮
IDC_BOOK_ID
图书代码编辑框
IDC_READERNAME
读者姓名编辑框
IDC_RETURNDATE
应还书日期编辑框
IDC_BORROWDATE
借书日期编辑框
IDC_DAYS
超期天数编辑框
核心代码如下:
void CReturnDlg::Delete_Borrow()
{
CDatabase mdb;
CString m_strsql;
if(!mdb.Open(_T(”library")))
{
AfxMessageBox("数据库执行出错");
return;
}
}
5总结
本次课程设计能够顺利完成,首先要感谢我们的辅导教师罗永红老师,他一次又一次耐心地为我们讲解基础知识,使我们的基础更扎实。而罗永红老师的循循善诱又使我们掌握基础知识时,得到了更多的启发,能力又得到了提高。另外,还要感谢其她对于本次课设给了我很大帮助的同学们,他们将自己所学毫不吝惜地与别人交流,使大家的理解有加深了很多.
通过这次课程设计,我才深知数据库灵活。在刚刚结束的一个学期里,我对数据库的学习才仅仅是个入门,通过这次的课程设计,我才发现自己在以往学习中的诸多问题。对于同一问题没有多角度的思考,仅仅局限于一种方法,根本没有思考是否还有别的更简单更快捷的方法,不能做到举一反三,还有太注重理论学习而忽视了上机实践,结果就是理论知识不扎实上机动手能力差,编译出现错误时不能很快的找出错误。在这次课设的编程过程中,我尽量把以往学过的知识全部用上,对于同一个问题从不同的角度考虑实现方法,所以我才发现了自己很多的问题,而且借此寒假,我会改正这些问题,并且深入学习数据库和C++。在这次课程中,除了达到了课设目的,我想我最大的收获就是以上的发现并且能及时的解决。
致 谢
在这次数据库的课程设计中,曾遇到过不少问题,单靠我个人的努力,很难按时完成该课程设计。在此,我衷心感谢我的指导老师—-罗永红。罗永红老师认真负责的工作态度,严谨的治学精神和深厚的理论水平都使我获益非浅。另外,还要感谢学校领导、辅导员、各位同学对我们的关怀、帮助,为我们提供了良好的设计环境以及各方面的支持。
参考文献
[1] 王红梅,胡明,王涛。数据库(C++版)[M] 。北京:清华大学出版社,2007。
[2] 何钦铭,陈根才。数据库课程设计[M]。 杭州:浙江大学出版社,2007。
[3] 萨师煊,王珊。 数据库系统概论(第三版)[M]. 北京:高等教育出版社,2009.
[4] 齐治昌,谭庆平,宁洪. 软件工程(第二版)[M]。 北京:高等教育出版社,2004.
[5] 郑阿奇。Visual C++实用教程(第三版)[M]。北京:电子工业出版社,2009.
[6] 钱雪忠。数据库原理及应用 (第二版)[M].北京:北京邮电大学出版社,2007。
[7] 王晟,邓远辉。Visual C++。NET数据库开发经典案例解析[M].北京:清华大学出版, 2007。
附录:源程序代码
void CLoginDlg::OnConfirm()
{
// TODO: Add your control notification handler code here
CClerkDataSet mrsDataSet; /*声明记录集*/
CString mSqlStr;
UpdateData(TRUE);
if (m_strName.IsEmpty()) /*判断用户名信息是否为空*/
{
AfxMessageBox(”请输入用户名!”);
return;
}
mSqlStr = "SELECT * FROM CLERK WHERE NAME=’”;
mSqlStr = mSqlStr + m_strName;
mSqlStr = mSqlStr + "' AND PASSWORD='”;
mSqlStr = mSqlStr + m_strPassword;
mSqlStr = mSqlStr + ”’";
if (!mrsDataSet.Open(AFX_DB_USE_DEFAULT_TYPE, mSqlStr))
{
AfxMessageBox("CLERK表打开失败!”);
return;
}
if (!mrsDataSet.IsEOF())
{
CDialog::OnOK();
}
else
{
AfxMessageBox("登录失败!”);
return;
}
}
void CLoginDlg::OnCancel()
{
CDialog::OnCancel();
}
CLoginDlg Dlg;
if (Dlg.DoModal() == IDOK)
{
m_strUserName = Dlg.m_strName ;
CLibraryDlg Dlg;
Dlg。DoModal();
}
#ifdef _DEBUG
void CBorrowSet::AssertValid() const
{
CRecordset::AssertValid();
}
void CBorrowSet::Dump(CDumpContext& dc) const
{
CRecordset::Dump(dc);
}
void CReaderDataSet::DoFieldExchange(CFieldExchange* pFX)
{
//{{AFX_FIELD_MAP(CReaderDataSet)
pFX—>SetFieldType(CFieldExchange::outputColumn);
RFX_Text(pFX, _T(”[READER_ID]”), m_READER_ID);
RFX_Text(pFX, _T("[NAME]”), m_NAME);
RFX_Text(pFX, _T("[IDCARD]”), m_IDCARD);
RFX_Int(pFX, _T(”[MAXNUM_CAN_BORROW]”), m_MAXNUM_CAN_BORROW);
RFX_Text(pFX, _T(”[FLAG_BORROW]”), m_FLAG_BORROW);
//}}AFX_FIELD_MAP
}
#ifdef _DEBUG
void CReaderDataSet::AssertValid() const
{
CRecordset::AssertValid();
}
void CReaderDataSet::Dump(CDumpContext& dc) const
{
CRecordset::Dump(dc);
}
展开阅读全文