C图书管理系统课程设计_第1页
C图书管理系统课程设计_第2页
C图书管理系统课程设计_第3页
C图书管理系统课程设计_第4页
C图书管理系统课程设计_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、课课 程程 设设 计计 课程名称面向对象程序设计课程设计 题目名称图书管理系统 专业班级2015 级计算机科学与技术 1 班 学生姓名 学 号 指导教师 二一六年十一月二十日 蚌埠学院计算机科学与技术系课程设计任务书 课 程 面向对象程序设计 课程设计 班级2015 级计科 1 班指导教师 题 目图书管理系统完成时间 2016 年 11 月 21 日至 2016 年 12 月 18 日 主要内容 要求完成以下功能: 1对图书信息进行查询、更改、删除 2对读者信息进行查询、更改、删除 3通过输入读者编号和图书编号进行借阅图书 4. 通过读者编号和图书编号进行还书 5要求有错误提示功能,输入不正确

2、提示错误 设计报告要求 1封面 2课程设计任务书 3分工协作说明 4课程设计报告 目录 引言 系统总体方案 设计思路和主要步骤 各功能模块和流程图 程序类的说明 系统测试 结论 致谢 参考文献 附录(程序代码) 5.以班级为单位(文件夹),提交各组工程调试、运行代码(每组 1 个文件 夹)。 说明:学生完成课程设计后,提交课程设计报告及软件,要求文字通畅、字 迹工整(也可以打印),文字不少于 5000 字,并装订成册。 星期 周次 一二三四五 上机时间安排 第 13 周- 第 16 周 3-4 节3-4 节 指导时 间地点 上机时间,计算机基础实验室(B532、A502) 版面要求 1题目用黑

3、体三号,段后距 18 磅(或 1 行) ,居中对齐; 2标题用黑体四号,段前、段后距 6 磅(或 0.3 行) ; 3正文用小四号宋体,行距为 1.25 倍行距; 4标题按“一” 、 “” 、 “1” 、 “”顺序编号。 分工协作说明(以列表形式具体说明每个人所做的工作) 课题名称学生姓名学号所做的工作 团队总体分工、课程设计的整体设 计、程序代码的编写、程序修改 部分代码的编写、部分资料查询、 资料的收集与分析 部分课程设计说明书的书写、修改 课程设计中不完善的地方 资料的收集与分析、部分课程设计 说明书的书写 课程设计的总结、参考资料的查询 及提取有用内容 图书管理系统 最后总结调试。由所

4、有组员共同完成 蚌埠学院计算机科学与技术系本科课程设计成绩评定表 项目权重分值具体要求 得分 文献阅读与 调查论证 0.20100 能独立查阅文献和从事其它调研;有收集、加工各 种信息的能力 设计质量0.30100 设计合理、功能齐备,程序运行正常,实验数据准 确可靠;有较强的实际动手能力 论文撰写质 量 0.20100 设计说明书完全符合规范化要求,用 A4 复印纸打 印成文 学习态度0.20100 学习态度认真,科学作风严谨,严格按要求开展各 项工作,按期完成任务 学术水平与 创新 0.10100设计有创意,有一定的学术水平或实用价值 总分 评语: 等级: 指导教师: 年 月 日 1 目

5、录 一一 引言引言.1 1 二二 系统总体方案系统总体方案.2 2 三三 设计思路设计思路.7 7 功能需求功能需求.7 7 数据需求数据需求.7 7 性能需求性能需求.7 7 四四 各功能模块各功能模块.8 8 五五 流程图流程图.9 9 六六 程序类的说明程序类的说明.1111 七七 系统测试系统测试.1414 运行运行.1414 调试调试.2020 测试测试.2121 八八 结论结论.2 22 2 九九 致谢致谢.2222 十十 参考文献参考文献.2323 十一十一 附录(程序代码)附录(程序代码).2323 2 一 引言 当今时代是飞速发展的信息时代。在各行各业中离不开信息处理,这正是

