最新vc++图书馆管理系统实验报告.doc

上传人:1595****071 文档编号:47527157 上传时间:2022-10-02 格式:DOC 页数:187 大小:2.15MB
返回 下载 相关 举报
最新vc++图书馆管理系统实验报告.doc_第1页
第1页 / 共187页
最新vc++图书馆管理系统实验报告.doc_第2页
第2页 / 共187页
点击查看更多>>
资源描述

《最新vc++图书馆管理系统实验报告.doc》由会员分享,可在线阅读,更多相关《最新vc++图书馆管理系统实验报告.doc(187页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-datevc+图书馆管理系统实验报告vc+图书馆管理系统实验报告长安大学VC+图书馆管理系统设计课 程 名 称: Visual C+教程 题 目: 图书馆管理系统 专 业 班 级: 自动化4班 姓 名: 褚惠芬,姜毅佳 学 号: 201132010404, 201132010423 1 绪论1.1需求背景随着科学技术的不断提高,计算机科学日渐成熟, 作为计算机应用的一部分,使

2、用计算机对图书信息进行管理,具有手工管理所无法比拟的优点。图书管理系统的开发是一个老生常谈的问题,以其作为数据库开发的示例不仅是因为它的开放性,而且还因为它是一个开放的系统,比较成熟。用计算机制作的图书信息管理系统还可以通过功能强大的Internet网及时的向读者发布图书的最新动态,因此,开发这样一套管理软件成为很有必要的事情。而今,这类相关的管理系统已广泛的应用在各行各业,成为各行业提高相关管理效率的重要手段。图书信息管理系统也在日益广泛地应用于各图书馆的管理中,大大提高了图书管理的相关管理效率,其在图书管理中所起的作用是显而易见的。1.1.1开发目标本次课题为图书信息管理系统,其主要包含图

3、书基本信息和图书借阅系统,能进行图书信息的录入、读者登记、查询等功能。该软件为学校图书信息管理系统软件,是鉴于目前学校图书数剧增,图书信息呈爆炸性增长的前提下,图书馆对图书信息管理的自动化与准确化的要求日益强烈的背景下构思出来的,该软件设计完成后可用于所有中小型图书馆的图书信息的管理。1.1.2开发意义目前社会上信息管理系统发展飞快,各个企事业单位都引入了信息管理软件来管理自己日益增长的各种信息,图书管理系统也是有了很大的发展,商业化的图书信息管理软件也不少,但本系统完全独立开发,力求使系统功能简洁明了,但功能齐全且易于操作。1.1.3主要工作内容本课题研究内容本次毕业设计通过对管理系统模型的

4、研究,提出了一套构造图书信息管理系统模型的方法,提出了图书管理系统的一般建立方法,并且利用数据库、信息系统分析所学知识,结合其它相关管理常识,通过对某图书馆图书流通过程的分析,建立相关数据模型,利用面向对象开发工具对其进行设计与开发。系统主要由两大子系统组成:图书管理和维护子系统以及图书信息服务子系统。系统主要有四个数据库表:图书信息表,用户信息表,学生信息表和借出信息表本课题研究方案1. 以现代软件工程原理和思想指导整个课题的开发过程,要经过系统可行性分析、需求分析、概要设计、详细设计、编码、调试维护和安装实施等步骤。2要有详细的设计说明书; 3每一模块的流程图要很清晰;4本系统能够正常的运

5、行,能较好得完成预定的功能;5系统要有完整的帮助文件,供前台操作员能方便的操作本系统。2 设计方案简述2.1 图书馆管理系统功能介绍本系统主要实现对图书馆信息的管理,主要可以分为两大块:图书信息的服务系统和图书的综合管理系统。图书的使用对象是借阅者,例如学生,教师;管理者是图书馆的管理员。因此根据这些信息,本系统的主要功能就是:实现图书馆图书信息的管理和维护,如用户信息管理,图书馆规则维护,新书入库,整理图书,修改图书信息和进行查询等;以及服务系统的图书信息查询,图书的借出和归还等功能图书信息管理系统能够为用户提供充足的信息和快捷的查询手段。例如:检索迅速、查找方便、可靠性高、存储量大、保密性

6、好、寿命长、成本低等。这些优点能够极大地提高图书信息管理的效率,也是图书管理的科学化、数字化、正规化管理,与世界接轨的重要条件。2.2程序开发环境和基本开发软件2.2.1 VC+开发软件对于小型应用软件的开发,VC+ 6.0易操作,并且有强大的调试和纠错功能,对于经验不多的开发者来说,VC+ 6.0 应该是首先选择的工具。这款软件主要基于MFC(Microsoft Foundation Classes)卡发环境,MFC是以C+类的形式封装了Windows的API,并且包含一个应用程序框架,以减少应用程序开发人员的工作量。其中包含的类包含大量Windows句柄封装类和很多Windows的内建控件

7、和组件的封装类。MFC中有大量的美观的使用控件,对于程序界面的设计十分方便。2.2.2 数据库开发软件在这里采用了Microsoft Acess ODBC数据库,来实现对数据的存储与更新。Microsoft Acess ODBC数据库具有操作简便,性能良好等特点,便于vc+编程初学者使用2.2.3环境搭建 首先,构建数据库,在构建完成之后,进行配置Microsoft Acess ODBC数据库。配置完成之后,新建单文档,导入数据源文件即可。2.3 程序设计流程图表BOOK2.4系统的功能模块划分整个图书管理系统分为四个模块。分别为图书管理模块、借阅管理模块、读者管理模块和系统管理模块。表BOO

8、K书籍信息修改书籍查询新书入库图书资料表BORROW表FINE表READER读者信息修改读者信息查询增加读者读者资料还书管理借书管理借阅管理是否正确?输入用户名和密码用户登录图书馆管理系统3详细设计3.1 数据库的建立及更新3.1.1数据库的建立用ACCESS2007建立名为“Library”的数据库,创建5个表,分别为:BOOK,CLERK,READER,BORROW和FINE。 图3-1ACCESS数据表 图3-2 ODBC数据源管理器配置图3-3利用ODBC数据源管理器创建数据源图3-4建立名为“Library”的MFC单文档应用程序向导3.2系统登录模块设计图3-5添加系统登录对话框图

9、3-6属性设置3.3系统主界面设计图3-12主界面其中系统登录可以登录和退出系统,登录后可以查看图书资料、读者资料,进行图书馆里和读者管理;图书资料中可以增加、修改、删除、查询图书信息;读者资料中可以增加、修改、删除、查询读者信息;借书管理中可以借阅相关图书;还书管理可以归还借阅图书;版权测试可以查看版本信息。添加系统登陆对话框,属性设置为IDD_DIALOG_LOGIN,宋体,9号字体。为IDD_DIALOG_LOGIN添加成员变量。创建一个新类,名为CClerkDataSet,添加消息映射,最后输入按钮代码。3.4图书信息管理模块设计图3-13图书信息界面添加书籍信息对话框,属性设置为ID

10、D_DIALOG_BOOK,宋体,9号字体,为IDD_DIALOG_BOOK添加成员变量。创建一个新类,名为CBookDataSet,方法步骤同CClerkDataSet,添加消息映射,最后输入按钮代码。3.5读者信息管理模块设计图3-14 读者信息管理添加读者信息对话框,属性设置为IDD_DIALOG_READER,宋体,9号,为IDD_DIALOG_READER添加成员变量。建立新类CReaderDataSet,按上述步骤做相似操作,添加消息响应,最后输入按钮代码。3.6借书管理添加借书查询对话框,属性设置为IDD_DIALOG_BORROW,宋体,9号,为IDD_DIALOG_BORRO

11、W添加成员变量,建立新类CBorrowDataSet,按上述步骤做相似操作,添加消息映射,最后输入代码3.7还书管理添加图书归还对话框,属性设置为IDD_DIALOG_RETURN,微软雅黑,10号,为IDD_DIALOG_RETURN添加成员变量,建立新类CReturnDataSet,按上述步骤做相似操作,添加消息映射,最后输入代码。3.8版权测试版权测试对话框,属性设置为IDD_ABOUTBOX4 设计结果及分析4.1测试对功能进行逐一测试,在输入合理及不合理的数据后测试系统的正常运作情况测试1:系统登录测试测试2:图书资料测试测试3:读者资料测试测试4:借书管理测试测试5:还书测试测试6

12、:版权测试4.2测试结果4.2.1登录测试密码正确输入后显示如下界面:密码输入错误时,显示如下界面:4.2.2图书资料测试增加图书:4.2.3读者资料测试增加读者资料:4.2.4借书管理测试4.2.5还书管理测试4.2.6版权测试5总结5.1 小结在这次的课程设计中,让我学到了很多在课堂上和书本上学不到的知识,我在这次课程设计中最大的收获有以下几方面:领略到了数据库设计在计算机领域的重要性。数据库作为一个永久存储形式在应用中发挥着重要的作用。在数据库设计中,我明白了数据库设计不是范式越高越好的,我们要根据我们的应用来决定,一切应该以需求为首要选择。对编程环境、一些控件的使用和界面的设计更加熟悉

13、。因为图书管理系统中设计到很多控件的使用,只有很好的使用这些控件才可以给出一个很好的界面呈现在用户面前。这样更有利于数据库和用户之间的交流。利用软件工程学开发系统。虽然这个图书管理系统是一个小的系统,但从这个小的项目中也让我明白了数据库作为任何一个系统的后台的重要性,在开发系统设计和实现中学到和总结很多经验和教训。主要程序代码1, 登录代码/ CLoginDlg dialogCLoginDlg:CLoginDlg(CWnd* pParent /*=NULL*/): CDialog(CLoginDlg:IDD, pParent)/AFX_DATA_INIT(CLoginDlg)m_strName

14、 = _T();m_strPassword = _T();/AFX_DATA_INITvoid CLoginDlg:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);/AFX_DATA_MAP(CLoginDlg)DDX_Text(pDX, IDC_LOGIN_NAME, m_strName);DDV_MaxChars(pDX, m_strName, 8);DDX_Text(pDX, IDC_LOGIN_PASSWORD, m_strPassword);DDV_MaxChars(pDX, m_strPassword, 8

15、);/AFX_DATA_MAPBEGIN_MESSAGE_MAP(CLoginDlg, CDialog)/AFX_MSG_MAP(CLoginDlg)ON_BN_CLICKED(IDC_CONFIRM, OnConfirm)ON_BN_CLICKED(IDC_CANCEL, OnCancel)/AFX_MSG_MAPEND_MESSAGE_MAP()/ CLoginDlg message handlersvoid CLoginDlg:OnConfirm() / TODO: Add your control notification handler code hereCClerkDataSet

