图书管理系统完成版复习进程.docx
《图书管理系统完成版复习进程.docx》由会员分享,可在线阅读,更多相关《图书管理系统完成版复习进程.docx(40页珍藏版)》请在冰点文库上搜索。
![图书管理系统完成版复习进程.docx](https://file1.bingdoc.com/fileroot1/2023-5/17/e39cdfa7-86ed-490f-88c6-0355a29ff889/e39cdfa7-86ed-490f-88c6-0355a29ff8891.gif)
图书管理系统完成版复习进程
《VisualC++》课程大作业
题目名称:
图书馆管理系统
系名称:
计算机科学与信息工程学院
专业班级:
12级软件工程一班
姓名学号:
王停201103020041
姓名学号:
徐开放201103020019
指导老师:
李源
2013年6月
第1章组员分工
图书管理系统是一个比较大的系统,本系统有两名成员共同完成。
王停主要负责系统中对整个数据库的操作、管理和设置部分,包括权限验证、用户管理、基础数据设置、数据库的备份与恢复,以实现对数据库的管理和维护工作,并提高系统的数据安全性等工作。
徐开放主要负责实现对数据库中的具体表的数据项的管理和操作,包括借阅管理、书库管理、读者管理等模块,通过添加、删除、修改等操作,来实现对图书信息、读者信息、借阅信息的管理和登记,从而能够为借阅者提供方便快捷的服务,同时也提高了操作人员的管理效率。
第2章需求分析
该图书管理系统是基于利用计算机管理图书信息的需求而设计的,主要致力于为图书借阅人提供方便快捷的服务,以及为图书管理人员提供准确可靠的信息,旨在提高图书管理的效率,节约相关的管理成本,增强图书管理的安全性,为学校的信息化建设提供必要的支持。
其具体需求分析如下:
1.系统需求
该系统需提供给图书借阅者、信息管理员和图书馆管理人员共三方面的需求,图书借阅者的需求是查询图书馆所存的图书、个人借阅情况及个人信息的修改;信息管理员对图书借阅者的借阅及还书要求进行操作,同时对借书或还书信息进行查询;图书馆管理员实现图书采购及验收编目入库。
它要满足图书借阅管理、图书书库管理、图书借阅人管理的基本要求,并能实现方便的操作和扩展,满足图书馆发展的需要,保障图书管理书籍的安全、准确。
2.功能需求
该图书管理系统主要有以下几项基本功能:
⑴用户管理:
用于管理系统用户,并能设置用户口令和权限,实现用户的添加、修改和删除,从而为系统的安全性提供保障。
⑵基础数据管理:
负责维护图书管理相关的基础数据,主要包括对图书逾期罚款、图书类别、读者类别的设置。
⑶借阅管理:
完成图书的借出登记,归还登记信息,以及借书信息和还书信息的查询浏览等借阅相关的管理功能。
⑷书库管理:
维护书库中的图书信息,能够完成新书的入库登记,图书信息的查询以及图书丢失处理等功能。
⑸读者管理:
维护读者的相关信息,能够完成新读者信息的登记,读者信息的查询以及读者注销等功能。
⑹数据库管理:
对现有的数据库进行管理,包括数据备份和恢复,以方便用户对数据库的管理和维护工作,提高系统的数据安全性。
3.性能需求
WindowsXP/2000/98/ME中的VisualC++开发环境,MicrosoftAccess2003数据库使用软件。
第3章总体设计
3.1系统功能模块图
通过建立该图书馆电子系统,实现借书人员的权限验证,实现管理员对其用户进行管理的使用性能,及借阅图书和借阅用户的管理,同时可实现系统管理员对整个图书馆的数据库的管理。
图书管理系统功能模块图如图3-1所示:
图3-1图书管理系统功能模块图
3.2系统设计流程图
图书管理系统流程图如图3-2所示:
图3-2图书管理系统流程图
3.3数据库设计
数据库的好坏关系到系统的运行速率、存储数据的效率,合理的数据库设计可以提高系统的性能。
数据库结构要能充分满足各种信息的输入和输出,收集基本数据,数据结构处理的流程,组成一份详尽的数据字典,为具体设计做准备。
针对一般图书管理系统的需求,通过对数据管理工作过程的内容和数据流程的分析,得到其系统的逻辑模型,根据综合条件的需求为本系统的数据库设计如下数据项和数据结构:
1.用户表:
用户名、用户密码、用户类型。
用户表(user)具体设计如表3-1所示。
表3-1用户表(user)
名称
字段名称
类型
主键
非空
用户名
user
文本
Yes
Yes
用户密码
passward
文本
No
No
用户类型
isAdmin
是/否
No
Yes
2.罚款设置表:
罚款类型、罚款金额。
罚款设置表(publishType)具体设计如表3-2所示。
表3-2罚款设置表(publishType)
名称
字段名称
类型
主键
非空
罚款类型
type
文本
Yes
Yes
罚款金额
money
文本
No
Yes
3.图书类型设置表:
类别名称、可借出天数。
图书类型设置表(bookType)具体设计如表3-3所示。
表3-3图书类型设置表(publishType)
名称
字段名称
类型
主键
非空
类别名称
type
文本
Yes
Yes
可借出天数
number
数字
No
Yes
4.读者类型设置表:
类别名称、可借书册数。
读者类型设置表(readerType)具体设计如表3-4所示。
表3-4读者类型设置表(readerType)
名称
字段名称
类型
主键
非空
类别名称
type
文本
Yes
Yes
可借书册数
number
数字
No
Yes
5.归还信息表:
记录号、读者编号、读者姓名、图书编号、图书名称、图书类别、图书价格、借出日期、归还日期、罚款金额、其他金额、总计金额、操作员。
图书信息表(bookInfo)具体设计如表3-5所示。
表3-5图书信息表(bookInfo)
名称
字段名称
类型
主键
非空
图书编号
code
文本
Yes
Yes
图书名称
name
文本
No
Yes
图书类别
type
文本
No
Yes
出版社
press
文本
No
No
作者
writer
文本
No
No
图书价格
price
文本
No
No
登记日期
in_date
日期/时间
No
Yes
是否借出
isBorrow
是/否
No
No
借阅人编号
reader_code
文本
No
No
说明
brief
文本
No
No
6.读者信息表:
读者编号、读者姓名、读者性别、读者类别、注册日期、联系电话、单位部门、住址、说明。
读者信息表(readerInfo)具体设计如表3-6所示。
表3-6读者信息表(readerInfo)
名称
字段名称
类型
主键
非空
读者编号
code
文本
Yes
Yes
读者姓名
name
文本
No
Yes
读者性别
sex
文本
No
Yes
读者类别
type
文本
No
Yes
注册日期
reg_date
日期/时间
No
Yes
联系电话
phone
文本
No
No
单位部门
dept
文本
No
No
住址
address
文本
No
No
说明
brief
文本
No
No
7.借出信息表:
记录号、读者编号、读者姓名、图书编号、图书名称、图书类别、图书价格、借出日期、归还日期、是否归还、操作员。
借出信息表(borrowInfo)具体设计如表3-7所示。
表3-7借出信息表(borrowInfo)
名称
字段名称
类型
主键
非空
记录号
ID
自动编号
Yes
Yes
读者编号
reader_code
文本
No
Yes
读者姓名
reader_name
文本
No
Yes
图书编号
book_code
文本
No
Yes
图书名称
book_name
文本
No
Yes
图书类别
book_type
文本
No
No
图书价格
price
文本
No
No
借出日期
borrow_date
日期/时间
No
Yes
归还日期
return_date
日期/时间
No
Yes
是否归还
isReturn
文本
No
No
操作员
operator
文本
No
Yes
8.归还信息表:
记录号、读者编号、读者姓名、图书编号、图书名称、图书类别、图书价格、借出日期、归还日期、罚款金额、其他金额、总计金额、操作员。
归还信息表(returnInfo)具体设计如表3-8所示。
表3-8归还信息表(returnInfo)的结构
名称
字段名称
类型
主键
非空
记录号
ID
自动编号
Yes
Yes
读者编号
reader_code
文本
No
Yes
读者姓名
reader_name
文本
No
Yes
图书编号
book_code
文本
No
Yes
图书名称
book_name
文本
No
Yes
图书类别
book_type
文本
No
No
图书价格
price
文本
No
No
借出日期
borrow_date
日期/时间
No
Yes
归还日期
return_date
日期/时间
No
Yes
罚款金额
punish
文本
No
No
其他金额
other
文本
No
No
总计金额
total
文本
No
No
操作员
operator
文本
No
Yes
第4章功能模块详细设计
1.基本界面
创建一个基于单文档的MFC应用程序,建立系统主体框架,生成应用程序类、文档类、视图类等;在菜单项中添加相应的子菜单项;在工具栏中选择必要的控件置于菜单栏,在相应的视图类中添加消息处理函数;按功能模块的划分,使用资源编辑器创建系统菜单;在视图类的Paint事件处理函数OnPaint()中添加代码,实现加载背景图片的功能。
基本界面设计如下图4-1所示。
图4-1基本界面
2.登录界面
即为权限验证模块,主要是根据用户输入的用户名和密码验证用户身份并决定其操作权限,而且会对用户的输入情况给出相应的提示信息。
在添加过相应的“用户名”、“密码”、“登录”、“退出”等功能键的基本控件后,在类视图中添加相应的消息处理函数;在视图类的Paint事件处理函数OnPaint()中添加代码,实现加载背景图片使登陆界面更加美观。
登陆界面如图4-2所示。
图4-2登陆界面
登录界面的实现核心代码如下:
CUserSetrecordset;
m_ctrUser.SetFocus();//用户身份分配权限设置
m_ctrPass.SetFocus();
CLibraryApp*ptheApp=(CLibraryApp*)AfxGetApp();
CArchivear(&file,CArchive:
:
store);//密码设置
在用户登录时,如果密码错误时,系统会给出提示“密码错误,请重新输入!
”,同时系统内部会进行信息初始化,供用户进行重新输入操作。
密码验证界面如图4-3所示。
图4-3错误提示
完成初始化工作,从数据表中提取用户名列表中的数据,以便用户选择并登录
CDialog:
:
OnInitDialog();
CUserSetrecordset;
m_ctrUser.AddString(recordset.m_user);
recordset.MoveNext();//用户信息初始化
3.用户管理模块
提供添加新用户、删除指定用户、修改用户的密码和权限的功能,该模块功能只限于具有系统管理员权限的用户使用。
模块结构:
包括添加新用户、修改用户口令、修改用户权限、删除用户。
用户管理界面设计如图4-4所示。
图4-4用户管理界面
用户管理模块实现的核心代码如下:
CUserSet:
:
CUserSet(CDatabase*pdb)
:
CRecordset(pdb)
{
m_user=_T("");
m_passwd=_T("");
m_isadmin=FALSE;
m_nFields=3;
m_nDefaultType=snapshot;
}//新增用户设置
CStringCUserSet:
:
GetDefaultConnect()
CStringCUserSet:
:
GetDefaultSQL()
voidCUserSet:
:
DoFieldExchange(CFieldExchange*pFX)
{
pFX->SetFieldType(CFieldExchange:
:
outputColumn);
RFX_Text(pFX,_T("[user]"),m_user);
RFX_Text(pFX,_T("[passwd]"),m_passwd);
RFX_Bool(pFX,_T("[isadmin]"),m_isadmin);
}
CRecordset:
:
AssertValid();
CRecordset:
:
Dump(dc);
4.基础数据设置模块
主要通过图书逾期罚款设置、图书类别设置和读者类别设置三个子模块分别来实现相应子基础数据的维护和管理。
模块结构:
罚款设置、图书类别设置、读者类别设置。
⑴罚款设置界面设计如下:
图4-5罚款设置界面
罚款设置核心代码如下:
voidCPunishTypeDlg:
:
OnOK()
{
UpdateData();
if(m_strMoney.IsEmpty())
{
AfxMessageBox("请输入罚款金额");
return;
}//检查金额输入
rs.Close();
CDialog:
:
OnOK();
}//罚款金额设置
⑵读者类型设置可根据读者类别设置可节约图书的数量,可以增加、修改和删除读者的类别设置、可借阅图书量。
读者类型设置界面如图4-6所示。
图4-6读者类型界面
读者类型模块实现核心代码如下:
CReaderTypeDlg:
:
OnInitDialog()//初始化读者类型对话框
m_ctrList.InsertColumn(0,"类别名称");
m_ctrList.SetColumnWidth(0,120);
m_ctrList.InsertColumn(1,"可借册数");
m_ctrList.SetColumnWidth(1,60);
m_ctrList.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
CReaderTypeDlg:
:
RefreshData()//刷新读者类型对话框的数据
m_ctrList.SetFocus();//清空列表
m_ctrList.DeleteAllItems();
m_ctrList.SetRedraw(FALSE);
UpdateData(TRUE);//打开记录集
m_ctrList.InsertItem(i,m_recordset.m_type);
itoa(m_recordset.m_number,buffer,10);
m_ctrList.SetItemText(i,1,buffer);
m_recordset.MoveNext();//添加记录
CReaderTypeDlg:
:
OnButtonNew()//添加新读者类型
m_recordset.AddNew();
m_recordset.m_type=dlg.m_strType;
m_recordset.m_number=dlg.m_nNumber;
m_recordset.Update();
m_recordset.Close();
CReaderTypeDlg:
:
OnButtonModify()//修改读者类别数据
m_recordset.Edit();
m_recordset.m_type=dlg.m_strType;
m_recordset.m_number=dlg.m_nNumber;
m_recordset.Update();
m_recordset.Close();
CReaderTypeDlg:
:
OnButtonDelete()//删除读者类别数据
m_recordset.Delete();
m_recordset.Close();
⑶图书类别设置主要包括图书类别名称和可借出天数,并且带有增加、修改、删除图书类别的功能。
图书类型设置功能界面如图4-7所示。
图4-7图书类别设置功能界面
CBookTypeDlg:
:
OnButtonNew()//新增图书类型
m_recordset.AddNew();
m_recordset.m_type=dlg.m_strType;
m_recordset.m_number=dlg.m_nNumber;
CBookTypeDlg:
:
OnButtonModify()//修改图书类型
m_recordset.Edit();
m_recordset.m_type=dlg.m_strType;
m_recordset.m_number=dlg.m_nNumber;
RefreshData();CBookTypeDlg:
:
OnButtonDelete()//删除图书类型
CBookTypeDlg:
:
OnInitDialog()//初始化对话框
m_ctrList.SetColumnWidth(0,120);
m_ctrList.SetColumnWidth(1,60);
CBookTypeDlg:
:
RefreshData()///刷新图书类型数据
m_ctrList.InsertItem(i,m_recordset.m_type);
itoa(m_recordset.m_number,buffer,10);
m_ctrList.SetItemText(i,1,buffer);
m_recordset.MoveNext();
5.借阅管理模块
该模块主要实现借书和还书的登记功能,同时提供借书记录和还书记录的查询和浏览功能。
模块结构:
借书、借书查询、还书、还书查询。
⑴借书设置界面如图4-8所示。
图4-8借书设置界面
借书设置实现的核心代码如下:
CBorrowDlg:
:
CBorrowDlg(CWnd*pParent/*=NULL*/)
:
CDialog(CBorrowDlg:
:
IDD,pParent)//借书对话框的构建
BEGIN_MESSAGE_MAP(CBorrowDlg,CDialog)
CBorrowDlg:
:
OnChangeEditReaderCode()//设置读者编号
m_nAlready=rs_BookInfoSet.GetRecordCount();
m_nLeft=m_nAllow-m_nAlready;
rs_BookInfoSet.Close();
m_bReaderEnable=TRUE;
CBorrowDlg:
:
OnChangeEditBookCode()//设置图书编号
m_strBookName=rs_book.m_name;
m_strBookType=rs_book.m_type;
m_strBookPrice=rs_book.m_price;
rs_book.Close();
m_nDays=rs_bookType.m_number;
rs_bookType.Close();
m_bBookEnable=TRUE;
CBorrowDlg:
:
OnOK()//借书对话框确定键函数
rs_book.Edit();
rs_book.m_isBorrow=TRUE;
rs_book.m_reader_code=m_strReaderCode;
rs_book.Update();
rs_book.Close();
m_recordset.AddNew();
m_recordset.m_book_code=m_strBookCode;
m_recordset.m_book_name=m_strBookName;
m_recordset.m_book_type=m_strBookType;
m_recordset.m_borrow_date=CTime:
:
GetCurrentTime();
m_recordset.m_operator=ptheApp->m_strOperator;
m_recordset.m_price=m_strBookPrice;
m_recordset.m_reader_code=m_strReaderCode;
m_recordset.m_reader_name=m_strReaderName;
m_recordset.m_return_date=CTime:
:
GetCurrentTime()+m_nDays*24*3600;
m_recordset.m_isReturn=FALSE;
m_recordset.Update();
m_recordset.Close();
m_strBookCode="";//更新界面显示
m_strBookName="";
m_strBookType="";
m_strBookPrice="";
m_nDays=0;
m_nAlready++;
m_nLeft--;
m_bBookEnable=FALSE;
UpdateData(FALSE);
RefreshData();
CBorrowDlg:
:
RefreshData()//刷新借书对话框数据
m_ctrList.InsertItem(i,m_recordset.m_book_code);
m_ctrList.SetItemText(i,1,m_recordset.m_book_name);
m_ctrList.SetItemText(i,2,m_recordset.m_price);
m_ctrList.SetItemText(i,3,m_recordset.m_book_type);
strTime.Format("%d-%d-%d",m_recordset.m_borrow_date.GetYear(),m_recordset.
m_borrow_date.GetMonth(),m_recordset.m_borrow_date.GetDay());
m_ctrList.SetItemText(i,5,strTime);
m_ctrList.SetItemText(i,6,m_recordset.m_operator);
i++;
m_recordset.MoveNext();
CBorr