C语言图书管理系统程序设计报告

上传人:微*** 文档编号:89416531 上传时间:2022-05-13 格式:DOCX 页数:30 大小:58.41KB
收藏 版权申诉 举报 下载
C语言图书管理系统程序设计报告_第1页
第1页 / 共30页
C语言图书管理系统程序设计报告_第2页
第2页 / 共30页
C语言图书管理系统程序设计报告_第3页
第3页 / 共30页
资源描述:

《C语言图书管理系统程序设计报告》由会员分享,可在线阅读,更多相关《C语言图书管理系统程序设计报告(30页珍藏版)》请在装配图网上搜索。

1、高级语言程序设计( 2 )课程设计一 程序设计说明书【设计题目】 图书馆借阅管理【问题描述】图书馆,适合用C+面向对象的功能来描述。图书馆管理系统分为借书、还书、图书管理和读者服务等四个部分。设计一个读者类Reader, 记录每个读者基本信息;读者库类 Rdatabase, 记录所有读者信息;图书类 Book, 记录每本书的基本信息;图书库类Bdatabase, 记录所有图书信息。【基本要求】1 读者库类RDatabase 中, 其构造函数中,将 read.txt文件中所有读入读者记录rede中。处理完毕,在析构函数中将read 中的所有未删记录写入到read.txt中。2 图书库类BData

2、base 中, 其构造函数中,将 book.txt文件中所有读入图书记录book中。处理完毕,在析构函数中将book 中的所有未删记录写入到book.txt中。3 利用构造函数完成读者和图书数据初始化, 完成内存分配。 程序结束前, 析构函数完成所 申请的堆内存空间。4 编写主函数, 对所编写的矩阵类进行全面测试。 要求用户界面采用菜单方式。 测试中需要 读者和图书数据通过I/O 流从磁盘文件读入, 同时显示在屏幕上。 得到的数据通过I/O 流写入磁盘文件保存,同时显示在屏幕上。5 源程序中要有充分的注释,报告中要有详细的流程图和文字材料。【类的设计】该程序包含了四个类,如下:1. Reade

3、r 类,有读者的基本管理功能,具有以下私有数据:int tag;/ 删除标记 1 :已删;0 :未删int no;/ 读者编号char name10;/ 读者姓名int borbookMaxbor;/ 所借图书2. 读者库类 Rdatabase, 具有以下私有数据:int top;/ 读者记录指针Reader readMaxr;/ 读者记录3. 图书库类 Book, 有一本图书的基本功能,有以下私有数据:int tag;/ 删除标记 1 :已删;0 :未删int no;/ 图书编号char name20;/ 书名int onshelf;/ 是否在架 1 在架 0 已借4. 图书库类 BData

4、base, 有以下私有数据:int top;/ 图书记录指针Book bookMaxb;/ 图书记录【特殊函数的设计说明】构造函数1 .Reader 类中构造函数Reader(), 初始化函数;2. 读者库类 RDatabase 中,其构造函数Rdatabase (),将 read.txt 文件中所有读入读者记录 rede 中。3.Book 类中构造函数Book(), 初始化函数;4. 图书库类 BDatabase 中, 其构造函数中, 将 book.txt 文件中所有读入图书记录book 中。拷贝构造函数Reader类中的拷贝构造函数将getname()的返回值读者姓名拷贝到setname(

5、)中,Book类中的拷贝构造函数将getname() 函数的返回值图书名拷贝到图书名设置函数setname() 中。析构函数1 .读者库类RDatabase 中,其析构函数Rdatabase (),将read 中的所有未删记录写入到 read.txt 中;2 . 图书库类BDatabase 中,其析构函数Bdatabase (),将book 中的所有未删记录写入到 book.txt 中。运算符重载重载了“= ”,当比较读者编号和图书编号时,重载;重载位运算符“”和“”等。【主要函数算法流程图】【程序的使用方法】1. 进入操作页面,按提示操作;2. 首先,新增图书和读者信息,之后就可以对以存在的

6、信息进行操作;3. 操作当中,可以随时增加,更改和删除图书或读者信息;4. 当选择退出时,进行清屏。二 程序上机调试报告【语法错误及其排除】1 在敲程序时,有很多拼写错误,例好多处把Readdata() 误打 Readdate() ;结束的分号,在不同的输入法状态下输入,这些小错误刚开始很难发现,不过有了经验,就很容易了。2创建新的构造函数时,使用出现了错误。重载构造函数要注意函数的访问权限,结果就不会出现错误。【算法错误及其排除】1 .读者类中借书操作函数中,采用循环语句时判断读者已借图书量时for(inti=0;iMaxbor;i+) 误写为 for(int i=1;iMaxbor;i+)

