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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

6图书管理系统.docx

1、6图书管理系统实验课程名称 数据结构课程设计 专 业 班 级 计算机科学与技术10级1班 学 生 姓 名 10410901019 学 号 罗泽丽 指 导 教 师 冯 韵 2012至201学年第 一 学期第 一 至 二 周目 录1概述 31.1现状分析 31.2存在的问题 31.3实现意义 32系统分析 43概要设计 43.1设计要求 432流程图 43.2.1系统管理图 43.2.2系统维护图 53.2.3图书管理图 53.2.4图书查询子系统图 53.2.5图书流通图 63.3总流程图 64详细设计 74.1主数据库文件 742输入图书记录建立相关文件 94.2.1添加图书主数据记录 94.

2、2.2 修改书号索引 94.2.3修改书名索引和表 104.2.4修改作者索引和表 114.2.5修改出版社索引和表 124.2.6建立图书多重表主索和表 124.3查询信息 134.3.1按书号查询 134.3.2按书名查询 134.3.3按作者查询 144.3.4按出版社查询 144.3.5输出图书主数据库记录 144.3.6输出图书主数据库记录 154.4借还书处理 164.4.1借书处理 164.2还书处理 174.5读者管理子系统 184.6文件写盘 184.7读入盘中文件 195运行与测试 215.1 图书管理系统 215.2系统初始化 225.3读者管理 225.4图书管理 23

3、5.5图书查询 235.5.1按书号查询 235.5.2按作者名查询 245.5.2按出版社查询 245.5.3按书名查询 245.6借书处理 245.7还书处理 256总结和心得 257参考文献 258附录 261概述1.1现状分析 图书馆每天都有很多的人借书还书,而且书的编号,种类都是不一样的,但是,完全是人工操作,不仅增大了工作量,还浪费了大量的时间,既浪费时间也浪费精力。1.2存在的问题以往的图书馆管理完全手工操做,通过卡片记录信息,既浪费时间,又浪费人工、纸张,而且书籍和读者的信息查询比较麻烦,也会存在着许多的差错,查找起来也不方便,不能提供需要的各种信息如本馆各种资料分布及借阅情况

4、,让管理者查找起来相当的不方便。从而带来了许多的麻烦。1.3实现意义1.图书馆管理系统可以大大地提高工作效率。2. 减少工作中可能出现的错误。3.节约借书,还书的时间。4. 更加的方便,快捷。2系统分析1. 系统维护 它又包含初始化和读盘。2. 读者管理。3. 图书管理 包括图书信息输入和图书信息查询。4. 图书查询子系统 分别按照书号,书名,作者,出版社进行查询。5. 图书流通里面包含借书处理。6图形界面要简单,明了,人性化。3概要设计3.1设计要求1.建立一个图书信息数据库文件,输入若干种书的记录,建立一个以书号为关键字的索引文件;在主数据库文件中建立以书名,作者以及出版社作为次关键字的索

5、引以及对应的索引链头文件。2.建立关于书号,书名,作者及出版社的图书查询。3.实现图书的借还子系统,包括建立读者文件,借还文件,读者管理及图书借还等相关的处理。32流程图3.2.1系统管理图3.2.2系统维护图 3.2.3图书管理图3.2.4图书查询子系统图 3.2.5图书流通图 3.3总流程图4详细设计4.1主数据库文件typedef struct char bno5; /书号 char bname21; /书名 int namenext; char author9; /作者 int authnext; /作者链指针(用记录号) char press11; /出版社 int prenext;

6、 /出版社链指针(用记录号) char sortno4; /分类号 int storenum; /藏书量 int borrownum; /借出数BookRecType; /数据库记录类型typedef struct BookRecType BookDbaseBookSize; int len; /文件当前长度BookDbaseFile; /定义图书数据库文件类型typedef struct char bno5; /书号 int RecNo; /记录指针BidxRecType;typedef struct BidxRecType BnoIdxBookSize; int len; /当前记录个数B

7、noIdxFile; /书号索引文件类型/*书名链头索引文件*/typedef struct char bname21; /书名 int lhead; /链头指针 int RecNum; /长度BNRecType; /书名链头文件记录类型typedef struct BNRecType LHFrec1BLHnum; int len1; /链头文件当前长度LHFile1; /书名链头文件类型typedef struct char author9; /作者 int lhead; /链头指针 int RecNum; /长度BARecType; /作者链头文件记录类型typedef struct BA

8、RecType LHFrec2BLHnum; int len2;LHFile2; /作者链头文件类型typedef struct char press11; /出版社 int lhead; /链头指针 int RecNum; /长度BPRecType; /出版社链头文件记录类型typedef struct BPRecType LHFrec3BLHnum; int len3;LHFile3; /出版社链头文件类型typedef struct char rno4; /读者号 char name8; /读者名 int bn1; /可借书数 int bn2; /已借书数RRecType; /读者文件类

