数据结构-图书管理系统_第1页
数据结构-图书管理系统_第2页
数据结构-图书管理系统_第3页
数据结构-图书管理系统_第4页
数据结构-图书管理系统_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

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

文档简介

1、课程设计说明书课程名称:数据结构课程设计班级:11-电科1班姓名:张海琴学号:1111121132设计题目:图书管理系统一、设计题目与要求【问题描述】设计一个计算机管理系统完成图书管理基本业务【基本要求】1)每种书的登记内容包括书号、书名、著作者、现存量和库存量;2)对书号建立索引表(线性表)以提高查找效率;3)系统主要功能如下:*采编入库:新购一种书,确定书号后,登记到图书帐目表中,如果表中已有,则只将库存量增加;*借阅:如果一种书的现存量大于0,则借出一本,登记借阅者的书证号和归还可编辑期限,改变现存量;*归还:注销对借阅者的登记,改变该书的现存量。【进一步完成内容】1)系统功能的进一步完

2、善;2)索引表采用树表。3)设计内容4)程序流程图5)源程序6)软件测试报告(包括所用到的数据及结果)二、概要设计有八个模块1)图书初始化输入图书的一些信息,编号、作者、书名、数量,使有一定的库存。2)新书入库新书采编入库,输入编号后如果有次数只需输入数量,没有则继续输入书名、作者、数量。3)添加读者信息读者信息初始化,输入读书证号和姓名,只有输入书证号和姓名才能进行借书还书4)借书模块读者输入读书证号,证号存在输入要借的图书编号,不能借同一本书,如果借书数量以达到最大也不能借书。5)还书模块归还已借的图书,要先输入读者书证号,书证号存在继续输入要还的图书编号,图可编辑书编号存在并且借来此书,

3、归还成功。6)查询图书信息7)查询读者信息可查询读者姓名书证号,借了几本书,都是什么书和还书日期,还可以借几本书8)退出退出读书管理系统并保存读者和图书信息。图书管理系统三、算法设计可编辑进入系统后首先进行图书初始化,输入图书的信息初始化之后,进入系统,显示功能列表,可选择任意系统,但在借书之前先要输入读者信息。可编辑1)采编入库2)输入读者信息3)借阅图书可编辑4)归还图书输出同一读者不能借相同的两本书可编辑此图书编号和还书日期等于0库存和现有图书数量加1,借书数量减1输出读者还书完毕,按任意键返回5)查询图书信息6)查询读者信息可编辑四、运行结果和调试分析图书信息初始化可编辑白Fn.人.*

4、书书书闿方稀土百里入编名森书图始号初编书后请图图图图图书信息初始化完毕T接任意键继续下一步操作请选择杓应的代用:图书管理系统主荔单白心自心宜信统库者记ffi书者系人读普®II图读出编记阅书询询退森重查杳-0123456可编辑图书管理系蟀主装单统库者记理用者一系人读普彦已图读一出编记阅书询询.退一查查一信信一自j息一请选择相应的代胡H新书入库模块.请输入惹书值息工号.书名.数量-号工砒己存在”直接入库,新书入医完毕,接任意穰继续下一步操作dfC;ProraAFi1cs>icrosoft¥iavalStudioWyPrcject?pkcsjWe'bugXpkc?.

5、不同的新书采编入库j,C;Pr(igraMFi1es>icrosoft¥isualStudioWyProjectspkcsjtel)ugpkTs.图书管理系统主票单白心自心陆信统库者记ffi-B者系入读普eI图读出编记间书询询退一春WJ查查-_二0123456请选择相应的代砂工新书入层模块.请句图图书书书数量-暂高节称言甲人书编新书入医完毕,按任意键继续下一步操作采编入库后查询图书信息的运行结果图可编辑图书管理系蟀主装单*息息一信信一统库者记理用者一系人读普彦已图读一出编圈书询询一请选择相应的代砂EX书信息如下工上书蝙号图书名称图书作者现有图书信息打印完毕?按任意踊继续下一步操

