1、摘要:本设计运用C+语言编写一个书店图书信息管理系统,所用的数据库为Access。针对书店的实际需求,制定了图书信息管理系统,基本实现了图书基本信息的添加、删除、修改、查询等功能。通过该系统,使的图书管理工作系统化、规范化、自动化,从而达到了提高图书管理工作效率的目的。图书管理系统能够对图书基础信息查询、添加、修改等进行管理。及时了解各个环节中信息的变更。系统的总体任务是使书店管理人员可以轻松快捷地完成图书信息管理的任务。有利于提高管理效率。关键词:C+ Access 图书信息 管理效率 Bookstore Book Information Management SystemStudent N
2、ame: Long Ye Advisor: Yi Yu Abstract: This design using C + + language, a bookstore Library Information Management System database Access. Actual demand for the bookstore, to develop a library information management system, Basic Books Basic information to add, delete, modify, query and other functi
3、ons. The system, so that the library management systematize, standardization, automation, so as to achieve the purpose of improving library management efficiency. Library management system Book basic information query, add, modify and manage. To keep abreast of changes in every aspect of information
4、. The systems overall mission is to make the bookstore managers, can quickly and easily complete the task of Library and Information Management. Help to improve management efficiency. Key words: C+ Access Book Information Management efficiency目录1 引言11.1 课题背景11.2 图书信息管理系统概述11.3 C+的简介11.4 Access的简介22
5、需求分析32.1系统实现目标及功能32.2功能需求32.3可行性分析33 系统设计过程53.1设计原理53.2数据库设计53.3模块设计53.4详细设计63.4.1主函数及主界面63.4.2添加信息模块73.4.3查询信息模块83.4.4修改信息模块103.4.5删除信息模块114功能测试134.1登陆界面134.2主界面134.3各功能模块的实现145结束语16致谢17参考文献18附录19 隆 烨 图书信息信息管理系统 第 24页 共 24 页 1 引言 1.1 课题背景 随着计算机在我们的生活中越来越普及和计算机技术的飞速发展,计算机对人类的帮助越来越大,同时也大大减少了人类的工作量。也因
6、此人们也一直思考着怎样用计算机来简化日常生活中的一些工作。而人事管理问题在二十世纪末期是一个非常繁琐的问题,而到了二十一世纪,随着计算机信息管理技术的发展,计算机化的图书管理系统也已成为书店管理员一个不可或缺的工具。计算机信息管理技术的应用,除了能在相当大的程度上代替人工作业,从而减少人员工作量,减轻工作负担,减少工作中因人为原因而产生的错误从而避免不必要的损失外,更重要的是能建立准确畅通、简便的信息流通渠道,为工作提供所需要的准确、及时的信息以帮助做出正确而及时的选择与决定,从而给采用这门技术的单位带来了巨大的可见或不可见的利益与效益。 1.2 图书信息管理系统概述 图书信息管理系统是一个对
7、图书信息进行添加、删除、修改、查询等操作的管理应用软件,用户可以对文件中存储的图书信息进行查找和浏览,图书信息中包含书名、作者、价格、出版社等信息。该软件提供了一个简单的人机界面,管理员可以根据提示输入操作项并进行一系列对图书信息的管理操作。1.3 C+的简介C+由美国AT&T贝尔实验室的本贾尼斯特劳斯特卢普博士在20世纪80年代初期发明并实现(最初这种语言被称作“C with Classes”)。开始,C+是作为C语言的增强版出现的,从给C语言增加类开始,不断的增加新特性。虚函数(virtual function)、运算符重载(operator overloading)、多重继承(multi
8、ple inheritance)、模板(template)、异常(exception)、RTTI、命名空间(name space)逐渐被加入标准。1998年国际标准组织(ISO)颁布了C+程序设计语言的国际标准ISO/IEC 1988-1998。C+是具有国际标准的编程语言,通常称作ANSI/ISOC+。1998年是C+标准委员会成立的第一年,以后每5年视实际需要更新一次标准。C+0x最终国际投票已于2011年8月10日结束,并且所有国家都投出了赞成票,C+0x已经毫无疑义地成为正式国际标准。先前被临时命名为C+0x的新标准将被称为C+ 2011。C+ 2011将取代现行的C+标准ISO/IE
9、C 14882,它公开于1998年并于2003年更新,通称C+98以及C+03。国际标准化组织于2011年9月1日出版发布ISO/IEC 14882:2011,名称是:Information technology - Programming languages - C+ Edition: 3。1.4 Access的简介 Microsoft Office Access是微软把数据库引擎的图形用户界面和软件开发工具结合在一起的一个数据库管理系统。它是微软 OFFICE的一个成员, 在包括专业版和更高版本的office版本里面被单独出售。2010年5月12日,最新的微软Office Access 2
10、010在微软Office 2010里发布,微软Office Access 2007 是前一个版本。 MS ACCESS以它自己的格式将数据存储在基于Access Jet的数据库引擎里。它还可以直接导入或者链接数据(这些数据存储在其他应用程序和数据库)。 软件开发人员和数据架构师可以使用Microsoft Access开发应用软件,“高级用户”可以使用它来构建软件应用程序。和其他办公应用程序一样,ACCESS支持Visual Basic宏语言,它是一个面向对象的编程语言,可以引用各种对象,包括DAO(数据访问对象),ActiveX数据对象,以及许多其他的ActiveX组件。可视对象用于显示表和报
11、表,他们的方法和属性是在VBA编程环境下,VBA代码模块可以声明和调用Windows操作系统函数。 2 需求分析 需求分析是系统开发工作中最重要的环节之一,是系统分析的基础。全面调查是分析与设计的基础,需求分析工作量很大,所涉及的业务和人、数据、信息都非常多。因此,如何科学地组织和适当地着手展开这项工作是非常重要的。2.1系统实现目标及功能 图书信息管理系统是一个对图书信息进行录入、删除、修改、查找等操作的管理应用软件,用户可以对文件中存储的图书信息进行查找、添加、修改等,该软件提供了一个简单的人机界面,管理员可以根据提示输入操作项并进行一系列对图书信息的管理操作。通过调查分析研究,本系统主要
12、实现以下目标及功能:1系统架构清晰,界面友好美观。2详细全面记录并管理图书信息。3方便实用的数据查询功能。4对图书进行分类,方便管理。5设置系统登录,提高系统安全性。 2.2功能需求 图书信息管理系统需要满足来自两方面的需求,这两方面分别是书店管理员和图书购买者。图书购买者的需求是获得图书有关的信息,系统管理员的功能是对图书信息进行管理及系统状态的查询、添加、修改、删除等维护。用户可以根据本人用户名和密码登录系统。2.3可行性分析在可行性分析阶段我们要搞清问题的定义,能清楚的列举出目标系统存在的一些约束和限制,从而对技术可行性以及经济可行性、操作可行性和运行可行性三个方面进行分析研究。技术可行
13、性方面,进行本系统的开发需要用到的知识技术有:1、C+语言开发技术。2、Access数据库开发知识。以上知识技术是开发本系统所需要用到的,技术上是可行的。 经济可行性方面,开发此软件不需要大量的经费,由于是个人独立设计完成,可以节省许多费用。同时,开发该系统所需的相关资料可以通过已存在的相关系统进行调查和采集,所需的其他应用软件、硬件工具也易于获得。因此,降低了系统的开发成本。该系统针对的用户是书店管理员信息管理,书店引进使用本系统可以给书店带来很好的书店利益和社会效益,系统运行后可以为用户提高工作效率,提高保密性,节省劳动力。因此图书信息管理系统的开发是可行的。 在操作可行性上,本系统乃是一
14、个人机交互式的系统,系统的界面简洁友好,不需要深入的对其进行研究,很容易让人操作。系统用户只需登录到系统中,根据自己的权限和书店的具体要求就可对系统的一些相应信息进行操作了,如果在系统操作过程中实在还存在某些不解,可查找相关帮助信息进行理解。3 系统设计过程3.1设计原理 本系统主要应用结构化的设计图书信息的添加、删除、修改和查询等典型管理功能。各主要模块的数据均存储在文件中,因此包含对文件的读、写等基本操作。在软件开发过程中应用了高级语言程序设计中的基本控制结构,如选择、循环、顺序结构。系统的设计方法是结构化设计方法,采用C+语言进行开发。3.2数据库设计数据库内有用户表、客户信息表。数据库
15、名为:mem用户表(UserInfo)内容如表31所示。表31序号字段名数据类型中文说明备注1sUser文本用户名2sPwd文本密码图书信息表(book)内容如表32所示。表32序号字段名数据类型中文说明备注1bookName文本书名2bookAuthor文本作者3bookPrice文本价格4bookPress文本出版社3.3模块设计本系统设计分4个模块,分别为添加信息模块,查询信息模块,修改信息模块和删除信息模块,模块框图如图3.1所示。管理系统添加信息模块查询信息模块修改信息模块删除信息模块图3.1 模块框图 下面列出各模块功能。 添加信息模块:用于添加录入图书的各种信息,包括书名、作者、
16、价格、出版社等基本信息。 查询信息模块:该模块可以输入书名查询该图书的基本信息,还可以点击显示全部图书的信息。 修改信息模块:如有录入错误或者图书信息变更可用于修改图书的各种基本信息。 删除信息模块:该模块可以删除系统已有某个图书的所有信息。3.4详细设计3.4.1主函数及主界面首先设计出主函数,就有了程序的框架,有了主调用函数和主菜单,从主界面可以选择所要求的操作,使操作方便,易于进行查找、添加、修改、删除等功能。主函数代码如下。void CMainDlg:OnQuery() / TODO: Add your control notification handler code hereCQu
17、eryDlg dlg;dlg.DoModal();void CMainDlg:OnModify() / TODO: Add your control notification handler code hereCModifyDlg dlg;dlg.DoModal();void CMainDlg:OnAdd() / TODO: Add your control notification handler code hereCAddDlg adddlg;adddlg.DoModal();void CMainDlg:OnDelete() / TODO: Add your control notific
18、ation handler code hereCDeleteDlg deletedlg;deletedlg.DoModal();3.4.2添加信息模块系统管理员通过此模块可以在原有记录的基础上随意的添加图书信息。模块主要代码如下。void CAddDlg:OnAddOK() / TODO: Add your control notification handler code hereUpdateData(); /更新窗口。BOOL bAdd = FALSE;CCustomerInfo m_set;if(m_addName !=)|(m_addAuthor !=)|(m_addPrice !=)
19、|(m_addPress !=) if(m_set.IsOpen() | m_set.Open() /判断数据库是否打开m_set.AddNew();m_set.m_bookAuthor = m_addAuthor;m_set.m_bookName = m_addName;m_set.m_bookPress = m_addPress;m_set.m_bookPrice = m_addPrice;m_set.Update(); /数据库更新bAdd = TRUE;/m_set.Close();if(bAdd)MessageBox(图书信息添加成功!);elseMessageBox(图书信息不能为
20、空!);m_addName =;m_addAuthor =;m_addPrice =;m_addPress =;UpdateData(FALSE);3.4.3查询信息模块如果信息太多查找起来很不方便,对此我们系统设计了查找模块,使用户可以很方便的找到自己需要的信息。本模块可通过输入图书书名进行查找,之后系统会显示其所有的信息。输入信息不存在则不显示。通过此模块用户还可以查询系统中所有图书的信息。模块主要代码如下。void CQueryDlg:OnChangeInput() / TODO: If this is a RICHEDIT control, the control will not/
21、send this notification unless you override the CDialog:OnInitDialog()/ function and call CRichEditCtrl().SetEventMask()/ with the ENM_CHANGE flag ORed into the mask./ TODO: Add your control notification handler code hereUpdateData();m_output = ;CCustomerInfo m_set;if(m_input != )m_set.Open();m_set.m
22、_strFilter= bookName = + m_input + ;m_set.Requery();while(!m_set.IsEOF()m_output +=书名: + m_set.m_bookName + rn + 作者: + m_set.m_bookAuthor + rn +价格:+ m_set.m_bookPrice + rn +出版社: + m_set.m_bookPress + rn + rn;m_set.MoveNext();UpdateData(FALSE);void CQueryDlg:OnShow() / TODO: Add your control notifica
23、tion handler code hereUpdateData();m_output = ;CCustomerInfo m_set;m_set.Open();m_set.m_strFilter = ;m_set.Requery();while(!m_set.IsEOF() m_output +=书名: + m_set.m_bookName + rn + 作者: + m_set.m_bookAuthor + rn +价格:+ m_set.m_bookPrice + rn +出版社: + m_set.m_bookPress + rn + rn;m_set.MoveNext();UpdateDat
24、a(FALSE);3.4.4修改信息模块考虑到有些信息可能会发生变动,该系统设置了修改模块,如果某个图书的信息或其它发生变动,管理员可以通过此模块对该图书的其他信息进行修改。模块主要代码如下。void CModifyDlg:OnModifyok() / TODO: Add your control notification handler code hereUpdateData(); /更新窗口。if(m_modifyName = )AfxMessageBox(修改图书名不能为空);if(m_modifyName !=)|(m_modifyAuthor !=)|(m_modifyPrice !
25、=)|(m_modifyPress !=)CCustomerInfo m_set;if(m_set.IsOpen() | m_set.Open() /判断数据库是否打开m_set.m_strFilter = bookName = + m_modifyName + ;m_set.Requery();if(m_set.IsEOF()MessageBox(图书不存在,请重新输入!);elsem_set.Edit();/m_set.m_name=m_modifyname;m_set.m_bookAuthor = m_modifyAuthor;m_set.m_bookPrice = m_modifyPr
26、ice;m_set.m_bookPress = m_modifyPress;m_set.Update(); /数据库更新MessageBox(修改成功!);UpdateData(FALSE);3.4.5删除信息模块管理员通过这块模块可以对不需要的客户信息进行删除,使用方便,只需要输入所要删除的客户名称即可,系统会自动搜索,确定删除后此客户的所有信息消失。模块主要代码如下。void CDeleteDlg:OnDeleteOK() / TODO: Add your control notification handler code hereUpdateData();BOOL dBool = FAL
27、SE;CCustomerInfo m_set;if(m_deleteName = )MessageBox(输入删除数据不能为空,请重新输入);if(m_deleteName != )m_set.Open();m_set.m_strFilter.Format(sName like %s%, m_deleteName);m_set.Requery();if(!m_set.IsEOF()m_set.Delete();m_set.MoveNext();dBool = TRUE;else MessageBox(您输入的书名不存在!);dBool = FALSE;if(dBool)MessageBox(删
28、除成功!);m_deleteName=;UpdateData(FALSE);void CDeleteDlg:OnCancel() / TODO: Add extra cleanup hereCDialog:OnCancel();4功能测试该程序实现了图书信息管理系统应有的基本功能,即系统添加功能、查询信息功能、修改功能和删除功能。4.1登陆界面 程序运行出现登陆界面,要求用户输入用户名和密码,当用户名和密码均正确时才能进入系统,如图4.1所示。图 4.1登陆界面4.2主界面 用户登陆系统以后,将出现主界面,用户可以选择要执行的操作,如图4.2所示。图4.2 主界面4.3各功能模块的实现 各功能
29、的实现均与设计对话框相符合,如添加信息功能,当用户选择该项时,会弹出添加信息对话框,用户可以进行添加,修改,删除以及查询等操作,添加信息界面如图4.3所示。图4.3添加信息对话框 输入用户要查询的图书名,系统自动显示该图书的信息。查询信息界面如图4.4所示。图4.4查询信息管理对话框其他功能也都一一实现,完成了该系统的功能要求,运行截图略去。5结束语 这次的方向综合程序设计有效的培养了学生独立思考的能力,提高了学生的动手操作水平。在具体操作中,巩固了学生所学的的理论知识,这也是课程设计的基本目的。通过实际操作,学会了C+语言程序编程的基本步骤、基本方法,开发了自己的逻辑思维能力,培养了分析问题
30、、解决问题的能力。培养了独立思考问题的能力,提高了实际操作水平。通过这次对书店图书信息管理系统的设计,我们了解了C+语言程序设计的思想,我们的程序很实用,但它依然有许多不足之处,我所编译的程序容量有限,而且每次操作都要回到主界面,在这方面该系统还有待于进一步优化。C+语言是一种基础的计算机高级语言,具有功能丰富,表达能力强,使用灵活方便,应用面广,目标程序效率高,通过这次的C+语言程序设计更加深刻的了解了C+语言的好处和其可用性。在这次课程设计中我也知道了自己的动手能力不强,有待于进一步提高。在设计过程中不能够灵活得把书本上的知识与实际相结合,在调试过程中一次次出错,但是在同组同学的帮助、鼓励
31、和配合下,最终我完成了此次课程设计的任务。这也使我重新树立了自信心,相信自己可以做好,但是要扎实掌握理论知识,灵活运用。总之,通过这次实习我认识到了自己许多不足之处,在今后的学习生活中,一定要勤于思考,扎实掌握理论知识,灵活运用课上所学。 致谢 在这次课程设计中,我通过查找书本和上网搜索,努力地克服了一些困难,解决了一些问题,还有不懂的就与同学讨论,向同学请教,最后做出了这个课程设计。在这个过程中,我学到了不少东西,提高了动手能力,收获了自信,同时也意识到自己和本班优秀同学的巨大差距,但差距是可以通过努力来缩小的,所以我要加倍地努力去学习。 在此我感谢易老师的悉心指导,同时我也非常感谢班上同学
32、的帮助。你们在我遇到困难之际给了我很大的帮助和鼓励,最后希望易老师给我更多意见,我一定会继续努力,争取得到更大的提高。参考文献1谭浩强.C+程序设计M.北京:清华大学出版社, 20052谭浩强.C程序设计M.北京:清华大学出版社, 20053杨路明.C语言程序设计教程M.北京:北京邮电大学出版社, 20054谭浩强.C程序设计解题与上机指导M.北京:清华大学出版社,19995Stephen C.Dewhurst.C+语言99个常见编程错误M.清华大学出版社,2009附录/ 程序作者:隆烨/ 最后修改日期:2012-9-26void CMainDlg:OnQuery() / TODO: Add
33、your control notification handler code hereCQueryDlg dlg;dlg.DoModal();void CMainDlg:OnModify() / TODO: Add your control notification handler code hereCModifyDlg dlg;dlg.DoModal();void CMainDlg:OnAdd() / TODO: Add your control notification handler code hereCAddDlg adddlg;adddlg.DoModal();void CMainD
34、lg:OnDelete() / TODO: Add your control notification handler code hereCDeleteDlg deletedlg;deletedlg.DoModal();void CAddDlg:OnAddOK() / TODO: Add your control notification handler code hereUpdateData(); /更新窗口。BOOL bAdd = FALSE;CCustomerInfo m_set;if(m_addName !=)|(m_addAuthor !=)|(m_addPrice !=)|(m_a
35、ddPress !=) if(m_set.IsOpen() | m_set.Open() /判断数据库是否打开m_set.AddNew();m_set.m_bookAuthor = m_addAuthor;m_set.m_bookName = m_addName;m_set.m_bookPress = m_addPress;m_set.m_bookPrice = m_addPrice;m_set.Update(); /数据库更新bAdd = TRUE;/m_set.Close();if(bAdd)MessageBox(图书信息添加成功!);elseMessageBox(图书信息不能为空!);m
36、_addName =;m_addAuthor =;m_addPrice =;m_addPress =;UpdateData(FALSE);void CQueryDlg:OnChangeInput() / TODO: If this is a RICHEDIT control, the control will not/ send this notification unless you override the CDialog:OnInitDialog()/ function and call CRichEditCtrl().SetEventMask()/ with the ENM_CHANG
37、E flag ORed into the mask./ TODO: Add your control notification handler code hereUpdateData();m_output = ;CCustomerInfo m_set;if(m_input != )m_set.Open();m_set.m_strFilter= bookName = + m_input + ;m_set.Requery();while(!m_set.IsEOF()m_output +=书名: + m_set.m_bookName + rn + 作者: + m_set.m_bookAuthor +
38、 rn +价格:+ m_set.m_bookPrice + rn +出版社: + m_set.m_bookPress + rn + rn;m_set.MoveNext();UpdateData(FALSE);void CQueryDlg:OnShow() / TODO: Add your control notification handler code hereUpdateData();m_output = ;CCustomerInfo m_set;m_set.Open();m_set.m_strFilter = ;m_set.Requery();while(!m_set.IsEOF() m
39、_output +=书名: + m_set.m_bookName + rn + 作者: + m_set.m_bookAuthor + rn +价格:+ m_set.m_bookPrice + rn +出版社: + m_set.m_bookPress + rn + rn;m_set.MoveNext();UpdateData(FALSE);void CModifyDlg:OnModifyok() / TODO: Add your control notification handler code hereUpdateData(); /更新窗口。if(m_modifyName = )AfxMess
40、ageBox(修改图书名不能为空);if(m_modifyName !=)|(m_modifyAuthor !=)|(m_modifyPrice !=)|(m_modifyPress !=)CCustomerInfo m_set;if(m_set.IsOpen() | m_set.Open() /判断数据库是否打开m_set.m_strFilter = bookName = + m_modifyName + ;m_set.Requery();if(m_set.IsEOF()MessageBox(图书不存在,请重新输入!);elsem_set.Edit();/m_set.m_name=m_modifyname;m_set.m_bookAuthor = m_modifyAuthor;m_set.m_bookPrice = m_modifyPrice;m_set.m_bookPress = m_modifyPress;m_set.Update(); /数据库更新MessageBox(修改成功!);UpdateD