9、型typedef struct RRecType ReadRecRRnum; int len; /当前读者数ReFile; /读者文件类型typedef struct char rno4; /读者号 char bno5; /书号 char date19; /借书日期 char date29; /还书日期BbookRecType; /借还书文件记录类型typedef struct BbookRecType BbookBookSize; int len;BookFile; /借还书文件类型4.2 通讯录建立模块设42输入图书记录建立文件4.2.1添加图书记录void AppDBaseRec(Boo

10、kDbaseFile &df) /追加一条图书主数据库记录 int i; i=+df.len; /图书主数据库长度加1 printf(书号 书名 作者名 出版社 分类 藏书量n); scanf(%s %s,df.BookDbasei.bno, df.BookDbasei.bname); scanf(%s %s,df.BookDbasei.author, df.BookDbasei.press); scanf(%s %d,df.BookDbasei.sortno, &df.BookDbasei.storenum); df.BookDbasei.borrownum=0; /借出置04.2.2 修改

11、书号索引 (void AppDBaseRec(BookDbaseFile &df) /追加一条图书主数据库记录 int i; i=+df.len; /图书主数据库长度加1 printf(书号 书名 作者名 出版社 分类 藏书量n); scanf(%s %s,df.BookDbasei.bno, df.BookDbasei.bname); scanf(%s %s,df.BookDbasei.author, df.BookDbasei.press); scanf(%s %d,df.BookDbasei.sortno, &df.BookDbasei.storenum); df.BookDbasei.

12、borrownum=0; /借出置0void ChangeBnoIdxF(BookDbaseFile &df,BnoIdxFile &bif) /修改书号索引表 int i,j,k; char sh4; i=df.len; /图书主文件的当前长度,也就是要处理的当前记录号 strcpy(sh,df.BookDbasei.bno); /取记录中书号送至变量sh中 j=bif.len; k=1; while(j=1) /查找插入位置 if(strcmp(sh,bif.BnoIdxj.bno)0) k=j+1; break; j-; if(bif.len0) /有序表的插入 for(j=bif.le

13、n;j=k;j-) bif.BnoIdxj+1=bif.BnoIdxj; /记录后移 strcpy(bif.BnoIdxk.bno,sh); bif.BnoIdxk.RecNo=i; bif.len+; /表长度加14.2.3修改书名索引和表void ChangeLinkHeadF1(BookDbaseFile &df,LHFile1 &lhf1) int i,j,k,m; char sm20; i=df.len; /图书主文件的当前长度,也就是要处理的当前记录号 strcpy(sm,df.BookDbasei.bname); /取记录中书名送至变量sm中 j=1; k=0; while(j=

14、lhf1.len1) /查找与次关键字相等的记录 if(strcmp(sm,lhf1.LHFrec1j.bname)=0) k=j; break; j+; if(k!=0) df.BookDbasei.namenext=lhf1.LHFrec1k.lhead; lhf1.LHFrec1k.lhead=i; /主文件的当前记录号(假定为指针) lhf1.LHFrec1k.RecNum+; else m=+lhf1.len1; /索引关键字个数加1 df.BookDbasei.namenext=0; /用头插法建立链表,指针置空 lhf1.LHFrec1m.lhead=i; /i为主文件的当前记录

15、号(假定为指针) lhf1.LHFrec1m.RecNum=1; /计数器置1 strcpy(lhf1.LHFrec1m.bname,sm); 4.2.4修改作者索引和表void ChangeLinkHeadF2(BookDbaseFile &df,LHFile2 &lhf2) /修改作者索引以及作者链头索引表 int i,j,k,m; char zz8; i=df.len; /图书主文件的当前长度,也就是要处理的当前记录号 strcpy(zz,df.BookDbasei.author); /取记录中书名送至变量zz中 j=1; k=0; while(j=lhf2.len2) /查找与次关键字

16、相等的记录 if(strcmp(zz,lhf2.LHFrec2j.author)=0) k=j; break; j+; if(k!=0) df.BookDbasei.authnext=lhf2.LHFrec2k.lhead; lhf2.LHFrec2k.lhead=i; /主文件的当前记录号(假定为指针) lhf2.LHFrec2k.RecNum+; else m=+lhf2.len2; /索引关键字个数加1 df.BookDbasei.authnext=0; /用头插法建立链表,指针置空 lhf2.LHFrec2m.lhead=i; /i为主文件的当前记录号(假定为指针) lhf2.LHFr

17、ec2m.RecNum=1; /计数器置1 strcpy(lhf2.LHFrec2m.author,zz); 4.2.5修改出版社索引和表void ChangeLinkHeadF3(BookDbaseFile &df,LHFile3 &lhf3) /修改出版社索引以及出版社链头索引表 int i,j,k,m; char cbs10; i=df.len; /图书主文件的当前长度,也就是要处理的当前记录号 strcpy(cbs,df.BookDbasei.press); /取记录中书名送至变量cbs中 j=1; k=0; while(j=lhf3.len3) /查找与次关键字相等的记录 if(st

18、rcmp(cbs,lhf3.LHFrec3j.press)=0) k=j; break; j+; if(k!=0) df.BookDbasei.prenext=lhf3.LHFrec3k.lhead; lhf3.LHFrec3k.lhead=i; /主文件的当前记录号(假定为指针) lhf3.LHFrec3k.RecNum+; else m=+lhf3.len3; /索引关键字个数加1 df.BookDbasei.prenext=0; /用头插法建立链表,指针置空 lhf3.LHFrec3m.lhead=i; /i为主文件的当前记录号(假定为指针) lhf3.LHFrec3m.RecNum=1

19、; /计数器置1 strcpy(lhf3.LHFrec3m.press,cbs); 4.2.6建立图书多重表主索和表void createBook(BookDbaseFile &df,BnoIdxFile &bif,LHFile1 &lhf1,LHFile2 &lhf2,LHFile3 &lhf3) char yn=y; while(yn=y | yn=Y) AppDBaseRec(df); /输入记录 ChangeBnoIdxF(df,bif); /修改书号索引文件 ChangeLinkHeadF1(df,lhf1); /修改书名索引文件 ChangeLinkHeadF2(df,lhf2);

20、 /修改作者索引文件 ChangeLinkHeadF3(df,lhf3); /修改出版社索引文件 printf(继续输入吗?y/n:n); scanf(%s,&yn); 4.3查询信息4.3.1按书号查询int BinSearch(BnoIdxFile bif,char key) /按书号查询法 int low,high,mid; low=1; high=bif.len; while(low=high) mid=(low+high)/2; if(strcmp(key,bif.BnoIdxmid.bno)=0) return bif.BnoIdxmid.RecNo; else if(strcmp

21、(key,bif.BnoIdxmid.bno)0) high=mid-1; else low=mid+1; return 0;4.3.2按书名查询int BnameFile(LHFile1 lhf1,char key) /按书名查询法 int i,k=0; for(i=1;ilhf1.len1;i+) if(strcmp(key,lhf1.LHFrec1i.bname)=0) k=lhf1.LHFrec1i.lhead; break; return k;4.3.3按作者查询int BauthFile(LHFile2 lhf2,char key) /按作者查询法 int i,k=0; for(i

22、=1;ilhf2.len2;i+) if(strcmp(key,lhf2.LHFrec2i.author)=0) k=lhf2.LHFrec2i.lhead; break; return k;4.3.4按出版社查询int BpressFile(LHFile3 lhf3,char key) /按出版社查询法 int i,k=0; for(i=1;i=1 & choose=5) printf(图书查询子系统n); printf(1.书号 2.书名 3.作者 4.出版社 5.退出n); printf(请选择:n); scanf(%d,&choose); switch(choose) case 1:

23、printf(输入书号:n); scanf(%s,sh); k=BinSearch(bif,sh); /调用书号查询算法 if(k=0) printf(没有要查找的图书,请检查是否输入有错n); break; ShowRec(df,k); break; case 2: printf(输入书名:n); scanf(%s,sm); k=BnameFile(f1,sm); /调用书名查询算法 if(k=0) printf(没有要查找的图书,请检查是否输入有错n); break; for(i=k;i;i=df.BookDbasei.namenext) ShowRec(df,i); /输出查找的图书记录

24、 break; case 3: printf(输入作者名:n); scanf(%s,zz); k=BauthFile(f2,zz); /调用作者名查询算法 if(k=0) printf(没有要查找的图书,请检查是否输入有错n); break; for(i=k;i;i=df.BookDbasei.authnext) ShowRec(df,i); /输出查找的图书记录 break; case 4: printf(输入出版社:n); scanf(%s,cbs); k=BpressFile(f3,cbs); /调用出版社查询算法 if(k=0) printf(没有要查找的图书,请检查是否输入有错n); break; for(i=k;i;i=df.BookDbasei.authnext) ShowRec(df,i); /输出查找的图书记录 break; case 5: return; 4.4借还书处理4.4.1借书处理void BorrowBook(BookDbaseFile &bf,BnoIdxFile bif,BookFile &bbf,ReFile &rf) /借书处理 char dzh8,sh4,jyrq8; int i,j,k=0; printf(输

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

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