6、作库存1010cifC;ProraAFi1cs>icrosoft¥iavalStudioWyPrcject?pkcsjWe'bugXpkc?.口回白心自心陆信统库者记ffi-B者系入读普eI图读出编记间书询询退一春WJ查查-_二0123456八C;Prngra>FilesWicrosoftVisualStudioWyProjectspkcsjel)ugpkcs.图书管理系统主票单请选择相应的代即2限者初始化开始.请输入读者信息.悭括书证号一姓名血入锲者的信息二族者书证号加购逑者姓名:2ban5者信息初始化完毕,按任意键继续下一步操作借书可编辑图书管理系蟀主装单统库

7、者记理用者一系人读普彦已图读一出编记阅书询询.退一查查一信信一自j息一请选择相应的代砂才卜书模块一.,输入借书的谀者书证号生"0同输入你要借的书的编号m见*输入痂要归还图书的日期:晅曲皿读者编号2姓目借书完毕,按任意键名艇奏下步操作一图书管理系统主英单口息的运行结果图白心自心陆信统库者记ffi-B者系入读普eI图读出编记间书询询退一春WJ查查-_二0123456dfC;ProraAFi1cs>icrosoft¥iavalStudioWyPrcject?pkcsjWe'bugXpkc?.请选择杓应的代用抻图书信息如下;图书编号图书名称图书作渚现百库存Mlsj&#

8、187;99国9yh1U10图书信息打El完毕,按任意穰微卖下一步噪作一借同一本书的运行结果图可编辑图书管理系蟀主装单统库者记理用者一系人读普彦已图读一出编记阅书询询.退一查查一信信一自j息一请选择相应的代砂才卜书模块一.,输入借书的谀者书证号生"0同输入你要借的书的编号m见他智第一公房者不能同借两本相同的书,装兰意键返回.cifC;ProraAFi1cs>icrosoft¥iavalStudioWyPrcject?pkcsjWe'bugXpkc?.口回白心自心陆信统库者记ffi-B者系入读普eI图读出编记间书询询退一春WJ查查-_二0123456八C;Prn

9、gra>FilesWicrosoftVisualStudioWyProjectspkcsjel)ugpkcs.图书管理系统主票单请选择相应的代即3|昔书模块,输入借书的读渚书证号=2虹0*输入你要借的书的编号二跛*输人你要归还图书的日期:20120310限者编号我赠书完毕,按仕意键W去卜步操作借两本书后查询读者信息的运行结果图可编辑请远择相应的代用工卖者信息如下:图书编号还书日指80京者信息打印完毕才按任意判绿下一步统库君正理tr者系人读裳昌图读出编记阅书询询退一春苗查查一烹弓信信卖者书证号读者姓名2010sJiao图书编号还书日期012M12Q30902图书编号还书日翱02201203

10、1B图书编号还书日期八C;Prngra>FilesWicrosoftVisualStudioWyProjectspkcsje'bugpkcs.口回白心自心陆信统库者记ffi-B者系入读普eI图读出编记间书询询退一春WJ查查-_二0123456图书管理系统主英单请选择相应的代即4,书模块,输入要还书的谀者编号;加10*输入读者还书的编号也信号2虹3的读者还书完毕,按任意能赵卖下谈作一可编辑请远择相应的代用工卖者信息如下:回图书编号还书日期图书编号还书日指80京者信息打印完毕才按任意判绿下一步还书后查询图书信息统库君正理tr者系人读裳昌图读出编记阅书询询退一春苗查查一烹弓信信卖者书证

11、号读者姓名2010sJiao图书编号还书日期022b12031日图书编号还书日翱八C;Prngra>FilesWicrosoftVisualStudioWyProjectspkcsje'bugpkcs.白心自i陆信统库者记ffi-B者系入读普eI图读出编记间书询询退一春WJ查查-_二0123456图书管理系统主英单请选择杓应的代用吗图书信息如下*图书编号图书名称图书作渚现百库存Mlsj»1U10m29yh1U10图书信息打臼完毕,按任意模继续下一步噪作退出可编辑图书管理系蟀主装单上息息一信信一统库者记理用者一系人读普彦已图读一出编圈书询询一*请选择相应的代胡玛、总结体会

12、虽然这次的程序是通过上网查出来的,但是通过这次的实验使我知道了图书管可编辑理系统的流程,知道了一些以前不知道的知识,在运行程序时也遇到了一些问题,借书时只能借一本书,再借书就不能显示是借了还是不能借,把最多能借书的数量改了一下还是不行,最后在每一个判断输出之后都加了gotoEND借书,就能正常借书了。程序有点长,本来一个函数就能完成一个功能,他用了两个函数就我把自己能改成一个的改了。借书系统比较复杂,不容易懂,和同学交流了一下自己看了看才明白。这次的实验还让我复习了数据结构的一些知识,如数组,while语句,switch语句,链表,还知道了如何使用system("cls")

