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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

用B树做的图书管理系统Word文档格式.docx

1、voidShowBTNode(BTreep);voiddisplay(BTreeT);voidKeyTypeCopy(KeyType&bak,KeyTypek);intSearch(BTreep,KeyTypeK);ResultSearchBTree(BTreeT,KeyTypeK);voidInsert(BTree&q,inti,KeyTypex,BTreeap);voidsplit(BTree&q,ints,BTree&ap);voidNewRoot(BTree&T,BTreep,KeyTypex,BTreeap);StatusInsertBTree(BTree&T,KeyTypeK);S

2、tatusBorrowBook(BTreeT,KeyTypek);StatusReturnBook(BTreeT,KeyTypek);voidsave(BTreep);/*/voidsave(BTreep)/保存文件 FILE*fp; if(fp=fopen(book.txt,wb)=NULL) printf(创建文件失败!nn);getchar();return; for(inti=1;ikeynum;i+) fprintf(fp,%d%s%s%d%dn,p-keyi.key,p-keyi.bname,p-keyi.writter,p-keyi.left,p-keyi.total); fcl

3、ose(fp);/读取文件voidread() FILE*fp,fp1;rb)=NULL&(fp=fopen(user.txt读取文件失败! for(inti=1;i+) if(fscanf(fp,%d%s%s%d%d,&bi.key,&bi.bname,&bi.writter,&bi.left,&bi.total)=EOF) break; InsertBTree(root,bi); fclose(fp);/复制结点,将某个结点的值复制到另外一个值上bak,KeyTypek) bak.key=k.key; strcpy(bak.bname,k.bname); bak.left=k.left;

4、bak.total=k.total; strcpy(bak.writter,k.writter);/在一个结点中查找元素,返回结点的位置intSearch(BTreep,KeyTypeK) if(!p) return-1; inti=0;for(i=0;p-keynum&keyi+1.key0&keyi.key=K.key) found=TRUE;else q=p; p=p-ptri;if(found)R.pt=p; R.i=i; R.tag=1;R.pt=q; R.tag=0;returnR;/插入一条记录q,inti,KeyTypex,BTreeap) intn=q- for(intj=n

5、;ji;j-) KeyTypeCopy(q-keyj+1,q-keyj); q-ptrj+1=q-ptrj; KeyTypeCopy(q-keyi+1,x); q-ptri+1=ap; if(ap) ap-parent=q;keynum+;/分离结点ap)inti,j,n=q-ap=(BTree)malloc(sizeof(BTNode);ap-ptr0=q-ptrs;for(i=s+1,j=1;=n;i+,j+) KeyTypeCopy(ap-keyj,q-keyi);ptrj=q-keynum=n-s;parent=q-parent;=n-s;if(ap-ptri)ptri-parent=

6、ap;q-keynum=s-1;/生成一个新的树结点T,BTreep,KeyTypex,BTreeap)T=(BTree)malloc(sizeof(BTNode);T-keynum=1;/设置当前结点的元素个数ptr0=p;/设置左边结点的树根ptr1=ap;/设置右边的树根KeyTypeCopy(T-key1,x);/将x元素的结点值复制到T的第一个元素中if(p)/当孩子不空的时候就设置当前结点为孩子的双亲 p-parent=T;if(ap) ap-parent=NULL;/当前结点的双亲为空voidShowBTNode(BTreep) printf(t书号为:%dkeyi.key);书

7、名为:%5skeyi.bname);作者为:keyi.writter);剩余量为:%5dkeyi.left);总量为:nT,KeyTypeK)/在m阶B树T上结点*q的keyi与keyi+1之间插入关键字K。BTreeap;Resultrs;BTreeq;inti;charaddnum;intfinished,needNewRoot,s;KeyTypex;if(!T)NewRoot(T,NULL,K,NULL);rs=SearchBTree(T,K);/查找元素k在树中的位置 q=rs.pt;i=rs.i;if(rs.tag=1) if(strcmp(q-keyi.bname,K.bname)

8、!=0) printf(nt录入失败,原因:.t书号冲突,请重新为该书编号!t已经存在书号为%d的书为:,q- ShowBookMess(q- returnFALSE; else nt该书已经存在!t是否增加其总量(y/n): scanf(%saddnum); if(addnum=Y|addnum=y) q-keyi.total+=K.total;keyi.left+=K.left;nt增加总量后该书的信息如下n elsent该书的信息如下: ShowBookMess(q- returnFALSE;x=K; ap=NULL; finished=needNewRoot=FALSE;while(!

9、needNewRoot&finished)Insert(q,i,x,ap);/插入结点if(q-keynumkeys;parent)/在双亲结点*q中查找x的插入位置q=q- i=Search(q,x); needNewRoot=TRUE;if(needNewRoot)NewRoot(T,q,x,ap);/生成新根结点*T,q和ap为子树指针returnOK;/输入书的具体信息book) chars5;t请输入书号: scanf(,s); book.key=atoi(s);t请输入书名:book.bname);t请输入作者:book.writter);t请输入总量: book.total=at

10、oi(s); book.left=book.total;/输入书的关键字/显示书的具体信息voidShowBookMess(Bookbook)t书号为:%3dn,book.key);t书名为:%3sn,book.bname);t作者为:,book.writter);t剩余量为:,book.left);t总量为:,book.total);/显示整棵树的信息voiddisplay(BTreeT) if(T) ShowBTNode(T); /显示这个结点的全部值 for(i=0;=T-i+)/使用递归的方法显示每个结点 if(T-ptri) display(T-ptri); /借阅StatusBor

11、rowBook(BTreeT,KeyTypek) Resultrs=SearchBTree(T,k); if(rs.tag=0)t很抱歉!你要借阅的书不存在! returnFALSE; if(rs.pt-keyrs.i.leftkeyrs.i.left-; returnOK;/还书StatusReturnBook(BTreeT,KeyTypek) intnumber;不存在你要还的书!keyrs.i.left=rs.pt-keyrs.i.total)printf(t该书无借出n elsers.pt-keyrs.i.left+;/显示书的信息voidShowWriterBook(BTreep,c

12、harwriter) if(strcmp(p-keyi.writter,writer)=0)ttt书号为:/菜单charmenu_selete() charch; system(clst*图书管理系统*nnt1.新书入库.t2.查找书籍.nt3.显示库存.t4.借阅.nt5.还书t6.退出.nt*nnt请选择你所需要的操作(16): do ch=getch(); while(ch7 returnch;voidmain() KeyTypek; Resultrs; read(); while(1) switch(menu_selete() case: system(t-录入书信息-n InBook

13、Mess(k); InsertBTree(root,k);t-录入结束-n save(root);t当前书库的库存信息如下: display(root);t按任意键返回 getch(); break;2t-查找书信息-n InBookKey(k); rs=SearchBTree(root,k); if(rs.tag=1) ShowBookMess(rs.pt-keyrs.i); else printf(t你要查找的书号%d不存在!,k.key);nt-查找结束-n getch();3t-全部的书-nn display(root);t-显示完毕-ntt按任意键返回4t-借阅-n if(BorrowBook(root,k)nt借阅成功!nt借阅失败!nt按任意键返回5t-还书-nn if(ReturnBook(root,k)nt归还成功! nt归还失败!6 exit(0);

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

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