资源描述
江 苏 师 范 大 学 科 文 学 院本 科 生 课 程 设 计课 程 名 称: 计算机程序设计(VC+) 题 目: 图书馆管理系统 专 业 班 级: 10电信一班 学 生 姓 名: 张文成 学 生 学 号: 108326122 日 期: 20130111 指 导 教 师: 姜芳艽 科文学院教务部印制一、课程设计目的、任务和内容要求:计算机语言程序设计是一门以编程实践为主的专业课,目的在于培养学生利用计算机语言进行软件开发所必需的基本思想和基本技能,进一步提高综合应用计算机语言的各种编程知识和技巧进行程序设计的能力,通过本次课程设计,学生应能达到具备设计功能较为复杂的应用程序的能力,同时培养学生自主学习和独立创新的精神。任务如下: 1进行需求分析和概要设计,给出流程图。 2写出详细设计,熟悉其中采用的关键技术。3给出具体的编码实现并调试。4写课程设计报告提交源程序。内容要求:设计并完成软件系统。要求:1应具有简洁友好的用户界面。2要求软件系统的功能完整。3要求程序具备正确性,可读性和运行的高效性。 二、进度安排:第3天: 查找资料,进行需求分析和概要设计;第46天: 各模块的详细设计;第712天: 软件实现与调试;第1314天:写课程设计报告并提交源程序。三、主要参考文献:1孙鑫. VC+深入详解M .北京:电子工业出版社, 2006. 2郑阿奇. Visual C+实用教程(第3版)M北京:.电子工业出版社,20103管西京. 深入体验VC+项目开发(开发日记)M .北京:清华大学出版社, 20114.马安鹏.Visual C+程序设计导学M .北京;清华大学出版社,20025.Beck Zaratian.Microsoft Visual Visual C+ 6.0程序员指南.希望图书创作室译. M .北京;北京希望电脑公司出品,19986.Richard C.Leinecker,Tom Archer. Visual C+ 6 宝典.张艳,张谦译. M .北京;电子工业出版社,1999 指导教师签字: 年 月 日江苏师范大学物理与电子工程学院课程设计报告目 录目 录I摘 要IAbstractII1 绪论11.1需求背景11.1.1开发目标11.1.2开发意义11.1.3主要工作内容22 设计方案简述32.1 图书馆管理系统功能介绍32.2程序开发环境和基本开发软件32.2.1 VC+开发软件32.2.2 数据库开发软件32.2.3环境搭建42.3 程序设计流程图42.4系统的功能模块划分43详细设计63.1 数据库的建立及更新63.1.1数据库的建立63.2系统登录模块设计83.3系统主界面设计113.4图书信息管理模块设计123.5管理员、读者信息管理模块设计133.7借书、罚金查询查询模块设计153.7系统帮助模块设164 设计结果及分析174.1黑盒测试174.2测试结果174.2.1登录测试174.2.2管理测试184.2.3借书测试224.2.4还书测试234.2.5借书、罚金查询测试244.2.6系统时间查询测试255 总结265.1 小结26参考文献27附录 主要程序代码28摘 要随着现代科学技术的进步,人类社会正逐走向信息化。图书馆拥有丰富的文献信息资源,是社会信息系统的重要组成部分,在信息社会中的作用愈来愈重要。我国图书馆计算机等信息技术的应用起步于20世纪70年代末期,随着改革开放的步伐得以迅速发展,特别是90年代以后,我国图书馆信息网络建设取得了较大发展,图书馆信息化建设迈上了一个新台阶。本文介绍了在Visual C+环境下开发图书管理信息系统的过程。文章介绍了图书馆管理信息系统的系统分析部分,包括可行性分析、图书借阅流程分析等;系统设计部分主要介绍了系统功能设计和数据库设计及代码设计;系统实现部分说明了几个主要模块的算法,本系统界面友好,操作简单,比较实用。系统主要完成了用户登录功能、新建、删除用户功能、用户管理功能,对数据库内图书信息、借阅信息和读者信息进行查询、添加、删除功能。关键词: Visual C+;数据库管理;图书;借阅AbstractAlong with the progress of modern science and technology, human society is driven to informationization.Libraries have abundant literature information resources, social information system is an important part of the role in the information society, more and more important. Chinese library computers started in the application of information technology in the late 1970s, along with the reform and opening-up develop rapidly, especially after 1990s, the library information network construction in China has made great development, library informatization construction to step on to a new step. This paper introduces in Visual C+ environment development books management information system process. This paper introduces the library management information system of analysis parts, including the feasibility analysis, library process analysis, etc. System design part mainly introduced the system function design and database design and code design; System realize part of several major modules illustrates the algorithm, this system friendly interface, the operation is simple, is more practical.Library management system mainly to complete the user login, create, delete user function, user management function, the database of library information, library information.Key words: Visual C+;database; management; books; borrow- 53 -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 程序设计流程图表BOOK图书管理系统用户登录输入用户名和密码是否正确是否图书管理读者管理借阅管理管理员管理新书入库书籍查询书籍信息修改增加读者读者信息查询读者信息修改图书借阅图书归还逾期罚款管理员信息查询增加、删除帐号退出系统表READER表BORROW表FINE表CLERK图2-1流程图2.4系统的功能模块划分整个图书管理系统分为四个模块。分别为图书管理模块、借阅管理模块、读者管理模块和系统管理模块。图书管理读者管理图书管理系统借阅管理系统管理 新书入库读者信息查询管理员信息查询罚金设置图书归还书籍查询书籍信息修改图书归还逾期罚款图书借阅图书归还读者信息修改增加读者退出系统删除帐号登录图2-2 系统模块化分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属性设置双击对话框打开ClassWizard对话框,为IDD_LOGIN添加CLoginMDlg类,按下表为该类。图3-7添加成员变量图3-8创建一个名为CClerkDataSet新类图3-9创建数据源图3-10选择对应的表格图3-11添加相应的消息响应函数3.3系统主界面设计图3-12主界面其中系统登录可以登陆和退出系统,管理信息可以查看管理员信息、图书信息、读者信息;借阅手续中包含图书借阅、图书归还、缴纳罚款;信息查询中包含读者查询、系统时间查询;帮助中可以查看系统帮助和版本信息。3.4图书信息管理模块设计图3-13书籍信息界面添加书籍信息对话框,属性设置为IDD_BOOK_MAINTAIN,微软雅黑,10号字体为IDD_BOOK_MAINTAIN添加成员变量。创建一个新类,名为CBookDataSet,方法步骤同CClerkDataSet,添加消息映射,最后输入按钮代码。3.5管理员、读者信息管理模块设计图3-14管理员信息管理添加管理员信息对话框,属性设置为IDD_CLERK_MAINTAIN,微软雅黑,10号建立新类CClerkMDlg,按图书信息模块设计步骤做相似操作,添加消息映射,最后输入按钮代码。图3-15读者信息管理添加读者信息对话框,属性设置为IDD_READER_MAINTAIN,微软雅黑,10号,为IDD_LENDOUT添加成员变量。建立新类LendOutDlg,按上述步骤做相似操作,添加消息响应,最后输入按钮代码。图3-16还书管理添加图书归还对话框,属性设置为IDD_ReturnBook,微软雅黑,10号,为IDD_ReturnBook添加成员变量,建立新类CReturnBookDlg,按上述步骤做相似操作,添加消息映射,最后输入代码。3.7借书、罚金查询查询模块设计图3-17借书查询添加借书查询对话框,属性设置为IDD_DLGREADERQRY,微软雅黑,10号,为IDD_DLGREADERQRY添加成员变量,建立新类CReaderQryDlg,按上述步骤做相似操作,添加消息映射,最后输入代码。图3-18罚金查询添加缴纳罚金对话框,属性设置为IDD_FINE,微软雅黑,10号字体,为IDD_FINE添加成员变量,建立新类CFineHistoryDataSet,按上述步骤做相似操作,添加消息映射最后输入代码。3.7系统帮助模块设图3-19系统帮助4 设计结果及分析4.1黑盒测试采用黑盒测试方法。对功能进行逐一测试,在输入合理及不合理的数据后测试系统的正常运作情况测试1:系统登录测试测试2:图书管理测试测试3:读者管理测试测试4:管理员管理测试测试5:借书测试测试6:还书测试测试7:借书、罚金查询测试4.2测试结果4.2.1登录测试图4-1正确登录图4-2错误登录4.2.2管理测试图4-3图书新增图4-4读者新增图4-5编辑管理员信息图4-6编辑书籍信息图4-7编辑读者信息图4-8书籍信息查询4-9读者信息查询4.2.3借书测试图4-10借书测试图4-11借阅成功图4-12借阅失败4.2.4还书测试图4-13图书归还4.2.5借书、罚金查询测试图4-14借书查询图4-15罚金查询4.2.6系统时间查询测试图4-16系统时间查询5 总结5.1 小结在这次的课程设计中,让我学到了很多在课堂上和书本上学不到的知识,我在这次课程设计中最大的收获有以下几方面:领略到了数据库设计在计算机领域的重要性。数据库作为一个永久存储形式在应用中发挥着重要的作用。在数据库设计中,我明白了数据库设计不是范式越高越好的,我们要根据我们的应用来决定,一切应该以需求为首要选择。对编程环境、一些控件的使用和界面的设计更加熟悉。因为图书管理系统中设计到很多控件的使用,只有很好的使用这些控件才可以给出一个很好的界面呈现在用户面前。这样更有利于数据库和用户之间的交流。利用软件工程学开发系统。虽然这个图书管理系统是一个小的系统,但从这个小的项目中也让我明白了数据库作为任何一个系统的后台的重要性,在开发系统设计和实现中学到和总结很多经验和教训。参考文献参考文献类型及标识:参考文献类型专著论文集报纸文章期刊文章学位论文报告标准专利文献类型标识MCNJDRSP其他未作说明的文献,建议采用单字母“Z”。1 孙鑫. VC+深入详解M .北京:电子工业出版社, 20062 郑阿奇. Visual C+实用教程(第3版)M北京:.电子工业出版社,20103 管西京. 深入体验VC+项目开发(开发日记)M .北京:清华大学出版社, 20114 马安鹏.Visual C+程序设计导学M .北京:清华大学出版社,20025 Beck Zaratian.Microsoft Visual Visual C+ 6.0程序员指南.希望图书创作室译. M .北京;北京希望电脑公司出品,19986 Richard C.Leinecker,Tom Archer. Visual C+ 6 宝典.张艳,张谦译. M .北京;电子工业出版社,1999附录 主要程序代码1、 主界面代码/ CMainFrame construction/destruction/窗体框架创建函数int CMainFrame:OnCreate(LPCREATESTRUCT lpCreateStruct)if (CFrameWnd:OnCreate(lpCreateStruct) = -1)return -1;/*if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) |!m_wndToolBar.LoadToolBar(IDR_MAINFRAME)TRACE0(Failed to create toolbarn);return -1; / fail to create*/if (!m_wndStatusBar.Create(this) |!m_wndStatusBar.SetIndicators(indicators, sizeof(indicators)/sizeof(UINT)TRACE0(Failed to create status barn);return -1; / fail to create/ TODO: Delete these three lines if you dont want the toolbar to/ be dockable/以下为自己添加的代码部分/先启动登陆界面/=用户登陆对话框显示=CLoginDlg dlg1;/声明一个登陆对话框对象dlg1.DoModal();/让对话框对象以有模形式显示/=开机启动画面=/CSplashWnd:ShowSplashScreen(this); /显示启动画面/SetTimer(1, 850, NULL); /修改第二个参数以调整画面停留时间/Sleep(2000);/阳伞公司图标CSplashDlg *dlg = new CSplashDlg(this);dlg-Create(CSplashDlg:IDD,this);/创建对话框dlg-ShowWindow(SW_SHOW);/显示对话框dlg-UpdateWindow();Sleep(1500);/画面显示停留时间,单位为毫秒dlg-DestroyWindow();/销毁对话框return 0;BOOL CMainFrame:PreCreateWindow(CREATESTRUCT& cs)if( !CFrameWnd:PreCreateWindow(cs) )return FALSE;/ TODO: Modify the Window class or styles here by modifying/ the CREATESTRUCT cs / TODO: 在此处通过修改 /CREATESTRUCT cs 来修改窗口类或样式 cs.style &=FWS_ADDTOTITLE; cs.lpszName = 江苏师范大学敬文图书馆管理系统; /设定窗口的尺寸 cs.cx = 1024; cs.cy = 714; return TRUE;/ CMainFrame message handlers/图书管理菜单按钮void CMainFrame:OnBookDlg() CBookMDlg dlg;/定义一个对话框类对象dlg.DoModal();/显示对话框/读者信息管理菜单按钮void CMainFrame:OnReaderDlg() / TODO: Add your command handler code hereCReaderMDlg dlg;/定义一个对话框类对象dlg.DoModal();/显示对话框/管理员信息管理菜单按钮void CMainFrame:OnClerkDlg() / TODO: Add your command handler code hereCClerkMDlg dlg;/定义一个对话框类对象dlg.DoModal();/显示对话框/书籍借出管理菜单按钮void CMainFrame:OnLenoutDlg() / TODO: Add your command handler code hereCLendOutDlg dlg;/定义一个对话框类对象dlg.DoModal();/显示对话框/管理菜单按钮void CMainFrame:OnFineDlg() / TODO: Add your command handler code hereCFineDlg dlg;/定义一个对话框类对象dlg.DoModal();/显示对话框/读者信息查询管理菜单按钮void CMainFrame:OnReaderqryDlg() / TODO: Add your command handler code hereCReaderQryDlg dlg;/定义一个对话框类对象dlg.DoModal();/显示对话框/图书归还管理菜单按钮void CMainFrame:OnReturnbookDlg() / TODO: Add your command handler code hereCReturnBookDlg dlg;/定义一个对话框类对象dlg.DoModal();/显示对话框/系统帮助菜单按钮void CMainFrame:OnSystermhelp() / TODO: Add your command handler code hereCSystemHelp dlg;/定义一个对话框类对象dlg.DoModal();/显示对话框/系统时间菜单按钮void CMainFrame:OnSystermtimeDlg() / TODO: Add your command handler code hereCSystemTime dlg;/定义一个对话框类对象dlg.DoModal();/显示对话框/登陆对话框菜单按钮void CMainFrame:OnLoginDlg() / TODO: Add your command handler code hereCLoginDlg dlg;/定义一个对话框类对象dlg.DoModal();/显示对话框/程序退出菜单按钮void CMainFrame:OnExit() / TODO: Add your command handler code hereif(MessageBox(确定要退出吗?,提示,MB_YESNO)=IDYES)/CFrameWnd:OnClose();/关闭应用程序2、 管理信息CBookMDlg:CBookMDlg(CWnd* pParent /*=NULL*/): CDialog(CBookMDlg:IDD, pParent)/AFX_DATA_INIT(CBookMDlg)m_strAUTHOR = _T();m_strBOOKID = _T();m_strBOOKIDQ = _T();m_strBOOKNAME = _T();m_strBOOKNAMEQ = _T();m_strPRESS = _T();m_strPRESSDATE = _T();m_strFLAG = _T();/AFX_DATA_INITvoid CBookMDlg:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);/AFX_DATA_MAP(CBookMDlg)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_PRESS, m_strPRESS);DDX_Text(pDX, IDC_PRESSDATE, m_strPRESSDATE);DDX_Text(pDX, IDC_FLAG_BORROW, m_strFLAG);/AFX_DATA_MAPBEGIN_MESSAGE_MAP(CBookMDlg, CDialog)/AFX_MSG_MAP(CBookMDlg)ON_BN_CLICKED(IDC_SAVE, OnSave)ON_BN_CLICKED(IDC_EXIT, OnExit)ON_BN_CLICKED(IDC_FIRST, OnFirst)ON_BN_CLICKED(IDC_PRIOR, OnPrior)ON_BN_CLICKED(IDC_NEXT, OnNext)ON_BN_CLICKED(IDC_LAST, OnLast)ON_BN_CLICKED(IDC_NEW, OnNew)ON_BN_CLICKED(IDC_ENQUERY, OnEnquery)ON_BN_CLICKED(IDC_EDIT, OnEdit)ON_BN_CLICKED(IDC_DELETE, OnDelete)ON_BN_CLICKED(IDC_CANCEL, OnCancel)ON_BN_CLICKED(IDC_CANCELRec, OnCANCELRec)/AFX_MSG_MAPEND_MESSAGE_MAP()/ CBookMDlg message handlers/=界面操作=/保存按钮消息映射函数void CBookMDlg:OnSave() / TODO: Add your control notification handler code hereUpdateData(TRUE);/控件内容更新到关联变量/输入为空 提示警告if (m_strBOOKNAME.IsEmpty() | m_strBOOKID.IsEmpty()AfxMessageBox(请输入相应数据!);return;if(m_bAdd)/判别添加标志位m_rsDataSet.AddNew();/添加MessageBox(添加完成!);else/编辑标志位有效if(m_bEdit) m_rsDataSet.Edit();/编辑MessageBox(编辑完成!);/控件关联变量更新到数据库m_rsDataSet.m_BOOKNAME=m_strBOOKNAME;/书名m_rsDataSet.m_BOOKID=m_strBOOKID;/书籍条码m_rsDataSet.m_AUTHOR=m_strAUTHOR;/作者m_rsDataSet.m_PRESS=m_strPRESS;/出版社m_rsDataSet.m_PRESSDATE=m_strPRESSDATE;/出版日期m_rsDataSet.m_FLAG=m_strFLAG;/借阅信息/更新到数据库m_rsDataSet.Update();m_rsDataSet.Requery();/标志位失效m_bAdd = FALSE;m_bEdit = FALSE;MessageBox(操作成功!);DisplayRecord();/显示刷新纪录/恢复控件只读 不可编辑/根据控件ID获取控件的句柄 指针指向成员函数撤销编辑框只读设置(CEdit*)GetDlgItem(IDC_BOOKNAME)-SetReadOnly(true);/书籍名称(CEdit*)GetDlgItem(IDC_BOOKID)-SetReadOnly(true);/书籍条码(CEdit*)GetDlgItem(IDC_AUTHOR)-SetReadOnly(true);/作者(CEdit*)GetDlgItem(IDC_PRESS)-SetReadOnly(true);/出版社(CEdit*)GetDlgItem(IDC_PRESSDATE)-SetReadOnly(true);/出版日期(CEdit*)GetDlgItem(IDC_FLAG_BORROW)-SetReadOnly(true);/能否借阅/取消按钮消息映射函数void CBookMDlg:OnCANCELRec() / TODO: Add your control notification handler code here/标志位失效m_bEdit = FALSE;m_bAdd = FALSE;MessageBox(操作已取消!);DisplayRecord();/取消按钮消息映射函数void CBookMDlg:OnCancel() / TODO: Add your control notification handler code hereCDialog:OnCancel();/退出按钮消息映射函数void CBookMDlg:OnExit() / TODO: Add your control notification handler code hereCDialog:OnCancel();/=数据库查询操作=/第一条按钮消息映射函数void CBookMDlg:OnFirst() if(!m_rsDataSet.IsEOF()/判断是否到达记录集的结尾m_rsDataSet.MoveFirst();/指针指向第一条记录DisplayRecord();/显示刷新记录/上一条按钮消息映射函数void CBookMDlg:OnPrior() /IsBOF()当指针移动到第一条记录前面或者表中没有记录的时候返回真if(!m_rsDataSet.IsBOF()/判断是否到达记录集的结尾m_rsDataSet.MovePrev();/指针移动到上一条记录DisplayRecord();/显示刷新记录/下一条按钮消息映射函数void CBookMDlg:OnNext() if(!m_rsDataSet.IsEOF()/判断是否到达记录集的结尾m_rsDataSet.MoveNext();/指针移动到下一条记录DisplayRecord();/显示刷新记录/末一条按钮消息映射函数void CBookMDlg:OnLast() /IsEOF()当指针移动到最后一条记录后面的时候返回真if(!m_rsDataSet.IsEOF()/判断是否到达记录集的结尾m_rsDataSet.MoveLast();/指针移动到最后一条记录DisplayRecord();/显示刷新记录/=数据库修改操作=/新增按钮消息映射函数void CBookMDlg:OnNew() UpdateData(FALSE);/编辑框控件数据清空m_strBOOKNAME=;/书名m_strBOOKID=;/书籍条码m_strAUTHOR=;/作者m_strPRESS=;/出版社m_strPRESSDATE=;/出版日期m_strFLAG=;/借阅信息UpdateData(FALSE);/更新到关联变量/标志位设置m_bEdit = FALSE;m_bAdd = TRUE;/撤销控件只读 可编辑/根据控件ID获取控件的句柄 指针指向成员函数撤销编辑框只读设置(CEdit*)GetDlgItem(IDC_BOOKNAME)-SetReadOnly(false);/书籍名称(CEdit*)GetDlgItem(IDC_BOOKID)-SetReadOnly(false);/书籍条码(CEdit*)GetDlgItem(IDC_AUTHOR)-SetReadOnly(false);/作者(CEdit*)GetDlgItem(IDC_PRESS)-SetReadOnly(false);/出版社(CEdit*)GetDlgItem(IDC_PRESSDATE)-SetReadOnly(false);/出版日期(CEdit*)GetDlgItem(IDC_FLAG_BORROW)-SetReadOnly(false);/能否借阅/查询按钮消息映射函数void CBookMDlg:OnEnquery() /目的将表单中的控件的输入内容更新到所关联的变量上,让m_strBOOKNAMEQ和m_strBOOKIDQ获得输入直UpdateData(TRUE);m_strBOOKNAMEQ.TrimLeft();m_strBOOKIDQ.TrimLeft();/成员函数调用if(m_strBOOKNAMEQ.IsEmpty() & m_strBOOKIDQ.IsEmpty()/编辑框内容不能都为空MessageBox(要查询的书目不能为空!);return;/判断记录集是否打开,若打开则关闭if(m_rsDataSet.IsOpen() m_rsDataSet.Close();/指定查询条件 要先关闭记录集才能有效m_rsDataSet.m_strFilter.Format(BOOKNAME=%sORBOOKID=%s,m_strBOOKNAMEQ,m_strBOOKIDQ);/BOOKNAME是book表的字段名,用于指定查询条件 BOOKNAME=m_strBOOKNAMEQm_rsDataSet.Open(AFX_DB_USE_DEFAULT_TYPE);/m_rsDataSet.Open();/打开记录集m_rsDataSet.Requery(); if(!m_rsDataSet.IsEOF()/记录集没有结束 说明找到指定条件下的记录 否则没有对应记录 DisplayRecord();/显示刷新记录else MessageBox(没有查到你要找的书目记录!);/修改按钮消息映射函数void CBookMDlg:OnEdit() / TODO: Add your control notification handler code herem_bEdit = TRUE;/编辑标志位有效m_bAdd = FALSE;/添加标志位无效/撤销控件只读 可编辑/根据控件ID获取控件的句柄 指针指向成员函数撤销编辑框只读设置(CEdit*)GetDlgItem(IDC_BOOKNAME)-SetReadOnly(false);/书籍名称(CEdit*)GetDlgItem(IDC_BOOKID)-SetReadOnly(false);/书籍条码(CEdit*)GetDlgItem(IDC_AUTHOR)-SetReadOnly(false);/作者(CEdit*)GetDlgItem(IDC_PRESS)-SetReadOnly(false);/出版社(CEdit*)GetDlgItem(IDC_PRESSDATE)-SetReadOnly(false);/出版日期(CEdit*)GetDlgItem(IDC_FLAG_BORROW)-SetReadOnly(false);/能否借阅/删除按钮消息映射函数void CBookMDlg:OnDelete() / TODO: Add your control notification handler code hereCRecordsetStatus status;/记录指针位置m_rsDataSet.GetStatus(status);/获取记录指针所在位置m_rsDataSet.Delete();/删除当前记录if(status.m_lCurrentRecord=0)/判断删除后,当前指针位置m_rsDataSet.MoveNext();/else/记录指针位置在最后一条m_rsDataSet.MoveFirst();/指针指向第一条UpdateData(FALSE);/更新到关联变量DisplayRecord();/显示刷新记录/对话框初始化函数BOOL CBookMDlg:OnInitDialog() CDialog:OnInitDialog();/ TODO: Add extra initialization herem_bEdit = FALSE;/标志位失效m_bAdd = FALSE;/标志位失效/m_rsDataSet.m_strFilter.Format(BOOKNAME=%s OR BOOKID=%s,m_strBOOKNAMEQ,m_strBOOKIDQ);/打开数据库 如果打开失败返回假 并且提示if(!m_rsDataSet.Open(AFX_DB_USE_DEFAULT_TYPE) AfxMessageBox(数据打开失败!);DisplayRecord();/显示刷新记录/=登陆权限判别=CLibraryApp *app = (CLibraryApp *)AfxGetApp(); /生成指向应用程序类的指针 if(app-flag =1)/访问全局变量 判断是否为管理员 开放编辑权限/命令按钮权限开放GetDlgItem(IDC_NEW)-EnableWindow(true);/新建GetDlgItem(IDC_ENQUERY)-EnableWindow(true);/查询GetDlgItem(IDC_EDIT)-EnableWindow(true);/编辑GetDlgItem(IDC_DELETE)-EnableWindow(true);/
展开阅读全文