13、清屏,还知道了strcmp是用来比较享符串si和s2大小的,strcpy使用来把字符用s2的值赋给si的。这次的实验增加了我们自己动手动脑的能力,希望多做一些这样的实验,很有意义,和现实生活结合的程序增加了我的兴趣。源代码#include<stdio.h>#include<string.h>#include<stdlib.h>#include<conio.h>#defineMax4typedefstructbook(charbook_num10;charbook_name20;charbook_writeri0;intbook_xy;intboo

14、k_kc;structbook*next;可编辑BK;typedefstructborrow(charborrow_book_num10;charlimit_date8;BO;typedefstructreader(charreader_num10;charreader_name10;intright;BOborrowMax;structreader*next;RD;BK*h_book;RD*h_reader;voidLogin();intMenu();voidInit();voidInit_book();voidMenu_select();voidInsert_New_Book();void

15、Find_Book();voidadd_reader();voidPrint_reader();voidPrint_book();voidBorrow_Book();voidReturn_Book();voidSave();voidSave_Book();可编辑精品voidSave_Reader();voidLoad();voidLoad_Reader();voidLoad_Book();voidLogin()system("cls");*printf("nnnttt欢迎使用图书管理系统rT);*printf("nntt本程序制作人学号:nnnnnnn&

16、quot;);printf("nnntt按任意键进入系统)getchQ;system("cis");)intMenu()/*主菜单*/intdm;printf("ntt图书管理系统主菜单n");printf("=n");printf("*tO退出系统n");printf("*t1-米编入库n");printf("*t2登记读者n");printf("*t3-借阅登记n");printf("*t4-还书管理n");printf(

17、"*t5-查询图书信息n");printf("*t6-nrintfr1查询读者信息n");=n");printf("请选择相应的代码for(;)scanf("%d",&dm);/dm输入的数字可编辑if(dm<0|dm>6)printf("n错误!请重新输入:");elsebreak;)returndm;)voidMenu_select()/*主菜单选择函数*/for(;)switch(Menu()/*功能选择*/case0:system("cls");S

18、ave();printf("nnt文件保存成功!n");printf("nnt欢迎下次使用本系统!n");getch();exit(0);case1:Insert_New_Book();break;case2:add_reader();break;case3:Borrow_Book();break;case4:Return_Book();break;case5:Print_book();break;case6:Print_reader();break;default:printf("n错误!");exit(0);)voidInit()

