ImageVerifierCode 换一换
格式:DOCX , 页数:23 ,大小:124.10KB ,
资源ID:11325490      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/11325490.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数据结构图书系统.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数据结构图书系统.docx

1、数据结构图书系统二、结构图1.功能结构图图书管理系统新增图书信息的输入查询在架的图书信息恢复被删除图书信息为读者办理借书注册办理借书手续办理还书手续退出系统2.主流程图让用户选择要实行的操作.设置选择变量choiceStart输出提示借书 功能Choice=1还书 功能Choice=2图书 维护Choice=3读者 维护Choice=4退出 系统Choice=0StopChoice=其它数值提示输入错误三、程序设计的想法和具体思路图书管理系统分为图书管理和会员管理两大部分。设计一个图书类Book,包括一本图书的基本管理功能,具有以下私有数据:int tag。/删除标记 1:已删 0:未删int

2、 no。/图书编号char name20。/书名int onshelf。/是否再架 1:再架2:已借设计一个图书库类BDatabase,具有以下私有数据:int top。 /图书记录指针Book bookMaxb。 /图书记录在其构造函数中,将book.txt文件的所有录入读到book中。处理完毕,在析构函数中将book中的所有未删除记录笑道book.txt文件中,中间的处理是对book进行的。设计一个读者类Reader,包括一个读者的基本管理功能,具有以下私有数据:int tag。 /删除标记 1:已删 0:未删int no。 /读者编号char name10。 /读者姓名int borbo

3、okMaxbor。/所借图书设计一个读者库类RDatabase,具有以下私有数据:int top。 /读者记录指针Reader readMaxr。/读者记录在其构造函数中,将reader.txt文件的所有记录读到read中。处理完毕,在析构函数中将read中的所有未删除记录写到reader.txt文件中,中间的处理都是对reader进行的。四、参考文献1)谭浩强,C+程序设计,北京,清华大学出版社,2006年2)李振鹏,张小莉,郑艳娟,数据结构,中国铁道出版社,2007年3)杨小平,VisualC+项目案例导航,北京,科学出版社,2002年4)David Conger,软件开发:编程与设计,北

4、京,清华大学出版社,2006 年.5)Francis Glassborow Roberta Allen ,You Can Do It!C+编程新手互动教程,北京,人民邮电出版社,2005年五、课程设计总结心得体会选到这个课程设计题目的时候,感觉挺简单的,查找,增加,显示,统计,这些平时都学过,用过,但是实际操作中还是遇到了很多问题,所以特意到图书馆专门借了几本关于数据结构程序设计方面的书,同时也希望能把平时没有学好的地方好好补一补,能对知识有更深层次的理解.一切准备就绪,把平时写的相关的程序出来参考,对比,慢慢才找到一些感觉,把源程序写出来. 经过几天终于写完了程序的初稿,然后输入电脑,一编译

5、,发现错误几十个,还有好多警告,只得一条一条的看,一个一个的改,首当其冲的是再输入电脑过程中不小心漏掉的标点符号,有些括号忘了,有些是忘了写分号等粗心导致的小毛病,这些错误很容易改正.到后面的错误就有些麻烦了,当中有个头文件忘了写,编译过程中好几十个错误就是改不过来,后来和同学讨论才知道原来错在什么地方,这样一下就变成了几个错误,这时信心大增,有些错误都看不懂错在那里,因为英文水平不太好,只好去查字典,还要推敲这个单词在这里到底是哪个意思,再加上以往的经验和同学的帮助下,好不容易才得到零错误零警告,那时真开心,我的程序终于可以运行了,激动的按下运行,得到了预想的界面,按照提示操作,都很顺利,一

6、个一个的实验每一个功能,都以为成功了,当运行到了删除功能时,突然出现死循环,只见操作界面不停的闪.这是逻辑错误,很难找,后来只有一步一步的,一句一句的检查,找到了错误的根源,并改正.从进入大学来,我们学习了C+,数据结构。特别是高老师的认真授课,精心讲解下,同学们学到了很多东西,知识方面的很多,还有平时心的习惯也养成了.这对我们以后的学习生活很有好处,最后感谢常老师一学期以来对我们的教育帮助,对我们程序设计时的辅导.六、程序运行结果附录:源代码#include #include #include #include /输入/输出文件流类using namespace std。const int