6、 计算机被广泛应用于信息管理系统的环境。计算机的最大好处在于利用它能够 进行信息管理。使用计算机进行信息控制,不仅提高了工作效率,而且大大的 提高了其安全性。尤其对于复杂的信息管理,计算机能够充分发挥它的优越性。 计算机进行信息管理与信息管理系统的开发密切相关,系统的开发是系统管理 的前提。图书管理系统就是为了管理好图书馆信息而设计的。 图书馆作为一种信息资源的集散地,图书和用户借阅资料繁多,包含很多 的信息数据的管理,现今,有很多的图书馆都是初步开始使用,甚至尚未使用 计算机进行信息管理。根据调查得知,他们以前对信息管理的主要方式是基于 文本、表格等纸介质的手工处理,对于图书借阅情况(如借书

7、天数、超过限定 借书时间的天数)的统计和核实等往往采用对借书卡的人工检查进行,对借阅 者的借阅权限、以及借阅天数等用人工计算、手抄进行。数据信息处理工作量 大,容易出错;由于数据繁多,容易丢失,且不易查找。总的来说,缺乏系统, 规范的信息管理手段。尽管有的图书馆有计算机,但是尚未用于信息管理,没 有发挥它的效力,资源闲置比较突出,这就是管理信息系统的开发的基本环境。 数据处理手工操作,工作量大,出错率高,出错后不易更改。图书馆采取 手工方式对图书借阅情况进行人工管理,由于信息比较多,图书借阅信息的管 理工作混乱而又复杂;一般借阅情况是记录在借书证上,图书的数目和内容记 录在文件中,图书馆的工作

8、人员和管理员也只是当时对它比较清楚,时间一长, 如再要进行查询,就得在众多的资料中翻阅、查找了,造成查询费时、费力。 如要对很长时间以前的图书进行更改就更加困难了。 基于这些问题,有必要建立一个图书管理系统,使图书管理工作规范化, 系统化,程序化,避免图书管理的随意性,提高信息处理的速度和准确性,能 够及时、准确、有效的查询和修改图书情况。为了联系实际,考虑各层次学校 的情况,软件本身要求易学,界面友好,容易掌握,可以较简单方便的管理各 种图书信息;硬件的配置要求不能太高,这样可以很好的适应当前的学校图书 馆。系统的总体特点应该是方便、简单、实用。 3 二 系统设计方案 设计一个总菜单,1 图

9、书信息,2 读者信息,3 借阅图书,4 归还图书。基本功能的实 现都将体现在这几个菜单选项中。函数原型和数据结构如下: const int Maxr=100 ;/最多的读者数 const int Maxb=100; /最多的图书数 const int Maxbor=5; /每位读者最多借的书 class Book/图书类,实现对图书的描述,图书的编号,书名,借出,还入等功能 class BDatabase/图书库类,实现对图书的维护,查找,删除 class Reader/读者的信息描述 class RDatabase/读者类库,实现建立读者的个人资料 void main() /实现程序的主界面

10、 char bname15; char cname15; char auname15; char choice4; char choice5; char choice6; char choice7; int bookid,readerid; RDatabase ReaderDB; Reader *r; BDatabase BookDB; Book *b; coutnnn; coutttttt 欢迎光临图书馆管理系统!endl; coutttttt* 1、读 者 模 式 *endl; coutttttt* 2、管 理 员 模 式 *endl; coutttttt* 0、退 出 *choice7;

11、 switch(choice7) case 1: coutttttt 欢迎光临图书馆管理系统!endl; coutttttt* 1.图 书 查 询 *endl; coutttttt* 2.退 出 系 统 *choice4; 4 switch(choice4) case 1: coutttttt* 1.按图书编号查找 *endl; coutttttt* 2.按图书书名查找 *endl; coutttttt* 3.按图书作者查找 *endl; coutttttt* 4.按图书出版社查找*endl; coutttttt* 0.返 回 *endl; coutchoice5; switch(choice

12、5) case 1: coutbookid; b=BookDB.query1(bookid); if(b=NULL) cout该图书不存在!; break; coutsetw(6)编号setw(18)书名setw(10)作者 setw(10)出版社setw(10)存量disp(); break; case 2: coutbname; b=BookDB.query2(bname); break; case 3: coutauname; b=BookDB.query3(auname); break; case 4: coutcname; 5 b=BookDB.query4(cname); brea

13、k; case 0: break; case 2: exit(1); case 2: BookDB.song(); coutnnn; coutttttt 欢迎光临图书馆管理系统!endl; while(choice5!=0) coutn; coutnttttt* 图 书 管 理 系 统*nn; coutttttt* 1.图 书 信 息 *endl; coutttttt* 2.读 者 信 息 *endl; coutttttt* 3.借 阅 图 书 *endl; coutttttt* 4.归 还 图 书 *endl; coutttttt* 0.退 出 *endl; coutchoice6; swi

