vc图书馆管理系统实验报告Word文件下载.docx
《vc图书馆管理系统实验报告Word文件下载.docx》由会员分享,可在线阅读,更多相关《vc图书馆管理系统实验报告Word文件下载.docx(13页珍藏版)》请在冰豆网上搜索。
系统主要有四个数据库表:
图书信息表,用户信息表,学生信息表和借出信息表本课题研究方案1.以现代软件工程原理和思想指导整个课题的开发过程,要经过系统可行性分析、需求分析、概要设计、详细设计、编码、调试维护和安装实施等步骤。
2.要有详细的设计说明书;
3.每一模块的流程图要很清晰;
4.本系统能够正常的运行,能较好得完成预定的功能;
5.系统要有完整的帮助文件,供前台操作员能方便的操作本系统。
2设计方案简述
图书馆管理系统功能介绍
本系统主要实现对图书馆信息的管理,主要可以分为两大块:
图书信息的服务系统和图书的综合管理系统。
图书的使用对象是借阅者,例如学生,教师;
管理者是图书馆的管理员。
因此根据这些信息,本系统的主要功能就是:
实现图书馆图书信息的管理和维护,如用户信息管理,图书馆规则维护,新书入库,整理图书,修改图书信息和进行查询等;
以及服务系统的图书信息查询,图书的借出和归还等功能图书信息管理系统能够为用户提供充足的信息和快捷的查询手段。
例如:
检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。
这些优点能够极大地提高图书信息管理的效率,也是图书管理的科学化、数字化、正规化管理,与世界接轨的重要条件。
程序开发环境和基本开发软件
2.2.1VC++开发软件
对于小型应用软件的开发,VC++易操作,并且有强大的调试和纠错功能,对于经验不多的开发者来说,VC++应该是首先选择的工具。
这款软件主要基于MFC(MicrosoftFoundationClasses)卡发环境,MFC是以C++类的形式封装了Windows的API,并且包含一个应用程序框架,以减少应用程序开发人员的工作量。
其中包含的类包含大量Windows句柄封装类和很多Windows的内建控件和组件的封装类。
MFC中有大量的美观的使用控件,对于程序界面的设计十分方便。
2.2.2数据库开发软件
在这里采用了MicrosoftAcessODBC数据库,来实现对数据的存储与更新。
MicrosoftAcessODBC数据库具有操作简便,性能良好等特点,便于vc++编程初学者使用
2.2.3环境搭建
首先,构建数据库,在构建完成之后,进行配置MicrosoftAcessODBC数据库。
配置完成之后,新建单文档,导入数据源文件即可。
程序设计流程图
系统的功能模块划分
整个图书管理系统分为四个模块。
分别为图书管理模块、借阅管理模块、读者管理模块和系统管理模块。
3详细设计
数据库的建立及更新
3.1.1数据库的建立
用ACCESS2007建立名为“Library”的数据库,创建5个表,分别为:
BOOK,CLERK,READER,BORROW和FINE。
图3-1ACCESS数据表
图3-2ODBC数据源管理器配置
图3-3利用ODBC数据源管理器创建数据源
图3-4建立名为“Library”的MFC单文档应用程序向导
系统登录模块设计
图3-5添加系统登录对话框
图3-6属性设置
系统主界面设计
图3-12主界面
其中系统登录可以登录和退出系统,登录后可以查看图书资料、读者资料,进行图书馆里和读者管理;
图书资料中可以增加、修改、删除、查询图书信息;
读者资料中可以增加、修改、删除、查询读者信息;
借书管理中可以借阅相关图书;
还书管理可以归还借阅图书;
版权测试可以查看版本信息。
添加系统登陆对话框,属性设置为IDD_DIALOG_LOGIN,宋体,9号字体。
为IDD_DIALOG_LOGIN添加成员变量。
创建一个新类,名为CClerkDataSet,添加消息映射,最后输入按钮代码。
图书信息管理模块设计
图3-13图书信息界面
添加书籍信息对话框,属性设置为IDD_DIALOG_BOOK,宋体,9号字体,为IDD_DIALOG_BOOK添加成员变量。
创建一个新类,名为CBookDataSet,方法步骤同CClerkDataSet,添加消息映射,最后输入按钮代码。
读者信息管理模块设计
图3-14读者信息管理
添加读者信息对话框,属性设置为IDD_DIALOG_READER,宋体,9号,为IDD_DIALOG_READER添加成员变量。
建立新类CReaderDataSet,按上述步骤做相似操作,添加消息响应,最后输入按钮代码。
借书管理
添加借书查询对话框,属性设置为IDD_DIALOG_BORROW,宋体,9号,为IDD_DIALOG_BORROW添加成员变量,建立新类CBorrowDataSet,按上述步骤做相似操作,添加消息映射,最后输入代码
还书管理
添加图书归还对话框,属性设置为IDD_DIALOG_RETURN,微软雅黑,10号,为IDD_DIALOG_RETURN添加成员变量,建立新类CReturnDataSet,按上述步骤做相似操作,添加消息映射,最后输入代码。
版权测试
版权测试对话框,属性设置为IDD_ABOUTBOX
4设计结果及分析
测试
对功能进行逐一测试,在输入合理及不合理的数据后测试系统的正常运作情况
测试1:
系统登录测试
测试2:
图书资料测试
测试3:
读者资料测试
测试4:
借书管理测试
测试5:
还书测试
测试6:
测试结果
4.2.1登录测试
密码正确输入后显示如下界面:
密码输入错误时,显示如下界面:
增加图书:
增加读者资料:
还书管理测试
5.总结
小结
在这次的课程设计中,让我学到了很多在课堂上和书本上学不到的知识,我在这次课程设计中最大的收获有以下几方面:
领略到了数据库设计在计算机领域的重要性。
数据库作为一个永久存储形式在应用中发挥着重要的作用。
在数据库设计中,我明白了数据库设计不是范式越高越好的,我们要根据我们的应用来决定,一切应该以需求为首要选择。
对编程环境、一些控件的使用和界面的设计更加熟悉。
因为《图书管理系统》中设计到很多控件的使用,只有很好的使用这些控件才可以给出一个很好的界面呈现在用户面前。
这样更有利于数据库和用户之间的交流。
利用软件工程学开发系统。
虽然这个《图书管理系统》是一个小的系统,但从这个小的项目中也让我明白了数据库作为任何一个系统的后台的重要性,在开发系统设计和实现中学到和总结很多经验和教训。
主要程序代码
1,登录代码
m_bCanBorrow=TRUE;
();
}
}
();
if(!
m_bCanBorrow)
{
AfxMessageBox("
读者不能借书!
"
);
return;
mSqlStr="
SELECT*FROMBOOKWHEREBOOK_ID='
+m_strBookID;
mSqlStr=mSqlStr+"
'
;
(AFX_DB_USE_DEFAULT_TYPE,mSqlStr))
数据表打开错误!
())
if=="
Y"
)
{
m_bCanLendOut=TRUE;
else
AfxMessageBox("
此书不外借!
return;
else
无此书!
();
CStringm_strUserID;
m_strUserID=;
COleDateTimem_CurrentTime=COleDateTime:
:
GetCurrentTime();
CStringstrTime;
inty=();
intm=();
intd=();
("
%d-%d-%d"
y,m,d);
INSERTINTOBORROW(READER_ID,BOOK_ID,BORROW_DATE,B_CLERK_ID)VALUES('
mSqlStr=mSqlStr+m_strReaderID;
'
mSqlStr=mSqlStr+m_strBookID;
mSqlStr=mSqlStr+strTime;
mSqlStr=mSqlStr+m_strUserID;
)"
CDatabasemDB;
(_T("
Library"
)))
无法打开数据库!
try
(mSqlStr);
catch(CDBExceptione)
执行错!
AfxMessageBox("
操作成功!
}
voidCBorrowDlg:
OnCancel()
{
ormat("
%Y,%B%d"
)+"
(m_strsql);
数据库执行出错"
return0;
return1;
intCReturnDlg:
SetTxtNull()
{
CWnd*pWnd;
m_Book_ID="
m_BorrowDate="
m_Days=0;
m_ReaderName="
m_ReturnDate="
UpdateData(false);
pWnd=GetDlgItem(IDC_BOOK_ID);
setTxtDisable()
pWnd=GetDlgItem(IDC_READERNAME);
pWnd->
EnableWindow(false);
pWnd=GetDlgItem(IDC_BORROWDATE);
pWnd=GetDlgItem(IDC_RETURNDATE);
pWnd=GetDlgItem(IDC_DAYS);
BOOLCReturnDlg:
OnInitDialog()
CDialog:
OnInitDialog();
returntrue;
voidCReturnDlg:
OnConfirm()
intrs;
CStringm_strtmp;
rs=QryBorrow();
if(rs==1)
("
超期%d天,确认还书?
m_Days);
if(:
MessageBox(this->
m_hWnd,m_strtmp,"
提示"
MB_YESNO)==IDYES)
Insert_History();
Delete_Borrow();
SetTxtNull();
elseif(rs==2)
m_hWnd,"
确认还书?
"
elseif(rs==0)
if(m_Book_ID=="
:
该书号信息不存在!
警告"
MB_OK);
//TODO:
Addyourcontrolnotificationhandlercodehere
SetFocus();
Delete_Borrow()
CDatabasemdb;
CStringm_strsql;
library"
DELETEFROMBORROWWHEREBOOK_ID='
%s'
m_Book_ID);
/*m_strsql="
DELETEFROMBORROWWHEREBOOK_ID="
m_strsql+="
m_strsql+=m_Book_ID;
*/
PreTranslateMessage(MSG*pMsg)
Addyourspecializedcodehereand/orcallthebaseclass
if(pMsg->
message==WM_KEYDOWN)
if(pMsg->
wParam==VK_RETURN)
QryBorrow();
returnTRUE;
returnCDialog:
PreTranslateMessage(pMsg);