7、Maxr=100。/最多的读者const int Maxb=100。/最多的图书const int Maxbor=5。/每位读者最多借五本书/读者类,实现对读者的信息的描述class Reader private: int tag。 /删除标记 1:已删 0:未删 int no。 /读者编号 char name10。 /读者姓名 int borbookMaxbor。/所借图书 public: Reader( char *getname( return name。 /获取姓名 int gettag( return tag。 /获取删除标记 int getno( return no。 /获取读者编

8、号 void setname(char na /设置姓名 strcpy(name,na。 void delbook( tag=1。 /设置删除标记 1:已删 0:未删 void addreader(int n,char *na/增加读者 tag=0。 no=n。 strcpy(name,na。 for(int i=0。i borbooki=0。 void borrowbook(int bookid/借书操作 for(int i=0。i if (borbooki=0 borbooki=bookid。 return。 int retbook(int bookid/还书操作 for(int i=0。

9、i if(borbooki=bookid borbooki=0。 return 1。 return 0。 void disp(/读出读者信息 cout no name借书编号:。 for(int i=0。i if(borbooki!=0 cout borbooki |。 cout /构造函数,将reader.txt读到read中 Reader s。 top=-1。 fstream file(reader.txt,ios:in。/打开一个输入文件 while (1 file.read(char *&s,sizeof(s。 if (!filebreak。 top+。 readtop=s。 file

10、.close(。 /关闭 reader.txt void clear(/删除所有读者信息 top=-1。 int addreader(int n,char *na/添加读者时先查找是否存在 Reader *p=query(n。 if (p=NULL top+。 readtop.addreader(n,na。 return 1。 return 0。 Reader *query(int readerid/按编号查找 for (int i=0。i if (readi.getno(=readerid & readi.gettag(=0 return &readi。 return NULL。 void

11、disp( /输出所有读者信息 for (int i=0。i readi.disp(。 void readerdata(。/读者库维护 RDatabase( /析构函数,将read写到reader.txt文件中 fstream file(reader.txt,ios:out。 for (int i=0。i if (readi.gettag(=0 file.write(char *&readi,sizeof(readi。 file.close(。 。void RDatabase:readerdata( char choice。 char rname20。 int readerid。 Reader

12、 *r。 while (choice!=0 cout 读者维护:t1新增t2更改t3删除t4查找t5显示t6全删t0退出 choice。 switch (choice case 1: cout readerid。 cout rname。 addreader (readerid,rname。 break。 case 2: cout readerid。 r=query(readerid。 if (r=NULL cout 该读者不存在 endl。 break。 cout rname。 r-setname(rname。 break。 case 3: cout readerid。 r=query(rea

13、derid。 if (r=NULL cout 该读者不存在 delbook(。 break。 case 4: cout readerid。 r=query(readerid。 if (r=NULL cout 该读者不存在disp(。 break。 case 5: disp(。 break。 case 6: clear(。 break。 default:cout char *getname( return name。 /获取姓名 int getno( return no。 /获取图书编号 int gettag( return tag。 /获取删除标记 void setname(char na/设

14、置书名 strcpy(name,na。 void delbook( tag=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(/输出图书 cout no name /构造函数,将book.txt读到book中 Book b。 top=-1。 fstream file(book

15、.txt,ios:in。 while (1 file.read(char *&b,sizeof(b。 if (!file break。 top+。 booktop=b。 file.close(。 void clear(/全删 top=-1。 int addbook(int n,char *na/增加图书 Book *p=query(n。 if (NULL=p top+。 booktop.addbook(n,na。 return 1。 return 0。 Book *query(int bookid/查找图书 for (int i=0。i if (booki.getno(=bookid &boo

16、ki.gettag(=0 return &booki。 return NULL。 void bookdata(。/图书库维护 void disp( for (int i=0。i if (booki.gettag(=0 booki.disp(。 BDatabase(/析构函数,将book写到book.txt文件中 fstream file(book.txt,ios:out。 for (int i=0。i if (booki.gettag(=0 file.write(char *&booki,sizeof(booki。 file.close(。 。void BDatabase:bookdata(

17、char choice。 char bname40。 int bookid。 Book *b。 while (choice!=0 cout 图书维护:t1新增t2更改t3删除t4查找t5显示t6全删t0退出 choice。 switch (choice case 1: cout 输入图书编号: bookid。 cout 输入图书书名: bname。 addbook(bookid,bname。 break。 case 2: cout 输入图书编号: bookid。 b=query(bookid。 if (b=NULL cout 该图书不存在 endl。 break。 cout 输入新的书名: b

18、name。 b-setname(bname。 break。 case 3: cout 读入图书编号: bookid。 b=query(bookid。 if (b=NULL cout 该图书不存在 delbook(。 break。 case 4: cout 读入图书编号: bookid。 b=query(bookid。 if (b=NULL cout 该图书不存在disp(。 break。 case 5: disp(。 break。 case 6: clear(。 break。 default:cout 函数的实现,程序的主界面的引导void main( char choice。 int boo

19、kid,readerid。 RDatabase ReaderDB。 Reader *r。 BDatabase BookDB。 Book *b。 while(choice!=0 cout endlendlttt图书管理系统n 。 cout 1借书t2还书t3图书维护t4读者维护t0离开 choice。 switch (choice case 1: cout readerid。 cout bookid。 r=ReaderDB.query(readerid。/按编号查找 if (NULL=r cout 不存在该读者,不能借书。 if (b=NULL cout 不存在该图书,不能借书borrowboo

20、k(=0 cout 该图书已借出,不能借书borrowbook(b-getno(。 break。 case 2: coutreaderid。 cout bookid。 r=ReaderDB.query(readerid。 if (r=NULL cout 不存在该读者,不能还书 。 if (b=NULL cout 不存在该图书,不能还书 retbook(。 r-retbook(b-getno(。 break。 case 3: BookDB.bookdata(。 break。 case 4: ReaderDB.readerdata(。 break。 default:cout输入错误,请从新输入:。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1