19、/*初始化*/可编辑BK*p0;printf("n图书初始化开始,请输入图书信息.n包括编号.书名.数量.n");p0=(BK*)malloc(sizeof(BK);h_book=p0;printf("n请输入图书信息:n");printf("图书编号:");/*输入图书编号(唯一)*/scanf("%s",p0->book_num);printf("图书名称:");/*输入图书名称*/scanf("%s",p0->book_name);printf("

20、图书作者:");/*输入图书作者*/scanf("%s",p0->book_writer);printf("图书数量:");/*输入图书数量*/scanf("%d”,&p0->book_kc);p0->book_xy=p0->book_kc;/*开始时图书现有量和库存量相等*/p0->next=NULL;printf("n图书信息初始化完毕!按任意键继续下一步操作.n");getch();system("cls");voidInsert_New_Book()

21、/*新书入库*/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(

22、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(&qu

23、ot;%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;/*此处分两种情况,链表中有数据,链表中最后元素的n

24、ext指向p0处*/p0->next=NULL;p0->book_xy=p0->book_kc;printf("n新书入库完毕!按任意键继续下一步操作.n");getch();system("cls");可编辑voidadd_reader()/*添加读者*/RD*p0;inti;printf("n读者初始化开始,请输入读者信息.n包括书证号.姓名.n");p0=(RD*)malloczeof(RD);/*申请新结点存储空间*/h_reader=p0;printf("n请输入读者的信息:n");pr

25、intf("读者书证号:");scanf("%s”,p0->reader_num);printf("读者姓名:");scanf("%s",p0->reader_name);p0->right=0;for(i=0;i<Max;i+)strcpy(p0->borrowi.borrow_book_num,"0");/*所借图书直接置为(即没有借书)*/strcpy(p0->borrowi.limit_date,"0");p0->next=NULL;p

26、rintf("n读者信息初始化完毕!按任意键继续下一步操作.n");getch();system("cls");voidBorrow_Book()/*借书模块*/BK*p0;RD*p1;charbo_num10,rea_num10,lim_date8;inti;p0=h_book;p1=h_reader;printf("n借书模块.n");printf("n请输入借书的读者书证号:");可编辑scanf("%s",rea_num);while(p1->next!=NULL&&

27、;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=p

28、0->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;els

29、eif(strcmp(p1->borrow0.borrow_book_num,"0")!=0)for(i=0;i<Max;i+)可编辑if(strcmp(p1->borrowi.borrow_book_num,bo_num)=0)(printf("n抱歉!同一个读者不能同借两本相同的书!n按任意键返回.");gotoEND;elseif(strcmp(p1->borrowi.borrow_book_num,"0")=0)(printf("n请输入你要归还图书的日期:”);scanf("%s&

30、quot;,lim_date);strcpy(p1->borrowp1->right+.borrow_book_num,bo_num);strcpy(p1->borrowp1->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);str

31、cpy(p1->borrowp1->right+.borrow_book_num,bo_num);strcpy(p1->borrowp1->right-1.limit_date,lim_date);p0->book_xy-;p0->book_kc-;printf("n读者编号s借书完毕!按任意键继续下步操作.",p1->reader_num);可编辑END:getch();system("cls");)voidReturn_Book()/*还书模块*/(BK*p;RD*q;inti,j,find=0;charre

32、turn_book_num10,return_reader_num10;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-&g

33、t;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)(fin

34、d=2;printf("n错误!此图书编号不存在!按任意键返回.n");gotoend;)for(i=0;i<Max;i+)if(strcmp(return_book_num,q->borrowi.borrow_book_num)=0)可编辑/*如果此读者借了此书*/(find=1;for(j=i;j<Max-1;j+)(strcpy(q->borrowj.borrow_book_num,q->borrowj+1.borrow_book_num);strcpy(q->borrowj.limit_date,q->borrowj+1.l

35、imit_date);strcpy(q->borrowMax-1.borrow_book_num,"0");strcpy(q->borrowMax-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("

36、cls");voidPrint_book()/*查询图书信息*/(BK*p;p=h_book;printf("n图书信息如下:nn");printf("图书编号t图书名称t图书作者t现有tt库存n");while(p!=NULL)(可编辑printf("%stt%stt%stt%dtt%dn",p->book_num,p->book_name,p->book_writer,p->book_xy,p->book_kc);p=p->next;printf("n图书信息打印完毕!按任意

37、键继续下一步操作.");getch();system("cls");voidPrint_reader()/*查询读者信息*/RD*p;inti;p=h_reader;printf("n读者信息如下:nn");printf("读者书证号tt读者姓名n");printf("n");while(p!=NULL)printf("t%stt%s",p->reader_num,p->reader_name);for(i=0;i<Max;i+)printf("n"

38、;);printf("图书编号",i+1);printf("t还书日期",i+1);printf("n");printf("t%s",p->borrowi.borrow_book_num);printf("tt%s",p->borrowi.limit_date);printf("n");p=p->next;可编辑)printf("n读者信息打印完毕!按任意键继续下一步操作.");getch();system("cls"

39、);)voidSave()/*保存信息*/(Save_Reader();Save_Book();)voidSave_Reader()/*保存读者信息*/(FILE*fp_reader;RD*p,*p0;p=h_reader;if(fp_reader=fopen("Reader.txt","wb")=NULL)/*创建文件,进行保存*/(printf("n文件保存失败!n请重新启动本系统.n");exit(0);)while(p!=NULL)(if(fwrite(p,sizeof(RD),1,fp_reader)!=1)/*将链表中的信息写入文件中*/printf("n写入文件失败!n请重新启动本系统!n");p0=p;p=p->next;free(p0);/*释放所有结点*/)h_reader=NULL;fclose(fp_reader);/*关

温馨提示

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

评论

0/150

提交评论