14、tch (choice6) case 1: BookDB.bookdata(); break; case 2: ReaderDB.readerdata(); break; case 3: couttttt 借书操作endl; coutreaderid; 6 r=ReaderDB.queryid(readerid); if(NULL=r)/按编号查找是否有该读者 cout不存在该读者,不能借书!endl; break; coutbookid; b=BookDB.query1(bookid); if(b=NULL)/按编号查找是否有该图书 cout不存在该图书,不能借书!borrowbook()=

15、0) cout该图书已借完,不能借书!endl; break; cout读者借书成功!borrowbook(b-getno(); break; case 4: couttttt 还书操作endl; coutreaderid; r=ReaderDB.queryid(readerid); if(r=NULL) cout不存在该读者,不能还书endl; break; coutbookid; b=BookDB.query1(bookid); if(b=NULL) cout不存在该图书,不能还书retbook(); r-retbook(b-getno(); break; default: break;

16、case 0: break; default: break; 8 三 设计思路 功能需求 设计一个通过链表实现对图书信息进行管理的程序,要求完成以下功能: 1、建立图书库类,可以对图书的具体信息进行管理,例如:图书号、书名 及出版社、作者、册数; 2、将输入信息按图书号进行从小到大的排序; 3、实现查询功能输入书名,查询输出相关信息; 4、实现修改功能修改图书信息; 5、实现删除功能输入书名或书号,可将其信息从图书库类中删除; 6、建立读者库类,可以对读者的具体信息进行管理,例如:读者编号、姓 名; 7、将输入信息按读者编号进行从小到大的排序; 8、实现查询功能输入读者编号或者姓名,查询输出相

17、关信息; 9、实现修改功能修改读者信息; 10、实现删除功能输入读者名或读者编号号,可将其信息从读者库类中 删除; 数据需求 需要向系统输入图书号、书名及出版社、作者、册数、图书位置 需要记录读者编号、姓名、班级、手机号 性能需求 在运行本程序时只要按照正确的操作方法不会出现无法运行的情况,系统 稳定性好,安全,可靠。 9 四 功能模块设计 根据分析整个系统主要划分为 4 个大类、4 个功能模块,分别执行要求中 的功能。该系统需要有图书信息管理、读者信息管理,图书借阅、图书归还等。 1、图书类(class Book)模块中,可以实现对图书信息的描述,管理图书 的编号、书名、借出、归还等功能。

18、2、图书库类(class BDatabase)模块中,实现对图书的新增、维护、删 除等功能,其中构造函数 BDatabase()实现对新增图书信息的录入,并自动 保存在 book.txt 文件中。 3、读者类(class Reader)模块中,对读者信息新增、借书、还书及读出 读者信息等功能。 4、读者库类(class RDatabase)模块中,实现建立读者信息,删除读者 信息及查找读者,并将读者有关信息自动保存在 reader.txt 文件中。 5、除了图书类及读者类两大模块还有图书借阅功能,通过图书编号和读者 编号记录借出图书及相关信息且图书库中库存数量自动减一。 6、图书归还功能通过读

19、者编号及图书编号确认图书归还。 10 五 流程图 图图 1 图书管理系统流程图图书管理系统流程图 图书管理系统 读 者 信 息 图 书 信 息 借 阅 系 统 归 还 系 统 图书信息 查 找 删 除 新 增 修 改 全 显 全 删 返 回 新 书 编 号 新 书 书 名 新 书 作 者 新 书 出 版 社 新 书 数 量 图 书 位 置 11 图图 2 图书信息管理流程图图书信息管理流程图 图图 3 图书信息流程图图书信息流程图 读者信息 查 找 删 除 新 增 修 改 全 显 全 删 返 回 姓 名 编 号 班 级 手 机 号 12 六 程序类的说明 6.1 图书类 该类实现对图书的描述,

20、图书的编号,书名,借出,还入等功能 Book +tag:int +no:int +name20:char +author20:char +cbs20:char +onshelf:int +getname():char + getauthorname():char + getcbsname():char + gettag():void + setonshelf(int oa):void + delbook():void + addbook():void + borrowbook():int + retbook():void + disp():void 四 个 类 图 书 类 图 书 库 类 读

21、者 类 读 者 库 类 13 + getno():int 6.2 图书库类 该类实现对图书的新增、维护、删除等功能 Database +top:int +clear():void +addbook():int +query1(int bookid):book +query2(char a):book +query3(char a):book +query4(char a):book +bookdata():void +disp():void 6.3 读者类 该类实现对读者信息新增、借书、还书及读出读者信息等功能。 Reader 14 +tag:int +no:int +name10:char

22、+borbookMaxbor:int + getname():char + gettag():int + getno():int + setname(char na):void + delbook():void + addreader(int n,char *na):void + borrowbook(int bookid):void + retbook(int bookid):int + disp():void 6.4 读者库类 该类实现建立读者信息,删除读者信息及查找读者 RDatabase +top:int +readMaxr:reader + clear():void + addrea

23、der(int n,char *na):int + queryid(int readerid):Reader + queryname(char readername10):Reader + disp():void + readerdata():void 15 七 系统测试 (一) 运行 1、点击运行,点击运行,首先出现的是选择登陆界面,选择界面选项进行 操作,以管理员、读者的身份进入系统。可进行如图 7.1 所示的系统主界面 (选择数字进入,退出系统) 。 图图 7.1 选择登陆方式界面选择登陆方式界面 2、选择 1 进入读者模式,然后进入图书管理系统读者版(功能剪切版) , 16 可以选择图

24、书查询或者退出系统。如图 7.2 所示图书信息页面。 图图 7.2 图书信息页面图书信息页面 3、选择 1 进入图书查询,可以按照图书编号、作者、书名、出版社等方式 查找。如图 7.3 所示图书信息查询页面。 图图 7.3 图书信息查询页面图书信息查询页面 4、输入 2,进入管理员模式,然后提示输入管理员密码。如图 7.4 所示管 理员登录页面。 17 图图 7.4 管理员登录页面管理员登录页面 5、输入管理员密码后进入图书管理系统管理员模式。如图 7.5 所示管理员 模式页面。 图图 7.5 管理员模式页面管理员模式页面 6、管理员模式图书信息管理功能 、选择 1 进入图书信息管理页面,包括

25、新增、更改、删除、查找、全删、 全显、更改等功能。如图 7.6 所示图书信息管理页面。 18 图图 7.67.6 图书信息管理页面图书信息管理页面 、选择 1 进入新增图书页面,可以增加图书编、书名、作者、出版社、 存量、图书位置等,如图 7.7 所示新增图书页面。 图图 7.77.7 所示新增图书页面所示新增图书页面 、图 7.6 所示图书信息管理页面除新增图书,还可以对图书存量进行更 改,还可以通过输入图书编号删除特定图书,通过图书编号、图书书名、图书 19 出版社、图书作者等对图书进行查找。如图 7.8 所示图书查询页面。 图图 7.87.8 图书查询页面图书查询页面 7、管理员模式图书

26、信息管理功能 、选择 2 进入读者信息管理页面,包括新增、更改、删除、查找、全删、 全显、更改等功能。如图 7.9 所示读者信息管理页面。 图图 7.97.9 读者信息管理页面读者信息管理页面 、选择 1 进入新增读者页面,可以增加图书编、书名、作者、出版社、 20 存量、图书位置等,如图 7.10 所示新增读者页面。 图图 7.107.10 新增读者页面新增读者页面 、图 7.9 所示读者信息管理页面除新增读者,还可以对同编号读者信息 进行更改,通过输入读者编号删除读者,通过读者编号等对图书进行查找。 8、管理员模式借阅图书功能 进入图书借阅系统后,通过管理员输入读者编号及所借书籍编号后即借

27、书成 功。如图 7.11 所示借阅图书操作页面。 图图 7.117.11 借阅图书操作页面借阅图书操作页面 21 9、管理员模式归还图书功能 输入读者编号和图书编号即归还成功。如图 7.12 所示归还图书操作页面。 图图 7.127.12 归还图书操作页面归还图书操作页面 (二) 调试 调试是软件开发过程中的一个重要环节,也是最复杂,对软件开发者者来 说也是最艰巨的任务。调试的任务是及时改正测试过程中发现的软件错误。具 体地说,调试过程由两个步骤组成,它从表示程序中存在错误的某迹象开始, 首先确定错误的准确位置,也就是找出哪个模块或哪个语句引起的错误。然后 仔细研究推断代码以确定问题的原因,并

28、设法改正。 调试过程主要是运行编制好的程序,然后遇到错误后根据系统的提示,找 到相关的问题所在。本系统调试过程中遇到问题、原因和解决方法如下面介绍。 1、程序只能在当前运行时才能实现自动生成书籍信息,而关闭系统再次打 开添加新读者又从 0 开始与之前的读者重复,导致借还信息程序管理混乱,无 法正确运行。 原因:在执行后系统没有记录当前的读者信息,因为读者信息自动按 1、2、3、4 依次递增生成系统;应该记录最后所生成的读者信息,在下次运行 程序时系统会接着上次记录的读者信息自动依次生成。 2、运行完程序一次有错误提醒 原因:上次运行程序后没有关闭操作界面当点击编译时会有一个错误提示, 解决方法

29、:将上一次运行时的操作界面关闭。 3、设计过程中的想法与程序中的不足 总的来说这个程序大致实现了题目的要求,但是这套程序仍然存在着很多 22 的问题与不足。比如,程序中主函数写的有点繁琐,有太多的嵌套,不是那么井 然有序,条理清晰,程序注释也不是很完善,对信息处理功能还有些不足之处, 提示信息不明确。还有就是没能做到模糊查询。 系统主要是参照课本商品信息管理系统模版编写的,同时也得到了老师和 同学的一些帮助。我在做系统的过程中也遇到了很多问题,有的是知识不足, 有的是考虑不够周全。事实证明,只靠自己的知识面还是很窄,独立处理问题 能力不是很强,以后还要加强对 C+语言的学习。 对于 C+语言编

30、写的程序来说,使用方法大致都是一样的,如果要改进的 话,就是要改进一些算法,尽量把界面编写清楚,提示信息全面,方便易用。 (三) 测试 软件测试是软件生存期中的一个重要阶段,是软件质量保证的关键步骤从 用户的角度来看,普遍希望通过软件测试暴露软件中隐藏的错误和缺陷,所以 软件测试应该是“为了发现错误而执行程序的过程” 。或者说,软件测试应该根 据软件开发各阶段的规格说明和程序的内部结构而精心设计一批测试用例(即 输入数据及其预期的输出结果) ,并利用这些测试用例去运行程序,以发现程序 错误或缺陷。过度测试则会浪费许多宝贵的资源。到测试后期,即使找到了错 误,然而付出了过高的代价。 测试数据过程

31、如下: 1、新增图书功能测试 运行程序。 输入数字 2:提示“输入管理员密码:”输入密码进入图书管理系统管理 员模式。 输入数字 1:进入图书管理功能页面,再输入数字 1 进行新增图书操作。 新书编号:100001,新书书名:海底两万里 ,新书作者:儒勒凡尔纳, 新书数量:14,新书位置:外语文学馆 预期结果:数据输入到系统中; 运行结果:出现新增图书菜单 23 说明:登陆功能实现 2、读者图书查询功能测试 运行后输入数字 1 进入读者模式 输入数字 1:进入图书查询功能 输入数字 1:通过图书编号查询图书 输入图书编号:100001 显示图书信息:图书编号:100001,图书书名:海底两万里

32、 ,图书作者: 儒勒凡尔纳,图书数量:14,图书位置:外语文学馆 预期结果:数据输入到系统中; 运行结果:出现图书信息 说明:图书查询功能实现 2、借书功能测试 。 。 。 3、还书功能测试 。 。 。 八 结论 C+语言程序设计课程顺利完成,任务书中所提出的要求全部实现。在这次 课程设计中,通过编写这个图书管理系统,体会到了 C+语言学习的实用性。 将理论和实践结合在一起,用先进的计算机工具方便人们的生活。 C+语言程序的编写首先要从大局考虑,把自己编写整个程序的思想都写在 草稿上,这样有助于自己编写程序,在编写时要完善注释,方便其他人理解程 序。编写的程序从理论上来说并没有错,但一上机就问

33、题不断。甚至有些课本 上的知识照搬不变,也不能得到正确的结果。有时一个程序改了一遍又一遍, 但就是不能成功,编程显得枯燥乏味,看似简单的程序题,在调试时却屡屡出 错。经反复的修改后,结果正确了,这时所有的乏味都显得那么无力,一切都 是值得的。 开发一套系统,最重要的是细心,并且思考要全面,结合实际,充分考虑 到客户的需求和现实意义。不管什么系统,只用运用到实际应用中,才具有现 实意义。 所以 C+语言程序的实用性很强,我们以后还要更加努力认真地学习 编程语言。 24 九 致谢 课程设计是一个对本学期所学专业知识的一个总结、归纳、深化的过程, 其中包含了我们需要时时加强的东西: 诸如分析解决问题

34、的能力、查阅文献的能力、统筹编辑的能力和总结经验 的能力等等。在设计期间,我们得到了指导老师的细心指导和关怀, 对设计中遇见到的各种问题和疑惑,马老师都花费了大量的时间和精力一 一为我们解答, 让我们在这个过程中对图书管理系统方面用到的函数及类结构知识的知识 有了一次新的深入和全面的提升,并能够将课本上所学的理论知识与 实际操作相结合,从而为以后工作运用打下基础。在此,谨向指导老师马 老师表示最衷心的感谢! 在课程设计期间,同学的鼓励和支持也给了我们很大的帮助,在这里一同 表示感谢:没有你们的支持、帮助和鼓励,我们很难拿出一份最终的作品。 当然,由于时间和知识水平所限,设计中不可避免会出现纰漏

35、和错误,恳 请老师悉心指正,在此我们不胜感激。 十 参考文献 1谭浩强.程序设计M,北京:北京大学出版社,1999.236-249. 2徐孝凯,魏荣.数据结构M,机械工程出版社,1996:121-132. 3耿国华.数据结构-C+语言描述M,北京:高等教育出版社,2008:248-253. 4杨路明.C+语言程序设计教程M,北京:北京邮电大学出社.2005:170-186. 5伍俊良.C+课程设计与系统开发案例,清华大学出版社.2002 6李建学,李光元,吴春芳.数据结构课程设计案例精编,清华大学出版社. 2007 十一 附录源程序 25 #includeiostream.h #include

36、conio.h #includefstream.h #includeiomanip.h #includestring.h #include const int Maxr=100 ;/最多的读者数 const int Maxb=100; /最多的图书数 const int Maxbor=5; /每位读者最多借的书 class Book/图书类,实现对图书的描述,图书的编号,书名,借出,还入等功能 private: int tag; /删除标记 1:已删 0:未删 int no; /图书编号 char name20; /书名 char author20;/作者 char cbs20; /出版社 c

37、har weizhi140; int onshelf; /是否再架 1:再架 2:已借 public: Book(); char *getname()/获取书名 return name; char *getauthorname()/获取作者名 return author; char *getcbsname()/获取出版社名 return cbs; int getno()/获取图书编号 return no; char *getweizhi() return weizhi1; 26 int gettag()/获取删除标记 return tag; void setname(char na)/设置书名

38、 strcpy(name,na); void setonshelf(int oa) onshelf=oa; void delbook()/删除图书 cout删除成功0) onshelf-; return 1; return 0; void retbook()/还书操作 onshelf+; void disp()/输出图书 coutsetw(8)nosetw(10)namesetw(10)authorsetw(10)cbssetw(10)on 27 shelfsetw(15)weizhi1endl; ; class BDatabase/图书库类,实现对图书的维护,查找,删除等 private:

39、int top; /图书记录指针 Book bookMaxb; /图书记录 public: BDatabase()/构造函数,将 book.txt 读到 book中 Book b; top=-1; fstream file(book.txt,ios:in); while (1) file.read(char *) if (!file) break; top+; booktop=b; file.close(); void clear()/全删 top=-1; int addbook(int n,char *na,char *aa,char *ca,int oa,char *we)/增加图书 Bo

40、ok *p=query1(n); if (NULL=p) top+; booktop.addbook(n,na,aa,ca,oa,we); return 1; return 0; Book *query1(int bookid)/按编号查找图书 for(int i=0;i=top;i+) 28 if(booki.getno()=bookid return NULL; Book *query2(char a)/按书名查找图书 Book *e; int r=0; for(int i=0;i=top;i+) if(strcmp(booki.getname(),a)=0 r+; if(r=0) cou

41、t找不到该书!endl; return NULL; Book *query3(char a)/按作者查找图书 Book *e; int r=0; for(int i=0;i=top;i+) if(strcmp(booki.getauthorname(),a)=0 r+; if(r=0) cout找不到该书!endl; 29 return NULL; Book *query4(char a)/按出版社查找图书 Book *e; int r=0; for (int i=0;i=top;i+) if (strcmp(booki.getcbsname(),a)=0 r+; if(r=0) cout找不

42、到该书!endl; return NULL; void song() int t; char mima15=mima123; char mima115; cout请输入管理员密码mima1; for(int i=0;i15;i+) if(mimai=mima1i) t=0; if(t!=0) cout管理员密码输入错误endl; exit(1); void bookdata(); /图书库信息 void disp() for(int i=0;i=top;i+) 30 if(booki.gettag()=0) booki.disp(); BDatabase()/析构函数,将 book写到 boo

43、k.txt 文件中 fstream file(book.txt,ios:out); for(int i=0;i=top;i+) if(booki.gettag()=0) file.write(char *) file.close(); ; void BDatabase:bookdata() char choice3; char bname40; char auname40; char cname40; char weizhi40; char ch; int choice4; int bookid; int bookod; int mm; Book *b; while (choice3!=0)

44、coutnttttt*图 书 信 息*nendl; coutttttt* 1.新 增 *endl; coutttttt* 2.更 改 *endl; coutttttt* 3.删 除 *endl; coutttttt* 4.查 找 *endl; coutttttt* 5.显 示 *endl; coutttttt* 6.全 删 *endl; coutttttt* 0.返 回 *endl; coutchoice3; 31 switch(choice3) case 1: coutbookid; b=query1(bookid); if(b!=NULL) cout该编号已经存在,不能添加!endl; b

45、reak; coutbname; coutauname; coutcname; coutbookod; coutweizhi; addbook(bookid,bname,auname,cname,bookod,weizhi); cout添加图书成功!; getch(); break; case 2: coutbookid; b=query1(bookid); if(b=NULL) cout该图书不存在! endl; break; cout该图书的信息是:endl; coutsetw(8)编号setw(10)书名setw(10)作者setw(10)出 版社 setw(10)存量setw(15)图

46、书位置disp(); 32 coutch; if(ch=y) coutbookod; b-setonshelf(bookod); cout修改图书成功!; getch(); break; case 3: coutbookid; b=query1(bookid); if(b=NULL) cout该图书不存在,无法删除!delbook(); getch(); break; case 4: coutttttt* 1.按图书编号查找 *endl; coutttttt* 2.按图书书名查找 *endl; coutttttt* 3.按图书作者查找 *endl; coutttttt* 4.按图书出版社查找*

47、endl; coutttttt* 0.返 回 *endl; coutchoice4; switch(choice4) case 1: coutbookid; b=query1(bookid); if(b=NULL) 33 cout该图书不存在!; break; coutsetw(8)编号setw(10)书名setw(10)作者setw(10) 出版社setw(10)存量setw(15)图书位置disp(); break; case 2: coutbname; b=query2(bname); break; case 3: coutauname; b=query3(auname); break;

48、 case 4: coutcname; b=query4(cname); break; case 5: coutweizhi; break; case 0: break; break; case 5: if(mm=1) cout无图书信息endl; break; 34 coutsetw(8)编号setw(10)书名setw(10)作者setw(10) 出版社setw(10)存量setw(15)图书位置endl; disp(); getch(); break; case 6: clear(); cout全部删除成功endl; mm=1; break; default: break; class

49、Reader/读者的信息描述 private: int tag; /删除标记 1 表示已删 0 表示未删 int no; /读者编号 char name10; /读者姓名 char class110; char phone10; int borbookMaxbor; /所借图书 public: Reader() ; char *getname()/获取姓名 return name; char *getclass()/获取班级 return class1; char *getphone()/获取联系方式 35 return phone; int gettag()/获取删除标记 return tag; int getno()/获取读者编号 return no; void setname(char na)/设置姓名 strcpy(name,na); void delbook()/设置删除标记 1:已删 0:未删 tag=1; void addreader(int n,char *na,char *cl,char *ph)/增加读者 tag=0; no=n; strcpy(name,na)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论