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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

数据结构课程设计图书管理系统.doc

1、数据结构课程设计图书管理系统一 需求分析该程序是模拟图书馆管理系统,实现图书采编入库、借书、还书、查询等基本业务。此程序规定:(1) 管理员能够向系统中输入每种书的基本信息,包括书号、书名、作者、现存量和库存量、借阅记录,并保存记录;(2) 用户(读者)能够按书号、书名、作者查询图书信息;(3) 管理员能够实现图书采编入库(新购入一本书,经分类和确定书号之后登记到图书账目中去。如果这种书在帐中已有,则只将总库存量增加)、借阅(如果书的现存量大于0,则借出一本,登记借阅者的图书证号和归还期限)、归还(删除对借阅者的登记,改变该书的现存量)、销毁(将图书从账目中删除)等操作。二 概要设计 系统用到

2、的抽象数据类型定义: 1、ADT LinearList数据元素:D=a i|aiD 0,i=1,2,n,n0,D 0为某一数据对象关系:S=|ai,ai+1D 0,i=1,2,n-1基本操作:(1)InitList(L)(2)DestroyList(L)(3)ClearList(L)(4)EmptyList(L)(5)ListLength(L)(6)Locate(L,e)(7)GetData(L,i)(8)InsList(L,i,e)(9)DelList(L,i,n0数据关系:R=|ai-1,aiD,i=2,n;n0基本操作:(1) StrAsign(S,chars)(2) StrInsert

3、(S,pos,T)(3) StrDelete(S,pos,len)(4) StrCopy(S,T)(5) StrEmpty(S)(6) StrCompare(S,T)(7) StrLength(S)(8) StrClear(S)(9) StrCat(S,T)(10)SubString(Sub,S,pos,len)(11)StrIndex(S,pos,T)(12)StrReplace(S,T,V)(13)StrDestroy(S)ADT String 系统中的子程序和功能说明:InitBo(Book 初始化图书信息InitRe(lend 初始化借阅者信息BinarySearch(Book boo

4、,char SearchNum);二分法查找比较书号Buy(Book 新书采编入库系统Delete(Book 清除图书信息系统Borrow(Book 借阅图书处理系统Return(Book 归还图书系统SearchByNum(Book 按书号查找系统SearchByName(Book 按书名查找系统SearchByAuth(Book 按作者查询系统Menu();主菜单显示系统Search();查询系统子菜单main();主函数 系统程序功能结构图图书馆管理系统图书信息录入 查询图书信息 处理图书信息基本信息借阅记录按书号查询按书名查询按作者查询图书采编入库图书借阅情况图书归还情况图书销毁情况三

5、 详细设计 功能实现过程bool BinarySearch(Book boo,char SearchNum) /二分法查找比较书号while(lowmidi-)/*将新采购的书插在适合位置,保持有序*/空出插入位置;输入新购书籍的相关信息:书号、书名、作者、出版社;booi.next=NULL;total+;/*总量加 1*/void Delete(Book if(书库中有此书)strcpy(连续两本书的相关信息);现存量减 1;库存量减 1;else 输出“此书已有借阅者,无法删除!”;void Borrow(Book if(书库中有此书)借出一本书后,该书的现存量减 1;并在借阅记录链表中

6、插入该条记录;再对应读者信息记录链表,如果已有该读者证号信息,直接在该链表中插入此次借阅记录;如果无该读者证号信息,申请新单链表存放借阅记录。else 输出“该书现存量为 0”;void Return(Book if(书库中有此书)查找图书文件,修改图书的现存量;查找记录借阅信息的单链表,填入还书日期,删除借阅信息;查找记录读者信息的单链表,删除证号信息。void SearchByNum(Book else/*书库中有此书信息*/输出与此书有关的相关信息;void SearchByName(Book 用顺序查找法查找;if(查找到需要查找的书)输出与此书相关的信息;建议画出主要模块流程图。四

7、设计与调试分析1、这个程序设计中要注意定义两个结构体:图书结构体、借阅人结构体。其中定义数组存放图书信息,申请链表存放借阅记录和读者信息记录。2、程序中运用到大多的插入与删除,所以申请链表比较方便插入与删除。但应前期需求分析的准备工作不充分,导致程序运行功能不全,比如查找时关于此书的信息不能全部显示出来,并且添加删除时库存的变化不能直接显示出来。程序的健壮性不能达到预期的结果,这些都是需要改进的。3、在程序中的函数调用是个非常重要的部分,也是经常需要用到的,在编写程序过程中,因为函数调用不准确,使得循环进不去,后来改变函数的调用关系,才达到了预期结果。4、程序中还定义了全局变量,之前没定义全局

8、变量,在下面的编写过程,同样性质的地方需要重复定义,比较麻烦,定义全局变量使得程序比较简明一点。五 用户手册【 使用说明 】1、进入图书馆管理系统主页面2、若有新书要新编入库,选择 1,进入新书入库系统,输入入库书的书号,若书库中无该书,则设立新书目,输入新书信息。若书库中已有该书,则输入新信息覆盖修改原书库中该书号对应书的信息。3、若有书籍信息需要删除,选择 2,进入清空库存系统,输入想要删除书的书号,则此书信息就已删除。4、若要借阅图书,选择 3,进入图书借阅系统,输入需要借阅书的书号以及读者证号,并输入还书日期,则借书成功。5、若要归还图书,选择 4,进入图书归还系统,输入需要归还图书的

9、书号以及读者证号,则还书成功。6、若要查找信息,选择 5,进入查找信息子系统。若要按书号查找,则选择子系统中的1,输入需要查找的书的书号,若按书名查找,则选择子系统中的 2,输入需要查找的书名,若按作者查找,输入需要查找书的作者进行查找,若查找结束,则按 0 退出。7、若系统使用结束,按 0 退出。【 程序中的头文件 】#include #include #include #define MAXSIZE 100 #define LIST_INIT_SIZE 100int Retotal;/*定义的全局变量*/int total;六 测试成果1、采编入库2、清空库存3、图书借阅4、图书归还5、图

10、书查找七 附录(源程序清单)#include #include #include #define MAXSIZE 100 #define LIST_INIT_SIZE 100typedef struct Borochar BNum20;char RetDate8;struct Boro *next;Bor;typedef struct LinkBook Bor *next;char CNum20;int Total;lendLIST_INIT_SIZE;typedef struct LNodechar CardNum20;struct LNode *next;LinkList; typedef

11、 struct bookchar num20;char name20;char auth20;char pub20;int TotNum;int NowNum;LinkList *next;BookMAXSIZE;int Retotal;int total; void InitBo(Book imidi-) booi=booi-1; printf(“该书在书库中不存在,设立新书目!n“);strcpy(booi.num,BuyNum);printf(“该书购入的数量是:“);scanf(“ %d“,booi.TotNum=booi.NowNum;printf(“该书的名字是:“);scanf(

12、“ %s“,printf(“该书的作者是:“);scanf(“ %s“,printf(“该书的出版社是:“);scanf(“ %s“,booi.next=NULL;total+;printf(“已增加该书的信息!n“);printf(“编号 :%s 书名:%s “,booi.num,booi.name);printf(“作者:%s 出版社:%s“,booi.auth,booi.pub);printf(“n“);printf(“入库成功.n“);void Delete(Book if(BinarySearch(boo,DeleteNum)if(!boomid.next)int j;for(j=m

13、id;j0) boomid.NowNum-;if(boomid.next=NULL) m=(LinkList *)malloc(sizeof(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);m-next=n;strcpy(n-CardNum,CaNum);n-next=NULL; int i=0;for(i=0;inext)p=p-next;q=(Bor *)malloc(si

14、zeof(Boro);p-next=q;strcpy(q-BNum,BorrowNum); printf(“输入归还日期:“);scanf(“%s“,q-next=NULL;printf(“借阅成功.n“);break; if(i=Retotal)strcpy(Lini.CNum,CaNum); p=(Bor *)malloc(sizeof(Boro);Lini.next=p;strcpy(p-BNum,BorrowNum);printf(“输入归还日期:“);scanf(“ %s“,p-next=NULL;Retotal+; printf(“借阅成功.n“);else printf(“借阅失

15、败.该书现在库存为 0.n“);void Return(Book LinkList *m,*n;int flag=0;if(!BinarySearch(boo,ReturnNum)|!total) printf(“书库中无此书.n“);if(BinarySearch(boo,ReturnNum) m=boomid.next;if(!strcmp(m-CardNum,BorrowerNum) boomid.NowNum+; boomid.next=m-next; free(m); elsewhile(m-next) if(!strcmp(m-next-CardNum,BorrowerNum) n

16、=m-next; m-next=n-next; free(n); boomid.NowNum+; break;m=m-next;for(int i=0;iBNum,ReturnNum) Lini.next=p-next; free(p); printf(“成功归还该书.n“);flag=1;break;else while(p-next) if(!strcmp(p-next-BNum,ReturnNum) q=p-next; p-next=q-next; free(q); printf(“成功归还该书.n“);flag=1;break;p=p-next;for(int k=0;kRetotal

17、;k+)if(!Link.next)int j;for(j=k;jRetotal;j+)Linj=Linj+1; strcpy(Linj.CNum,“ “); Retotal-; if(flag=0) printf(“无该证信息.n“);void SearchByNum(Book p=boomid.next;if(BinarySearch(boo,SeaNum)=true)printf(“书号:%sn“,boomid.num);printf(“书名:%sn“,boomid.name);printf(“作者名:%sn“,boomid.auth);printf(“出版社:%sn“,boomid.p

18、ub);printf(“现存量:%sn“,boomid.NowNum);printf(“库存量:%sn“,boomid.TotNum);printf(“ n“);elseprintf(“对不起,未找到您想查找的书。n“);void SearchByName(Book printf(“输入想查找的书的书名:n“);scanf(“ %s“,printf(“此书存在!n“);for(int i=0;itotal;i+)if(strcmp(SeaName,booi.name)=0)printf(“编号:%s 书名:%s “,booi.num,booi.name);printf(“作者:%s 出版社:%

19、s“,booi.auth,booi.pub);printf(“总库存量:%s“,booi.TotNum);printf(“现库存量:%s“,booi.NowNum);printf(“n“);void SearchByAuth(Book printf(“输入想查找的书的作者:n“);scanf(“ %s“,printf(“找到符合该作者的书的详细信息如下:n“);for(int i=0;itotal;i+)if(strcmp(SeaAuth,booi.auth)=0)printf(“编号 :%s 书名:%s “,booi.num,booi.name);printf(“作者:%s 出版社:%s“,

20、booi.auth,booi.pub);printf(“n“);void Menu() printf(“ 图书馆管理系统 n“);printf(“1. 采编入库 2. 清空库存nn“);printf(“3. 图书借阅 4、图书归还nn“);printf(“5. 按要求查找 0. 退出nn“);printf(“请选择:“);void Search()char BNum20;Book Bo;int k;printf(“ 图书馆查询子系统n“);printf(“1、按书号查询 2、按书名查找nn“);printf(“3、按作者查询 4、退出子系统nn“);printf(“请选择:“);scanf(“

21、%d“,switch(k)case 1:printf(“请输入书号:“);/输入书号查找scanf(“ %s“,SearchByNum(Bo,BNum);break;case 2:SearchByName(Bo);break;case 3:SearchByAuth(Bo);break;case 4:exit(0);break;void main()Book Bo;lend Lin;char BNum20;char CNum20;int choice=10;while(choice!=0)system(“cls“);Menu();/显示菜单scanf(“ %d“,switch(choice)ca

22、se 1:/采编入库printf(“请输入入库的书的书号:“);scanf(“ %s“,BNum);Buy(Bo,BNum);system(“pause“);break;case 2:/清空库存printf(“请输入想要清除的书的书号:“);scanf(“ %s“,BNum);Delete(Bo,BNum);system(“pause“);break;case 3:/借阅printf(“请输入想要借阅的书的书号:n“);scanf(“ %s“,printf(“请输入图书证号:“);scanf(“ %s“,Borrow(Bo,Lin,BNum,CNum); system(“pause“);break;case 4:/归还printf(“请输入想要归还的书的书号:n“);scanf(“ %s“,printf(“请输入图书证号:“);scanf(“ %s“,Return(Bo,Lin,BNum,CNum);system(“pause“);break;case 5:Search();system(“pause“);break;case 0:/退出系统exit(0);break;default:printf(“输入错误!n“);exit(0);break;

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报