7、 ,使循环发生错误。2 . 指针使用错误, 指针 b 和 r 混淆, 导致编译错误得到 “ error C2660: retbook : function does not take 1 parameters ”错误报告。三 程序测试结果【收获及体会】除了课堂外,课程设计是最能学到东西的,最考验人的。 在做课程设计这段时间, 时刻都感觉自己有好多不懂,要学的太多了!经过这次课程设计,让我对C+位门语言有了更深的认识,操作能力有了提高。 要想得到敲的代码运行出来后的满足感, 需要耐心细心, 毅力以及充沛的体力。只有经过多次编辑,多次编译,再多次运行,才能编写出更好的程序,有时候需要多次的更正才达

8、到所要的运行结果。学习编程,需要多揣摩,实践,实践,再实践,编程技能才能更上一层楼,此外还得多向高手请教!【源程序代码】/*/ 图书馆借阅管理/ 班级:/ 学号:/ 姓名:/*#include#include#include#includeconst int Maxr=1000;/ 最多的读者const int Maxb=10000;/ 最多的图书const int Maxbor=8;/ 每位读者最多借 8 本书class Reader / 读者类int tag;/ 删除标记 1 已删; 0 未删int no;/ 读者编号char name10;/ 读者姓名int borbookMaxbor;

9、/ 所借图书public :Reader()/ 构造函数char *getname()return name;/ 获取读者姓名int gettag()return tag;/获取删除标记int getno()return no;/获取读者编号void setname(char na)/设置读者姓名strcpy(name,na);增加读者void delbook()tag=1;/ 设置删除标记void addreader(int n,char *na)/tag=0;no=n;strcpy(name,na);for(int i=0;iMaxbor;i+)borbooki=0;void borrow

10、book(int bookid)/for(int i=0;iMaxbor;i+)if(borbooki=0)borbooki=bookid;int retbook(int bookid)/for(int i=0;iMaxbor;i+)借书操作还书操作 if (borbooki=bookid)borbooki=0;return 1;return 0;void disp()/ 输出读者信息coutsetw(5)nosetw(10)namefor(int i=0;i,Maxbor;i+)if(borbooki!=0)coutborbookiendl;class RDatabase/ 读者库类int

11、top;/ 读者记录指针Reader readMaxr;/ 读者记录public:借书编号:读到 read 中RDatabase()/ 构造函数,将reader.txtReader s;top=-1;fstream file(reader.txt,ios:in);while(1)file.read(char*)&s,sizeof(s);if(!file)break;top+;readtop=s;file.close();void clear()/ 删除所有读者信息top=-1;int addreader(int n,char *na)/添加读者,检查是否已存在Reader *p=query(n

12、);if(p=NULL)top+;readtop.addreader(n,na);return 1;return 0;Reader*query(int readerid)/ 按编号查找for(int i=0;i=top;i+)if(readi.getno()=readerid&readi.gettag=0)return &readi;return NULL;void disp()/ 删除读者所有信息for(int i=0;i=top;i+)readi.disp();文件中void readerdata();/ 读者库维护RDatabase()/ 析构函数,将read 写入 reader.txt

13、 fstream file(reader.txt,ios:out);for(int i=0;i=top;i+)if(readi.gettag()=0)file.write(char*)&readi,sizeof(readi);file.close();void RDatabase:readerdata()int choice=1;char rname20;int readerid;Reader*r;while(choice!=0)cout 读者服务 1 新增 2 更该 3 删除 4 查找 5 显示 6 全删 0 退出 choice;switch(choice)case 1:coutreader

14、id;coutrname;addreader(readerid,rname);break;case 2:coutreaderid;r=query(readerid);if(r=NULL)cout 读者不存在 endl;break;coutrname;r-setname(rname);break;case 3:coutreaderid;r=query(readerid);if(r=NULL)cout 读者不存在 delbook();break;case 4:coutreaderid;r=query(readerid);if(r=NULL)cout 该读者编号不存在 endl;break;case

15、 5:disp();break;case 6:clear();break;class Book/ 图书类int tag;/ 删除标记 1 :已删; 0 :未删int no;/ 图书编号char name20;/ 书名int onshelf;/ 是否在架 1 在架 0 已借public:Book()char*getname()return name;/ 获取读者姓名int getno()return no;/获取图书编号int gettag()return tag;/获取删除标记void setname(char na)/设置书名strcpy(name,na);void delbook()tag

16、=1;/ 删除图书void addbook(int n,char*na)/ 增加图书tag=0;no=n;strcpy(name,na);onshelf=1;int borrowbook()/ 借书操作if(onshelf=1)onshelf=0;return 1;return 0;void retbook()/ 还书操作onshelf=1;void disp()/ 输出图书coutsetw(6)nosetw(18)namesetw(10)(onshelf=1? 在架 : 已借 )endl;class BDatabase/ 图书库类int top;/ 图书记录指针Book bookMaxb;/

17、 图书记录public:BDatabase()/ 构造函数,将book.txt 读到 book 中Book b;top=-1;fstream file(book.txt,ios:in);while(1)file.read(char*)&b,sizeof(b);if(!file)break;top+;booktop=b;file.close();void clear()/ 全删int addbook(int n,char*na)/ 增加图书Book*p=query(n);if(p=NULL)top+;booktop.addbook(n,na);return 1;cout 新增成功! endl;B

18、ook*query(int bookid)/ 查找图书for(int i=0;i=top;i+)if(booki.getno()=bookid&booki.gettag()=0) return NULL;void bookdata();/ 图书库维护void disp() for(int i=0;i=top;i+)if(booki.gettag()=0)booki.disp();BDatabase()/ 析构函数,将book 写入 book.txt 文件中fstream file(book.txt,ios:out);for (int i=0;i=top;i+)if(booki.gettag()

19、=0)file.write(char*)&booki,sizeof(booki);file.close();void BDatabase:bookdata()int choice;char bname40;int bookid;Book *b;while(choice!=0)cout 图书管理 1 新增 2 更该 3 删除 4 查找 5 显示 6 全删 0 退出 choice;switch(choice)case 1:coutbookid;coutbname;addbook(bookid,bname);break;case 2:coutbookid;b=query(bookid);if(b=N

20、ULL)cout 该图书不存在 endl;break;coutbname;b-setname(bname);cout 更名成功! endl;break;case 3:coutbookid;b=query(bookid);if(b=NULL)coutdelbook();break;case 4:coutbookid;b=query(bookid);if(b=NULL)cout 该书不存在! break;endl;disp();break;case 5:disp();break;case 6:clear();break;void main()int choice=1,bookid,readerid

21、;RDatabase ReaderDB;Reader *r;BDatabase BookDB;Book *b;while(choice!=0)cout 1 借书 endl;endl;cout 2 还书cout 3 图书维护endl;cout 4 读者维护endl;cout 0 离开choice;switch(choice)case 1:coutreaderid;coutbookid;r=ReaderDB.query(readerid);if(r=NULL)cout 哈哈,借书成功! ;break;b=BookDB.query(bookid);if(b=NULL)cout 不存在该书! borr

22、owbook()=0)cout 该书已借 borrowbook(b-getno();break;cout 借书成功! endl;case 2:coutreaderid;coutbookid;r=ReaderDB.query(readerid);if(r=NULL)cout 不存在该读者! retbook();r-retbook(b-getno();break;cout 还书成功! endl;case 3:BookDB.bookdata();break;case 4:ReaderDB.readerdata();break;【输出结果】1 借书2 还书3 图书管理4 读者服务0 退出3图书管理 1

23、 新增 2 更该 3 删除 4 查找 5 显示 6 全删 0 退出1输入图书编号: 1111输入图书书名:武林外传新增成功!图书管理 1 新增 2 更该 3 删除 4 查找 5 显示 6 全删 0 退出1输入图书编号: 2222输入图书书名:今夜无眠新增成功!图书管理 1 新增 2 更该 3 删除 4 查找 5 显示 6 全删 0 退出01 借书2 还书3 图书管理4 读者服务0 退出4读者服务 1 新增 2 更该 3 删除 4 查找 5 显示 6 全删 0 退出1请输入读者编号: 001读入读者姓名:周强读者服务 1 新增 2 更该 3 删除 4 查找 5 显示 6 全删 0 退出01 借书2 还书3 图书管理4 读者服务0 退出1借书,请输入读者编号: 001图书编号: 1111哈哈,借书成功! 1 借书2 还书3 图书管理4 读者服务0 退出2还书,请输入读者编号: 001请输入图书编号; 1111还书成功!1 借书2 还书3 图书管理4 读者服务0 退出3图书管理 1 新增 2 更该 3 删除 4 查找 5 显示 6 全删 0 退出2输入图书编号:2222输入新书名:金庸全集更名成功!Press any key to continue图书管理系统编读者编号图书编号读者编号删 除图 书 维 护读 者 维 护全 删

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!