还剩78页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
课程设计报告课程名称面向对象程序设计C++设计题目图书管理系统专业计算机科学与技术姓名学号指导教师李晓虹2015年1月10日
一、系统需求分析
1.1系统介绍图书馆管理系统对加强图书馆管理有着极其重要的作用随着图书的日益增多,传统的手工图书馆管理不仅工作量大,而且容易出现问题图书馆管理设计的内容非常复杂而且繁多,比如拥有图书信息录入管理、读者信息管理管理、图书借阅和归还管理,图书的查询和修改等经过对我校详细调查,并多次与负责图书管理的老师进行研讨后,加深了对现行图书管理业务的深刻了解,与此同时,将整个图书管理的业务流程抽象描述如下新的图书购进后,分门别类地进行归并并汇总,加以编号新书编号后,上到书架以备学生借阅如某学生需要借阅图书,则在其本人的借阅登记表上进行登记,记录相关借阅信息与借阅日期,同时相应图书应减少所借出的数目,尽管该书只剩下零本,也能查询到该书的信息学生借阅图书后,应及时归还图书,并在本人的借阅登记表上注明还书日期和时间根据以上调查分析,可以给出其现行业务流程图如图所#0;新图书库存图书入库已借出的图书读者借阅分类、编号归还的图书归还图书归还的图书分类整理入库新图书
1.2系统面向的用户群体本图书管理系统面向的用户群体为本校的师生全体系统能帮助图书馆管理工作者进行大量业务处理工作用计算机进行简单操作以实现全面现代化管理且该系统对用户来说操作简单,并且容易学习和掌握
1.3系统的功能性需求
1.
3.1系统功能需求分析图书馆管理系统对加强图书馆管理有着极其重要的作用随着图书的日益增多,传统的手工图书馆管理不仅工作量大,而且容易出现问题图书馆管理设计的内容非常复杂而且繁多,比如拥有图书信息录入管理、读者信息管理管理、图书借阅和归还管理,图书的查询和修改等 由于系统主要是为方便管理定制开发的,因此针对图书馆管理的实际工作而言,经过了反复地论证,最终确定了图书馆管理系统的设计方案,图书馆管理系统的主要功能为1.图书管理包括图书类别管理和图书信息管理两部分其中,图书类别管理包括添加图书类别、修改图书类别等;图书信息管理包括图书信息的添加、图书信息的修改,图书信息的查询、图书信息的删除等 2.读者管理包括读者类别管理和读者信息管理两部分其中,读者类别管理包括添加读者类别、修改读者类别等;读者信息管理包括添加读者信息、修改读者信息、读者信息、查询读者信息等 3.借阅管理包括借书信息管理和还书信息管理两部分其中,借书信息管理包括借书信息的添加、借书信息的修改、借书信息的查询等;还书信息管理部分包括还书的添加、还书信息的修改、还书信息的查询等
4. 系统管理包括修改系统用户密码、增加新用户以及退出系统等
1.
3.2系统的功能模块划分
(1)系统管理模块: 设置系统管理人员系统初始设置一个用户名和密码,操作人员可利用这个用户名和密码登录后,设置其他的管理员用户名
(2)图书管理模块a图书信息编辑子模块 图书信息编辑子模块主要完成对图书馆内的所有图书信息进行图书分类,添加图书,修改图书信息,删除图书信息等当图书馆购进新书后需要对数据库中的图书表进行维护添加当图书馆内的现有图书数量等发生了变化时需要对现有图书数据库中的信息进行修改和删除一些记录对图书数据库进行维护的字段包括图书编号、书名、作者、类别、出版社、价格、总库存量、剩余量、入库日期等 b)图书基本信息的查询子模块 图书馆中的书数以万计,想了解图书藏在哪里,馆内现在书的状态包括库存量和剩余量,图书的作者,出版社等信息是我们在借书时经常想知道的,传统的手工方法显然无法快速准确的获得这些信息,而通过计算机管理优势就十分明显,可以通过图书编号,书名,作者,出版社,类别等快速获得我们想了解的信息比如,通过图书编号就可以知道该书大致藏在哪里在不知道图书编号的时候可以通过书名或者作者,或者出版社,类别等快速查询出我们需要的图书相关的编号等信息系统的查询包括单项查询和多项查询,查询的字段包括图书编号、书名、作者、出版社、类别等3读者管理模块 a)读者信息编辑子模块 读者信息编辑子模块主要完成对在图书馆内的所有读者信息进行添加读者信息,修改读者信息,删除读者信息等当新的读者时需要对数据库中的读者表进行维护添加当现有读者基本信息比如联系方式等发生了变化时需要对现有读者数据库中的信息进行修改和删除一些记录对读者数据库进行维护的字段包括读者编号、性别、姓名、类别、身份证号、办证日期、证有效期、工作单位、E-mail、联系电话等 b)读者基本信息的查询子模块 由于图书借出后有的图书经常超期,及时通知读者了解读者信息读者借书时是严格对读者和借书的图书作了登记的,所以当出现借出的书超期没有归还时可以通过超期的借书证号来进入本子模块就可以快速查询读者的联系方式等信息系统的查询包括单项查询和多项查询,查询的字段包括编号、姓名、类别等4图书借出信息模块 a)图书借出信息编辑子模块 图书被读者借出时系统都对图书编辑记录书的信息,便于对整个馆内的图书有一个详尽的了解和信息的备份以及以后的该书整个外借的情况记录借书的信息包括图书编号,借书证号,借出日期,应归还日期,借出状态其中除图书编号和借书证号外其它的信息不需管理员输入,计算机自动完成,借书日期记录当前日期,应归还的日期记录在当前日期情况下加上设定的最多外借时间比如30天后的日期当然该子模块也可以完成对这些信息的修改和删除来达到可以对数据库信息进行有效性的维护比如输入的借书证号粗心输入错误就可以来通过该模块来修改该记录信息 b)图书借出信息查询模块 由于图书借出后有的图书经常超期以及需要了解图书借出的其它信息所以就需要对图书的借书信息进行查询,系统的查询包括单项查询和多项查询,查询的字段包括读者编号、读者姓名、图书编号、图书类别等 5图书归还管理信息模块: 图书归还时,管理员需要了解书是否出现借书时间超期想了解这些信息首先需要对图书借出数据库进行查找定位图书编号的记录来获得图书的相关借书信息获得这些信息后,就可以将信息添加到图书归还管理数据库表中当出现超期图书管理员还需根据规定收起对学生的罚金添加的信息包括归还的图书编号、读者的编号、罚款金额、罚款日期、管理员姓名等
2、总体设计硬件环境个人PC软件环境1WindowsXP或Windows7及以上的操作系统;2首先本系统采用的是C/S开发模式因此,MicrosoftVisualC++
6.0,这是本系统所采用的编译器,是一款很实用的C++编译软件,图书馆管理系统数据库采用的是SQLServer2008数据库,这是一款微软提供的功能比较全的数据库,visualc++连接SQLServer2008数据库之后便可以实现数据的交互C++开发方式为c++中MFC连接SQLServer2008方式,所以对用户的友好度那是相当的高
三、详细设计
3.1用户界面需求设计图书馆管理系统提供简单、层次关系明了、清晰的操作界面,使用户一目了然尽可能的为用户的录入、查询等功能操作提供方便快捷按钮的创建也是非常需要的,以方便用户操作该系统的界面有1用户登陆界面2学生界面
(3)注册介面
(4)管理员界面
(5)图书借阅界面等
3.2数据需求设计图书信息(book_info)图书编号+书名+书号+图书类别+作者+出版社+出版时间+单价+入库时间+图书状态读者信息reader_info用户Id+姓名+性别+读者类别+院系班级+已借书目信息+借书数已借书目信息borrowed_book图书编号+书名+书号+图书类别+作者+出版社+出版时间+单价
3.3系统的性能需求设计为了保证系统能够长期、安全、稳定、可靠、高效的运行,图书管理系统应该满足以下的性能需求 1.系统处理的准确性和及时性 系统处理的准确性和及时性是系统的必要性能在系统设计和开发过程中,要充分考虑系统当前和将来可能承受的工作量,使系统的处理能力和响应时间能够满足对信息处理的需求 2.系统的开放性和系统的可扩充性 图书馆管理系统在开发过程中,应该充分考虑以后的可扩充性例如用户查询的需求也会不断的更新和完善所有这些,都要求系统提供足够的手段进行功能的调整和扩充而要实现这一点,应通过系统的开放性来完成,既系统应是一个开放系统,只要符合一定的规范,可以简单的加入和减少系统的模块,配置系统的硬件通过软件的修补、替换完成系统的升级和更新换代 3.系统的易用性和易维护性 图书馆管理系统是直接面对使用人员的,而使用人员往往对计算机并不时非常熟悉这就要求系统能够提供良好的用户接口,易用的人机交互界面要实现这一点,就要求系统应该尽量使用用户熟悉的术语和中文信息的界面;针对用户可能出现的使用问题,要提供足够的在线帮助,缩短用户对系统熟悉的过程 4.系统的标准性 系统在设计开发使用过程中都要涉及到很多计算机硬件、软件所有这些都要符合主流国际、国家和行业标准 5.系统的先进性 目前计算系统的技术发展相当快,做为图书馆管理系统工程,在系统的生命周期尽量做到系统的先进,充分完成企业信息处理的要求而不至于落后这一方面通过系统的开放性和可扩充性,不断改善系统的功能完成另一方面,在系统设计和开发的过程中,应在考虑成本的基础上尽量采用当前主流并先进且有良好发展前途的产品 6.系统的响应速度 图书馆管理系统系统在日常处理中的响应速度为秒级,达到实时要求,以及时反馈信息在进行统计分析时,根据所需数据量的不同而从秒级到分钟级原则是保证操作人员不会因为速度问题而影响工作效率
3.4安全保密要求设计用户进入自己系统要进行注册和登录,并有用户名和密码对用户的个人信息进行保护,其中用户可以自行修改自己的密码等用户只能自己修改密码或者其他信息,其他人则不能修改安全性要求系统应设置访问用户的标识以鉴别是否是合法用户,并要求合法用户设置其密码,保证用户身份不被盗用;系统应对不同的数据设置不同的访问级别,限制访问用户可查询和处理数据的类别和内容;系统应对不同用户设置不同的权限,区分不同的用户,如区分普通用户(学生),管理员完整性要求各种信息记录的完整性,信息记录内容不能为空;各种数据间相互的联系的正确性;相同的数据在不同记录中的一致性
3.5资源分析设计本系统的开发是学生的课程设计作业,所用到的资源较为简单,可以再自己的个人电脑上完成开发,用到的开发软件是VisualC++
6.0,用到的数据库是SQLSserver2008基于这些资源本系统的开发可以顺利完成
3.6结构化分析与设计
3.
6.
1.结构化分析方法结构化方法总的指导思想是自顶向下,逐步求精,其基本原则是抽象与分解结构化方法是分析,设计到实现都使用结构化思想的软件开发方法,实际上由三部分组成结构化分析,结构化设计和结构化程序设计任何程序都由程序结构,选择结构和循环结构三种基本结构组成结构化方法具有以下特点
(1)开发方法使用最早,使用时间最长
(2)应用最广泛,特别适用于自动控制及程序控制等数据处理方面
(3)相应的支持工具多,发展较为成熟,快速,自然和方便结构化分析步骤
(1)构建原系统物理模型
(2)抽象原系统逻辑模型
(3)建立新系统逻辑模型
(4)进一步补充和优化优缺点优点是简单实用成熟,适合于瀑布模型,易于开发者掌握,成功率较高,仅次于面向对象的方法缺点是不太适应规模大的复杂项目,难以解决软件重用问题,较难适应需求变化,难以彻底解决维护问题
3.
6.2相关的图的设计
3.3数据字典数据字典是关于数据库中数据的描述,即元数据,而不是数据本身数据本身将存放在物理数据库中,由数据库管理系统管理数据字典有助于这些数据的进一步管理和控制,为设计人员和数据库管理员在数据库设计、实现和运行阶段控制有关数据提供依据数据项名图书库别名Book描述记录所有图书的基本信息定义图书信息=图书编号+图书名称+ISBN号+类别+作者+出版社+出版时间+价格+图书总数+库存量+借出量+入库时间输入数据图书编号、图书名称输出数据图书信息名称借书登记表别名Borrow描述记录所有借出图书的借阅情况定义借书信息=读者编号+读者类别+图书编号+图书类别+图书名称+作者+出版社+借出日期+应还日期输入数据读者编号、图书编号输出数据借书信息名称归还图书登记表别名Return描述记录所有已归还图书的归还情况定义归还信息=读者编号+读者类别+图书编号+图书类别+图书名称+作者+出版社+借出日期+应还日期+实还日期+罚款输入数据读者编号、图书编号输出数据归还信息名称管理员信息表别名Administrator描述记录管理员信息定义管理员信息=管理员ID+管理员名称+管理员密码输入数据管理员ID输出数据管理员信息名称读者信息表别名Reader描述记录所有读者的基本情况定义读者信息=读者编号+姓名+性别+类别+联系方式输入数据读者编号输出数据读者信息
3.4结构图设计结构化设计方法中用结构图(structurechart来描述软件系统的体系结构,指出一个软件系统由哪些模块组成,以及模块之间的调用关系本图书管理系统的模块结构图如下图所示
3.5E-R图设计
1.读者E-R图读者姓名学号性别联系方式读者编号所在系
3.
5.1图读者E-R图
2.图书库E-R图图书库图书名称ISBN号类别出版社图书编号作者出版时间价格图书总量借出量入库时间
3.
5.2图书库E-R图
3.管理员E-R图管理员管理员ID管理员名称管理员密码
3.
5.3管理员E-R图
4.总体E-R图管理员读者m图书库借阅登记归还登记m11管理员ID管理员名称管理员密码图书名称出版社作者出版时间图书名称图书类别读者类别图书编号作者借出日期应还日期作者出版社罚款读者编号应还日期出版社价格实还日期读者编号读者类别图书类别图书名称图书编号借出日期图书总量借出量入库时间ISBN号类别图书编号姓名学号性别联系方式读者编号所在系图
3.
5.4总体E-R图
4、测试
4.1测试范围与主要内容测试范围主要内容概要说明系统登录验证验证用户身份以及确定用户权限,测试数据以及代码的正确性功能性测试添加图书信息功能测试测试添加图书进入数据库的准确性功能性测试查询图书信息功能测试测试用户对图书查找的准确性功能性测试修改图书信息功能测试测试管理员对图书信息修改的准确性功能性测试添加读者信息功能测试测试管理员添加读者入库的准确性功能性测试查询读者信息功能测试测试管理员对读者查找的准确性功能性测试修改读者信息功能测试测试管理员对读者信息修改的准确性功能性测试借阅图书功能测试测试图书借阅登记的准确性功能性测试借阅信息查询功能测试测试图书借阅信息查询的准确性功能性测试归还图书功能测试测试图书归还登记的准确性功能性测试归还信息查询功能测试测试图书归还信息查询的准确性功能性测试
4.2测试用例
4.
2.1用例一项目图书管理系统功能模块名管理员登录模块功能特性管理员身份验证测试目的验证是否输入合法的信息,允许合法登录,阻止非法登录测试数据用户名=admin密码=1身份=管理员操作步骤操作描述数据期望结果实际结果测试状态1输入用户名和密码,并选择登录的身份输入用户名和密码用户名=admin密码=1选择管理员登录显示进入后的页面同期望结果正常2输入用户名和密码,并选择登录的身份输入用户名和密码用户名=admin1密码=1选择管理员登录显示警告信息“用户名输入有误,请重新输入!”同期望结果正常3输入用户名和密码,并选择登录的身份输入用户名和密码用户名=admin1密码=123选择管理员登录显示警告信息“密码输入有误,请重新输入!”同期望结果正常
4.
2.
2、用例二项目图书管理系统功能模块名用户查询图书信息模块功能特性用户可以查询所需图书的全部信息测试目的验证是否输入正确的图书信息,如果正确,则显示图书情况;如果不正确,则显示错误信息测试数据书名=B22304561书名=软件工程类别=计算机作者=钱乐秋出版社=清华大学出版社操作步骤操作描述数据期望结果实际结果测试状态1输入书号,按“查询”按钮书号=B22304561显示图书信息同期望结果正常2输入书号,按“查询”按钮书号=Q22304561查询结果为空同期望结果正常3输入书名,按“查询”按钮书名=软件工程显示图书信息同期望结果正常4输入书名,按“查询”按钮书名=数学查询结果为空同期望结果正常5输入类别,按“查询”按钮类别=计算机显示图书信息同期望结果正常6输入类别,按“查询”按钮类别=外语查询结果为空同期望结果正常7输入作者,按“查询”按钮作者=钱乐秋显示图书信息同期望结果正常8输入作者,按“查询”按钮作者=张三查询结果为空同期望结果正常9输入出版社,按“查询”按钮出版社=清华大学出版社显示图书信息同期望结果正常10输入出版社,按“查询”按钮出版社=工业出版社机械查询结果为空同期望结果正常
4.
2.
3、用例三项目图书管理系统功能模块名添加读者信息模块功能特性管理员可以添加读者信息测试目的验证是否输入正确的读者信息,如果正确,则添加读者信息;如果不正确,则显示错误信息测试数据读者编号=123姓名=a性别=女类别=学生联系方式=18883398888(已有信息)读者编号=124姓名=b性别=男类别=老师联系方式=18883398999(未有信息)操作步骤操作描述数据期望结果实际结果测试状态1输入新的读者信息读者编号=123姓名=a性别=女类别=学生联系方式-18883398888显示警告信息“读者编号已存在,添加失败!”同期望结果正常2输入新的读者信息读者编号=124姓名=b性别=男类别=教职工联系方式-18883398999显示信息“成功添加一条记录!”同期望结果正常
4.
2.
3、用例四项目图书管理系统功能模块名修改读者信息模块功能特性管理员可以修改读者信息测试目的验证读者信息是否有效,如果有效,则更新读者信息;如果不正确,则显示错误信息测试数据读者编号=123姓名=a性别=女类别=学生联系方式=18883398888操作步骤操作描述数据期望结果实际结果测试状态1输入读者编号,按“查询”按钮读者编号=124显示警告信息“读者编号有误或不存在!”同期望结果正常2输入读者编号,按“查询”按钮读者编号=123显示读者信息同期望结果正常3查询操作之后,修改姓名,按“确认”按钮姓名=空显示警告信息“请输入完整的读者信息!”同期望结果正常4查询操作之后,修改姓名,按“确认”按钮姓名=c更新读者信息成功同期望结果正常
4.
2.
4、用例五功能特性读者借书测试目的验证是否输入有效的读者编号和图书编号,如果有效且图书余数不为0,则办理借书;如果无效,则显示错误信息测试数据读者编号=123图书编号=B21338745操作步骤操作描述数据期望结果实际结果测试状态1输入图书编号与读者编号,按“确定”按钮图书编号=Q12345678读者编号=123显示警告信息“图书编号有误或不存在!”同期望结果正常2输入图书编号与读者编号,按“确定”按钮图书编号=B21338745读者编号124显示警告信息“读者编号有误或不存在!”同期望结果正常3输入图书编号与读者编号,按“确定”按钮图书编号=B21338745读者编号=123显示信息正确同期望结果正常4输入图书编号与读者编号,按“确定”按钮图书编号=Q12345678读者编号=124显示警告信息“读者编号与图书编号有误或不存在!”同期望结果正常5读者编号与图书编号都存在时按“借阅”按钮,若图书余数!=0图书编号=B21338745读者编号=123显示借阅成功同期望结果正常6读者编号与图书编号都存在时按“借阅”按钮,若图书余量=0图书编号=B21338745读者编号=123显示警告信息“该图书已被借完”同期望结果正常
4.
3、运行截图
1.登录界面2首页
3.用户管理界面
4.图书类型设置界面
5.读者类型设置
6.借书界面
7.还书查询
8.新书登记
9.图书信息查询
5、主要源代码//BookInfoSet.cpp:implementationfile//#includestdafx.h#includeLibrary.h#includeBookInfoSet.h#ifdef_DEBUG#definenewDEBUG_NEW#undefTHIS_FILEstaticcharTHIS_FILE[]=__FILE__;#endif///////////////////////////////////////////////////////////////////////////////CBookInfoSetIMPLEMENT_DYNAMICCBookInfoSetCRecordsetCBookInfoSet::CBookInfoSetCDatabase*pdb:CRecordsetpdb{//{{AFX_FIELD_INITCBookInfoSetm_code=_T;m_name=_T;m_type=_T;m_press=_T;m_writer=_T;m_price=_T;m_isBorrow=FALSE;m_reader_code=_T;m_brief=_T;m_nFields=10;//}}AFX_FIELD_INITm_nDefaultType=snapshot;}CStringCBookInfoSet::GetDefaultConnect{return_TODBC;DSN=LibraryDB;}CStringCBookInfoSet::GetDefaultSQL{return_T[bookInfo];}voidCBookInfoSet::DoFieldExchangeCFieldExchange*pFX{//{{AFX_FIELD_MAPCBookInfoSetpFX-SetFieldTypeCFieldExchange::outputColumn;RFX_TextpFX_T[code]m_code;RFX_TextpFX_T[name]m_name;RFX_TextpFX_T[type]m_type;RFX_TextpFX_T[press]m_press;RFX_TextpFX_T[writer]m_writer;RFX_TextpFX_T[price]m_price;RFX_DatepFX_T[in_date]m_in_date;RFX_BoolpFX_T[isBorrow]m_isBorrow;RFX_TextpFX_T[reader_code]m_reader_code;RFX_TextpFX_T[brief]m_brief;//}}AFX_FIELD_MAP}///////////////////////////////////////////////////////////////////////////////CBookInfoSetdiagnostics#ifdef_DEBUGvoidCBookInfoSet::AssertValidconst{CRecordset::AssertValid;}voidCBookInfoSet::DumpCDumpContextdcconst{CRecordset::Dumpdc;}#endif//_DEBUG//BookLostDlg.cpp:implementationfile//#includestdafx.h#includeLibrary.h#includeBookLostDlg.h#ifdef_DEBUG#definenewDEBUG_NEW#undefTHIS_FILEstaticcharTHIS_FILE[]=__FILE__;#endif///////////////////////////////////////////////////////////////////////////////CBookLostDlgdialogCBookLostDlg::CBookLostDlgCWnd*pParent/*=NULL*/:CDialogCBookLostDlg::IDDpParent{//{{AFX_DATA_INITCBookLostDlgm_strCode=_T;//}}AFX_DATA_INIT}voidCBookLostDlg::DoDataExchangeCDataExchange*pDX{CDialog::DoDataExchangepDX;//{{AFX_DATA_MAPCBookLostDlgDDX_ControlpDXIDC_LIST1m_ctrList;DDX_TextpDXIDC_EDIT_BOOK_CODEm_strCode;//}}AFX_DATA_MAP}BEGIN_MESSAGE_MAPCBookLostDlgCDialog//{{AFX_MSG_MAPCBookLostDlgON_BN_CLICKEDIDC_BUTTON_LOSTOnButtonLostON_BN_CLICKEDIDC_BUTTON_ALLOnButtonAllON_NOTIFYNM_CLICKIDC_LIST1OnClickList1//}}AFX_MSG_MAPEND_MESSAGE_MAP///////////////////////////////////////////////////////////////////////////////CBookLostDlgmessagehandlersBOOLCBookLostDlg::OnInitDialog{CDialog::OnInitDialog;//设置列表m_ctrList.InsertColumn0图书编号;m_ctrList.InsertColumn1图书名称;m_ctrList.InsertColumn2图书类别;m_ctrList.InsertColumn3作者;m_ctrList.InsertColumn4出版社;m_ctrList.InsertColumn5图书价格;m_ctrList.InsertColumn6登记日期;m_ctrList.InsertColumn7备注说明;m_ctrList.SetColumnWidth060;m_ctrList.SetColumnWidth1120;m_ctrList.SetColumnWidth280;m_ctrList.SetColumnWidth380;m_ctrList.SetColumnWidth480;m_ctrList.SetColumnWidth580;m_ctrList.SetColumnWidth680;m_ctrList.SetColumnWidth780;m_ctrList.SetExtendedStyleLVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES;returnTRUE;//returnTRUEunlessyousetthefocustoacontrol//EXCEPTION:OCXPropertyPagesshouldreturnFALSE}voidCBookLostDlg::OnButtonLost{//TODO:AddyourcontrolnotificationhandlercodehereUpdateData;ifm_strCode.IsEmpty{AfxMessageBox请输入待挂失的图书编号!;return;}CStringstrSQL;strSQL.Formatselect*frombookInfowherecode=%sm_strCode;if!m_recordset.OpenAFX_DB_USE_DEFAULT_TYPEstrSQL{AfxMessageBox打开数据库失败!;return;}ifm_recordset.GetRecordCount==0{AfxMessageBox没有找到该图书!;m_recordset.Close;return;}m_recordset.Delete;m_recordset.Close;AfxMessageBox图书挂失成功!MB_ICONINFORMATION;m_ctrList.DeleteAllItems;m_strCode=_T;UpdateDataFALSE;}voidCBookLostDlg::OnButtonAll{//TODO:AddyourcontrolnotificationhandlercodehereCStringstrSQL;strSQL.Formatselect*frombookInfo;RefreshDatastrSQL;}voidCBookLostDlg::OnClickList1NMHDR*pNMHDRLRESULT*pResult{//TODO:Addyourcontrolnotificationhandlercodehereinti=m_ctrList.GetSelectionMark;m_strCode=m_ctrList.GetItemTexti0;UpdateDataFALSE;*pResult=0;}voidCBookLostDlg::RefreshDataCStringstrSQL{m_ctrList.DeleteAllItems;m_ctrList.SetRedrawFALSE;UpdateDataTRUE;if!m_recordset.OpenAFX_DB_USE_DEFAULT_TYPEstrSQL{MessageBox打开数据库失败!数据库错误MB_OK;return;}inti=0;CStringstrTime;while!m_recordset.IsEOF{m_ctrList.InsertItemim_recordset.m_code;m_ctrList.SetItemTexti1m_recordset.m_name;m_ctrList.SetItemTexti2m_recordset.m_type;m_ctrList.SetItemTexti3m_recordset.m_writer;m_ctrList.SetItemTexti4m_recordset.m_press;m_ctrList.SetItemTexti5m_recordset.m_price;strTime.Format%d-%d-%dm_recordset.m_in_date.GetYearm_recordset.m_in_date.GetMonthm_recordset.m_in_date.GetDay;m_ctrList.SetItemTexti6strTime;m_ctrList.SetItemTexti7m_recordset.m_brief;i++;m_recordset.MoveNext;}m_recordset.Close;m_ctrList.SetRedrawTRUE;}//BookSearchDlg.cpp:implementationfile//#includestdafx.h#includeLibrary.h#includeBookSearchDlg.h#ifdef_DEBUG#definenewDEBUG_NEW#undefTHIS_FILEstaticcharTHIS_FILE[]=__FILE__;#endif///////////////////////////////////////////////////////////////////////////////CBookSearchDlgdialogCBookSearchDlg::CBookSearchDlgCWnd*pParent/*=NULL*/:CDialogCBookSearchDlg::IDDpParent{//{{AFX_DATA_INITCBookSearchDlgm_strCode=_T;//}}AFX_DATA_INIT}voidCBookSearchDlg::DoDataExchangeCDataExchange*pDX{CDialog::DoDataExchangepDX;//{{AFX_DATA_MAPCBookSearchDlgDDX_ControlpDXIDC_LIST1m_ctrList;DDX_TextpDXIDC_EDIT_BOOK_CODEm_strCode;//}}AFX_DATA_MAP}BEGIN_MESSAGE_MAPCBookSearchDlgCDialog//{{AFX_MSG_MAPCBookSearchDlgON_BN_CLICKEDIDC_BUTTON_SEARCHOnButtonSearchON_BN_CLICKEDIDC_BUTTON_ALLOnButtonAll//}}AFX_MSG_MAPEND_MESSAGE_MAP///////////////////////////////////////////////////////////////////////////////CBookSearchDlgmessagehandlersBOOLCBookSearchDlg::OnInitDialog{CDialog::OnInitDialog;//设置列表m_ctrList.InsertColumn0图书编号;m_ctrList.InsertColumn1图书名称;m_ctrList.InsertColumn2图书类别;m_ctrList.InsertColumn3作者;m_ctrList.InsertColumn4出版社;m_ctrList.InsertColumn5图书价格;m_ctrList.InsertColumn6登记日期;m_ctrList.InsertColumn7备注说明;m_ctrList.SetColumnWidth060;m_ctrList.SetColumnWidth1120;m_ctrList.SetColumnWidth280;m_ctrList.SetColumnWidth380;m_ctrList.SetColumnWidth480;m_ctrList.SetColumnWidth580;m_ctrList.SetColumnWidth680;m_ctrList.SetColumnWidth780;m_ctrList.SetExtendedStyleLVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES;returnTRUE;//returnTRUEunlessyousetthefocustoacontrol//EXCEPTION:OCXPropertyPagesshouldreturnFALSE}voidCBookSearchDlg::OnButtonSearch{//TODO:AddyourcontrolnotificationhandlercodehereUpdateData;CStringstrSQL;ifm_strCode.IsEmptystrSQL=select*frombookInfo;elsestrSQL.Formatselect*frombookInfowherecode=%sm_strCode;RefreshDatastrSQL;}voidCBookSearchDlg::OnButtonAll{CStringstrSQL;strSQL.Formatselect*frombookInfo;RefreshDatastrSQL;}voidCBookSearchDlg::RefreshDataCStringstrSQL{m_ctrList.DeleteAllItems;m_ctrList.SetRedrawFALSE;UpdateDataTRUE;if!m_recordset.OpenAFX_DB_USE_DEFAULT_TYPEstrSQL{MessageBox打开数据库失败!数据库错误MB_OK;return;}inti=0;CStringstrTime;while!m_recordset.IsEOF{m_ctrList.InsertItemim_recordset.m_code;m_ctrList.SetItemTexti1m_recordset.m_name;m_ctrList.SetItemTexti2m_recordset.m_type;m_ctrList.SetItemTexti3m_recordset.m_writer;m_ctrList.SetItemTexti4m_recordset.m_press;m_ctrList.SetItemTexti5m_recordset.m_price;strTime.Format%d-%d-%dm_recordset.m_in_date.GetYearm_recordset.m_in_date.GetMonthm_recordset.m_in_date.GetDay;m_ctrList.SetItemTexti6strTime;m_ctrList.SetItemTexti7m_recordset.m_brief;i++;m_recordset.MoveNext;}m_recordset.Close;m_ctrList.SetRedrawTRUE;}//BookTypeDlg.cpp:implementationfile//#includestdafx.h#includeLibrary.h#includeBookTypeDlg.h#includeInputDlg.h#ifdef_DEBUG#definenewDEBUG_NEW#undefTHIS_FILEstaticcharTHIS_FILE[]=__FILE__;#endif///////////////////////////////////////////////////////////////////////////////CBookTypeDlgdialogCBookTypeDlg::CBookTypeDlgCWnd*pParent/*=NULL*/:CDialogCBookTypeDlg::IDDpParent{//{{AFX_DATA_INITCBookTypeDlg//NOTE:theClassWizardwilladdmemberinitializationhere//}}AFX_DATA_INIT}voidCBookTypeDlg::DoDataExchangeCDataExchange*pDX{CDialog::DoDataExchangepDX;//{{AFX_DATA_MAPCBookTypeDlgDDX_ControlpDXIDC_LIST1m_ctrList;//}}AFX_DATA_MAP}BEGIN_MESSAGE_MAPCBookTypeDlgCDialog//{{AFX_MSG_MAPCBookTypeDlgON_BN_CLICKEDIDC_BUTTON_NEWOnButtonNewON_BN_CLICKEDIDC_BUTTON_MODIFYOnButtonModifyON_BN_CLICKEDIDC_BUTTON_DELETEOnButtonDelete//}}AFX_MSG_MAPEND_MESSAGE_MAP///////////////////////////////////////////////////////////////////////////////CBookTypeDlgmessagehandlersvoidCBookTypeDlg::OnButtonNew{CInputDlgdlg;dlg.m_strTypeNo=图书类型;dlg.m_strNumberNo=可借天数;ifdlg.DoModal==IDOK{//打开记录集CStringstrSQL;strSQL.Formatselect*frombookTypewheretype=%sdlg.m_strType;if!m_recordset.OpenAFX_DB_USE_DEFAULT_TYPEstrSQL{MessageBox打开数据库失败!数据库错误MB_OK;return;}ifm_recordset.GetRecordCount!=0{m_recordset.Close;MessageBox该记录已经存在!;return;}m_recordset.AddNew;m_recordset.m_type=dlg.m_strType;m_recordset.m_number=dlg.m_nNumber;m_recordset.Update;m_recordset.Close;//更新列表RefreshData;}}voidCBookTypeDlg::OnButtonModify{//TODO:Addyourcontrolnotificationhandlercodehereinti=m_ctrList.GetSelectionMark;ifi0{AfxMessageBox请选取要修改的记录!;return;}//初始化信息输入对话框CInputDlgdlg;dlg.m_strTypeNo=图书类型;dlg.m_strNumberNo=可借天数;dlg.m_strType=m_ctrList.GetItemTexti0;dlg.m_nNumber=atoim_ctrList.GetItemTexti1;//等待用户输入ifdlg.DoModal==IDOK{//打开记录集CStringstrSQL;strSQL.Formatselect*frombookTypewheretype=%sdlg.m_strType;if!m_recordset.OpenAFX_DB_USE_DEFAULT_TYPEstrSQL{MessageBox打开数据库失败!数据库错误MB_OK;return;}//判断记录是否不存在ifm_recordset.GetRecordCount==0{m_recordset.Close;MessageBox该记录不存在!;return;}m_recordset.Edit;m_recordset.m_type=dlg.m_strType;m_recordset.m_number=dlg.m_nNumber;m_recordset.Update;m_recordset.Close;//更新列表RefreshData;}}voidCBookTypeDlg::OnButtonDelete{//TODO:Addyourcontrolnotificationhandlercodehereinti=m_ctrList.GetSelectionMark;ifi0{AfxMessageBox请选取要删除的记录!;return;}//打开记录集CStringstrSQL;strSQL.Formatselect*frombookTypewheretype=%sm_ctrList.GetItemTexti0;if!m_recordset.OpenAFX_DB_USE_DEFAULT_TYPEstrSQL{MessageBox打开数据库失败!数据库错误MB_OK;return;}//判断记录是否不存在ifm_recordset.GetRecordCount==0{m_recordset.Close;MessageBox该记录不存在!;return;}//删除记录m_recordset.Delete;m_recordset.Close;//更新列表RefreshData;}BOOLCBookTypeDlg::OnInitDialog{CDialog::OnInitDialog;//设置数据列表m_ctrList.InsertColumn0类别名称;m_ctrList.SetColumnWidth0120;m_ctrList.InsertColumn1可借天数;m_ctrList.SetColumnWidth160;m_ctrList.SetExtendedStyleLVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES;//显示数据到列表中RefreshData;returnTRUE;//returnTRUEunlessyousetthefocustoacontrol//EXCEPTION:OCXPropertyPagesshouldreturnFALSE}voidCBookTypeDlg::RefreshData{m_ctrList.SetFocus;//清空列表m_ctrList.DeleteAllItems;m_ctrList.SetRedrawFALSE;CStringstrSQL;UpdateDataTRUE;//打开记录集strSQL=select*frombookType;if!m_recordset.OpenAFX_DB_USE_DEFAULT_TYPEstrSQL{MessageBox打开数据库失败!数据库错误MB_OK;return;}//添加记录到列表中inti=0;charbuffer
[20];while!m_recordset.IsEOF{m_ctrList.InsertItemim_recordset.m_type;itoam_recordset.m_numberbuffer10;m_ctrList.SetItemTexti1buffer;i++;m_recordset.MoveNext;}m_recordset.Close;m_ctrList.SetRedrawTRUE;}//BookTypeSet.cpp:implementationfile//#includestdafx.h#includeLibrary.h#includeBookTypeSet.h#ifdef_DEBUG#definenewDEBUG_NEW#undefTHIS_FILEstaticcharTHIS_FILE[]=__FILE__;#endif/////////////////////////////////////////////////////////////////////////////IMPLEMENT_DYNAMICCBookTypeSetCRecordsetCBookTypeSet::CBookTypeSetCDatabase*pdb:CRecordsetpdb{//{{AFX_FIELD_INITCBookTypeSetm_type=_T;m_number=0;m_nFields=2;//}}AFX_FIELD_INITm_nDefaultType=snapshot;}CStringCBookTypeSet::GetDefaultConnect{return_TODBC;DSN=LibraryDB;}CStringCBookTypeSet::GetDefaultSQL{return_T[bookType];}voidCBookTypeSet::DoFieldExchangeCFieldExchange*pFX{//{{AFX_FIELD_MAPCBookTypeSetpFX-SetFieldTypeCFieldExchange::outputColumn;RFX_TextpFX_T[type]m_type;RFX_IntpFX_T[number]m_number;//}}AFX_FIELD_MAP}///////////////////////////////////////////////////////////////////////////////CBookTypeSetdiagnostics#ifdef_DEBUGvoidCBookTypeSet::AssertValidconst{CRecordset::AssertValid;}voidCBookTypeSet::DumpCDumpContextdcconst{CRecordset::Dumpdc;}#endif//_DEBUG//BorrowDlg.cpp:implementationfile//#includestdafx.h#includeLibrary.h#includeBorrowDlg.h#includeReaderInfoSet.h#includeReaderTypeSet.h#includeBookInfoSet.h#includeBookTypeSet.h#ifdef_DEBUG#definenewDEBUG_NEW#undefTHIS_FILEstaticcharTHIS_FILE[]=__FILE__;#endif///////////////////////////////////////////////////////////////////////////////CBorrowDlgdialogCBorrowDlg::CBorrowDlgCWnd*pParent/*=NULL*/:CDialogCBorrowDlg::IDDpParent{//{{AFX_DATA_INITCBorrowDlgm_strBookName=_T;m_strBookCode=_T;m_strBookPrice=_T;m_strBookType=_T;m_strReaderCode=_T;m_strReaderName=_T;m_strReaderType=_T;m_nAlready=0;m_nAllow=0;m_nLeft=0;m_nDays=0;//}}AFX_DATA_INITm_bReaderEnable=FALSE;m_bBookEnable=FALSE;}voidCBorrowDlg::DoDataExchangeCDataExchange*pDX{CDialog::DoDataExchangepDX;//{{AFX_DATA_MAPCBorrowDlgDDX_ControlpDXIDC_LIST1m_ctrList;DDX_TextpDXIDC_EDIT_BOOK_NAMEm_strBookName;DDX_TextpDXIDC_EDIT_BOOK_CODEm_strBookCode;DDX_TextpDXIDC_EDIT_BOOK_PRICEm_strBookPrice;DDX_TextpDXIDC_EDIT_BOOK_TYPEm_strBookType;DDX_TextpDXIDC_EDIT_READER_CODEm_strReaderCode;DDX_TextpDXIDC_EDIT_READER_NAMEm_strReaderName;DDX_TextpDXIDC_EDIT_READER_TYPEm_strReaderType;DDX_TextpDXIDC_EDIT_ALEADYm_nAlready;DDX_TextpDXIDC_EDIT_ALLOWm_nAllow;DDX_TextpDXIDC_EDIT_LEFTm_nLeft;DDX_TextpDXIDC_EDIT_DAYSm_nDays;//}}AFX_DATA_MAP}BEGIN_MESSAGE_MAPCBorrowDlgCDialog//{{AFX_MSG_MAPCBorrowDlgON_EN_CHANGEIDC_EDIT_READER_CODEOnChangeEditReaderCodeON_EN_CHANGEIDC_EDIT_BOOK_CODEOnChangeEditBookCode//}}AFX_MSG_MAPEND_MESSAGE_MAP///////////////////////////////////////////////////////////////////////////////CBorrowDlgmessagehandlersvoidCBorrowDlg::OnChangeEditReaderCode{//TODO:IfthisisaRICHEDITcontrolthecontrolwillnot//sendthisnotificationunlessyouoverridetheCDialog::OnInitDialog//functionandcallCRichEditCtrl.SetEventMask//withtheENM_CHANGEflagORedintothemask.//TODO:AddyourcontrolnotificationhandlercodehereUpdateData;//获取读者基本信息CReaderInfoSetrs_reader;CStringstrSQL;strSQL.Formatselect*fromreaderInfowherecode=%sm_strReaderCode;if!rs_reader.OpenAFX_DB_USE_DEFAULT_TYPEstrSQL{MessageBox打开数据库失败!数据库错误MB_OK;return;}ifrs_reader.GetRecordCount==0{rs_reader.Close;return;}m_strReaderName=rs_reader.m_name;m_strReaderType=rs_reader.m_type;rs_reader.Close;//根据读者类型获取读者可借阅册数CReaderTypeSetrs_readerType;strSQL.Formatselect*fromreaderTypewheretype=%sm_strReaderType;if!rs_readerType.OpenAFX_DB_USE_DEFAULT_TYPEstrSQL{MessageBox打开数据库失败!数据库错误MB_OK;return;}ifrs_readerType.GetRecordCount==0{rs_readerType.Close;return;}m_nAllow=rs_readerType.m_number;rs_readerType.Close;//根据读者编号读取读者已借阅册数CBookInfoSetrs_BookInfoSet;strSQL.Formatselect*fromBookInfowherereader_code=%sm_strReaderCode;if!rs_BookInfoSet.OpenAFX_DB_USE_DEFAULT_TYPEstrSQL{MessageBox打开数据库失败!数据库错误MB_OK;return;}m_nAlready=rs_BookInfoSet.GetRecordCount;m_nLeft=m_nAllow-m_nAlready;rs_BookInfoSet.Close;m_bReaderEnable=TRUE;UpdateDataFALSE;}voidCBorrowDlg::OnChangeEditBookCode{//TODO:IfthisisaRICHEDITcontrolthecontrolwillnot//sendthisnotificationunlessyouoverridetheCDialog::OnInitDialog//functionandcallCRichEditCtrl.SetEventMask//withtheENM_CHANGEflagORedintothemask.//TODO:AddyourcontrolnotificationhandlercodehereUpdateData;//获取图书基本信息CBookInfoSetrs_book;CStringstrSQL;strSQL.Formatselect*frombookInfowherecode=%sm_strBookCode;if!rs_book.OpenAFX_DB_USE_DEFAULT_TYPEstrSQL{MessageBox打开数据库失败!数据库错误MB_OK;return;}ifrs_book.GetRecordCount==0{rs_book.Close;return;}ifrs_book.m_isBorrow{AfxMessageBox此图书已借出!;rs_book.Close;return;}m_strBookName=rs_book.m_name;m_strBookType=rs_book.m_type;m_strBookPrice=rs_book.m_price;rs_book.Close;//根据图书类型获取图书可借阅天数CBookTypeSetrs_bookType;strSQL.Formatselect*frombookTypewheretype=%sm_strBookType;if!rs_bookType.OpenAFX_DB_USE_DEFAULT_TYPEstrSQL{MessageBox打开数据库失败!数据库错误MB_OK;return;}ifrs_bookType.GetRecordCount==0{rs_bookType.Close;return;}m_nDays=rs_bookType.m_number;rs_bookType.Close;m_bBookEnable=TRUE;UpdateDataFALSE;}voidCBorrowDlg::OnOK{//判断读者是否具有借阅资格,以及图书是否可以被借出if!m_bReaderEnable|!m_bBookEnablereturn;CLibraryApp*ptheApp=CLibraryApp*AfxGetApp;//修改图书库存信息CBookInfoSetrs_book;CStringstrSQL;strSQL.Formatselect*frombookInfowherecode=%sm_strBookCode;if!rs_book.OpenAFX_DB_USE_DEFAULT_TYPEstrSQL{MessageBox打开数据库失败!数据库错误MB_OK;return;}ifrs_book.GetRecordCount==0{rs_book.Close;return;}rs_book.Edit;rs_book.m_isBorrow=TRUE;rs_book.m_reader_code=m_strReaderCode;rs_book.Update;rs_book.Close;if!m_recordset.OpenAFX_DB_USE_DEFAULT_TYPE{AfxMessageBox打开数据库失败!;return;}//添加借书记录m_recordset.AddNew;m_recordset.m_book_code=m_strBookCode;m_recordset.m_book_name=m_strBookName;m_recordset.m_book_type=m_strBookType;m_recordset.m_borrow_date=CTime::GetCurrentTime;m_recordset.m_operator=ptheApp-m_strOperator;m_recordset.m_price=m_strBookPrice;m_recordset.m_reader_code=m_strReaderCode;m_recordset.m_reader_name=m_strReaderName;m_recordset.m_return_date=CTime::GetCurrentTime+m_nDays*24*3600;m_recordset.m_isReturn=FALSE;m_recordset.Update;m_recordset.Close;//更新界面显示m_strBookCode=;m_strBookName=;m_strBookType=;m_strBookPrice=;m_nDays=0;m_nAlready++;m_nLeft--;m_bBookEnable=FALSE;UpdateDataFALSE;RefreshData;}voidCBorrowDlg::RefreshData{m_ctrList.DeleteAllItems;m_ctrList.SetRedrawFALSE;UpdateDataTRUE;CStringstrSQL;strSQL.Formatselect*fromborrowInfowherereader_code=%sm_strReaderCode;if!m_recordset.OpenAFX_DB_USE_DEFAULT_TYPEstrSQL{MessageBox打开数据库失败!数据库错误MB_OK;return;}inti=0;CStringstrTime;while!m_recordset.IsEOF{m_ctrList.InsertItemim_recordset.m_book_code;m_ctrList.SetItemTexti1m_recordset.m_book_name;m_ctrList.SetItemTexti2m_recordset.m_price;m_ctrList.SetItemTexti3m_recordset.m_book_type;strTime.Format%d-%d-%dm_recordset.m_borrow_date.GetYearm_recordset.m_borrow_date.GetMonthm_recordset.m_borrow_date.GetDay;m_ctrList.SetItemTexti4strTime;strTime.Format%d-%d-%dm_recordset.m_return_date.GetYearm_recordset.m_return_date.GetMonthm_recordset.m_return_date.GetDay;m_ctrList.SetItemTexti5strTime;m_ctrList.SetItemTexti6m_recordset.m_operator;i++;m_recordset.MoveNext;}m_recordset.Close;m_ctrList.SetRedrawTRUE;}BOOLCBorrowDlg::OnInitDialog{CDialog::OnInitDialog;m_ctrList.InsertColumn0图书编号;m_ctrList.InsertColumn1图书名称;m_ctrList.InsertColumn2图书类别;m_ctrList.InsertColumn3图书价格;m_ctrList.InsertColumn4借出日期;m_ctrList.InsertColumn5归还日期;m_ctrList.InsertColumn6操作员;m_ctrList.SetColumnWidth060;m_ctrList.SetColumnWidth1120;m_ctrList.SetColumnWidth280;m_ctrList.SetColumnWidth380;m_ctrList.SetColumnWidth480;m_ctrList.SetColumnWidth580;m_ctrList.SetColumnWidth680;m_ctrList.SetExtendedStyleLVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES;returnTRUE;//returnTRUEunlessyousetthefocustoacontrol}//BorrowInfoSet.cpp:implementationfile//#includestdafx.h#includeLibrary.h#includeBorrowInfoSet.h#ifdef_DEBUG#definenewDEBUG_NEW#undefTHIS_FILEstaticcharTHIS_FILE[]=__FILE__;#endif/////////////////////////////////////////////////////////////////////////////IMPLEMENT_DYNAMICCBorrowInfoSetCRecordsetCBorrowInfoSet::CBorrowInfoSetCDatabase*pdb:CRecordsetpdb{//{{AFX_FIELD_INITCBorrowInfoSetm_ID=0;m_reader_code=_T;m_reader_name=_T;m_book_code=_T;m_book_name=_T;m_book_type=_T;m_price=_T;m_isReturn=FALSE;m_operator=_T;m_nFields=11;//}}AFX_FIELD_INITm_nDefaultType=snapshot;}CStringCBorrowInfoSet::GetDefaultConnect{return_TODBC;DSN=LibraryDB;}CStringCBorrowInfoSet::GetDefaultSQL{return_T[borrowInfo];}voidCBorrowInfoSet::DoFieldExchangeCFieldExchange*pFX{//{{AFX_FIELD_MAPCBorrowInfoSetpFX-SetFieldTypeCFieldExchange::outputColumn;RFX_LongpFX_T[ID]m_ID;RFX_TextpFX_T[reader_code]m_reader_code;RFX_TextpFX_T[reader_name]m_reader_name;RFX_TextpFX_T[book_code]m_book_code;RFX_TextpFX_T[book_name]m_book_name;RFX_TextpFX_T[book_type]m_book_type;RFX_TextpFX_T[price]m_price;RFX_DatepFX_T[borrow_date]m_borrow_date;RFX_DatepFX_T[return_date]m_return_date;RFX_BoolpFX_T[isReturn]m_isReturn;RFX_TextpFX_T[operator]m_operator;//}}AFX_FIELD_MAP}///////////////////////////////////////////////////////////////////////////////CBorrowInfoSetdiagnostics#ifdef_DEBUGvoidCBorrowInfoSet::AssertValidconst{CRecordset::AssertValid;}voidCBorrowInfoSet::DumpCDumpContextdcconst{CRecordset::Dumpdc;}#endif//_DEBUG//BorrowSearchDlg.cpp:implementationfile//#includestdafx.h#includeLibrary.h#includeBorrowSearchDlg.h#ifdef_DEBUG#definenewDEBUG_NEW#undefTHIS_FILEstaticcharTHIS_FILE[]=__FILE__;#endif///////////////////////////////////////////////////////////////////////////////CBorrowSearchDlgdialogCBorrowSearchDlg::CBorrowSearchDlgCWnd*pParent/*=NULL*/:CDialogCBorrowSearchDlg::IDDpParent{//{{AFX_DATA_INITCBorrowSearchDlgm_strBookCode=_T;m_strReaderCode=_T;//}}AFX_DATA_INIT}voidCBorrowSearchDlg::DoDataExchangeCDataExchange*pDX{CDialog::DoDataExchangepDX;//{{AFX_DATA_MAPCBorrowSearchDlgDDX_ControlpDXIDC_LIST1m_ctrList;DDX_TextpDXIDC_EDIT_BOOKCODEm_strBookCode;DDX_TextpDXIDC_EDIT_READERCODEm_strReaderCode;//}}AFX_DATA_MAP}BEGIN_MESSAGE_MAPCBorrowSearchDlgCDialog//{{AFX_MSG_MAPCBorrowSearchDlgON_BN_CLICKEDIDC_BUTTON_SEARCHOnButtonSearch//}}AFX_MSG_MAPEND_MESSAGE_MAP///////////////////////////////////////////////////////////////////////////////CBorrowSearchDlgmessagehandlersBOOLCBorrowSearchDlg::OnInitDialog{CDialog::OnInitDialog;m_ctrList.InsertColumn0读者编号;m_ctrList.InsertColumn1读者姓名;m_ctrList.InsertColumn2图书编号;m_ctrList.InsertColumn3图书名称;m_ctrList.InsertColumn4图书类别;m_ctrList.InsertColumn5图书价格;m_ctrList.InsertColumn6借出日期;m_ctrList.InsertColumn7归还日期;m_ctrList.InsertColumn8操作员;m_ctrList.SetColumnWidth060;m_ctrList.SetColumnWidth160;m_ctrList.SetColumnWidth280;m_ctrList.SetColumnWidth3100;m_ctrList.SetColumnWidth480;m_ctrList.SetColumnWidth580;m_ctrList.SetColumnWidth680;m_ctrList.SetColumnWidth780;m_ctrList.SetColumnWidth880;m_ctrList.SetExtendedStyleLVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES;returnTRUE;//returnTRUEunlessyousetthefocustoacontrol//EXCEPTION:OCXPropertyPagesshouldreturnFALSE}voidCBorrowSearchDlg::OnButtonSearch{UpdateData;CStringstrSQL;if!m_strReaderCode.IsEmpty!m_strBookCode.IsEmpty{strSQL.Formatselect*fromborrowInfowherereader_code=%sandbook_code=%sm_strReaderCodem_strBookCode;}elseif!m_strReaderCode.IsEmpty{strSQL.Formatselect*fromborrowInfowherereader_code=%sm_strReaderCode;}elseif!m_strBookCode.IsEmpty{strSQL.Formatselect*fromborrowInfowherebook_code=%sm_strBookCode;}else{strSQL=select*fromborrowInfo;}m_ctrList.DeleteAllItems;m_ctrList.SetRedrawFALSE;if!m_recordset.OpenAFX_DB_USE_DEFAULT_TYPEstrSQL{MessageBox打开数据库失败!数据库错误MB_OK;return;}inti=0;CStringstrTime;while!m_recordset.IsEOF{m_ctrList.InsertItemim_recordset.m_reader_code;m_ctrList.SetItemTexti1m_recordset.m_reader_name;m_ctrList.SetItemTexti2m_recordset.m_book_code;m_ctrList.SetItemTexti3m_recordset.m_book_name;m_ctrList.SetItemTexti4m_recordset.m_price;m_ctrList.SetItemTexti5m_recordset.m_book_type;strTime.Format%d-%d-%dm_recordset.m_borrow_date.GetYearm_recordset.m_borrow_date.GetMonthm_recordset.m_borrow_date.GetDay;m_ctrList.SetItemTexti6strTime;strTime.Format%d-%d-%dm_recordset.m_return_date.GetYearm_recordset.m_return_date.GetMonthm_recordset.m_return_date.GetDay;m_ctrList.SetItemTexti7strTime;m_ctrList.SetItemTexti8m_recordset.m_operator;i++;m_recordset.MoveNext;}m_recordset.Close;m_ctrList.SetRedrawTRUE;}//BorrowSearchDlg.cpp:implementationfile//#includestdafx.h#includeLibrary.h#includeBorrowSearchDlg.h#ifdef_DEBUG#definenewDEBUG_NEW#undefTHIS_FILEstaticcharTHIS_FILE[]=__FILE__;#endif///////////////////////////////////////////////////////////////////////////////CBorrowSearchDlgdialogCBorrowSearchDlg::CBorrowSearchDlgCWnd*pParent/*=NULL*/:CDialogCBorrowSearchDlg::IDDpParent{//{{AFX_DATA_INITCBorrowSearchDlgm_strBookCode=_T;m_strReaderCode=_T;//}}AFX_DATA_INIT}voidCBorrowSearchDlg::DoDataExchangeCDataExchange*pDX{CDialog::DoDataExchangepDX;//{{AFX_DATA_MAPCBorrowSearchDlgDDX_ControlpDXIDC_LIST1m_ctrList;DDX_TextpDXIDC_EDIT_BOOKCODEm_strBookCode;DDX_TextpDXIDC_EDIT_READERCODEm_strReaderCode;//}}AFX_DATA_MAP}BEGIN_MESSAGE_MAPCBorrowSearchDlgCDialog//{{AFX_MSG_MAPCBorrowSearchDlgON_BN_CLICKEDIDC_BUTTON_SEARCHOnButtonSearch//}}AFX_MSG_MAPEND_MESSAGE_MAP///////////////////////////////////////////////////////////////////////////////CBorrowSearchDlgmessagehandlersBOOLCBorrowSearchDlg::OnInitDialog{CDialog::OnInitDialog;m_ctrList.InsertColumn0读者编号;m_ctrList.InsertColumn1读者姓名;m_ctrList.InsertColumn2图书编号;m_ctrList.InsertColumn3图书名称;m_ctrList.InsertColumn4图书类别;m_ctrList.InsertColumn5图书价格;m_ctrList.InsertColumn6借出日期;m_ctrList.InsertColumn7归还日期;m_ctrList.InsertColumn8操作员;m_ctrList.SetColumnWidth060;m_ctrList.SetColumnWidth160;m_ctrList.SetColumnWidth280;m_ctrList.SetColumnWidth3100;m_ctrList.SetColumnWidth480;m_ctrList.SetColumnWidth580;m_ctrList.SetColumnWidth680;m_ctrList.SetColumnWidth780;m_ctrList.SetColumnWidth880;m_ctrList.SetExtendedStyleLVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES;returnTRUE;//returnTRUEunlessyousetthefocustoacontrol//EXCEPTION:OCXPropertyPagesshouldreturnFALSE}voidCBorrowSearchDlg::OnButtonSearch{UpdateData;CStringstrSQL;if!m_strReaderCode.IsEmpty!m_strBookCode.IsEmpty{strSQL.Formatselect*fromborrowInfowherereader_code=%sandbook_code=%sm_strReaderCodem_strBookCode;}elseif!m_strReaderCode.IsEmpty{strSQL.Formatselect*fromborrowInfowherereader_code=%sm_strReaderCode;}elseif!m_strBookCode.IsEmpty{strSQL.Formatselect*fromborrowInfowherebook_code=%sm_strBookCode;}else{strSQL=select*fromborrowInfo;}m_ctrList.DeleteAllItems;m_ctrList.SetRedrawFALSE;if!m_recordset.OpenAFX_DB_USE_DEFAULT_TYPEstrSQL{MessageBox打开数据库失败!数据库错误MB_OK;return;}inti=0;CStringstrTime;while!m_recordset.IsEOF{m_ctrList.InsertItemim_recordset.m_reader_code;m_ctrList.SetItemTexti1m_recordset.m_reader_name;m_ctrList.SetItemTexti2m_recordset.m_book_code;m_ctrList.SetItemTexti3m_recordset.m_book_name;m_ctrList.SetItemTexti4m_recordset.m_price;m_ctrList.SetItemTexti5m_recordset.m_book_type;strTime.Format%d-%d-%dm_recordset.m_borrow_date.GetYearm_recordset.m_borrow_date.GetMonthm_recordset.m_borrow_date.GetDay;m_ctrList.SetItemTexti6strTime;strTime.Format%d-%d-%dm_recordset.m_return_date.GetYearm_recordset.m_return_date.GetMonthm_recordset.m_return_date.GetDay;m_ctrList.SetItemTexti7strTime;m_ctrList.SetItemTexti8m_recordset.m_operator;i++;m_recordset.MoveNext;}m_recordset.Close;m_ctrList.SetRedrawTRUE;}//BorrowSearchDlg.cpp:implementationfile//#includestdafx.h#includeLibrary.h#includeBorrowSearchDlg.h#ifdef_DEBUG#definenewDEBUG_NEW#undefTHIS_FILEstaticcharTHIS_FILE[]=__FILE__;#endif///////////////////////////////////////////////////////////////////////////////CBorrowSearchDlgdialogCBorrowSearchDlg::CBorrowSearchDlgCWnd*pParent/*=NULL*/:CDialogCBorrowSearchDlg::IDDpParent{//{{AFX_DATA_INITCBorrowSearchDlgm_strBookCode=_T;m_strReaderCode=_T;//}}AFX_DATA_INIT}voidCBorrowSearchDlg::DoDataExchangeCDataExchange*pDX{CDialog::DoDataExchangepDX;//{{AFX_DATA_MAPCBorrowSearchDlgDDX_ControlpDXIDC_LIST1m_ctrList;DDX_TextpDXIDC_EDIT_BOOKCODEm_strBookCode;DDX_TextpDXIDC_EDIT_READERCODEm_strReaderCode;//}}AFX_DATA_MAP}BEGIN_MESSAGE_MAPCBorrowSearchDlgCDialog//{{AFX_MSG_MAPCBorrowSearchDlgON_BN_CLICKEDIDC_BUTTON_SEARCHOnButtonSearch//}}AFX_MSG_MAPEND_MESSAGE_MAP///////////////////////////////////////////////////////////////////////////////CBorrowSearchDlgmessagehandlersBOOLCBorrowSearchDlg::OnInitDialog{CDialog::OnInitDialog;m_ctrList.InsertColumn0读者编号;m_ctrList.InsertColumn1读者姓名;m_ctrList.InsertColumn2图书编号;m_ctrList.InsertColumn3图书名称;m_ctrList.InsertColumn4图书类别;m_ctrList.InsertColumn5图书价格;m_ctrList.InsertColumn6借出日期;m_ctrList.InsertColumn7归还日期;m_ctrList.InsertColumn8操作员;m_ctrList.SetColumnWidth060;m_ctrList.SetColumnWidth160;m_ctrList.SetColumnWidth280;m_ctrList.SetColumnWidth3100;m_ctrList.SetColumnWidth480;m_ctrList.SetColumnWidth580;m_ctrList.SetColumnWidth680;m_ctrList.SetColumnWidth780;m_ctrList.SetColumnWidth880;m_ctrList.SetExtendedStyleLVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES;returnTRUE;//returnTRUEunlessyousetthefocustoacontrol//EXCEPTION:OCXPropertyPagesshouldreturnFALSE}voidCBorrowSearchDlg::OnButtonSearch{UpdateData;CStringstrSQL;if!m_strReaderCode.IsEmpty!m_strBookCode.IsEmpty{strSQL.Formatselect*fromborrowInfowherereader_code=%sandbook_code=%sm_strReaderCodem_strBookCode;}elseif!m_strReaderCode.IsEmpty{strSQL.Formatselect*fromborrowInfowherereader_code=%sm_strReaderCode;}elseif!m_strBookCode.IsEmpty{strSQL.Formatselect*fromborrowInfowherebook_code=%sm_strBookCode;}else{strSQL=select*fromborrowInfo;}m_ctrList.DeleteAllItems;m_ctrList.SetRedrawFALSE;if!m_recordset.OpenAFX_DB_USE_DEFAULT_TYPEstrSQL{MessageBox打开数据库失败!数据库错误MB_OK;return;}inti=0;CStringstrTime;while!m_recordset.IsEOF{m_ctrList.InsertItemim_recordset.m_reader_code;m_ctrList.SetItemTexti1m_recordset.m_reader_name;m_ctrList.SetItemTexti2m_recordset.m_book_code;m_ctrList.SetItemTexti3m_recordset.m_book_name;m_ctrList.SetItemTexti4m_recordset.m_price;m_ctrList.SetItemTexti5m_recordset.m_book_type;strTime.Format%d-%d-%dm_recordset.m_borrow_date.GetYearm_recordset.m_borrow_date.GetMonthm_recordset.m_borrow_date.GetDay;m_ctrList.SetItemTexti6strTime;strTime.Format%d-%d-%dm_recordset.m_return_date.GetYearm_recordset.m_return_date.GetMonthm_recordset.m_return_date.GetDay;m_ctrList.SetItemTexti7strTime;m_ctrList.SetItemTexti8m_recordset.m_operator;i++;m_recordset.MoveNext;}m_recordset.Close;m_ctrList.SetRedrawTRUE;}//LoginDlg.cpp:implementationfile//#includestdafx.h#includeLibrary.h#includeLoginDlg.h#includeuserset.h#ifdef_DEBUG#definenewDEBUG_NEW#undefTHIS_FILEstaticcharTHIS_FILE[]=__FILE__;#endif///////////////////////////////////////////////////////////////////////////////CLoginDlgdialogCLoginDlg::CLoginDlgCWnd*pParent/*=NULL*/:CDialogCLoginDlg::IDDpParent{//{{AFX_DATA_INITCLoginDlgm_strUser=_T;m_strPass=_T;//}}AFX_DATA_INIT}voidCLoginDlg::DoDataExchangeCDataExchange*pDX{CDialog::DoDataExchangepDX;//{{AFX_DATA_MAPCLoginDlgDDX_ControlpDXIDC_EDIT1m_ctrPass;DDX_ControlpDXIDC_COMBO1m_ctrUser;DDX_CBStringpDXIDC_COMBO1m_strUser;DDX_TextpDXIDC_EDIT1m_strPass;//}}AFX_DATA_MAP}BEGIN_MESSAGE_MAPCLoginDlgCDialog//{{AFX_MSG_MAPCLoginDlg//}}AFX_MSG_MAPEND_MESSAGE_MAP/////////////////////////////////////////////////////////////////////////////voidCLoginDlg::OnOK{//TODO:AddextravalidationhereCUserSetrecordset;CStringstrSQL;UpdateDataTRUE;ifm_strUser.IsEmpty{AfxMessageBox请输入用户名!;m_ctrUser.SetFocus;return;}//检查密码是否输入ifm_strPass.IsEmpty{AfxMessageBox请输入密码!;m_ctrPass.SetFocus;return;}CLibraryApp*ptheApp=CLibraryApp*AfxGetApp;strSQL.Formatselect*fromuserwhereuser=%sANDpasswd=%sm_strUserm_strPass;if!recordset.OpenAFX_DB_USE_DEFAULT_TYPEstrSQL{MessageBox打开数据库失败!数据库错误MB_OK;return;}ifrecordset.GetRecordCount==0{recordset.Close;MessageBox密码错误,请重新输入!;m_strPass=;m_ctrPass.SetFocus;UpdateDataFALSE;}else{ptheApp-m_bIsAdmin=recordset.m_isadmin;ptheApp-m_strOperator=recordset.m_user;recordset.Close;CDialog::OnOK;}}BOOLCLoginDlg::OnInitDialog{CDialog::OnInitDialog;CUserSetrecordset;CStringstrSQL;UpdateDataTRUE;strSQL=select*fromuser;if!recordset.OpenAFX_DB_USE_DEFAULT_TYPEstrSQL{MessageBox打开数据库失败!数据库错误MB_OK;returnFALSE;}while!recordset.IsEOF{m_ctrUser.AddStringrecordset.m_user;recordset.MoveNext;}recordset.Close;returnTRUE;//returnTRUEunlessyousetthefocustoacontrol//EXCEPTION:OCXPropertyPagesshouldreturnFALSE}voidCLoginDlg::OnCancel{//TODO:AddextracleanuphereCDialog::OnCancel;}//MainFrm.cpp:implementationoftheCMainFrameclass//#includestdafx.h#includeLibrary.h#includeMainFrm.h#includeUserDlg.h#includeLoginDlg.h#includePunishTypeDlg.h#includeBorrowDlg.h#includeBookTypeDlg.h#includeReaderTypeDlg.h#includeBorrowDlg.h#includeReturnDlg.h#includeBorrowSearchDlg.h#includeReturnSearchDlg.h#includeNewBookDlg.h#includeBookSearchDlg.h#includeBookLostDlg.h#includeReaderNewDlg.h#includeReaderSearchDlg.h#includeReaderDeleteDlg.h#ifdef_DEBUG#definenewDEBUG_NEW#undefTHIS_FILEstaticcharTHIS_FILE[]=__FILE__;#endif///////////////////////////////////////////////////////////////////////////////CMainFrameIMPLEMENT_DYNCREATECMainFrameCFrameWndBEGIN_MESSAGE_MAPCMainFrameCFrameWnd//{{AFX_MSG_MAPCMainFrameON_WM_CREATEON_COMMANDID_SYS_USEROnSysUserON_COMMANDID_SYS_RELOADOnSysReloadON_COMMANDID_SYS_QUITOnSysQuitON_COMMANDID_BASE_PUNISHOnBasePunishON_COMMANDID_BASE_BOOKTYPEOnBaseBooktypeON_COMMANDID_BASE_READERTYPEOnBaseReadertypeON_COMMANDID_BORROW_BORROWOnBorrowBorrowON_COMMANDID_BORROW_BORROW_SEARCHOnBorrowBorrowSearchON_COMMANDID_BORROW_RETURNOnBorrowReturnON_COMMANDID_BORROW_RETURN_SEARCHOnBorrowReturnSearchON_COMMANDID_DATABASE_BACKUPOnDatabaseBackupON_COMMANDID_DATABASE_RECOVEROnDatabaseRecoverON_COMMANDID_LIBRARY_BOOK_LOSTOnLibraryBookLostON_COMMANDID_LIBRARY_BOOK_SEARCHOnLibraryBookSearchON_COMMANDID_LIBRARY_NEWOnLibraryNewON_COMMANDID_READER_NEWOnReaderNewON_COMMANDID_READER_LOSTCARDOnReaderLostcardON_COMMANDID_READER_SEARCHOnReaderSearchON_WM_CLOSE//}}AFX_MSG_MAPEND_MESSAGE_MAPstaticUINTindicators[]={ID_SEPARATOR//statuslineindicatorID_INDICATOR_CAPSID_INDICATOR_NUMID_INDICATOR_SCRL};///////////////////////////////////////////////////////////////////////////////CMainFrameconstruction/destructionCMainFrame::CMainFrame{//TODO:addmemberinitializationcodehere}CMainFrame::~CMainFrame{}intCMainFrame::OnCreateLPCREATESTRUCTlpCreateStruct{ifCFrameWnd::OnCreatelpCreateStruct==-1return-1;/*if!m_wndToolBar.CreateExthisTBSTYLE_FLATWS_CHILD|WS_VISIBLE|CBRS_TOP|CBRS_GRIPPER|CBRS_TOOLTIPS|CBRS_FLYBY|CBRS_SIZE_DYNAMIC||!m_wndToolBar.LoadToolBarIDR_MAINFRAME{TRACE0Failedtocreatetoolbar\n;return-1;//failtocreate}*/if!m_wndStatusBar.Createthis||!m_wndStatusBar.SetIndicatorsindicatorssizeofindicators/sizeofUINT{TRACE0Failedtocreatestatusbar\n;return-1;//failtocreate}//TODO:Deletethesethreelinesifyoudontwantthetoolbarto//bedockable/*m_wndToolBar.EnableDockingCBRS_ALIGN_ANY;EnableDockingCBRS_ALIGN_ANY;DockControlBarm_wndToolBar;*/return0;}BOOLCMainFrame::PreCreateWindowCREATESTRUCTcs{if!CFrameWnd::PreCreateWindowcsreturnFALSE;//TODO:ModifytheWindowclassorstylesherebymodifying//theCREATESTRUCTcsreturnTRUE;}///////////////////////////////////////////////////////////////////////////////CMainFramediagnostics#ifdef_DEBUGvoidCMainFrame::AssertValidconst{CFrameWnd::AssertValid;}voidCMainFrame::DumpCDumpContextdcconst{CFrameWnd::Dumpdc;}#endif//_DEBUG///////////////////////////////////////////////////////////////////////////////CMainFramemessagehandlersvoidCMainFrame::OnSysUser{//TODO:AddyourcommandhandlercodehereCUserDlgDlg;Dlg.DoModal;}voidCMainFrame::OnSysReload{//TODO:AddyourcommandhandlercodehereCLoginDlgDlg;intnRes=0;do{nRes=Dlg.DoModal;//回到主界面ifnRes==IDOKreturn;//退出系统ifnRes==IDCANCEL{ifAfxMessageBox您确定要退出系统吗MB_OKCANCEL==IDCANCEL{return;}CFrameWnd::OnClose;return;}}while1;}voidCMainFrame::OnSysQuit{//TODO:AddyourcommandhandlercodehereifAfxMessageBox您确定要退出系统吗MB_OKCANCEL==IDCANCEL{return;}CFrameWnd::OnClose;}voidCMainFrame::OnBasePunish{//TODO:AddyourcommandhandlercodehereCPunishTypeDlgDlg;Dlg.DoModal;}voidCMainFrame::OnBaseBooktype{//TODO:AddyourcommandhandlercodehereCBookTypeDlgDlg;Dlg.DoModal;}voidCMainFrame::OnBaseReadertype{//TODO:AddyourcommandhandlercodehereCReaderTypeDlgDlg;Dlg.DoModal;}voidCMainFrame::OnBorrowBorrow{//TODO:AddyourcommandhandlercodehereCBorrowDlgDlg;Dlg.DoModal;}voidCMainFrame::OnBorrowBorrowSearch{//TODO:AddyourcommandhandlercodehereCBorrowSearchDlgDlg;Dlg.DoModal;}voidCMainFrame::OnBorrowReturn{//TODO:AddyourcommandhandlercodehereCReturnDlgDlg;Dlg.DoModal;}voidCMainFrame::OnBorrowReturnSearch{//TODO:AddyourcommandhandlercodehereCReturnSearchDlgDlg;Dlg.DoModal;}voidCMainFrame::OnDatabaseBackup{//TODO:AddyourcommandhandlercodehereifAfxMessageBox您确定要备份数据库吗MB_OKCANCEL==IDCANCEL{return;}ifCopyFile.\\libDB.mdb.\\libDB.bakFALSEAfxMessageBox数据库备份成功!;elseAfxMessageBox数据库备份失败!;}voidCMainFrame::OnDatabaseRecover{//TODO:AddyourcommandhandlercodehereifAfxMessageBox还原数据库将覆盖原来的数据库您确定要还原吗MB_OKCANCEL==IDCANCEL{return;}ifCopyFile.\\libDB.bak.\\libDB.mdbFALSEAfxMessageBox数据库还原成功!;elseAfxMessageBox数据库还原失败!;}voidCMainFrame::OnLibraryBookLost{CBookLostDlgDlg;Dlg.DoModal;}voidCMainFrame::OnLibraryBookSearch{//TODO:AddyourcommandhandlercodehereCBookSearchDlgDlg;Dlg.DoModal;}voidCMainFrame::OnLibraryNew{//TODO:AddyourcommandhandlercodehereCNewBookDlgDlg;Dlg.DoModal;}voidCMainFrame::OnReaderNew{//TODO:AddyourcommandhandlercodehereCReaderNewDlgDlg;Dlg.DoModal;}voidCMainFrame::OnReaderLostcard{//TODO:AddyourcommandhandlercodehereCReaderDeleteDlgDlg;Dlg.DoModal;}voidCMainFrame::OnReaderSearch{//TODO:AddyourcommandhandlercodehereCReaderSearchDlgDlg;Dlg.DoModal;}voidCMainFrame::OnClose{//TODO:Addyourmessagehandlercodehereand/orcalldefaultifAfxMessageBox您确定要退出系统吗MB_OKCANCEL==IDCANCEL{return;}CFrameWnd::OnClose;}//NewBookDlg.cpp:implementationfile//#includestdafx.h#includeLibrary.h#includeNewBookDlg.h#includeBookTypeSet.h#ifdef_DEBUG#definenewDEBUG_NEW#undefTHIS_FILEstaticcharTHIS_FILE[]=__FILE__;#endif///////////////////////////////////////////////////////////////////////////////CNewBookDlgdialogCNewBookDlg::CNewBookDlgCWnd*pParent/*=NULL*/:CDialogCNewBookDlg::IDDpParent{//{{AFX_DATA_INITCNewBookDlgm_strBookType=_T;m_strBookCode=_T;m_strBookName=_T;m_strPrice=_T;m_strPress=_T;m_strWriter=_T;m_strBrief=_T;//}}AFX_DATA_INIT}voidCNewBookDlg::DoDataExchangeCDataExchange*pDX{CDialog::DoDataExchangepDX;//{{AFX_DATA_MAPCNewBookDlgDDX_ControlpDXIDC_COMBO_BOOKTYPEm_ctrBookType;DDX_ControlpDXIDC_LIST1m_ctrList;DDX_CBStringpDXIDC_COMBO_BOOKTYPEm_strBookType;DDX_TextpDXIDC_EDIT_BOOK_CODEm_strBookCode;DDX_TextpDXIDC_EDIT_BOOK_NAMEm_strBookName;DDX_TextpDXIDC_EDIT_BOOK_PRICEm_strPrice;DDX_TextpDXIDC_EDIT_PRESSm_strPress;DDX_TextpDXIDC_EDIT_WRITERm_strWriter;DDX_TextpDXIDC_EDIT_BRIEFm_strBrief;//}}AFX_DATA_MAP}BEGIN_MESSAGE_MAPCNewBookDlgCDialog//{{AFX_MSG_MAPCNewBookDlgON_BN_CLICKEDIDC_BUTTON_NEWOnButtonNewON_BN_CLICKEDIDC_BUTTON_ALLOnButtonAllON_BN_CLICKEDIDC_BUTTON_DELETEOnButtonDeleteON_NOTIFYNM_CLICKIDC_LIST1OnClickList1//}}AFX_MSG_MAPEND_MESSAGE_MAP///////////////////////////////////////////////////////////////////////////////CNewBookDlgmessagehandlersBOOLCNewBookDlg::OnInitDialog{CDialog::OnInitDialog;//设置列表m_ctrList.InsertColumn0图书编号;m_ctrList.InsertColumn1图书名称;m_ctrList.InsertColumn2图书类别;m_ctrList.InsertColumn3作者;m_ctrList.InsertColumn4出版社;m_ctrList.InsertColumn5图书价格;m_ctrList.InsertColumn6登记日期;m_ctrList.InsertColumn7备注说明;m_ctrList.SetColumnWidth060;m_ctrList.SetColumnWidth1120;m_ctrList.SetColumnWidth280;m_ctrList.SetColumnWidth380;m_ctrList.SetColumnWidth480;m_ctrList.SetColumnWidth580;m_ctrList.SetColumnWidth680;m_ctrList.SetColumnWidth780;m_ctrList.SetExtendedStyleLVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES;//初始化图书类型CBookTypeSetrecordset;if!recordset.OpenAFX_DB_USE_DEFAULT_TYPEselect*frombookType{MessageBox打开数据库失败!数据库错误MB_OK;returnFALSE;}while!recordset.IsEOF{m_ctrBookType.AddStringrecordset.m_type;recordset.MoveNext;}recordset.Close;returnTRUE;//returnTRUEunlessyousetthefocustoacontrol//EXCEPTION:OCXPropertyPagesshouldreturnFALSE}voidCNewBookDlg::OnButtonNew{//TODO:AddyourcontrolnotificationhandlercodehereUpdateData;ifm_strBookCode.IsEmpty{AfxMessageBox请输入图书编号!;return;}ifm_strBookType.IsEmpty{AfxMessageBox请输入图书类型!;return;}ifm_strBookName.IsEmpty{AfxMessageBox请输入图书名称!;return;}CStringstrSQL;CTimecurrent=CTime::GetCurrentTime;strSQL.Formatselect*frombookInfowherecode=%sm_strBookCode;if!m_recordset.OpenAFX_DB_USE_DEFAULT_TYPEstrSQL{MessageBox打开数据库失败!数据库错误MB_OK;return;}ifm_recordset.GetRecordCount!=0{m_recordset.Close;AfxMessageBox该图书编号已经存在,请重新输入!;return;}m_recordset.Close;if!m_recordset.OpenAFX_DB_USE_DEFAULT_TYPE{MessageBox打开数据库失败!数据库错误MB_OK;return;}//添加图书记录m_recordset.AddNew;m_recordset.m_code=m_strBookCode;m_recordset.m_name=m_strBookName;m_recordset.m_type=m_strBookType;m_recordset.m_in_date=current;m_recordset.m_price=m_strPrice;m_recordset.m_press=m_strPress;m_recordset.m_writer=m_strWriter;m_recordset.m_brief=m_strBrief;m_recordset.m_isBorrow=FALSE;m_recordset.Update;m_recordset.Close;//更新列表CStringstrTime;m_ctrList.InsertItem0m_strBookCode;m_ctrList.SetItemText01m_strBookName;m_ctrList.SetItemText02m_strBookType;m_ctrList.SetItemText03m_strWriter;m_ctrList.SetItemText04m_strPress;m_ctrList.SetItemText05m_strPrice;strTime.Format%d-%d-%dcurrent.GetYearcurrent.GetMonthcurrent.GetDay;m_ctrList.SetItemText06strTime;m_ctrList.SetItemText07m_strBrief;//更新界面显示m_strBookType=_T;m_strBookCode=_T;m_strBookName=_T;m_strPrice=_T;m_strPress=_T;m_strWriter=_T;m_strBrief=_T;UpdateDataFALSE;}voidCNewBookDlg::OnButtonAll{//TODO:Addyourcontrolnotificationhandlercodeherem_ctrList.DeleteAllItems;m_ctrList.SetRedrawFALSE;UpdateDataTRUE;CStringstrSQL;strSQL.Formatselect*frombookInfo;if!m_recordset.OpenAFX_DB_USE_DEFAULT_TYPEstrSQL{MessageBox打开数据库失败!数据库错误MB_OK;return;}inti=0;CStringstrTime;while!m_recordset.IsEOF{m_ctrList.InsertItemim_recordset.m_code;m_ctrList.SetItemTexti1m_recordset.m_name;m_ctrList.SetItemTexti2m_recordset.m_type;m_ctrList.SetItemTexti3m_recordset.m_writer;m_ctrList.SetItemTexti4m_recordset.m_press;m_ctrList.SetItemTexti5m_recordset.m_price;strTime.Format%d-%d-%dm_recordset.m_in_date.GetYearm_recordset.m_in_date.GetMonthm_recordset.m_in_date.GetDay;m_ctrList.SetItemTexti6strTime;m_ctrList.SetItemTexti7m_recordset.m_brief;i++;m_recordset.MoveNext;}m_recordset.Close;m_ctrList.SetRedrawTRUE;}voidCNewBookDlg::OnButtonDelete{//TODO:Addyourcontrolnotificationhandlercodehereinti=m_ctrList.GetSelectionMark;if0i{AfxMessageBox请选择一条记录进行删除!;return;}CStringstrSQL;strSQL.Formatselect*frombookInfowherecode=%sm_ctrList.GetItemTexti0;if!m_recordset.OpenAFX_DB_USE_DEFAULT_TYPEstrSQL{AfxMessageBox打开数据库失败!;return;}m_recordset.Delete;m_recordset.Close;m_ctrList.DeleteItemi;m_strBookType=_T;m_strBookCode=_T;m_strBookName=_T;m_strPrice=_T;m_strPress=_T;m_strWriter=_T;m_strBrief=_T;UpdateDataFALSE;}voidCNewBookDlg::OnClickList1NMHDR*pNMHDRLRESULT*pResult{//TODO:Addyourcontrolnotificationhandlercodehereinti=m_ctrList.GetSelectionMark;m_strBookType=m_ctrList.GetItemTexti2;m_strBookCode=m_ctrList.GetItemTexti0;m_strBookName=m_ctrList.GetItemTexti1;m_strPrice=m_ctrList.GetItemTexti5;m_strPress=m_ctrList.GetItemTexti4;m_strWriter=m_ctrList.GetItemTexti3;m_strBrief=m_ctrList.GetItemTexti7;UpdateDataFALSE;*pResult=0;}//ReaderInfoSet.cpp:implementationfile//#includestdafx.h#includeLibrary.h#includeReaderInfoSet.h#ifdef_DEBUG#definenewDEBUG_NEW#undefTHIS_FILEstaticcharTHIS_FILE[]=__FILE__;#endif///////////////////////////////////////////////////////////////////////////////CReaderInfoSetIMPLEMENT_DYNAMICCReaderInfoSetCRecordsetCReaderInfoSet::CReaderInfoSetCDatabase*pdb:CRecordsetpdb{m_code=_T;m_name=_T;m_sex=_T;m_type=_T;m_phone=_T;m_dept=_T;m_address=_T;m_brief=_T;m_nFields=9;//}}AFX_FIELD_INITm_nDefaultType=snapshot;}CStringCReaderInfoSet::GetDefaultConnect{return_TODBC;DSN=LibraryDB;}CStringCReaderInfoSet::GetDefaultSQL{return_T[readerInfo];}voidCReaderInfoSet::DoFieldExchangeCFieldExchange*pFX{//{{AFX_FIELD_MAPCReaderInfoSetpFX-SetFieldTypeCFieldExchange::outputColumn;RFX_TextpFX_T[code]m_code;RFX_TextpFX_T[name]m_name;RFX_TextpFX_T[sex]m_sex;RFX_TextpFX_T[type]m_type;RFX_DatepFX_T[reg_date]m_reg_date;RFX_TextpFX_T[phone]m_phone;RFX_TextpFX_T[dept]m_dept;RFX_TextpFX_T[address]m_address;RFX_TextpFX_T[brief]m_brief;//}}AFX_FIELD_MAP}///////////////////////////////////////////////////////////////////////////////CReaderInfoSetdiagnostics#ifdef_DEBUGvoidCReaderInfoSet::AssertValidconst{CRecordset::AssertValid;}voidCReaderInfoSet::DumpCDumpContextdcconst{CRecordset::Dumpdc;}#endif//_DEBUG//UserDlg.cpp:implementationfile//#includestdafx.h#includeLibrary.h#includeUserDlg.h#ifdef_DEBUG#definenewDEBUG_NEW#undefTHIS_FILEstaticcharTHIS_FILE[]=__FILE__;#endif///////////////////////////////////////////////////////////////////////////////CUserDlgdialogCUserDlg::CUserDlgCWnd*pParent/*=NULL*/:CDialogCUserDlg::IDDpParent{//{{AFX_DATA_INITCUserDlgm_bIsAdmin=FALSE;m_strUser=_T;m_strPass=_T;m_strRePass=_T;//}}AFX_DATA_INIT}voidCUserDlg::DoDataExchangeCDataExchange*pDX{CDialog::DoDataExchangepDX;//{{AFX_DATA_MAPCUserDlgDDX_ControlpDXIDOKm_bntOK;DDX_ControlpDXIDC_BUTTON_NEWm_bntNew;DDX_ControlpDXIDC_BUTTON_DELETEm_bntDelete;DDX_ControlpDXIDC_BUTTON_CANCELm_bntCancel;DDX_ControlpDXIDC_EDIT2m_ctrPass;DDX_ControlpDXIDC_EDIT1m_ctrUser;DDX_ControlpDXIDC_LIST_USERNAMEm_ctrList;DDX_CheckpDXIDC_CHECK1m_bIsAdmin;DDX_TextpDXIDC_EDIT1m_strUser;DDX_TextpDXIDC_EDIT2m_strPass;DDX_TextpDXIDC_EDIT3m_strRePass;//}}AFX_DATA_MAP}BEGIN_MESSAGE_MAPCUserDlgCDialog//{{AFX_MSG_MAPCUserDlgON_NOTIFYNM_CLICKIDC_LIST_USERNAMEOnClickListUsernameON_BN_CLICKEDIDC_BUTTON_NEWOnButtonNewON_BN_CLICKEDIDC_BUTTON_DELETEOnButtonDeleteON_BN_CLICKEDIDC_BUTTON_CANCELOnButtonCancel//}}AFX_MSG_MAPEND_MESSAGE_MAP///////////////////////////////////////////////////////////////////////////////CUserDlgmessagehandlersBOOLCUserDlg::OnInitDialog{CDialog::OnInitDialog;//创建用户列表m_ctrList.InsertColumn0用户名;m_ctrList.SetExtendedStyleLVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES;m_ctrList.SetColumnWidth0120;//在添加用户列表中添加用户名RefreshData;returnTRUE;}voidCUserDlg::RefreshData{m_ctrList.SetFocus;//清空用户列表m_ctrList.DeleteAllItems;m_ctrList.SetRedrawFALSE;CStringstrSQL;UpdateDataTRUE;//打开记录集strSQL=select*fromuser;if!m_recordset.OpenAFX_DB_USE_DEFAULT_TYPEstrSQL{MessageBox打开数据库失败!数据库错误MB_OK;return;}//添加用户名到用户列表中inti=0;while!m_recordset.IsEOF{m_ctrList.InsertItemi++m_recordset.m_user;m_recordset.MoveNext;}m_recordset.Close;m_ctrList.SetRedrawTRUE;}voidCUserDlg::OnClickListUsernameNMHDR*pNMHDRLRESULT*pResult{CStringstrSQL;UpdateDataTRUE;//从数据库中获取选择用户名的资料inti=m_ctrList.GetSelectionMark;m_strUser=m_ctrList.GetItemTexti0;strSQL.Formatselect*fromuserwhereuser=%sm_strUser;if!m_recordset.OpenAFX_DB_USE_DEFAULT_TYPEstrSQL{MessageBox打开数据库失败!数据库错误MB_OK;return;}//显示用户资料m_strPass=m_recordset.m_passwd;m_strRePass=m_strPass;m_bIsAdmin=m_recordset.m_isadmin;m_recordset.Close;UpdateDataFALSE;*pResult=0;}voidCUserDlg::OnButtonNew{//清空用户资料m_strUser=;m_strPass=;m_strRePass=;m_bIsAdmin=FALSE;//设置用户名编辑框为可用m_ctrUser.EnableWindowTRUE;m_ctrUser.SetFocus;//更新数据到界面UpdateDataFALSE;}voidCUserDlg::OnButtonDelete{UpdateDataTRUE;//判断是否指定用户ifm_strUser=={MessageBox请选择一个用户!;return;}CStringstrSQL;strSQL.Formatselect*fromuserwhereuser=%sm_strUser;if!m_recordset.OpenAFX_DB_USE_DEFAULT_TYPEstrSQL{MessageBox打开数据库失败!数据库错误MB_OK;return;}m_recordset.Delete;m_recordset.Close;//刷新用户列表RefreshData;m_strUser=;m_strPass=;m_strRePass=;m_bIsAdmin=FALSE;UpdateDataFALSE;}voidCUserDlg::OnOK{UpdateData;ifm_ctrUser.IsWindowEnabled{//增加新用户的输入检查ifm_strUser=={MessageBox请填写用户名!;m_ctrUser.SetFocus;return;}}else{//修改用户信息的输入检查ifm_strUser=={MessageBox请选择一个用户!;return;}}//限制密码不能为空ifm_strPass=={MessageBox密码不能为空,请输入密码!;m_ctrPass.SetFocus;return;}//验证密码与确认密码是否一致ifm_strPass!=m_strRePass{MessageBox两次输入地密码不一致,请重新输入密码!;m_ctrPass.SetFocus;m_strPass=;m_strRePass=;UpdateDataFALSE;return;}//打开记录集CStringstrSQL;strSQL.Formatselect*fromuserwhereuser=%sm_strUser;if!m_recordset.OpenAFX_DB_USE_DEFAULT_TYPEstrSQL{MessageBox打开数据库失败!数据库错误MB_OK;return;}ifm_ctrUser.IsWindowEnabled{//增加新用户//判断用户是否已经存在ifm_recordset.GetRecordCount!=0{m_recordset.Close;MessageBox该用户已经存在!;return;}m_recordset.AddNew;m_recordset.m_user=m_strUser;m_recordset.m_passwd=m_strPass;m_recordset.m_isadmin=m_bIsAdmin;m_recordset.Update;MessageBox用户添加成功!请记住用户名和密码!;m_recordset.Close;}else{//修改用户信息//判断用户是否不存在ifm_recordset.GetRecordCount==0{m_recordset.Close;MessageBox该用户不存在!请更新数据库;return;}m_recordset.Edit;m_recordset.m_user=m_strUser;m_recordset.m_passwd=m_strPass;m_recordset.m_isadmin=m_bIsAdmin;m_recordset.Update;MessageBox用户修改成功!请记住用户名和密码!;m_recordset.Close;}m_ctrUser.EnableWindowFALSE;//更新用户列表RefreshData;}voidCUserDlg::OnButtonCancel{//TODO:Addyourcontrolnotificationhandlercodeherem_strUser=;m_strPass=;m_strRePass=;m_bIsAdmin=FALSE;m_ctrUser.EnableWindowFALSE;UpdateDataFALSE;}
六、总结本系统在功能方面实现了图书管理员在录入、删除、修改读者信息与图书信息以及图书借阅与归还方面的工作系统化,不但能使管理效率提高,还可以大大减省管理员的工作量在运行效果上有很好的人机交互界面,既有利于一般人员的学习,也有较好的可操作性在安全性方面我们实现了系统数据库的备份管理,使得数据使用更具安全性,同时对登录人员的身份限制,使整个系统的使用更具安全性当然BUG是不可避免的,毕竟我现在还是个学生,不可能在短短的时间内,考虑到方方面面的问题,但是主要的功能通过visualC++的MFC连接sqlserver2008实现了登录,包括管理员登录和用户登录,还有图书的借阅和查询等功能还有其他的功能在前面已经详细介绍了的,在这里就不进行赘述了C++是一门面向对象的语言,通过这个课程设计报告,是我对c++的原理更加了解了也为自己能够使用c++开发一个比较完善的系统而十分的激动是c++让我感受到了面向对象就像是艺术而不是一种编程的方法,他和面向过程的,思想是完全不一样的而各种完美的类更是让我欣赏总之是C++让我认识了面向对象编程之美感谢这次课程设计,感谢我的老师给以我的帮助,可以说没有你们的支持我也不可能做出这个系统!!图
3.
6.2-1图书管理系统顶层图图
3.
6.2-2图书管理系统0层图图
3.
6.2-3图书管理系统借阅功能设计图图
3.
4.1图书管理系统模块结构图图
3.
4.2图书管理系统使用流程图。