

下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、MFC 图书馆管理系统MFC 课程设计图书馆管理系统 图书馆管理系统院 系 : 计算机科学技术学院二系班级:计 07 - 2 班姓 名: 白杨 (07)合 作 者:刘飞指导教师:王双利2010 年 01 月 4 日MFC 课程设计任务书一、 题目:图书馆管理系统二、 设计要求(1) 刘飞( 组长) 和白杨组成设计小组。(2) 小组成员分工协作完成。要求每个成员有自己相对独立的模块,同时要了 解其他组员完成的内容。(3) 查阅相关资料,自学具体课题中涉及到的新知识。(4) 采用结构化、模块化程序设计方法设计,功能要完善,界面美观。(5) 所设计的系统要至少应用一个课程中或者与其密切相关的算法。(
2、6) 按要求写出课程设计报告。其主要内容包括:封皮、课程设计任务书,指导 教师评语与成绩、目录、概述、软件总体设计、详细设计、软件的调试、总结、附 录:带中文注释的程序清单、参考文献。报告一律用 A4 纸打印,中文字体为宋体, 西文字体用 Time New Roma 一律用小四号字,行距采用“固定值” 18 磅,首行缩进 2 字符。总体设计应配合软件总体模块结构图来说明软件应具有的功能。详细设 计阐述本人设计模块部分的设计思想、应用到的理论和算法、程序流程等等,调试 的叙述应配合出错场景的抓图来说明出现了哪些错误,如何解决的。(7) 课程设计报告中的软件总体设计、详细设计、软件的调试等主体内容
3、要以 文字描述、图表等形式为主,可配以主要核心代码,在附录中附程序清单。 三、 课程设计工作量由于是设计小组团结协作完成设计任务,一般每人的程序量在 200 行有效程序 行左右,不得抄袭。四、课程设计工作计划2009 年 12 月 07 日,指导教师讲课,学生根据题目准备资料 ;2009 年 12 月 08 日,设计小组进行总体方案设计和任务分工 ;2009 年 12 月 09 日,2009 年 12 月 14 日,每人完成自己承担的程序模块并通过 独立编译 ;2009 年 12 月 15 日,2009 年 12 月 17 日,将各模块集成为一个完整的系统,并 录入足够的数据进行调试运行 ;2
4、009 年 12 月 18 日,验收、开始撰写报告 ;2009 年 12 月 21 日前,提交课程设计报告。指导教师签章 :教研室主任签章2MFC 课程设计指导教师评语与成绩指导教师评语 :课程设计表现成绩 :课程设计验收成绩 :课程设计报告成绩 :课程设计 总成绩 :指导教师签章2009 年 12 月 26 日目录第 1 章 概 述1.1 性能需求1.2 功能需求第 2 章 概要设计2.1 功能模块设计2.2 算法分析和设计第 3 章 详细设计3.1 数据库操作3.2 模块设计详细设计3.3 程序流程图4.1 调试分析4.2 测试结果第 5 章 总结22考文献22234第 1 章 概 述1.
5、1 性能需求本系统选用 VC 做为设计语言,开发工具选用 Visual C+6.0 作为开发工具, 本系统可广泛应用于以 Windows 为平台的 PC 上,由于当前主流操作系统即为 Windows 顾客广泛推广。1.2 功能需求 一直以来人们使用传统的人工方式管理图书馆的日常工作,对于图书馆的借书 和还书过程,想必大家都已很熟悉。在计算机尚未在图书馆广泛使用之前,借书和 还书过程主要依靠手工。一个最典型的手工处理还书过程就是 : 读者将要借的书和 借阅证交给工作人员,工作人员将每本书上附带的描述书的信息的卡片和读者的借 阅证放在一个小格栏里,并在借阅证和每本书贴的借阅条上填写借阅信息。这样借
6、 书过程就完成了。还书时,读者将要还的书交给工作人员,工作人员根据图书信息 找到相应的书卡和借阅证,并填好相应的还书信息,这样还书过程就完成了。以上所描述的手工过程的不足之处显而易见,首先处理借书、还书业务流程的 效率很低,其次处理能力比较低,一段时间内,所能服务的读者人数是有限的。利 用计算机来处理这些流程无疑会极大程度地提高效率和处理能力。我们将会看到排 队等候借书、还书的队伍不再那么长,工作人员出错的概率也小了,读者可以花更 多的时间在选择书和看书上。为方便对图书馆书籍、读者资料、借还书等进行高效的管理,特编写该程序以 提高图书馆的管理效率。使用该程序之后,工作人员可以查询某位读者、某种
7、图书 的借阅情况,还可以对当前图书借阅情况进行一些统计,给出统计表格,以便全面 掌握图书的流通情况。 图书管理系统是一种基于集中统一规划的数据库数据管理 新模式。在对图书、读者的管理,其实是对图书、读者数据的管理。本系统的建成 无疑会为管理者对图书管理系统提供极大的帮助。5第 2 章 概要设计2.1 功能模块设计首先需要对图书管理系统详细地了解和分析,一个功能完全满足基本需要的系 统,必须包括以下的几个模块。(1) 基本数据维护功能模块在这个功能模块中,提供了使用者录入、修改并进行维护基本数据的途径。比 如在这个模块中可以输入读者的信息、书籍的各项信息,也可以对这些信息做修 改、更新。(2)
8、基本业务功能模块这个功能模块主要实现对读者利用图书馆借还书籍的管理,比如根据读者的借 用书籍要求更新图书馆书籍数据库系统,如果书籍已经借出,可以进行预留操作。 用户每次还书也要进行数据库记录的各项更新。这个模块是整个图书管理系统的关 键部分。(5) 安全/ 使用管理功能模块这是任何一个信息管理系统都需要的部分,图书管理系统的操作也只能由回主 菜专人进行,只有图书管理部门的工作人员才能拥有权限,特别是图书的借书状 况,输出单 如果没有安全管理部分,后果难以想象,可能每次登录都需要用户身 份的验证。 Hash表图书管理系统基基安本本全 数业使据务用维功管 护能理 功模 能块 图 1 系统问倒功能需
9、求框图2.2 算法分析和设计本系统数据库操作部分采用 DAC 技术,并应用了多线程技术,各模块均有自己 独立的线程进行操作,但由于 DAO 本身并不支持多线程,故所有与数据库相关的操 作均在主线程中,各模块通过发送自定义消息与主线程通信来获取数据库信息。6第 3 章 详细设计数据库操作数据库操作部分采用DAC技术, DAO数据访问对象)是一种应用程序编程接口 (API) ,存在于微软的 Visual Basic 中,它允许程序员请求对微软的 Access 数据 库的访问。DAO是微软的第一个面向对象的数据库接口。DAO 寸象封闭了 Access 的Jet 函数。通过 Jet 函数,它还可以访问
10、其他的结构化查询语言(SQL)数据库。模块设计详细设计基本数据维护 在这个功能模块中,提供了使用者录入、修改并进行维护基本数据的途径。比如在这个模块中可以输入读者的信息、书籍的各项信息,也可以对这些信息做修 改、更新。基本业务功能这一部分主要包括以下五部分 :(1) 库存图书信息 该部分主要是列出所有库存图书,在管理员和员工登录模式下提供对图书信息 的修改等功能,在读者的登录模式下提供借阅功能。详细代码及截图见调试分析部 分。(2) 员工信息该部分主要列出所有员工信息,并提供信息修改功能,且本部分只有在以管理 员权限登录后才可用,在以普通员工登陆和读者登陆时无效。详细代码及截图见调 试分析部分
11、。(3) 读者信息 该部分主要列出所有读者信息,并提供添加修改功能,本部分只有在以管理员 或普通员工模式登陆时才有效,读者登陆时无效。详细代码及截图见调试分析部分。(4) 图书入库 该部分主要提供图书的入库功能,在以管理员和普通员工登录时有效。详细代 码及截图见调试分析部分。(5) 借阅信息 该部分主要列出读者的借阅信息,借阅的图书数量,及日期信息等。详细代码 及截图见调试分析部分。7程序流程图登陆 权限,、七读者普通员工 管理员图员读图借书工者书阅信信信入信息息息库息信息添加、修改、删除第 4 章 调试分析与测试结果 4.1 调试分析 通过老师的验收和自己的总结,我们程序能正常的完成上述所叙
12、述的项目。虽 然程序各项功能都能很好的实现,但仍有许多不足之处,因为我们目前能力还很有 限,时间也有些紧,所以有很多地方还没有做到位。例如 : 该次课程设计中的一些 功能没有得到很好的实现 , 像动画都没有很好的实现。不过,我们在整个程序中实 现了所要求的内容,整体也算完整,弥补了上述带来的缺憾。4.2 测试结果(1) 登陆代码如下 :CLoadDlg dlg;aa: if(dlg.DoModal() = IDOK)if(!m_bAccept)AfxMessageBox(用户名或密码错误,请重新输入);goto aa;elsereturn FALSE;图片:9(2)库存图书信息void CTe
13、stView:O nBook() CTestDoc *pDoc = GetDocume nt();m_nTableNO = 1;if(m_strDatabase !=)pDoc-Ope nMdb();elseMessageBox(未设置数据库,请退出并设置数据库);void CBookDlg:O nButto nAdd() if(m_nTableNO = 1)SetValue();:SendMessage(hwnd,WM_USER_ADD,0,0);elseMessageBox(系统忙,请稍后再试);void CBookDlg:OnButtonDel() if(m_nTableNO = 1):
14、SendMessage(hwnd,WM_USER_DEL,0,0);OnButtonFirst();elseMessageBox(系统忙,请稍后再试);void CBookDlg:OnButtonEdit() if(m_nTableNO = 1)SetValue();:SendMessage(hwnd,WM_USER_EDIT,0,0);10elseMessageBOXCH*譴可湖K=)八voidCBOOkD-gxonBuffonFirso 宀if(mlnTab-eNOHH1)宀xsendMessage(hwnawMIUSERIF-RSToo)八Gefva-uep)e-seMessageBOX
15、CH诫譴可K=)八voidCBOOkD-gxonBuffonLaso 宀if(mlnTab-eNOHH1)宀xsendMessage(hwnawMIUSERILASToo)八Gefva-ueo 八不-se宀MessageBOXCH诫譴可K=)八12void CBookDlg:OnButtonNext() if(m_nTableNO = 1):SendMessage(hwnd,WM_USER_NEXT,0,0);GetValue();elseMessageBox(系统忙,请稍后再试);void CBookDlg:OnButtonPrv() 11if(m_nTableNO = 1):SendMes
16、sage(hwnd,WM_USER_PREV,0,0);GetValue();elseMessageBox(系统忙,请稍后再试);void CBookDlg:OnButtonRequary() if(m_nTableNO =1):Se ndMessage(hw nd,WM_USER_REQUERY,O,O);GetValue();elseMessageBox(系统忙,请稍后再试);图片:酹朋七- e片啤(3)员工信息void CTestView:O nStaff()if(m_n Purview = 0)CTestDoc *pDoc = GetDocume nt();m_nTableNO = 2
17、; if(m_strDatabase !=) pDoc-OpenMdb();二I I0101-i-i一r厂二,能:visitsvisits zKEz:*r:zKEz:*r:凱s*s*4 -I- hi E I I-Ir hf.-f? Is i.1ssslisRsslln*曲IJR15i,打JU ! ?科*4 I T“ WWM m斟1K1 I ? Z12elseMessageBox(未设置数据库,请退出并设置数据库);elseMessageBox(对不起,您没有此权限);void CStaffDlg:OnButtonAdd() if(m_nTableNO = 2)SetValue();:SendM
18、essage(hwnd,WM_USER_ADD,0,0);elseMessageBox(系统忙,请稍后再试);void CStaffDlg:OnButtonDel() if(m_nTableNO = 2):SendMessage(hwnd,WM_USER_DEL,0,0);OnButtonFirst();elseMessageBox(系统忙,请稍后再试);void CStaffDlg:OnButtonEdit() if(m_nTableNO = 2)SetValue();:SendMessage(hwnd,WM_USER_EDIT,0,0);else13MessageBox(系统忙,请稍后再试
19、);void CStaffDlg:OnButtonFirst() if(m_nTableNO = 2):SendMessage(hwnd,WM_USER_FIRST,0,0);GetValue();elseMessageBOAHilff可曲K=)八voidcss-ffD-gxOnBuffonLaso 宀if(mlnTab-eNOHH2)宀xsendMessage(hwnawMIUSERILASToo)八Gefva-ueo 八)e-se宀MessageBOAHilff可曲K=)八voidcss-ffD-g:onBuffonNexo 宀=h(mlnTab_eNOHH2)宀JsendMessage(
20、hwnawMIUSERINEXToo=Gefva-ueo 八)e-se宀MessageBOAH*譴可湖K=)八voidcsQTffD-gxonBuffonprvo宀14if(m_nTableNO = 2):SendMessage(hwnd,WM_USER_PREV,0,0);GetValue();elseMessageBox(系统忙,请稍后再试);void CStaffDlg:OnButtonRequary() if(m_nTableNO = 2):SendMessage(hwnd,WM_USER_REQUERY,0,0);GetValue();elseMessageBox(系统忙,请稍后再试
21、);图片:!- *旷九| w1 AmK|ua Bfrtit(4)读者信息flAfl!4工期ffirftl.KHA*1*MessageBox(对不起,您没有此权限);void CTestView:O nReader()if(m_n Purview != 2)CTestDoc *pDoc = GetDocume nt();15m_nTableNO = 0;if(m_strDatabase !=)pDoc-Ope nMdb();elseMessageBox(未设置数据库,请退出并设置数据库);elseMessageBox(系统忙,请稍后再试);void CStudentDlg:OnButtonAdd
22、() if(m_nTableNO = 0)SetValue();m_strReaderID = m_strID; m_strBookNumber =m_strNumber;:SendMessage(hwnd,WM_USER_ADD,0,0); elseMessageBox(系统忙,请稍后再试);void CStudentDlg:OnButtonDel() if(m_nTableNO = 0):SendMessage(hwnd,WM_USER_DEL,0,0);OnButtonFirst();m_strReaderID = m_strID; m_strBookNumber =m_strNumbe
23、r;else MessageBox(系统忙,请稍后再试);void CStudentDlg:OnButtonEdit() if(m_nTableNO = 0)16SetValue(); :SendMessage(hwnd,WM_USER_EDIT,0,0);m_strReaderID = m_strID; m_strBookNumber =m_strNumber;elseMessageBox(系统忙,请稍后再试);void CStudentDlg:OnButtonFirst() if(m_nTableNO = 0):SendMessage(hwnd,WM_USER_FIRST,0,0);Get
24、Value();m_strReaderID = m_strID;m_strBookNumber = m_strNumber;elsevoid CStudentDlg:OnButtonNext() if(m_nTableNO = 0):SendMessage(hwnd,WM_USER_NEXT,0,0); GetValue();m_strReaderID = m_strID; m_strBookNumber =m_strNumber;elseelseMessageBox(系统忙,请稍后再试);void CStudentDlg:OnButtonPrv() if(m_nTableNO = 0):Se
25、ndMessage(hwnd,WM_USER_PREV,0,0);17GetValue();m_strReaderID = m_strID; m_strBookNumber =m_strNumber;MessageBox(系统忙,请稍后再试);void CStudentDlg:OnButtonRequary() if(m_nTableNO =0):SendMessage(hwnd,WM_USER_REQUERY,0,0);GetValue();m_strReaderID = m_strID;m_strBookNumber = m_strNumber;elseelseMessageBox(系统忙
26、,请稍后再试);void CStudentDlg:OnButtonLast() if(m_nTableNO = 0):SendMessage(hwnd,WM_USER_LAST,0,0);GetValue();m_strReaderID = m_strID;m_strBookNumber = m_strNumber;MessageBOAH*譴可湖K)voidcscdenfD-gxonBuffonBOITOWO宀=h(mlnTab_eNOHH 0)宀if(mlsfaookNumberHH=0=)宀MessageBOXaM曲晞国苗池ROpe nMdb();elseMessageBox(未设置数据库
27、,请退出并设置数据库);elseMessageBox(对不起,您没有此权限);19void CAddDlg:OnButtonAdd() if(m_nTableNO = 3)SetValue();:Se ndMessage(hw nd,WM_USER_ADD,0,0);elseMessageBox(系统忙,操作无效);图片:借阅信息void CTestView:O nReaderBook() CTestDoc *pDoc = GetDocume nt(); if(m_strDatabase !=)if(m nPurview = 2)if(m_strInfo = 0)-T -LF.HP iWlf.
28、 3MFp |n 叭 rhnKJLTHH VifeMr. JW 砒EMT呀-LW TwmwmwKELS即工EtfiBAS-H J-WI1?!* iWinPKrtrWhF讥 Z jiwh dmMAMMAEM 亦订 Eg2s inaTH*卫冲.WUPKJj;-rt 1/BUS - J d ” n -. ” u M申T-rm-Numbered_636bc845-f5c5-402f-9366-d89b26402b40-Numbered_ZAq*B*l Ls- :-I 課 l*4 LP ” 几-评K”眄匕甘划aa9d-4f1d940ab192,BlS-L Iffvi=erfi!bh7P-7-7P-7-
29、4 4 I I T T I I F F b b.t hL L I I r r丨I I - -HmyHiHHsHmyHiHHs1i-1i- n n 3 3 -1-1lbTrTr 3 3 dndnTMessageBox(您的借阅记录为空);elseif(m_nTableNO = 0)20m_nTableNO = 4;if(AfxMessageBox( 该用户借阅记录为空是否创建 ,MB_YESNO) = IDYES)m_nFieldRow = m_nSelectedRow;pDoc-OnDemand();if(AfxMessageBox( 数据库已建立是否添加 ,MB_YESNO) = IDYES
30、)/* m_strReaderID = m_arrayFieldValue5;pDoc-OpenMdb();*/elseMessageBox(未设置数据库,请退出并设置数据库);图片:21第 5 章总结本程序主要实现了;经过两年半的学习在编程方面了很的大进步,尤其在课程设计的时候更能锻炼 我们的综合能力,在这次课程设计的时候也遇到了不少麻烦,同时也认识到自己的 能力还有待提高,但是这次在老师和同学们的热情帮助下,比较圆满的完成了任 务,以后要更加努力,不断的吸取知识,让自己的编程能力不断提高最后,要非常感谢王双利老师,这一次课程设计给予了我们很大的帮助,也让 我们学到了更多技巧和知识。还要感王
31、双利老师对我们一学期的支持和耐心的指 导,他不仅教会了我们知识还教会了我们许多人生的道理,让我们受益匪浅。参考文献任哲,MFC Window 应用程序设计(第二版),北京,清华大学出版社,2007 年 9 月。武莹,彭文明,Visual C+开发实用编程 200 例,中国铁道出版社,2006任哲,高诚,软件工程,中国水利水电出版社, 2008 年 10 月 4 VC+ 技 术内幕 (第四版 )22附录Test.cpp#include stdafx.h#include test.h#include MainFrm.h#include testDoc.h#include testView.h#in
32、clude LoadDlg.h#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE = _FILE_;#endifextern int m_nPurview;extern BOOL m_bAccept;/ CTestAppBEGIN_MESSAGE_MAP(CTestApp, CWinApp)/AFX_MSG_MAP(CTestApp)ON_COMMAND(ID_APP_ABOUT, OnAppAbout)/ NOTE - the ClassWizard will add and remove mappi
33、ng macros here./ DO NOT EDIT what you see in these blocks of generated code!/AFX_MSG_MAP/ Standard file based document commandsON_COMMAND(ID_FILE_NEW, CWinApp:OnFileNew)ON_COMMAND(ID_FILE_OPEN, CWinApp:OnFileOpen)/ Standard print setup commandON_COMMAND(ID_FILE_PRINT_SETUP, CWinApp:OnFilePrintSetup)
34、END_MESSAGE_MAP()/ CTestApp constructionCTestApp:CTestApp()/ TODO: add construction code here,/ Place all significant initialization in InitInstance23/ / The one and only CTestApp objectCTestApp theApp;/ / CTestApp initializationBOOL CTestApp:InitInstance()AfxEnableControlContainer();/ Standard init
35、ialization/ If you are not using these features and wish to reduce the size/ of your final executable, you should remove from the following/ the specific initialization routines you do not need.CLoadDlg dlg;aa: if(dlg.DoModal() = IDOK)if(!m_bAccept)AfxMessageBox(用户名或密码错误,请重新输入);goto aa;elsereturn FA
36、LSE;#ifdef _AFXDLLEnable3dControls(); / Call this when using MFC in a shared DLL #elseEnable3dControlsStatic(); / Call this when linking to MFC statically #endif/ Change the registry key under which our settings are stored./ TODO: You should modify this string to be something appropriatem_pMainWnd-S
37、howWindow(SW_SHOW);/ such as the name of your company or organization.SetRegistryKey(_T(Local AppWizard-Generated Applications);LoadStdProfileSettings(); / Load standard INI file options (including MRU)/ Register the applications document templates. Document templates 24/ serve as the connection bet
38、ween documents, frame windows and views.CSingleDocTemplate* pDocTemplate;pDocTemplate = new CSingleDocTemplate(IDR_MAINFRAME,RUNTIME_CLASS(CTestDoc),RUNTIME_CLASS(CMainFrame), / main SDI frame windowRUNTIME_CLASS(CTestView); AddDocTemplate(pDocTemplate);/ Parse command line for standard shell comman
39、ds, DDE, file openCCommandLineInfo cmdInfo;ParseCommandLine(cmdInfo);/ Dispatch commands specified on the command lineif (!ProcessShellCommand(cmdInfo)return FALSE;/ The one and only window has been initialized, so show and update it.m_pMainWnd-UpdateWindow();return TRUE;/ CAboutDlg dialog used for
40、App Aboutclass CAboutDlg : public CDialogpublic:CAboutDlg();/ Dialog Data/AFX_DATA(CAboutDlg)enum IDD = IDD_ABOUTBOX ;/AFX_DATA/ ClassWizard generated virtual function overrides/AFX_VIRTUAL(CAboutDlg)protected:virtual void DoDataExchange(CDataExchange* pDX); / DDX/DDV support/AFX_VIRTUAL25/ Implemen
41、tationprotected:/AFX_MSG(CAboutDlg)/ No message handlers/AFX_MSGDECLARE_MESSAGE_MAP();CAboutDlg:CAboutDlg() : CDialog(CAboutDlg:IDD)/AFX_DATA_INIT(CAboutDlg)/AFX_DATA_INITvoid CAboutDlg:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);/AFX_DATA_MAP(CAboutDlg)/AFX_DATA_MAPBEGIN_MESSAGE_M
42、AP(CAboutDlg, CDialog)/AFX_MSG_MAP(CAboutDlg)/ No message handlers/AFX_MSG_MAPEND_MESSAGE_MAP()/ App command to run the dialog void CTestApp:OnAppAbout() CAboutDlgaboutDlg;aboutDlg.DoModal();/ testDoc.cpp : implementation of the CTestDoc class/#include stdafx.h#include test.h#include testDoc.h#inclu
43、de database.h#include field.h26#include index.h#include tabledef.h#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE = _FILE_; #endifCStringArray m_arrayFieldName;CStringArray m_arrayFieldValue; CWordArray m_arrayFieldSize;CString m_strDatabase;CString m_strConnect;CString m_str
44、Query;int m_nRowCount;int m_nFields;int m_nTables;int m_nRows = 0;extern int m_nPurview;extern CString m_strOldCode;extern CString m_strUserID;extern CString m_strNewCode;extern BOOL m_bAccept;extern int m_nTableNO;extern CString m_strReaderID;extern CString m_strBookNumber; extern int m_nFieldRow;
45、int flag;/ CTestDocvoid DaoErrorMsg(CDaoException* e) char errorMsg301;wsprintf(errorMsg, DAO error %d, SOURCE = %s, DESCR = %s,e-m_pErrorInfo-m_lErrorCode,(const char*) e-m_pErrorInfo-m_strSource,(const char*) e-m_pErrorInfo-m_strDescription); AfxMessageBox(errorMsg);IMPLEMENT_DYNCREATE(CTestDoc, C
46、Document)27 BEGIN_MESSAGE_MAP(CTestDoc, CDocument)/AFX_MSG_MAP(CTestDoc)/AFX_MSG_MAP END_MESSAGE_MAP()/ / CTestDoc construction/destruction CTestDoc:CTestDoc()m_arrayTableName.SetSize(5); m_arrayTableName0 = 读者信息 ;m_arrayTableName1 = 库存图书 ; m_arrayTableName2 = 员工信息 ;m_arrayTableName3 = 库存图书 ; m_arra
47、yTableName4 = ;m_arrayField.SetSize(3);m_arrayField0 = ID; m_arrayField1 = 书名 ; m_arrayField2 = 借阅日期 ;CTestDoc:CTestDoc()if(m_database.IsOpen() CloseMdb();BOOL CTestDoc:OnNewDocument() if (!CDocument:OnNewDocument()return FALSE;ConnectMdb();return TRUE;/ CTestDoc serialization28void CTestDoc:Seriali
48、ze(CArchive& ar) if (ar.IsStoring()/ TODO: add storing code hereelse/ TODO: add loading code here/ CTestDoc diagnostics#ifdef _DEBUGvoid CTestDoc:AssertValid() const CDocument:AssertValid();void CTestDoc:Dump(CDumpContext& dc) constCDocument:Dump(dc);#endif /_DEBUG/ CTestDoc commandsvoid CTe
49、stDoc:ConnectMdb()int nTables;int n = 0;BeginWaitCursor();try / nonexclusive, read-onlym_database.Open(m_strDatabase, FALSE, FALSE);catch (CDaoException* e) :DaoErrorMsg(e);EndWaitCursor();e-Delete();return;29m_strDatabase.Empty();m_strDatabase = m_database.GetName();TRACE(database name = %s, connec
50、t = %sn,(const char*) m_strDatabase, (const char*) m_strConnect); nTables =m_database.GetTableDefCount();CDaoTableDefInfo tdi;for(int i = 0;i Open(dbOpenDynaset, m_strQuery);catch (CDaoException* e) :DaoErrorMsg(e);UpdateAllViews(NULL);e-Delete();return;if(!m_pRecordset-IsBOF()m_pRecordset-MoveLast(
51、);m_nRowCount = m_pRecordset-GetAbsolutePosition() + 2;TRACE(m_nRowCount = %dn,m_nRowCount); m_nFields =(int)m_pRecordset-GetFieldCount(); m_arrayFieldName.SetSize(m_nFields);m_arrayFieldSize.SetSize(m_nFields);30CDaoFieldInfo fi;for(i = 0;i GetFieldInfo(i,fi);m_arrayFieldNamei = fi.m_strName;m_arra
52、yFieldSizei =(short)max(min(fi.m_lSize,50),fi.m_strName.GetLength();TRACE(field name = %sn,fi.m_strName);UpdateAllViews(NULL);EndWaitCursor();void CTestDoc:CloseMdb() m_pRecordset-Close();m_database.Close();m_pRecordset = NULL;m_nRowCount = 0;m_nFields = 0;m_nTables = 0;UpdateAllViews(NULL);void CTe
53、stDoc:OnUserNext() if(flag = 1)m_pRecordset-MoveNext();if(m_pRecordset-IsEOF() m_pRecordset-SetAbsolutePosition(m_nRows - 1);flag = 0;m_pRecordset-MoveNext();m_pRecordset-MoveNext();if(m_pRecordset-IsEOF()m_pRecordset-MoveLast();GetValue();void CTestDoc:OnUserPrev() if(flag = 1)m_pRecordset-MoveNext
54、(); if(m_pRecordset-IsEOF() 31m_pRecordset-SetAbsolutePosition(m_nRows - 1); flag = 0;m_pRecordset-MovePrev(); if(m_pRecordset-IsBOF()m_pRecordset-MoveFirst();GetValue();void CTestDoc:OnUserFirst() if(flag = 1)if(m_pRecordset-IsEOF() m_pRecordset-SetAbsolutePosition(m_nRows - 1);flag = 0;m_pRecordse
55、t-MoveFirst();GetValue();void CTestDoc:OnUserLast() if(flag = 1)m_pRecordset-MoveNext(); if(m_pRecordset-IsEOF()m_pRecordset-SetAbsolutePosition(m_nRows - 1); flag = 0;m_pRecordset-MoveLast();GetValue();void CTestDoc:OnUserAdd() if(flag = 1)m_pRecordset-MoveNext(); if(m_pRecordset-IsEOF()m_pRecordse
56、t-SetAbsolutePosition(m_nRows - 1);m_pRecordset-MoveNext();flag = 0;32trym_pRecordset-AddNew();SetValue();m_pRecordset-Update();m_nRowCount +;catch(CDaoException *e)CString strMessage = _T(Couldnt add the record-Exception:); strMessage +=e-m_pErrorInfo-m_strDescription; AfxMessageBox(strMessage);e-D
57、elete();UpdateAllViews(NULL);void CTestDoc:OnUserDel()if(flag = 1)void CTestDoc:OnUserEdit() if(m_pRecordset-IsEOF()m_pRecordset-SetAbsolutePosition(m_nRows - 1); flag = 0;if(m_pRecordset-IsBOF() | m_pRecordset-IsEOF() return;trym_pRecordset-Delete(); m_nRowCount -;catch(CDaoException *e)CString str
58、Message = _T(Couldnt delete current record-Exception:);strMessage += e-m_pErrorInfo-m_strDescription;AfxMessageBox(strMessage);e-Delete();return;UpdateAllViews(NULL);33if(flag = 1)m_pRecordset-MoveNext();if(m_pRecordset-IsEOF()m_pRecordset-SetAbsolutePosition(m_nRows - 1);flag = 0;void CTestDoc:OnUs
59、erRequery() trym_pRecordset-Edit();SetValue();m_pRecordset-Update();catch(CDaoException *e)CString strMessage = _T(Couldnt modify current record-Exception:);strMessage += e-m_pErrorInfo-m_strDescription;AfxMessageBox(strMessage);e-Delete();UpdateAllViews(NULL);void CTestDoc:OnUserAddTable()trym_pRec
60、ordset-Requery();UpdateAllViews(NULL);catch(CDaoException *e)CString strMessage = _T(Couldnt requery current record-Exception:);strMessage += e-m_pErrorInfo-m_strDescription;AfxMessageBox(strMessage);e-Delete();if(flag = 1)m_pRecordset-MoveNext();if(m_pRecordset-IsEOF()34 m_pRecordset-SetAbsolutePosition(m_nRows - 1)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 多项目安全管理办法
- 外购件批次管理办法
- 客货运站场管理办法
- 新产品进行管理办法
- 北京推广奖管理办法
- 周转备件库管理办法
- 商贸流通业管理办法
- 国债承销团管理办法
- 小农户种植管理办法
- 员工调部门管理办法
- 重庆狱警面试试题及答案
- 2025年中考数学总复习《实数》专项测试卷(附答案)
- 防蚊防虫技术培训课件
- 项目部后勤管理制度
- 全国计算机等级考试《二级MySQL数据库程序设计》专用教材【考纲分析+考点精讲+真题演练+强化习题】
- 管材管件购销合同
- 新疆干部网络学院官网登录入口
- 电力电缆供货方案
- GB/T 18375-2024假肢下肢假肢的结构检验要求和试验方法
- 2025届河北省石家庄市普通高中学校毕业年级教学质量摸底检测英语试卷
- 自查研发加计扣除情况说明模板-企业管理
评论
0/150
提交评论