vc++图书馆管理系统实验报告_第1页
vc++图书馆管理系统实验报告_第2页
vc++图书馆管理系统实验报告_第3页
vc++图书馆管理系统实验报告_第4页
vc++图书馆管理系统实验报告_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

长安大学VC+图书馆管理系统设计课 程 名 称: Visual C+教程 题 目: 图书馆管理系统 专 业 班 级: 自动化4班 姓 名: 褚惠芬,姜毅佳 学 号: 4, 3 1 绪论1.1需求背景随着科学技术的不断提高,计算机科学日渐成熟, 作为计算机应用的一部分,使用计算机对图书信息进行管理,具有手工管理所无法比拟的优点。图书管理系统的开发是一个老生常谈的问题,以其作为数据库开发的示例不仅是因为它的开放性,而且还因为它是一个开放的系统,比较成熟。用计算机制作的图书信息管理系统还可以通过功能强大的Internet网及时的向读者发布图书的最新动态,因此,开发这样一套管理软件成为很有必要的事情。而今,这类相关的管理系统已广泛的应用在各行各业,成为各行业提高相关管理效率的重要手段。图书信息管理系统也在日益广泛地应用于各图书馆的管理中,大大提高了图书管理的相关管理效率,其在图书管理中所起的作用是显而易见的。1.1.1开发目标本次课题为图书信息管理系统,其主要包含图书基本信息和图书借阅系统,能进行图书信息的录入、读者登记、查询等功能。该软件为学校图书信息管理系统软件,是鉴于目前学校图书数剧增,图书信息呈爆炸性增长的前提下,图书馆对图书信息管理的自动化与准确化的要求日益强烈的背景下构思出来的,该软件设计完成后可用于所有中小型图书馆的图书信息的管理。1.1.2开发意义目前社会上信息管理系统发展飞快,各个企事业单位都引入了信息管理软件来管理自己日益增长的各种信息,图书管理系统也是有了很大的发展,商业化的图书信息管理软件也不少,但本系统完全独立开发,力求使系统功能简洁明了,但功能齐全且易于操作。1.1.3主要工作内容本课题研究内容本次毕业设计通过对管理系统模型的研究,提出了一套构造图书信息管理系统模型的方法,提出了图书管理系统的一般建立方法,并且利用数据库、信息系统分析所学知识,结合其它相关管理常识,通过对某图书馆图书流通过程的分析,建立相关数据模型,利用面向对象开发工具对其进行设计与开发。系统主要由两大子系统组成:图书管理和维护子系统以及图书信息服务子系统。系统主要有四个数据库表:图书信息表,用户信息表,学生信息表和借出信息表本课题研究方案1. 以现代软件工程原理和思想指导整个课题的开发过程,要经过系统可行性分析、需求分析、概要设计、详细设计、编码、调试维护和安装实施等步骤。2要有详细的设计说明书; 3每一模块的流程图要很清晰;4本系统能够正常的运行,能较好得完成预定的功能;5系统要有完整的帮助文件,供前台操作员能方便的操作本系统。2 设计方案简述2.1 图书馆管理系统功能介绍本系统主要实现对图书馆信息的管理,主要可以分为两大块:图书信息的服务系统和图书的综合管理系统。图书的使用对象是借阅者,例如学生,教师;管理者是图书馆的管理员。因此根据这些信息,本系统的主要功能就是:实现图书馆图书信息的管理和维护,如用户信息管理,图书馆规则维护,新书入库,整理图书,修改图书信息和进行查询等;以及服务系统的图书信息查询,图书的借出和归还等功能图书信息管理系统能够为用户提供充足的信息和快捷的查询手段。例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高图书信息管理的效率,也是图书管理的科学化、数字化、正规化管理,与世界接轨的重要条件。2.2程序开发环境和基本开发软件2.2.1 VC+开发软件对于小型应用软件的开发,VC+ 6.0易操作,并且有强大的调试和纠错功能,对于经验不多的开发者来说,VC+ 6.0 应该是首先选择的工具。这款软件主要基于MFC(Microsoft Foundation Classes)卡发环境,MFC是以C+类的形式封装了Windows的API,并且包含一个应用程序框架,以减少应用程序开发人员的工作量。其中包含的类包含大量Windows句柄封装类和很多Windows的内建控件和组件的封装类。MFC中有大量的美观的使用控件,对于程序界面的设计十分方便。2.2.2 数据库开发软件在这里采用了Microsoft Acess ODBC数据库,来实现对数据的存储与更新。Microsoft Acess ODBC数据库具有操作简便,性能良好等特点,便于vc+编程初学者使用2.2.3环境搭建 首先,构建数据库,在构建完成之后,进行配置Microsoft Acess ODBC数据库。配置完成之后,新建单文档,导入数据源文件即可。2.3 程序设计流程图表BOOK2.4系统的功能模块划分整个图书管理系统分为四个模块。分别为图书管理模块、借阅管理模块、读者管理模块和系统管理模块。表BOOK书籍信息修改书籍查询新书入库图书资料表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添加系统登录对话框图3-6属性设置3.3系统主界面设计图3-12主界面其中系统登录可以登录和退出系统,登录后可以查看图书资料、读者资料,进行图书馆里和读者管理;图书资料中可以增加、修改、删除、查询图书信息;读者资料中可以增加、修改、删除、查询读者信息;借书管理中可以借阅相关图书;还书管理可以归还借阅图书;版权测试可以查看版本信息。添加系统登陆对话框,属性设置为IDD_DIALOG_LOGIN,宋体,9号字体。为IDD_DIALOG_LOGIN添加成员变量。创建一个新类,名为CClerkDataSet,添加消息映射,最后输入按钮代码。3.4图书信息管理模块设计图3-13图书信息界面添加书籍信息对话框,属性设置为IDD_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_BORROW添加成员变量,建立新类CBorrowDataSet,按上述步骤做相似操作,添加消息映射,最后输入代码3.7还书管理添加图书归还对话框,属性设置为IDD_DIALOG_RETURN,微软雅黑,10号,为IDD_DIALOG_RETURN添加成员变量,建立新类CReturnDataSet,按上述步骤做相似操作,添加消息映射,最后输入代码。3.8版权测试版权测试对话框,属性设置为IDD_ABOUTBOX4 设计结果及分析4.1测试对功能进行逐一测试,在输入合理及不合理的数据后测试系统的正常运作情况测试1:系统登录测试测试2:图书资料测试测试3:读者资料测试测试4:借书管理测试测试5:还书测试测试6:版权测试4.2测试结果4.2.1登录测试密码正确输入后显示如下界面:密码输入错误时,显示如下界面:4.2.2图书资料测试增加图书:4.2.3读者资料测试增加读者资料:4.2.4借书管理测试4.2.5还书管理测试4.2.6版权测试5总结5.1 小结在这次的课程设计中,让我学到了很多在课堂上和书本上学不到的知识,我在这次课程设计中最大的收获有以下几方面:领略到了数据库设计在计算机领域的重要性。数据库作为一个永久存储形式在应用中发挥着重要的作用。在数据库设计中,我明白了数据库设计不是范式越高越好的,我们要根据我们的应用来决定,一切应该以需求为首要选择。对编程环境、一些控件的使用和界面的设计更加熟悉。因为图书管理系统中设计到很多控件的使用,只有很好的使用这些控件才可以给出一个很好的界面呈现在用户面前。这样更有利于数据库和用户之间的交流。利用软件工程学开发系统。虽然这个图书管理系统是一个小的系统,但从这个小的项目中也让我明白了数据库作为任何一个系统的后台的重要性,在开发系统设计和实现中学到和总结很多经验和教训。主要程序代码1, 登录代码/ CLoginDlg dialogCLoginDlg:CLoginDlg(CWnd* pParent /*=NULL*/): CDialog(CLoginDlg:IDD, pParent)/AFX_DATA_INIT(CLoginDlg)m_strName = _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);/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 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 = mSqlStr + 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: Add 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 = _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_BOOKNAME, 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);/AFX_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, 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 notification 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 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 = ;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.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();SetButtonState();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() / TODO: 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_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() / 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(请输入相应数据!);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.Update();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_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;UpdateData(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(IDC_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-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(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);pWnd = 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);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-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(TRUE);pWnd = GetDlgItem(IDC_CANCEL_REC);pWnd-EnableWindow(TRUE);return TRUE;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);pWnd = GetDlgItem(IDC_LAST);pWnd-EnableWindow(TRUE);if (m_rsDataSet.IsBOF() & m_rsDataSet.IsEOF()pWnd = GetDlgItem(IDC_EDIT);pWnd-EnableWindow(FALSE);pWnd = GetDlgItem(IDC_DELETE);pWnd-EnableWindow(FALSE);elsepWnd = GetDlgItem(IDC_EDIT);pWnd-EnableWindow(TRUE);pWnd = GetDlgItem(IDC_DELETE);pWnd-EnableWindow(TRUE);pWnd = GetDlgItem(IDC_NEW);pWnd-EnableWindow(TRUE);pWnd = GetDlgItem(IDC_ENQUERY);pWnd-EnableWindow(TRUE);pWnd = GetDlgItem(IDC_SAVE);pWnd-EnableWindow(FALSE);pWnd = GetDlgItem(IDC_CANCEL_REC);pWnd-EnableWindow(FALSE);return TRUE;BOOL CBookDlg:OnInitDialog() CDialog:OnInitDialog();/ TODO: Add extra initialization herem_bAdd = FALSE;m_bEdit = FALSE;if (!m_rsDataSet.Open(AFX_DB_USE_DEFAULT_TYPE)AfxMessageBox(数据打开失败!);DisplayRecord();SetButtonState();SetTextState();return TRUE; / return TRUE unless you set the focus to a control / EXCEPTION: OCX Property Pages should return FALSE3, 读者信息管理代码/ CReaderDlg dialogCReaderDlg:CReaderDlg(CWnd* pParent /*=NULL*/): CDialog(CReaderDlg:IDD, pParent)/AFX_DATA_INIT(CReaderDlg)m_strReaderIDQ = _T();m_strReaderID = _T();m_strReaderName = _T();m_strReaderNameQ = _T();m_strIDCard = _T();/ NOTE: the ClassWizard will add member initialization here/AFX_DATA_INITvoid CReaderDlg:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);/AFX_DATA_MAP(CReaderDlg)DDX_Text(pDX, IDC_READERID_Q, m_strReaderIDQ);DDV_MaxChars(pDX, m_strReaderIDQ, 8);DDX_Text(pDX, IDC_READERID, m_strReaderID);DDV_MaxChars(pDX, m_strReaderID, 8);DDX_Text(pDX, IDC_READERNAME, m_strReaderName);DDV_MaxChars(pDX, m_strReaderName, 8);DDX_Text(pDX, IDC_READERNAME_Q, m_strReaderNameQ);DDV_MaxChars(pDX, m_strReaderNameQ, 8);DDX_Text(pDX, IDC_IDCARD, m_strIDCard);DDV_MaxChars(pDX, m_strIDCard, 18);/ NOTE: the ClassWizard will add DDX and DDV calls here/AFX_DATA_MAPBEGIN_MESSAGE_MAP(CReaderDlg, CDialog)/AFX_MSG_MAP(CReaderDlg)ON_BN_CLICKED(IDC_EXIT, OnExit)ON_BN_CLICKED(IDC_FIRST, OnFirst)ON_BN_CLICKED(IDC_LAST, 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)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)/ NOTE: the ClassWizard will add message map macros here/AFX_MSG_MAPEND_MESSAGE_MAP()/ CReaderDlg message handlersvoid CReaderDlg:OnExit() / TODO: Add your control notification handler code hereCDialog:OnOK();void CReaderDlg:OnFirst() / TODO: Add your control notification handler code hereif(!m_rsDataSet.IsBOF()m_rsDataSet.MoveFirst();DisplayRecord();SetButtonState();void CReaderDlg:OnLast() / TODO: Add your control notification handler code hereif(!m_rsDataSet.IsEO

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论