16、mrsDataSet; /*声明记录集*/CString mSqlStr;UpdateData(TRUE);if (m_strName.IsEmpty() /*判断用户名信息是否为空*/AfxMessageBox(请输入用户名!);return;mSqlStr.Format(SELECT * FROM CLERK WHERE NAME=%s AND PASSWORD=%s,m_strName,m_strPassword);/*mSqlStr = SELECT * FROM CLERK WHERE NAME=;mSqlStr = mSqlStr + m_strName;mSqlStr = mSq

17、lStr + AND PASSWORD=;mSqlStr = mSqlStr + m_strPassword;mSqlStr = mSqlStr + ; */if (!mrsDataSet.Open(AFX_DB_USE_DEFAULT_TYPE, mSqlStr)AfxMessageBox(CLERK表打开失败!);return;if (!mrsDataSet.IsEOF()/ Open all function for userCDialog:OnOK();elseAfxMessageBox(登录失败!);return;void CLoginDlg:OnCancel() / TODO: A

18、dd your control notification handler code hereCDialog:OnCancel();2, 图书信息代码/ CBookDlg dialogCBookDlg:CBookDlg(CWnd* pParent /*=NULL*/): CDialog(CBookDlg:IDD, pParent)/AFX_DATA_INIT(CBookDlg)m_strAuthor = _T();m_strBookID = _T();m_strBookIDQ = _T();m_strBookName = _T();m_strBookNameQ = _T();m_strFlag

19、= _T();m_strPress = _T();m_strPressDate = _T();/AFX_DATA_INITvoid CBookDlg:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);/AFX_DATA_MAP(CBookDlg)DDX_Text(pDX, IDC_AUTHOR, m_strAuthor);DDX_Text(pDX, IDC_BOOKID, m_strBookID);DDX_Text(pDX, IDC_BOOKID_Q, m_strBookIDQ);DDX_Text(pDX, IDC_BO

20、OKNAME, m_strBookName);DDX_Text(pDX, IDC_BOOKNAME_Q, m_strBookNameQ);DDX_Text(pDX, IDC_FLAG_BORROW, m_strFlag);DDV_MaxChars(pDX, m_strFlag, 1);DDX_Text(pDX, IDC_PRESS, m_strPress);DDV_MaxChars(pDX, m_strPress, 20);DDX_Text(pDX, IDC_PRESSDATE, m_strPressDate);DDV_MaxChars(pDX, m_strPressDate, 10);/AF

21、X_DATA_MAPBEGIN_MESSAGE_MAP(CBookDlg, CDialog)/AFX_MSG_MAP(CBookDlg)ON_BN_CLICKED(IDC_CANCEL_REC, OnCancelRec)ON_BN_CLICKED(IDC_DELETE, OnDelete)ON_BN_CLICKED(IDC_EDIT, OnEdit)ON_BN_CLICKED(IDC_ENQUERY, OnEnquery)ON_BN_CLICKED(IDC_EXIT, OnExit)ON_BN_CLICKED(IDC_FIRST, OnFirst)ON_BN_CLICKED(IDC_LAST,

22、 OnLast)ON_BN_CLICKED(IDC_NEW, OnNew)ON_BN_CLICKED(IDC_NEXT, OnNext)ON_BN_CLICKED(IDC_PRIOR, OnPrior)ON_BN_CLICKED(IDC_SAVE, OnSave)/ NOTE: the ClassWizard will add message map macros here/AFX_MSG_MAPEND_MESSAGE_MAP()/ CBookDlg message handlersvoid CBookDlg:OnCancelRec() / TODO: Add your control not

23、ification handler code herem_bAdd = FALSE;m_bEdit = FALSE;DisplayRecord();SetButtonState();SetTextState();void CBookDlg:OnDelete() / TODO: Add your control notification handler code herem_rsDataSet.Delete();DisplayRecord();SetButtonState();void CBookDlg:OnEdit() / TODO: Add your control notification

24、 handler code herem_bEdit = TRUE;SetButtonState();SetTextState();CWnd *pWnd;pWnd = GetDlgItem(IDC_BOOKNAME);pWnd-SetFocus();void CBookDlg:OnEnquery() / TODO: Add your control notification handler code hereUpdateData(TRUE);if (m_strBookIDQ.IsEmpty() & m_strBookNameQ.IsEmpty()m_rsDataSet.m_strFilter =

25、 ;m_rsDataSet.Requery();DisplayRecord();SetButtonState();return;BOOL mAll = FALSE;if (!m_strBookIDQ.IsEmpty()m_rsDataSet.m_strFilter = BOOK_ID= + m_strBookIDQ ;m_rsDataSet.m_strFilter = m_rsDataSet.m_strFilter + ;mAll = TRUE;if (!m_strBookNameQ.IsEmpty()if (mAll)m_rsDataSet.m_strFilter = m_rsDataSet

26、.m_strFilter + AND BOOK_NAME=;m_rsDataSet.m_strFilter = m_rsDataSet.m_strFilter + m_strBookNameQ;m_rsDataSet.m_strFilter = m_rsDataSet.m_strFilter + ;elsem_rsDataSet.m_strFilter = BOOK_NAME= + m_strBookNameQ;m_rsDataSet.m_strFilter = m_rsDataSet.m_strFilter + ;m_rsDataSet.Requery();DisplayRecord();S

27、etButtonState();void CBookDlg:OnExit() / TODO: Add your control notification handler code hereCDialog:OnCancel();void CBookDlg:OnFirst() / TODO: Add your control notification handler code hereif(!m_rsDataSet.IsBOF()m_rsDataSet.MoveFirst();DisplayRecord();SetButtonState();void CBookDlg:OnLast() / TOD

28、O: Add your control notification handler code hereif(!m_rsDataSet.IsEOF()m_rsDataSet.MoveLast();DisplayRecord();SetButtonState();void CBookDlg:OnNew() / TODO: Add your control notification handler code herem_strBookID = ;m_strBookName = ;m_strAuthor = ;m_strPress = ;m_strFlag = Y;UpdateData(FALSE);m

29、_bEdit = TRUE;m_bAdd = TRUE;SetButtonState();SetTextState();CWnd *pWnd;pWnd = GetDlgItem(IDC_BOOKID);pWnd-SetFocus();void CBookDlg:OnNext() / TODO: Add your control notification handler code hereif(!m_rsDataSet.IsEOF()m_rsDataSet.MoveNext();DisplayRecord();SetButtonState();void CBookDlg:OnPrior() /

30、TODO: Add your control notification handler code hereif(!m_rsDataSet.IsBOF()m_rsDataSet.MovePrev();DisplayRecord();SetButtonState();void CBookDlg:OnSave() / TODO: Add your control notification handler code hereUpdateData(TRUE);if (m_strBookID.IsEmpty() | m_strBookName.IsEmpty()AfxMessageBox(请输入相应数据!

31、);return;if (m_bAdd)m_rsDataSet.AddNew();elsem_rsDataSet.Edit();m_rsDataSet.m_AUTHOR = m_strAuthor;m_rsDataSet.m_BOOK_NAME = m_strBookName;m_rsDataSet.m_BOOK_ID = m_strBookID;m_rsDataSet.m_PRESS = m_strPress;m_rsDataSet.m_FLAG_BORROW = m_strFlag;m_rsDataSet.m_PRESS_DATE=m_strPressDate;m_rsDataSet.Up

32、date();m_rsDataSet.Requery();m_bAdd = FALSE;m_bEdit = FALSE;DisplayRecord();SetButtonState();SetTextState();BOOL CBookDlg:DisplayRecord()if (m_rsDataSet.IsEOF() & m_rsDataSet.IsBOF()m_strBookID = ;m_strBookName = ;m_strPress = ;m_strAuthor = ;m_strFlag = ;m_strPressDate=;elseif (m_rsDataSet.IsBOF()m

33、_rsDataSet.MoveNext();elseif (m_rsDataSet.IsEOF()m_rsDataSet.MovePrev();m_strBookID = m_rsDataSet.m_BOOK_ID;m_strBookName = m_rsDataSet.m_BOOK_NAME;m_strPress = m_rsDataSet.m_PRESS;m_strAuthor = m_rsDataSet.m_AUTHOR ;m_strFlag = m_rsDataSet.m_FLAG_BORROW ;m_strPressDate=m_rsDataSet.m_PRESS_DATE;Upda

34、teData(FALSE);return TRUE;BOOL CBookDlg:SetTextState()CWnd *pWnd;if (m_bEdit)pWnd = GetDlgItem(IDC_BOOKNAME);pWnd-EnableWindow(TRUE);pWnd = GetDlgItem(IDC_BOOKID);if (m_bAdd)pWnd-EnableWindow(TRUE);elsepWnd-EnableWindow(FALSE);pWnd = GetDlgItem(IDC_AUTHOR);pWnd-EnableWindow(TRUE);pWnd = GetDlgItem(I

35、DC_PRESS);pWnd-EnableWindow(TRUE);pWnd = GetDlgItem(IDC_PRESSDATE);pWnd-EnableWindow(TRUE);pWnd = GetDlgItem(IDC_FLAG_BORROW);pWnd-EnableWindow(TRUE);elsepWnd = GetDlgItem(IDC_BOOKNAME);pWnd-EnableWindow(FALSE);pWnd = GetDlgItem(IDC_BOOKID);pWnd-EnableWindow(FALSE);pWnd = GetDlgItem(IDC_AUTHOR);pWnd

36、-EnableWindow(FALSE);pWnd = GetDlgItem(IDC_PRESS);pWnd-EnableWindow(FALSE);pWnd = GetDlgItem(IDC_PRESSDATE);pWnd-EnableWindow(FALSE);pWnd = GetDlgItem(IDC_FLAG_BORROW);pWnd-EnableWindow(FALSE);pWnd = GetDlgItem(IDC_BOOKNAME_Q);pWnd-EnableWindow(TRUE);pWnd = GetDlgItem(IDC_BOOKID_Q);pWnd-EnableWindow

37、(TRUE);return TRUE;BOOL CBookDlg:SetButtonState()CWnd *pWnd;if(!m_rsDataSet.IsOpen()pWnd = GetDlgItem(IDC_FIRST);pWnd-EnableWindow(FALSE);pWnd = GetDlgItem(IDC_NEXT);pWnd-EnableWindow(FALSE);pWnd = GetDlgItem(IDC_PRIOR);pWnd-EnableWindow(FALSE);pWnd = GetDlgItem(IDC_LAST);pWnd-EnableWindow(FALSE);pW

38、nd = GetDlgItem(IDC_NEW);pWnd-EnableWindow(FALSE);pWnd = GetDlgItem(IDC_EDIT);pWnd-EnableWindow(FALSE);pWnd = GetDlgItem(IDC_ENQUERY);pWnd-EnableWindow(FALSE);pWnd = GetDlgItem(IDC_DELETE);pWnd-EnableWindow(FALSE);pWnd = GetDlgItem(IDC_SAVE);pWnd-EnableWindow(FALSE);pWnd = GetDlgItem(IDC_CANCEL_REC)

39、;pWnd-EnableWindow(FALSE);return TRUE;if (m_bEdit)pWnd = GetDlgItem(IDC_FIRST);pWnd-EnableWindow(FALSE);pWnd = GetDlgItem(IDC_NEXT);pWnd-EnableWindow(FALSE);pWnd = GetDlgItem(IDC_PRIOR);pWnd-EnableWindow(FALSE);pWnd = GetDlgItem(IDC_LAST);pWnd-EnableWindow(FALSE);pWnd = GetDlgItem(IDC_NEW);pWnd-Enab

40、leWindow(FALSE);pWnd = GetDlgItem(IDC_EDIT);pWnd-EnableWindow(FALSE);pWnd = GetDlgItem(IDC_ENQUERY);pWnd-EnableWindow(FALSE);pWnd = GetDlgItem(IDC_DELETE);pWnd-EnableWindow(FALSE);pWnd = GetDlgItem(IDC_SAVE);pWnd-EnableWindow(TRUE);pWnd = GetDlgItem(IDC_CANCEL_REC);pWnd-EnableWindow(TRUE);return TRU

41、E;if (m_rsDataSet.IsBOF()pWnd = GetDlgItem(IDC_FIRST);pWnd-EnableWindow(FALSE);pWnd = GetDlgItem(IDC_PRIOR);pWnd-EnableWindow(FALSE);elsepWnd = GetDlgItem(IDC_FIRST);pWnd-EnableWindow(TRUE);pWnd = GetDlgItem(IDC_PRIOR);pWnd-EnableWindow(TRUE);if (m_rsDataSet.IsEOF()pWnd = GetDlgItem(IDC_NEXT);pWnd-EnableWindow(FALSE);pWnd = GetDlgItem(IDC_LAST);pWnd-EnableWindow(FALSE);elsepWnd = GetDlgItem(IDC_NEXT);pWnd-EnableWindow(TRUE

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