图书管理系统设计报告_第1页
图书管理系统设计报告_第2页
图书管理系统设计报告_第3页
图书管理系统设计报告_第4页
图书管理系统设计报告_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

《数据结构》课程实验实验报告实验四图书管理系统专业:计算机科学与技术 班级:姓名: 学号: 完成日期:目录TOC\o"1-3"\h\u25412一、题目描述 28142二、需求分析 33007三、概要设计 427056四、详细设计 95955五、调试分析 1629256六、总结 20一、题目描述【问题描述】

设计一个计算机管理系统完成图书管理基本业务。

【基本要求】每种书的登记内容包括书号、书名、著作者、现存量和库存量;对书号建立索引表(线性表)以提高查找效率;系统主要功能如下:*采编入库:新购一种书,确定书号后,登记到图书帐目表中,如果表中已有,则只将库存量增加;

*借阅:如果一种书的现存量大于0,则借出一本,登记借阅者的书证号和归还期限,改变现存量;

*归还:注销对借阅者的登记,改变该书的现存量。

【进一步完成内容】系统功能的进一步完善;索引表采用树表。设计内容程序流程图源程序软件测试报告(包括所用到的数据及结果)二、需求分析有八个模块1.图书初始化输入图书的一些信息,编号、作者、书名、数量,使有一定的库存。2.新书入库新书采编入库,输入编号后如果有次数只需输入数量,没有则继续输入书名、作者、数量。3.添加读者信息读者信息初始化,输入读书证号和姓名,只有输入书证号和姓名才能进行借书还书4.借书模块读者输入读书证号,证号存在输入要借的图书编号,不能借同一本书,如果借书数量以达到最大也不能借书。5.还书模块归还已借的图书,要先输入读者书证号,书证号存在继续输入要还的图书编号,图书编号存在并且借来此书,归还成功。6.查询图书信息7.查询读者信息可查询读者姓名书证号,借了几本书,都是什么书和还书日期,还可以借几本书。8.退出退出读书管理系统并保存读者和图书信息。三、概要设计进入系统后首先进行图书初始化,输入图书的信息。开始开始输入图书编号、名称、作者和图书数量输入图书编号、名称、作者和图书数量进入系统进入系统初始化之后,进入系统,显示功能列表,可选择任意系统,但在借书之前先要输入读者信息。开始开始输入功能所对应的数字输入功能所对应的数字输入的数字小于0大于6输入的数字小于0大于6错误!请重新输入错误!请重新输入执行所选功能执行所选功能1)采编入库录入图书信息录入图书信息判断是否有此图书判断是否有此图书 是在原有的纪录上加上现有的图书数量 否在原有的纪录上加上现有的图书数量向系统中加入新纪录向系统中加入新纪录2)输入读者信息开始开始输入读者信息:读者书证号输入读者信息:读者书证号结束结束3)借阅图书输入读者书证号输入读者书证号判断读者是否存在判断读者是否存在 否输出次读者编号不存在!按任意键返回 输出次读者编号不存在!按任意键返回 是输入要借的图书编号输入要借的图书编号判断图书编号是否存在判断图书编号是否存在 否输出此图书编号不存在!按任意键返回 输出此图书编号不存在!按任意键返回 是看是否还有此图书 否看是否还有此图书输出此书已借完,按任意键返回 是输出此书已借完,按任意键返回看读者的借书数目是否满了看读者的借书数目是否满了 是输出借书数目已满不能借书,按任意键返回 否输出借书数目已满不能借书,按任意键返回看读者是否借了相同的书看读者是否借了相同的书 是输出同一读者不能借相同的两本书 否输出同一读者不能借相同的两本书输入归还图书的日期输入归还图书的日期图书现有数量和库存数量都减1图书现有数量和库存数量都减1输出读者结束成功,按任意键返回输出读者结束成功,按任意键返回结束结束4)归还图书输入要还书的读者编号输入要还书的读者编号判断读者编号是否存在 否判断读者编号是否存在输出读者编号不存在按任意键返回 是输出读者编号不存在按任意键返回输入读者还书编号输入读者还书编号判断图书编号是否存在判断图书编号是否存在 否输出此图书编号不存在按任意键返回输出此图书编号不存在按任意键返回是此图书编号和还书日期等于0此图书编号和还书日期等于0库存和现有图书数量加1,借书数量减1库存和现有图书数量加1,借书数量减1输出读者还书完毕,按任意键返回输出读者还书完毕,按任意键返回结束结束5)查询图书信息判断图书信息是否为空判断图书信息是否为空 否输出图书信息:编号、名称、作者、现有和库存输出图书信息:编号、名称、作者、现有和库存结束结束6)查询读者信息判断读者信息是否为空判断读者信息是否为空 否输出读者书证号、姓名、图书编码和还书日期输出读者书证号、姓名、图书编码和还书日期输出读者信息打印完毕输出读者信息打印完毕结束结束四、详细设计1.新书入库voidInsert_New_Book(){BK*p,*p0,*p1;p=p1=h_book;printf("\n新书入库模块...\n");printf("\n请输入新书信息..\n包括书号.书名.数量..\n");p0=(BK*)malloc(sizeof(BK));printf("图书编号:");scanf("%s",p0->book_num);while(strcmp(p0->book_num,p1->book_num)!=0&&p1->next!=NULL)p1=p1->next;if(strcmp(p0->book_num,p1->book_num)==0)/*此处分两种情况,若图书编号存在,则直接进库,只须输入书的数量*/{printf("\n此编号图书已存在!!直接入库!\n");printf("图书数量:");scanf("%d",&p0->book_kc);p1->book_kc+=p0->book_kc;p1->book_xy+=p0->book_kc;}else/*若不存在,则需要输入其他的信息,然后在进行插入操作*/{printf("图书名称:");scanf("%s",p0->book_name);printf("图书作者:");scanf("%s",p0->book_writer);printf("图书数量:");scanf("%d",&p0->book_kc);//库存数量while(p->next){p=p->next;}if(h_book==NULL)h_book=p0;/*此处分两种情况,链表中没有数据,head直接指向p0处*/elsep->next=p0;/*此处分两种情况,链表中有数据,链表中最后元素的next指向p0处*/p0->next=NULL;p0->book_xy=p0->book_kc;}printf("\n新书入库完毕!按任意键继续下一步操作..\n");getch();system("cls");}2.添加读者voidadd_reader(){RD*p0;inti;printf("\n读者初始化开始,请输入读者信息..\n包括书证号.姓名..\n");p0=(RD*)malloc(sizeof(RD));/*申请新结点存储空间*/h_reader=p0;printf("\n请输入读者的信息:\n");printf("读者书证号:");scanf("%s",p0->reader_num);printf("读者姓名:");scanf("%s",p0->reader_name);p0->right=0;for(i=0;i<Max;i++){strcpy(p0->borrow[i].borrow_book_num,"0");/*所借图书直接置为(即没有借书)*/strcpy(p0->borrow[i].limit_date,"0");}p0->next=NULL;printf("\n读者信息初始化完毕!按任意键继续下一步操作..\n");getch();system("cls");}3.借书模块voidBorrow_Book(){BK*p0;RD*p1;charbo_num[10],rea_num[10],lim_date[8];inti;p0=h_book;p1=h_reader;printf("\n借书模块...\n");printf("\n请输入借书的读者书证号:");scanf("%s",rea_num);while(p1->next!=NULL&&strcmp(rea_num,p1->reader_num)!=0)p1=p1->next;if(p1->next==NULL&&strcmp(rea_num,p1->reader_num)!=0){printf("\n此读者编号不存在!按任意键返回..\n");gotoEND;}printf("\n请输入你要借的书的编号:");scanf("%s",bo_num);while(strcmp(bo_num,p0->book_num)!=0&&p0->next!=NULL)p0=p0->next;if(p0->next==NULL&&strcmp(bo_num,p0->book_num)!=0){printf("\n此图书编号不存在!按任意键返回..\n");gotoEND;}elseif(p0->book_xy<=0){printf("\n抱歉,此书已借完!请等待新书的到来!!\n按任意键返回");gotoEND;}elseif(p1->right>Max||p1->right==Max){printf("\n不好意思,借书数目已满!不能借书!\n按任意键返回");gotoEND;}elseif(strcmp(p1->borrow[0].borrow_book_num,"0")!=0){for(i=0;i<Max;i++){if(strcmp(p1->borrow[i].borrow_book_num,bo_num)==0){printf("\n抱歉!同一个读者不能同借两本相同的书!\n按任意键返回");gotoEND;}elseif(strcmp(p1->borrow[i].borrow_book_num,"0")==0){printf("\n请输入你要归还图书的日期:");scanf("%s",lim_date);strcpy(p1->borrow[p1->right++].borrow_book_num,bo_num);strcpy(p1->borrow[p1->right-1].limit_date,lim_date);p0->book_xy--; p0->book_kc--;printf("\n读者编号%s借书完毕!按任意键继续下步操作..",p1->reader_num);gotoEND;}}}else{printf("\n请输入你要归还图书的日期:");scanf("%s",lim_date);strcpy(p1->borrow[p1->right++].borrow_book_num,bo_num);strcpy(p1->borrow[p1->right-1].limit_date,lim_date);p0->book_xy--;p0->book_kc--;printf("\n读者编号%s借书完毕!按任意键继续下步操作..",p1->reader_num);}END:getch();system("cls");}4.还书模块voidReturn_Book(){BK*p;RD*q;inti,j,find=0;charreturn_book_num[10],return_reader_num[10];p=h_book;q=h_reader;printf("\n还书模块...\n");printf("\n请输入要还书的读者编号:");scanf("%s",return_reader_num);while(q->next!=NULL&&strcmp(return_reader_num,q->reader_num)!=0)q=q->next;if(q->next==NULL&&strcmp(return_reader_num,q->reader_num)!=0){find=2;printf("\n此读者编号不存在!按任意键返回..\n");gotoend;}printf("\n请输入读者还书的编号:");scanf("%s",return_book_num);while(p->next!=NULL&&strcmp(return_book_num,p->book_num)!=0)p=p->next;if(p->next==NULL&&strcmp(return_book_num,p->book_num)!=0){find=2;printf("\n错误!此图书编号不存在!按任意键返回..\n");gotoend;}for(i=0;i<Max;i++)if(strcmp(return_book_num,q->borrow[i].borrow_book_num)==0)/*如果此读者借了此书*/{find=1;for(j=i;j<Max-1;j++){strcpy(q->borrow[j].borrow_book_num,q->borrow[j+1].borrow_book_num);strcpy(q->borrow[j].limit_date,q->borrow[j+1].limit_date);}strcpy(q->borrow[Max-1].borrow_book_num,"0");strcpy(q->borrow[Max-1].limit_date,"0");p->book_xy++; p->book_kc++;q->right--;printf("\n编号%s的读者还书完毕!按任意键继续下步操作..",return_reader_num);}if(find==0)printf("\n错误!此读者未借此书!按任意键返回..\n");end:getch();system("cls");}5.查询图书信息voidPrint_book(){BK*p;p=h_book;printf("\n图书信息如下:\n\n");printf("图书编号\t图书名称\t图书作者\t现有\t\t库存\n");while(p!=NULL){printf("%s\t\t%s\t\t%s\t\t%d\t\t%d\n",p->book_num,p->book_name,p->book_writer,p->book_xy,p->book_kc);p=p->next;}printf("\n图书信息打印完毕!按任意键继续下一步操作..");getch();system("cls");}6.查询图书信息voidPrint_reader(){RD*p;inti;p=h_reader;printf("\n读者信息如下:\n\n");pr

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论