版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、安徽大学程序设计课程设计总结报告题目: 图书管理系统 组长姓名:王姝 学号: Z01114204 院 (系): 电气工程及自动化学院 班 级: 自动化2班 指导教师: 寻丽娜老师 目录一、设计任务和目的311 设计计划312 设计目的3二、设计概要3三、详细设计与实现33.1系统功能和结构3 3.1.1图书馆管理系统功能描述3 3.1.2总体设计流程图43.2 图书管理系统详细设计5 3.2.1 新建数据库(SQL server)5 3.2.2创建数据源7 3.2.3 C+中MFC应用程序编程8 3.2.4 详细设计与实现10四、设计心得 6141 个人总结 6142 课程设计总结 66五、参
2、考文献 66一、设计任务和目的1.1设计计划 一个简单的图书管理系统包括图书馆内书籍的信息、学校在校学生的信息以及学生的借阅信息。此系统功能分为面向学生和面向管理员两部分,其中学生可以进行借阅、续借、归还和查询书籍等操作,管理员可以完成书籍和学生的增加,删除和修改以及对学生,借阅、续借、归还的确认。1.2设计目的图书管理系统中涉及登陆,图书管理,读者管理,以及权限设置相关知识,需要运用的知识全面,可有效检查出学习中的缺陷,同时在实践中巩固数据库相关知识以及VC+编程设计。通过课程设计,使学生提高理论联系实际解决问题的能力,也使学生对基于面向对象的理论进行系统设计过程中的诸多具体问题有感性的认识
3、和深入的理解。二、设计概要图书馆管理系统创建基于MFC APPWizardexe,利用SQLSERVE2000和MFC ODBC进行数据库的连接,在可视化的界面上进行用户名、图书及借书卡的查询、添加、修改、删除,对数据库表内的信息列表进行操作。它是一个基于ACCESS数据库的图书管理系统的设计与实现,运用Visual C+结合Microsoft Access 2000开发而得。 图书馆管理系统主要完成了用户登录功能、新建/删除用户功能、用户管理功能,对数据库内图书、借书卡和用户信息进行查询、添加、删除、修改功能。图书馆管理系统设计是有下列几步完成的:首先对整体功能进行分析,开始是用户登录,登陆
4、成功后显示主界面,其分为图书资料、读者资料、借书管理、还书管理和退出五个菜单;第二步是对五个菜单继续划分成具体的类进行实现;第三步是根据课程设计的要求在数据库内的建立具体的表,并且进行连接,及对数据库数据库内容的操作,与此同时完成界面的退出操作;第四步是对图书馆管理系统进行的全面优化,修改不足。三、详细设计与实现3.1系统功能和结构3.1.1图书管理系统功能描述图书馆管理系统的功能为读者提供借书、 还书和查询所需图书及图书、读者卡的管理等功能。图书馆管理系统的功能模块有:(1)登录界面 只有管理员才能使用全部功能,更好的保护图书馆内的一些信息不被破坏。(2)读者资料 能实现对读者的显示、读者信
5、息增加、读者查询、读者信息修改和读者信息删除功能。(3)图书资料 能实现对图书显示、图书信息增加、图书查询、图书信息修改和图书信息删除功能。(4)借书管理 可与数据库中的图书信息表连接实现借书的功能。(5)还书管理 可与数据库中的图书信息表连接实现还书的功能(6)退出 退出程序,结束运行。通过SQL server建立一个图书馆管理系统的数据库,在控制面板的管理工具上用手动方式添加数据源进行连接。而与数据表的连接采用记录集的形式一一建立连接,可以进行图书资料和读者资料的管理,图书资料管理包括图书信息增加、图书查询、图书信息修改和图书信息删除四项,读者资料管理管理包括读者信息增加、读者查询、读者信
6、息修改和读者信息删除。用ODBC语言将数据库与C+连接起来,首先是登录界面,只有管理员才可进入。登陆成功后,管理员可在系统界面进行读者资料、图书资料、借书管理、还书管理等功能,通过对话框的跳转实现借书、还书、图书新增、查询等功能。在每个对话框都可实现新增、查询、删除、修改等功能顺利的对图书馆进行管理。 程序分为多个小模块,通过调用实现各种功能,增强了程序的可建设性。 3.1.2总体设计流程图程序开始登录界面面还书管理借书管理读者资料图书资料 借书确定增修删查读者显示系统界面面增修删查图书显示程序结束 退出3.2 图书管理系统详细设计3.2.1 新建数据库(SQL server)新建数据库名为l
7、ibrary,然后在数据库下建立五个表,分别为BOOK、BORROW、CLERK、HISTORY、READER。BOOK是存放图书信息的,包括“书籍号码”、“书籍名称”、“书籍作者”、“书籍出版社”、“出版日期”及“可否借出”BORROW是存放借书信息的,包括“书籍号码”、“借阅读者证号”、“借阅日期”以及“借阅次序”CLERK是存放管理员信息的,包括“管理员名称”、“登录密码”READER是存放读者信息的包括“读书证号”、“姓名”、“身份证号”,“最多可借书数目”和“能否借书”HISTORY是为了图书借阅功能的可查可控,而制作的历史记录表便于记录各种信息诸如何人何时借阅归还何书,是否超期还书
8、等。然后设计各个表中的字段,并定义主键,然后输入数据即可。在此处将把设计的各表详细信息给出表 名字段名称数据类型长 度主 键READERREADER_ID文本8YesNAME文本8IDCARD文本18MAXNUM_CAN_BORROW数字FLAG_BORROW文本1BOOKBOOK_ID文本30YesBOOK_NAME文本50AUTHOR文本30PRESS文本50PRESS_DATE文本50FLAG_BORROW文本10BORROWID自动编号YesREADER_ID文本30YesBOOK_ID文本30BORROW_DATE日期/时间B_CLERK_ID文本30HISTORYID自动编号Yes
9、READER_ID文本30BOOK_ID文本30BORROW_DATE日期/时间RETURN_DATE日期/时间B_CLERK_ID文本30R_CLERK_ID文本30CLERKNAME文本8YesPASSWORD文本8 3.2.2创建数据源此次课程设计用ODBC语言将数据库与C+连接,在连接之前应创建数据源。在控制面板上打开管理工具,可以找到数据源(ODBC),添加数据源,可以创建不同类型的数据库,此次设计用到了SQL Server,便选择其,打开SQL Server中的服务管理器可找到服务器的名称,将默认数据库改为自己的数据库。点下一步直至完成。这样,数据源创建成功了。3.2.3 C+中M
10、FC应用程序编程建立基本对话框并与数据库连接其步骤如下所示双击新建的对话框或建立类向导,如下图:点击OK,则如下图所示:在所示对话框中输入Name,然后Base class中选择CRecordset,点击OK,出现下图:既连接数据源,注意选择记录集类型为Dynaset。点击OK,出现下图:选择要连接的数据库表(此例选择dbo.BOOK),点击OK,就完成了与数据库表的连接。其他对话框同此例。3.2.4详细设计与实现程序框架方面根据数据流程,首先要有登陆窗口登录函数void CLoginDlg:OnConfirm() /登录函数 / TODO: Add your control notifica
11、tion handler code hereCClerkDataSet mrsDataSet; /*声明记录集*/CString mSqlStr;UpdateData(TRUE); /将相应控件上的值反应到变量上if (m_strName.IsEmpty() /*判断用户名信息是否为空*/AfxMessageBox("请正确输入用户名!");return;mSqlStr = "SELECT * FROM CLERK WHERE NAME='" /查询数据库中表CLERK中名字是输入的mSqlStr = mSqlStr + m_strName; m
12、SqlStr = 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();elseAfxM
13、essageBox("登录失败,请重新输入!");return;登录进入系统以后要进入选择界面,选择需要的服务服务方面已细分为读者信息管理,书籍信息管理,借书管理和还书管理4种/ ReaderDataSet.cpp : implementation file/#include "stdafx.h"#include "Library.h"#include "ReaderDataSet.h"#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THI
14、S_FILE = _FILE_;#endif/ CReaderDataSetIMPLEMENT_DYNAMIC(CReaderDataSet, CRecordset)CReaderDataSet:CReaderDataSet(CDatabase* pdb): CRecordset(pdb)/AFX_FIELD_INIT(CReaderDataSet)m_READER_ID = _T("");m_NAME = _T("");m_IDCARD = _T("");m_MAXNUM_CAN_BORROW = 0;m_FLAG_BORROW =
15、 _T("");m_nFields = 5;/AFX_FIELD_INITm_nDefaultType = snapshot;CString CReaderDataSet:GetDefaultConnect()return _T("ODBC;DSN=Library");CString CReaderDataSet:GetDefaultSQL()return _T("READER");void CReaderDataSet:DoFieldExchange(CFieldExchange* pFX)/AFX_FIELD_MAP(CReade
16、rDataSet)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("FLA
17、G_BORROW"), m_FLAG_BORROW);/AFX_FIELD_MAP/ CReaderDataSet diagnostics#ifdef _DEBUGvoid CReaderDataSet:AssertValid() constCRecordset:AssertValid();void CReaderDataSet:Dump(CDumpContext& dc) constCRecordset:Dump(dc);#endif /_DEBUG/ ReaderDlg.cpp : implementation file/#include "stdafx.h&q
18、uot;#include "Library.h"#include "ReaderDlg.h"#include "ReaderDataSet.h"#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE = _FILE_;#endif/ CReaderDlg dialogCReaderDlg:CReaderDlg(CWnd* pParent /*=NULL*/): CDialog(CReaderDlg:IDD, pParent)/AFX_DATA_IN
19、IT(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
20、* 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_strReaderNam
21、e, 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)O
22、N_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
23、_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() /
24、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.IsEOF()m_rsDataSet.MoveLast();DisplayRecord();SetButtonState();void CRe
25、aderDlg:OnNew() / TODO: Add your control notification handler code herem_strReaderID = ""m_strReaderName = ""m_strIDCard = ""UpdateData(FALSE);m_bEdit = TRUE;m_bAdd = TRUE;SetButtonState();SetTextState();CWnd *pWnd;pWnd = GetDlgItem(IDC_READERID);pWnd->SetFocus();voi
26、d CReaderDlg:OnNext() / TODO: Add your control notification handler code hereif(!m_rsDataSet.IsEOF()m_rsDataSet.MoveNext();DisplayRecord();SetButtonState();void CReaderDlg:OnPrior() / TODO: Add your control notification handler code hereif(!m_rsDataSet.IsBOF()m_rsDataSet.MovePrev();DisplayRecord();S
27、etButtonState();void CReaderDlg:OnSave() / TODO: Add your control notification handler code hereUpdateData(TRUE);if (m_strIDCard.IsEmpty() | m_strReaderName.IsEmpty() | m_strReaderID.IsEmpty()AfxMessageBox("请输入相应数据!");return;if (m_bAdd)m_rsDataSet.AddNew();elsem_rsDataSet.Edit();m_rsDataSe
28、t.m_IDCARD = m_strIDCard;m_rsDataSet.m_NAME = m_strReaderName;m_rsDataSet.m_READER_ID = m_strReaderID;/m_rsDataSet.m_FLAG_BORROW = "Y"m_rsDataSet.Update();m_rsDataSet.Requery();m_bAdd = FALSE;m_bEdit = FALSE;DisplayRecord();SetButtonState();SetTextState();void CReaderDlg:OnCancelRec() / TO
29、DO: Add your control notification handler code herem_bAdd = FALSE;m_bEdit = FALSE;DisplayRecord();SetButtonState();SetTextState();void CReaderDlg:OnDelete() / TODO: Add your control notification handler code herem_rsDataSet.Delete();DisplayRecord();SetButtonState();void CReaderDlg:OnEdit() / TODO: A
30、dd your control notification handler code herem_bEdit = TRUE;SetButtonState();SetTextState();CWnd *pWnd;pWnd = GetDlgItem(IDC_READERNAME);pWnd->SetFocus();void CReaderDlg:OnEnquery() / TODO: Add your control notification handler code hereUpdateData(TRUE);if (m_strReaderIDQ.IsEmpty() && m_
31、strReaderNameQ.IsEmpty()m_rsDataSet.m_strFilter = ""m_rsDataSet.Requery();DisplayRecord();SetButtonState();return;BOOL mAll = FALSE;if (!m_strReaderIDQ.IsEmpty()m_rsDataSet.m_strFilter = "READER_ID='" + m_strReaderIDQ ;m_rsDataSet.m_strFilter = m_rsDataSet.m_strFilter + "
32、;'"mAll = TRUE;if (!m_strReaderNameQ.IsEmpty()if (mAll)m_rsDataSet.m_strFilter = m_rsDataSet.m_strFilter + " AND NAME='"m_rsDataSet.m_strFilter = m_rsDataSet.m_strFilter + m_strReaderNameQ;m_rsDataSet.m_strFilter = m_rsDataSet.m_strFilter + "'"elsem_rsDataSet.m_s
33、trFilter = "NAME='" + m_strReaderNameQ;m_rsDataSet.m_strFilter = m_rsDataSet.m_strFilter + "'"m_rsDataSet.Requery();DisplayRecord();SetButtonState();BOOL CReaderDlg:DisplayRecord()if (m_rsDataSet.IsEOF() && m_rsDataSet.IsBOF()m_strReaderID = ""m_strReade
34、rName = ""m_strIDCard = ""elseif (m_rsDataSet.IsBOF()m_rsDataSet.MoveNext();elseif (m_rsDataSet.IsEOF()m_rsDataSet.MovePrev();m_strReaderID = m_rsDataSet.m_READER_ID;m_strReaderName = m_rsDataSet.m_NAME;m_strIDCard = m_rsDataSet.m_IDCARD;UpdateData(FALSE);return TRUE;BOOL CReader
35、Dlg: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 = GetDlgIt
36、em(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_CANC
37、EL_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 = Ge
38、tDlgItem(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
39、_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->EnableWin
40、dow(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_
41、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(
42、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 CReaderDlg:OnInitDialog() CDialog:OnInitDialog();/ TODO: Add extra initialization herem_bAdd = FAL
43、SE;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 FALSEBOOL CReaderDlg:SetTextState()CWnd *
44、pWnd;if (m_bEdit)pWnd = GetDlgItem(IDC_READERNAME);pWnd->EnableWindow(TRUE);pWnd = GetDlgItem(IDC_READERID);if (m_bAdd)pWnd->EnableWindow(TRUE);elsepWnd->EnableWindow(FALSE);pWnd = GetDlgItem(IDC_IDCARD);pWnd->EnableWindow(TRUE);elsepWnd = GetDlgItem(IDC_READERNAME);pWnd->EnableWindow
45、(FALSE);pWnd = GetDlgItem(IDC_READERID);pWnd->EnableWindow(FALSE);pWnd = GetDlgItem(IDC_IDCARD);pWnd->EnableWindow(FALSE);pWnd = GetDlgItem(IDC_READERNAME_Q);pWnd->EnableWindow(TRUE);pWnd = GetDlgItem(IDC_READERID_Q);pWnd->EnableWindow(TRUE);return TRUE;/ BookDataSet.cpp : implementation
46、 file/#include "stdafx.h"#include "Library.h"#include "BookDataSet.h"#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE = _FILE_;#endif/ CBookDataSetIMPLEMENT_DYNAMIC(CBookDataSet, CRecordset)/建立记录集所需要的一个派生类CBookDataSet:CBookDataSet(CDatabase* pdb):
47、 CRecordset(pdb)/建立记录集,pdb为一个对象指针,负责链接数据源/AFX_FIELD_INIT(CBookDataSet)m_BOOK_ID = _T(""); /书号m_BOOK_NAME = _T(""); /书名m_AUTHOR = _T(""); /作者m_PRESS = _T(""); /出版商 m_ PRESS_DATE = _T(""); /出版日期m_FLAG_BORROW = _T("");/借出标志m_nFields = 6; /域数据成
48、员为6,指CRecorderView类视图中的控件数目为6/AFX_FIELD_INITm_nDefaultType = snapshot;/默认类型为快照,即该记录集不反应其他用户对记录集的改变,知道调用了CRecord:Requery重新查询后,快照才会发生变化CString CBookDataSet:GetDefaultConnect()/return _T("ODBC;DSN=Library");/返回缺省的连接字符串,此处表示连接到一个ODBC数据源,数据源的名称为LibraryCString CBookDataSet:GetDefaultSQL()return
49、_T("BOOK")/open函数会在必要时调用此函数返回缺省的SQL语句或表用来查询数据源中的记录,此处返回的是BOOKvoid CBookDataSet:DoFieldExchange(CFieldExchange* pFX)/记录集与数据源之间的交换,该交换是双向的/AFX_FIELD_MAP(CBookDataSet)pFX->SetFieldType(CFieldExchange:outputColumn);/表明以后的RFX函数用于参数替换RFX_Text(pFX, _T("BOOK_ID"), m_BOOK_ID);/交换书IDRFX
50、_Text(pFX, _T("BOOK_NAME"), m_BOOK_NAME);/交换书名RFX_Text(pFX, _T("AUTHOR"), m_AUTHOR);/交换作者名RFX_Text(pFX, _T("PRESS"), m_PRESS);/交换出版商数据RFX_Text(pFX, _T("PRESS_DATE"), m_PRESS_DATE);交换出版日期数据RFX_Text(pFX, _T("FLAG_BORROW"), m_FLAG_BORROW);/AFX_FIELD_MAP/ CBookDataSet diagnostics#ifdef _DEBUGvoid CBookDataSet:AssertValid() constCRecordset:AssertValid();/成员函数提供对对象内部状态的运行时检查,可以通过重写使你的类更加安全可靠void CB
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025版结肠炎常见症状及护理要点培训
- 电子商务平台美术设计要点解析
- 解析卷-人教版八年级物理上册第5章透镜及其应用-生活中的透镜综合训练试卷(含答案详解)
- 产品改进方案设计考试题
- 烟台市中医院神经介入与开放手术协作考核
- 南平市人民医院宫腔镜Ⅱ型黏膜下肌瘤切除术考核
- 宜春市中医院副主任技师资格评审
- 萍乡市中医院中枢神经系统感染诊疗思维考核
- 绍兴市中医院洗衣房工作规范与质量标准试题
- 金华市人民医院重症皮肤病救治考核
- 老旧小区改造施工噪音控制实施方案
- 2025年法官入额遴选政治理论真题及答案
- 输电线路运行规程课件
- 注册港口与航道工程公共基础考试历年真题及答案
- 雨污分流处理教学课件
- 沙丁胺醇药剂科培训课件
- 精密空调基础知识培训课件
- 妇科子宫内膜异位症课件
- 局保密工作应急处置预案(3篇)
- 2024年注册安全工程师技术考试真题
- 光课件教学课件
评论
0/150
提交评论