1、图书管理系统的建立-cankao 作者: 日期:2 个人收集整理 勿做商业用途图书管理系统的建立摘 要二十一世纪是信息的社会,信息作为社会最主要的资源,将成为战略资源引起人们广泛的关注。如何获取信息?图书是我们最好的获取信息的方式,但由于图书馆图书收藏量大大增加,使传统的图书管理员的工作日益繁重起来。迫使人们起用新的管理方法来管理图书,如何把图书管理员从繁重的工作中解脱出来呢?科学技术日新月异的进步,让人类生活发生了巨大的变化,计算机技术的飞速发展,使各行各业在计算机技术应用方面得到了广泛的普及和使用。信息化时代的到来成为不可抗拒的潮流,人类文明正在进入一个崭新的时代。因此,图书管理系统也以方
2、便、快捷、费用低的优点正慢慢地进入人们的生活,将传统的图书管理方式彻底的解脱出来,提高效率,减轻工人人员以往繁忙的工作,减小出错的概率,使读者可以花更多的时间在选择书和看书上。从而使人们有更多时间来获取信息、了解信息、掌握信息 .摘 要.。.。.。.。.。.。.。.。.。.。.。.。.。.。.1目 录。.。.。.。.。.。.。.。.。.。.。.。.。.2一 系统分析阶段 .。.。.。.。.。.。.。.。.。.。.。.。71.1系统功能模块 .。.。.。.。.。.。.。81。1。1 功能的实现 .。.。.。.。.。.。.。.。.。.。.。.81。1。2 模块框架图 。.。.。.。.。.。.。.。
3、.。.。.。.。.。91.2系统数据分析 。.。.。.。.。.。.。.。.。.。.。.。.。.。10二 设计阶段 .。.。.。.。.。.。.。.。.。.。.。.。.。.112.1概要设计 。.。.。.。.。.。.。.。.。.。.。.112。2 详细设计 .。.。.。.。.。.。.。.。.182.2。1数据信息准备 .。.。.。.。.。.。.。.。.。.。.。.。182.2.2程序数据流图 。.。.。.。.。.。.。.。.。.。.。.18三 设计思想 .。.。.。.。.。.。.。.。.。.。.。273。0 详细设计思想 .。.。.。.。.。.。.。.。283。1资本资料维护模块设计:.。.。.。
4、.。.。.。.。.293.2“系统管理”模块设计。.。.。.。.。.。.。.。.。.。.303。3“用户登录”模块设计。.。.。.。.。.。.。.。.。. 。.。39总结与展望 。.。.。.。.。.。.。.。.。.。.。.。.。.43结束语 。.。.。.。.。.。.。.。.。.。.。.。.。44参考文献 。.。.。.。.。.。.。.。.。.。.。.。.。.。.。45 一 系统分析阶段一直以来人们使用传统的人工方式管理图书馆的日常工作,对于图书馆的借书和还书过程,想必大家都已很熟悉。在计算机尚未在图书馆广泛使用之前,借书和还书过程主要依靠手工。一个最典型的手工处理还书过程就是:读者将要借的书和借
5、阅证交给工作人员,工作人员将每本书上附带的描述书的信息的卡片和读者的借阅证放在一个小格栏里,并在借阅证和每本书贴的借阅条上填写借阅信息.这样借书过程就完成了。还书时,读者将要还的书交给工作人员,工作人员根据图书信息找到相应的书卡和借阅证,并填好相应的还书信息,这样还书过程就完成了。以上所描述的手工过程的不足之处显而易见,首先处理借书、还书业务流程的效率很低,其次处理能力比较低,一段时间内,所能服务的读者人数是有限的。利用计算机来处理这些流程无疑会极大程度地提高效率和处理能力。我们将会看到排队等候借书、还书的队伍不再那么长,工作人员出错的概率也小了,读者可以花更多的时间在选择书和看书上。为方便对
6、图书馆书籍、读者资料、借还书等进行高效的管理,特编写该程序以提高图书馆的管理效率.使用该程序之后,工作人员可以查询某位读者、某种图书的借阅情况,还可以对当前图书借阅情况进行一些统计,给出统计表格,以便全面掌握图书的流通情况.本次 课程设计题目:“图书管理系统”主要目的是利用数据库软件编制一个管理软件,用以实现图书、读者以及日常工作等多项管理。同时对整个系统的分析、设计过程给出一个完整论证。图书管理系统是一种基于集中统一规划的数据库数据管理新模式。在对图书、读者的管理,其实是对图书、读者数据的管理。本系统的建成无疑会为管理者对图书管理系统提供极大的帮助。本系统的设计主要从以下几方面做起:系统业务
7、流程分析、系统的功能设计、系统的数据库结构设计、系统输入/输出设计等。作这些工作需对数据库知识有足够认识,并深入的了解VC+6。0的使用和管理系统的相关知识。在信息时代的今天,人类需要对在政治、经济、军事、文化、科研、教育等领域产生的大量信息进行管理,并对数据进行加工处理,数据库技术则是信息管理与数据处理的先进技术。随着信息量的不断增加,作为计算机的三大主要应用(科学计算、过程控制和数据处理)之一的数据处理,已迅速上升为计算机应用的主要方面,数据库技术则成为人们日常生活中处理数据不可缺少的有力工具,并且现代的信息管理系统几乎都以数据库技术作为核心。1二 需求分析阶段需求分析是在于要弄清用户对开
8、发的数据库应用系统的确切要求。Visual C+ 数据库设计的第一步是明确数据库的目的和如何使用。也就是说需要从数据库中得到哪些信息。明确目的之后,就可以确定您需要保存哪些主题的信息(表),以及每个主题需要保存哪些信息(表中字段)。要设计一个有效的数据库,必须用系统工程的观点来考虑问题.在系统分析阶段,设计者和用户双方要密切合作,共同收集和分析数据管理中信息的内容和用户对处理的要求。根据系统分析,图书管理系统的要求如下 :(1)需求分析: 能够输入图书的综合情况和进行新书入库、现有图书信息修改以及删除; 能够实现对读者档案的查询和编辑管理; 能够进行罚款功能; 能够进行借阅历史的查询功能;(2
9、)系统性能要求: 系统安全、可靠; 功能齐全; 操作方便、界面友好; 易于维护和扩充。(3)系统的功能分析:密码设置:每个操作员均有自己的密码,可以防止非本系统人员进入本系统;又因每个人的权限不一致,故可以防止越权操作。资料维护:为了存放图书、读者档案的全部数据,本系统将每一本图书和每位读者的信息进行管理。系统维护包括对各种表记录的修改、删除、添加等操作。系统查询:可以按图书编号、借阅证编号等相关信息进行查询系统管理:进行员工管理、数据备份和数据恢复。报表统计:包括统计图书信息、读者信息、借阅信息和罚款信息等。其它操作:包括修改密码、添加用户、页面设置等2。1系统功能模块图书管理系统需要实现的
10、功能主要有四大块:“日常工作管理”、“基本资料维护”、“查询、和“系统管理”模块。其中日常工作管理和基本资料维护是整个系统的核心。2.1。1 功能的实现:1“日常工作”模块:(1) 借书处理:主要功能是记录借阅证编号和图书编号,进行借书过程.在数据库中插入一条借书记录,该记录包括读者ID、图书ID、借出日期、还书期限、操作员姓名。(2) 还书处理:主要功能是输入借阅证编号、图书ID,在借阅登记表中找到相应的记录,将该记录的相应数据插入到还书记录中,同时将借书记录删除,并保存在借阅历史记录表中。(3) 缴纳罚金:输入读者ID,显示该读者的姓名、图书编号、罚款金额和罚款原因,如果读者交纳了罚金,则
11、将借阅登记表的允许借阅标志置为“Y”。删除罚款记录表中该读者对应的记录,将这一条记录同时插入到罚款历史记录表中。2“基本资料维护模块:(1)图书资料维护:包括新书的入库,以及现有书籍资料的修改和删除。(2)读者资料维护:包括新会员的资料入库,以及现有会员资料的修改和删除3“查询”模块:(1)图书资料查询:根据相应的图书信息对所有书籍进行所需查询。此查询包括:图书分类、图书编号、图书名称、作者、出版社.(2)读者资料查询:根据相应的读者资料进行所需查询。 借阅证编号、读者姓名、身份证编号以及止借标志.(3)借阅历史记录查询:根据相应的借阅信息进行所需查询。此查询包括:借阅证编号、图书编号、借书日
12、期、还书日期。(4)罚款历史记录查询:根据相应的罚款信息进行所需查询。此查询包括:借阅证编号、罚款日期、罚款原因。4“系统管理”模块:(1)员工管理:包括新员工信息的录入,密码的修改以及员工信息的删除。(2)数据备份:对现有的数据库信息的保存。(3)数据恢复:对数据库信息的恢复。2。1。2 模块框架图图书管理系统数据恢复 系统管理查 询基本资料维护日常工作数据恢复数据备份员工管理系统登录借书处理还书处理缴纳罚金罚款历史维护借阅历史维护读者资料查询图书资料查询图书资料维护读者资料维护图21 模块框架图2。2系统数据分析通过对图书管理系统的分析,可以得出该系统涉及三个实体:读者、图书、工作人员.通
13、过对各实体数据关系的整理,我们可以画出如下E-R图: 读者借阅还书管理员还书图 书图22 系统ER图这些实体涉及的数据项有:读者:借阅证编号、姓名、身份证号、最大借书数、止借标志.图书:图书编号、图书名称、作者、出版社、价格、库存量。工作人员:员工编号、员工姓名、员工性别、身份证号、登陆密码。实体之间的联系涉及的数据项有:借阅信息表:借阅证编号,图书编号1,图书编号2,图书编号3,借书日期1,借书日期2,借书日期3,操作员姓名。罚款信息表:借阅证编号,读者姓名,图书编号,图书名称,罚款原因,罚款金额,罚款日期,操作员姓名。第三章 设计阶段3。1概要设计3。1.2系统数据库设计1图书信息数据表图
14、书信息数据表的主要功能在于新书入库以及保存在库图书的主要信息和相关信息,包括:图书编号、图书名称、作者、出版社、单价以及库存量字段名称字段类型字段大小索引必须填写BOOK_ID文本30有(无重复)是BOOK_NAME文本50是CLASS文本20是AUTHOR文本30是PRESS文本50是PRICE数字是STOCK数字 是图书编号字段为主关键字段,书名字段、作者字段、出版社字段、单价字段和库存量字段分别记录图书的书名、作者、出版社、图书单价和库存量的信息; 2.读者信息数据表读者信息数据表的主要功能是新读者的注册以及保存已注册的读者相关信息.它包括:借阅证编号、读者姓名、读者身份证号、最多借书数
15、和止借标志。字段名称字段类型字段大小索引必须填写READER_ID文本30有(无重复)是NAME文本8是ID_CARD文本20是MAXNUM_CAN_BORROW数字长整型是FLAG_BORROW数字长整型是读者编号字段为主关键字段,读者姓名字段、身份证号字段、最大借书数字段和止借标志字段分别记录读者的借阅证编号、读者姓名、读者的身份证号、最大借书数和止借标志信息;3。员工信息数据表员工信息数据表的主要功能是新员工的注册以及保存已注册员工的相关信息。它包括:员工编号、员工姓名、员工身份证号、员工性别和登录密码。字段名称字段类型字段大小索引必须填写CLERK_ID文本30有(无重复)是NAME文
16、本8是ID_CARD文本20是PASSWORD文本30是SEX文本2是员工编号字段为主关键字段,姓名字段、性别字段、身份证号字段、登录密码字段分别记录读者的员工编号、员工姓名、员工性别、员工的身份证号以及登录密码。4。借书登记信息数据表借书登记信息数据表的主要功能是进行有关借阅图书过程中信息的处理它包括:借阅证编号、图书编号1、图书编号2、图书编号3、借阅时间1、借阅时间2、借阅时间3和员工姓名。字段名称字段类型字段大小索引必须填写READER_ID文本30有(无重复)是BOOK_ID1文本30是BOOK_ID2文本30是BOOK_ID3文本30是BORROW_DATE1日期是BORROW_D
17、ATE2日期是BORROW_DATE3日期是CLERK_NAME文本30是 5.借阅历史信息数据表借阅历史信息数据表的主要功能是对借阅历史的信息进行查询。它包括:借阅证编号、读者姓名、图书编号、图书名称、借阅时间、归还时间借书操作员姓名、还书操作员姓名和备注。字段名称字段类型字段大小索引必须填写READER_ID文本30有(无重复)是NAME 文本30是BOOK_ID文本30是BOOK_NAME文本30是BORROW_DATE日期 是RETURN_DATE日期 是B_CLERK_NAME文本30是R_CLERK_NAME文本 30是REMARK文本8是6罚款信息数据表罚款信息数据表的主要功能是
18、读者因不正常还书而被罚款的记录。它包括:借阅证编号、读者姓名、图书编号、图书名称、借阅时间、罚款原因罚款金额、罚款日期和操作员姓名。字段名称字段类型字段大小索引必须填写READER_ID文本30有(无重复)是NAME文本30是BOOK_ID文本30是BOOK_NAME文本30是WHYS文本是AMOUNT数字20是FINE_DATE日期是CLERK_NAME文本30是7.罚款历史信息数据表罚款历史信息数据表的主要功能是对某位读者罚款历史的信息进行查询.它包括: 借阅证编号、读者姓名、图书编号、图书名称、 罚款原因罚款金额、罚款日期和解止日期。字段名称字段类型字段大小索引必须填写READER_ID
19、文本30有(无重复)是NAME文本30是BOOK_ID文本30是BOOK_NAME文本30是WHYS文本是AMOUNT数字20是FINE_DATE日期是OK_DATE文本30是8.图书分类信息数据表图书分类信息数据表的主要功能是对图书进行分类.它包括:分类编号和类名字段名称字段类型字段大小索引必须填写CLASS_ID文本30有(无重复)是CLASS_NAME文本30是3.2 详细设计3.2。1数据信息准备1“图书资料维护模块:要进行图书资料的维护就必须有图书的相关信息:如:图书的分类、图书的编号、图书的名称、图书的作者、图书出版社以及图书的库存量。新的图书,都要进行新书入库,将新书的各项信息输
20、入图书资料维护信息数据表中,从而图书资料维护信息数据表将会更新,新书入库过程完成.在进行图书分类信息的时候,字段就相应比较少了,只需要描述某本图书在所有图书中的类型就完全可以了,这个信息将提供给工作人员进行借书登记时信息的一个依据.在图书修改信息中,每本现有的图书将会出现丢失或严重损坏,从而导致该类图书无法再进行借阅,那么就要进行删除或修改图书的库存量.2.“读者资料维护”模块:要进行读者资料的维护就必须有读者的相关信息:如:读者所使用的借阅证编号、读者的姓名、读者的身份证号以及止借标志。新的读者,都要进行信息登记,将新会员的各项信息输入读者资料维护信息数据表中,从而读者资料维护信息数据表将会
21、更新,更新后新的会员就可以借阅图书了。在进行只需要描述某本图书在所有图书中的类型就完全可以了,这个信息将提供给工作人员进行借书登记时信息的一个依据。在图书修改信息中,每本现有的图书将会出现丢失或严重损坏,从而导致该类图书无法再进行借阅,那么就要进行删除或修改图书的库存量。3.2。2程序数据流图1系统功能流程图用户登录退出系统调用数据库?Y/N系统主界面图3-1 系统功能流程图2“图书资料维护”数据流图 图32 “图书资料维护”数据流图3“读者资料维护”数据流图图3-3 “读者资料维护数据流图四 设计思想详细设计思想4.2.1“资本资料维护”模块设计:本模块包括两个方面:图书资料维护和读者资料维
22、护。一、“图书资料维护:其实现的功能是对新书的录入、现有书目的修改、删除以及保存,同时为了便于用户查看书目,使用了MFSlexGrid控件显示出网格数据。打开“图书资料维护模块”对话框(CBookDlg)时,调用SetButtonState()(设置按钮状态)、SetTextState()(设置文本编辑框状态)、DisplayRecord()( 数据显示)函数,将对话框初始化,然后可以进行相关的操作。添加书目时有两种情况,一是要添加的图书是新书,二是书库中已存在此类书籍.实现此功能的程序流程图如下:开始输入相应数据查找数据库判断书名/作者调用Edit函数库存增加调用AddNew添加新记录更新记
23、录集更新记录集结束图41 “图书资料维护”数据流程图在这里,图书的添加、修改和删除操作都与前面的用户资料维护功能一样,分别调用CRrecordSet提供的AddNew、Edit、Delete成员函数,可方便的实现对数据库的操作,此模块可以实现图书维护的基本功能。在查看图书基本资料的时候需要用到Crecordset提供的几个成员函数,用来在记录集中滚动,如下所示: void MoveNext( );/前进一个记录 void MovePrev( );/后退一个记录 void MoveFirst( );/滚动到记录集中的第一个记录 void MoveLast( );/滚动到记录集中的最后一个记录当图
24、书信息被添加、修改以及删除后,在保存的同时,数据库将会自动更新。系统调用void shuixin(),重画网格。代码如下:if(m_rsDataSet。IsBOF()m_MSFGrid.SetCols(7);m_MSFGrid.SetRows (m_rsDataSet.GetRecordCount()+1);m_MSFGrid。SetColWidth(1,2360); /定义网格的表头m_MSFGrid。SetRow(0);m_MSFGrid。SetCol(1);m_MSFGrid.SetText(图书编号);m_MSFGrid.SetRow(0);m_MSFGrid。SetCol(2);m_
25、MSFGrid。SetText(”图书名称”);m_MSFGrid。SetRow(0);m_MSFGrid.SetCol(3);m_MSFGrid。SetText(作者”);m_MSFGrid.SetRow(0);m_MSFGrid.SetCol(4);m_MSFGrid。SetText(出版社”);m_MSFGrid.SetRow(0);m_MSFGrid.SetCol(5);m_MSFGrid。SetText(”单价”);m_MSFGrid。SetRow(0);m_MSFGrid。SetCol(6);m_MSFGrid。SetText(”库存量”);return; m_rsDataSet。
26、MoveFirst();/画网格while (!m_rsDataSet。IsEOF())m_rsDataSet.MoveNext();m_rsDataSet.GetRecordCount();m_MSFGrid.SetCols(7); m_MSFGrid。SetRows (m_rsDataSet。GetRecordCount()+1); m_MSFGrid。SetColWidth(-1,2360); /定义网格的表头 m_MSFGrid.SetRow(0);m_MSFGrid.SetCol(1);m_MSFGrid。SetText(”图书编号”);m_MSFGrid。SetRow(0);m_M
27、SFGrid。SetCol(2);m_MSFGrid。SetText(”图书名称”);m_MSFGrid.SetRow(0);m_MSFGrid。SetCol(3);m_MSFGrid。SetText(”作者”);m_MSFGrid。SetRow(0);m_MSFGrid.SetCol(4);m_MSFGrid。SetText(”出版社);m_MSFGrid。SetRow(0);m_MSFGrid。SetCol(5);m_MSFGrid。SetText(”单价);m_MSFGrid。SetRow(0);m_MSFGrid.SetCol(6);m_MSFGrid。SetText(”库存量); m
28、_rsDataSet。MoveFirst();/重新画网格 int iRow=1;while(!m_rsDataSet。IsEOF()CString str,str1,str2;str.Format(”BOOK%d”,iRow);str1。Format(%d,m_rsDataSet.m_STOCK);str2.Format(”d”,m_rsDataSet.m_PRICE);m_MSFGrid。SetRow(iRow);m_MSFGrid.SetCol(0);m_MSFGrid.SetText(str);m_MSFGrid.SetRow(iRow);m_MSFGrid。SetCol(1);m_M
29、SFGrid.SetText(m_rsDataSet。m_BOOK_ID);m_MSFGrid。SetRow(iRow);m_MSFGrid.SetCol(2);m_MSFGrid。SetText(m_rsDataSet。m_BOOK_NAME);m_MSFGrid。SetRow(iRow);m_MSFGrid.SetCol(3);m_MSFGrid.SetText(m_rsDataSet.m_AUTHOR);m_MSFGrid。SetRow(iRow);m_MSFGrid。SetCol(4);m_MSFGrid。SetText(m_rsDataSet.m_PRESS);m_MSFGrid.S
30、etRow(iRow);m_MSFGrid.SetCol(5);m_MSFGrid.SetText(str2);m_MSFGrid.SetRow(iRow);m_MSFGrid.SetCol(6);m_MSFGrid。SetText(str1); iRow+;m_rsDataSet。MoveNext(); m_MSFGrid。SetRow(1);m_MSFGrid。SetCol(1); m_rsDataSet.MoveFirst();在此模块的实现过程中遇到了下列问题:a、 数据库的打开和关闭不合理b、 数据变量类型的不一致c、 准备工作不够,用选择语句时没有分析好流程,比较盲目等等一些问题,
31、最后也都一一解决.二、“读者资料维护”模块设计:“读者资料维护”模块的实现与“图书资料维护”基本上一样,实现了读者的借书证号、姓名、证件号码的登记。在模块的设计过程中,根据需要对数据库中的“读者登记表作了相应的修改.读者资料的添加、修改、保存部分实现代码如下:UpdateData(TRUE);if (m_strReaderID。IsEmpty()| m_strReaderName.IsEmpty()AfxMessageBox(请输入相应数据!);return;if (m_bAdd) m_rsDataSet.Close();int n=0; CString strSQL;strSQL = ”SE
32、LECT * FROM READER WHERE NAME=;strSQL = strSQL + m_strReaderName;strSQL = strSQL + AND IDCARD=”;strSQL = strSQL + m_strIDCard;strSQL = strSQL + ;m_rsDataSet.Open(AFX_DB_USE_DEFAULT_TYPE,strSQL);if(m_rsDataSet。GetRecordCount()!=0) m_rsDataSet。MoveFirst();MessageBox(”此读者已存在!,”提示,MB_ICONQUESTION);n=1;e
33、lse if (n=0)m_rsDataSet.AddNew();m_rsDataSet。m_READER_ID= m_strReaderID;m_rsDataSet.m_NAME = m_strReaderName;m_rsDataSet.m_IDCARD = m_strIDCard;m_rsDataSet.m_FLAG_BORROW= m_strFlagBorrow;m_rsDataSet.Update();m_rsDataSet。Requery();MessageBox(”新记录添加成功!”);elsem_rsDataSet。Edit();m_rsDataSet.m_READER_ID=
34、 m_strReaderID;m_rsDataSet。m_NAME = m_strReaderName;m_rsDataSet.m_IDCARD = m_strIDCard;m_rsDataSet。m_FLAG_BORROW= m_strFlagBorrow;m_rsDataSet。Update();m_rsDataSet。Requery();MessageBox(信息修改成功!);m_bAdd = FALSE; m_bEdit = FALSE;SetButtonState();SetTextState();m_rsDataSet。Close();m_rsDataSet。Open();shua
35、xin();4。2。2“系统管理”模块设计:本模块包括三个方面:员工管理、数据备份和数据恢复。一、“员工管理”模块设计:“员工管理”模块的设计只是简单实现对新员工信息的注册、现有员工密码的修改以及员工信息的删除。员工在密码的修改时,必须以自己的密码登录系统后进行自己密码的修改。员工密码修改部分实现代码如下:void CPasswordDlg:OnOK() UpdateData();CString strSQL,str;CLibrarySet m_rsDataSet;strSQL.Format(”select * from CLERK where NAME=s,m_strUserName);m_
36、rsDataSet。Open(AFX_DB_USE_DEFAULT_TYPE,strSQL);m_rsDataSet。GetFieldValue(PASSWORD”,str);if(!m_rsDataSet.IsEOF())if(m_strOPW!=str)AfxMessageBox(”原密码不正确!请重新输入!);m_strOPW=”;m_strPW1=”;m_strPW2=”;UpdateData(FALSE);return;if(m_strPW1!=m_strPW2)AfxMessageBox(新密码不一致!请重新输入!”);m_strPW1=”;m_strPW2=”;UpdateDat
37、a(FALSE);return;m_rsDataSet。Edit();m_rsDataSet。m_PASSWORD=m_strPW1;m_rsDataSet。Update();m_rsDataSet。Requery();m_rsDataSet.Close();AfxMessageBox(”密码修改成功!”);CDialog::OnOK();二、“数据备份”和“数据恢复模块设计:数据备份和恢复:用户处理数据往往要存盘作永久备份,在需要时进行数据恢复。在设计数据备份和恢复是要用到文档的序列化(Serialize)。MFC库中,磁盘文件是通过CFile类来表示的,它通过Win32函数CreateFi
38、le所得的二进制文件 句柄进行了封装。但MFC重载了Serialize函数。使得用户不必使用CFile类就可以完成相应的文档操作。在Serialize函数中,定义一个基于CArchive类的对象ar,可以使用插入运算符()和提取运算符()来续写数据,从而实现数据的备份和恢复。(1)“数据备份”模块部分实现代码如下:CFileDialogfiledlg(0, / 1文件打开, 0文件另存为 .bak.”, NULL,OFN_OVERWRITEPROMPT OFN_NOREADONLYRETURN , lib (*。bak)|*.bakAll Files (*。*)|。*|, NULL);if(filedlg.DoModal()=IDOK)fileName = filedlg.GetPathName();CLibrarySet m_rsClerkSet;m_rsClerkSet。Open();CFile file;file.Open(fileName,CFile::modeCreateCFile:modeWrite);CArchive ar(file,CArchive::store);int n1;n10;while(!m_rsClerkSet。IsEOF()m_rsClerkSet.MoveNext();n1=m_rsClerkSet.GetRecordCount();if(n10