欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    图书管理信息系统的设计与实现docx.docx

    • 资源ID:3539904       资源大小:27.58KB        全文页数:58页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    图书管理信息系统的设计与实现docx.docx

    1、图书管理信息系统的设计与实现docx.数据结构课程设计报告设计题目:图书管理信息系统的设计与实现专 业 通信工程(物联网)班 级学 生学 号指导教师起止时间 2012-8-20 至 2012-9-11师学院word 专业资料.2012 年 下 学期一、设计题目十七、图书管理信息系统的设计与实现【问题描述】 图书信息所表示的就是一个数据库文件。 图书管理一般包括: 图书采编、图书编目、图书查询及图书流通(借、还书)等。要求设计一个图书管理信息系统,用计算机实现上述系统功能。【基本要求】建立一个图书信息数据库文件, 输入若干种书的记录, 建立一个以书号为关键字的索引文件;在主数据库文件中建立以书名

    2、、 作者及出版社作为次关键字的索引以及对应的索引链头文件,如图所示;建立关于书号、书名、作者及出版社的图书查询;(1) 实现图书的借还子系统, 包括建立读者文件、 借还文件、读者管理及图书借还等相关的处理。记录号书号书名指针 1作者指 针出版社指 针分藏书借出23类量数11021数据库0小云0人 民 邮080电21014数 据 结0小洋0中 国 科001360word 专业资料.构学31106操作系 0许海平0人民邮 170统电41108数据结 2一0清华大 001350构学51203程序设 0小云1中国科 260计学62201数据库1许海平3清华大 460学72360数据结 4小云5人民邮

    3、301350构电80030程序设 5小洋2清华大 670计学a)图书主索引文件书名链头地址长度作者链头地址长度出版社链头地址长度数据库62小云73人民邮电73数据结构73小洋82中国科学52操作系统31许海平62清华大学83程序设计82一41b) 书名索引链头文件c) 作者索引链头文件d) 出版社索引链头文件二、设计容设计一个计算机管理系统完成图书管理基本业务。(1 )每种书的登记容包括书号、书名、著作者、现存量和库存量;(2 )对书号建立索引表(线性表)以提高查找效率;(3 )采编入库:新购一种书,确定书号后,登记到图书帐目表中,如果表中已有,则只将库存量增加;(4 )借阅:如果一种书的现存

    4、量大于 0 ,则借出一本,登记借阅者的书证号word 专业资料.和还期限,改变现存量;(5 )归还:注销对借阅者的登记,改变该书的现存量。三、概要设计:确定所需模块及模块间调用关系分析:首先应该定义借书人的结构体信息和图书结构体信息, 为了便于查找图书 和 借 书 人 , 分 别 对 其 建 立 单 链 表 。 然 后 定 义 buy(),SearchByNum(),SearchByName(), borrow(),return() 五个函数分别实现图书采编入库的功能,按书号查询的功能,按书名查找的功能,借书功能和还书功能。.根据任务的要求,先定义头文件。然后写出借书人和图书的结构体信息。为了

    5、便于查找图书和存储借书人的信息,分别对借书人和图书采用链表的形式存放。/头文件的声明#include #include #include #define MAXSIZE 100 / 最大值定义为 100#define LIST_INIT_SIZE 100/ 图书证使用者最大值定义为 100word 专业资料./ 借书人的结构体typedef struct Boro/ 借书记录char BNum20;/ 所借书的书号char BorDate8;/ 借书日期char RetDate8;/ 归还日期struct Boro *next;Bor;typedef struct LinkBookBor *n

    6、ext;/ 该图书证的借书记录char CNum20;/ 图书证号int Total;/ 借书的数量lendLIST_INIT_SIZE;/ 借书人数组/图书的结构体信息typedef struct LNodechar CardNum20;/ 图书证号struct LNode *next;LinkList; / 借书人typedef struct book/ 每种图书需要登记的容包括书号、书名、作者、出版社、总库存量和现库量。char num20;/ 书号char name20;/ 书名word 专业资料.char auth20;/作者char pub20;/出版社int TotNum;/总库

    7、存int NowNum;/现库存LinkList *next;/ 借了该书的人 ook;1、新图书采编入库的设计方案采编入库:新购入一种书,如果该书在图书账目中已经存在, 则将其库存量增加(包括总库存量和现库存量),如果该书不存在,则在图书账目中增加一种书,总库存量和现库存量均为 1。为了便于查找,另外定义了一个专门用于查找的函数 BinarySearch() ,使用的是折半查找法。(1)折半查找法查找书号int mid=0;/ 外部函数 mid ,用来返回查找到的位置int BinarySearch(ook boo,char SearchNum) / 二分法查找比较书号 由于函数不能有两个返

    8、回值 ,所以设置一个外部变量 mid ,用来返回查找到的位置int low=0,high=total-1;int found=0;while(lowmid&total;i-) / 插在适合位置 保持有序booi=booi-1; / 空出插入位置printf( 该书在书库中不存在。设立新书目,请补全书的详细信息。 n);strcpy(booi.num,BuyNum);word 专业资料.printf( 该书购入的数量是 :);scanf( %d,&booi.NowNum);booi.TotNum=booi.NowNum;printf( 该书的名字是 :);scanf( %s,&booi.name

    9、);printf( 该书的作者是 :);scanf( %s,&booi.auth);printf( 该书的出版社是 :);scanf( %s,&booi.pub);/ 补全信息booi.next=NULL;total+;/ 总量 +1printf( 已增加该书的信息。 编号 %s 的书 %s 作者是 %s ,出版社是 %s ,目前的总库存是 %d , 现库存是 %d 。n,booi.num,booi.name,booi.auth,booi.pub,booi.TotNum,booi.NowNword 专业资料.um);printf( 入库成功 .n);3、查找图书的设计方案为了更便于查找, 这里

    10、设计了两种查找方案, 按书号查找和按书名查找。 在按书号查找中使用了折半查找法的查找函数。按书号查找方案中都显示图书的所有状态,包括是在库还是借出,如果借出,并显示何人借走。(1).按书号查找void SearchByNum(ook &boo,char SeaNum)/BY NUM 根据书号查找LinkList *p;p=boomid.next;if(BinarySearch(boo,SeaNum)=false)printf( 对不起,未找到您想查找的书。n);/ 二分查找 没找到else/ 找到了的话word 专业资料.printf( 书号 书名 作者 出版社 现库存 总库存 n);prin

    11、tf(-n);printf( %10s %10s %10s %10s %10d %10d n,boomid.num,boomid.name,boomid.auth,boomid.pub,boomid.NowNum,boomid.TotNum);if(boomid.next!=NULL) printf( 已借该书的 n); printf( 图书证号 n);while(p) printf( %14s n,p-CardNum); p=p-next;while(p)word 专业资料.printf( %s ,p-CardNum);/ 在按书号查找的函数里也显示借了这本书的借阅者的证号p=p-next;

    12、printf( n);/ 显示查找的书籍的信息(2).按书名查找void SearchByName(ook &boo)/BY NAME 根据书名查找char SeaName20;printf( 输入想查找的书的书名 :n);scanf( %s,&SeaName);printf( 找到符合该书名的书的详细信息如下: n);word 专业资料.for(int i=0;i0) / 看现库存是否大于 0boomid.NowNum-;/ 借出一本,少 1if(boomid.next=NULL) / 若该书信息下显示该种书还没被人借过word 专业资料.m=(LinkList *)malloc(sizeo

    13、f(LNode);/ 分配boomid.next=m;/ 该图书信息中的链表的第一个结点strcpy(m-CardNum,CaNum);m-next=NULL;/ 后一个结点为空else / 如果已经有人在借这书了m=boomid.next;while(m-next) / 遍历到最后一个结点m=m-next;n=(LinkList *)malloc(sizeof(LNode);/ 分配空间,增加 1个结点m-next=n;strcpy(n-CardNum,CaNum);/ 记录证号n-next=NULL;word 专业资料.int i=0;for(i=0;inext)p=p-next;/ 遍历

    14、到最后一个结点q=(Bor *)malloc(sizeof(Boro);/ 分配空间p-next=q;strcpy(q-BNum,BorrowNum); / 记录书号printf( 输入归还日期 :);scanf(%s,&q-RetDate);q-next=NULL;word 专业资料.printf( 借阅成功 .n);break; / 找到证了就跳出循环if(i=Retotal)/ 如果没有这证的信息strcpy(Lini.CNum,CaNum); / 记录证号p=(Bor *)malloc(sizeof(Boro); / 分配空间Lini.next=p;strcpy(p-BNum,Borr

    15、owNum);printf( 输入归还日期 :);scanf( %s,&p-RetDate);p-next=NULL;Retotal+; / 借阅证号信息总数加 1word 专业资料.printf( 借阅成功 .n);else printf( 借阅失败 .该书现在库存为 0.n);5、归还图书的设计方案定义了一个 return 函数,当进行还书时,在借阅者表里查找借阅者,注销对借阅者的登记。在图书链表中改变该书的现存量,把现存量增加。void Return(ook &boo,lend &Lin,char ReturnNum,char BorrowerNum)Bor *p,*q; LinkLis

    16、t *m,*n;int flag=0;/ 设置一个参数if(!BinarySearch(boo,ReturnNum)|!total) / 没书word 专业资料.printf( 书库中无此书 .n);if(BinarySearch(boo,ReturnNum) / 有书m=boomid.next;if(!strcmp(m-CardNum,BorrowerNum) / 如果是第一个借的人还的boomid.NowNum+; / 现库存加 1boomid.next=m-next; / 删除结点free(m); / 释放该结点的空间空间elsewhile(m-next) / 查找归还者的借阅者结点wo

    17、rd 专业资料.if(!strcmp(m-next-CardNum,BorrowerNum) / 如果找到n=m-next; /n 为归还者的借阅结点m-next=n-next; /m 指向归还者的借阅结点的下一结点free(n); / 释放空间boomid.NowNum+; / 现库存加 1break;m=m-next;/在借阅者表里查找借阅者信息for(int i=0;iBNum,ReturnNum) / 如果是归还的是借的第一本书Lini.next=p-next; / 指向下一借书结点free(p); / 释放结点空间printf( 成功归还该书 .n);flag=1;break;els

    18、e / 找不到word 专业资料.while(p-next) / 找到归还书的借书结点if(!strcmp(p-next-BNum,ReturnNum) / 如果找到q=p-next; /q 为归还书的借书结点p-next=q-next; /p 指向下一借书结点free(q); / 释放空间printf( 成功归还该书 .n);flag=1;break;p=p-next;word 专业资料.for(int k=0;kRetotal;k+)if(!Link.next)int j;for(j=k;jRetotal;j+)Linj=Linj+1; / 其后都往前移一位,覆盖掉当前信息strcpy(L

    19、inj.CNum, ); / 删除图书证号Retotal-; / 图书证数减 1 / 删除当前状态下没借书的图书证的信息,节省空间if(flag=0) printf( 无该证信息 .n);6、定义主函数,在主函数中设计出主界面。便于用户进入后能够根据提示方便操作。并且在主word 专业资料.函数中定义出要实现的基本功能, 在分别另外去实现。 分别在主函数中定义有: Buy(Bo,BNum);SearchByNum(Bo,BNum);SearchByName(Bo); Borrow(Bo,Lin,BNum,CNum);Return(Bo,Lin,BNum,CNum) 五个函数。四、算法描述:给出各模块流程图及代码图书管理系统的总体结构如图书管理系统图书采编 按书号查 按书名查 借阅图书 图书归还入库 找 找完整代码如下:“wj.h ”/借书人的结构体typedef struct Boro/ 借书记录char BNum20;/ 所借书的书号char BorDate8;/ 借书日期char RetDate8;/ 归还日期struct Boro *next;word 专业资料.Bor;typedef struct LinkBookBor *next;/ 该图书证的借书记录char CNum20;/ 图书证号int Total;/ 借书的数量le


    注意事项

    本文(图书管理信息系统的设计与实现docx.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开