c语言图书管理系统课程设计分析报告_第1页
c语言图书管理系统课程设计分析报告_第2页
c语言图书管理系统课程设计分析报告_第3页
c语言图书管理系统课程设计分析报告_第4页
c语言图书管理系统课程设计分析报告_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

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

文档简介

1、C语言图书管理系统课程设计报 告作者:日期:沈航北方科技学院课程设计说明书课程名称C语言课程设计教学部专业数控班级B042111学号B04211123学生姓名 田文指导教师赵小磊72012年6月链表实现图书信息操作田文目录摘要51绪论52系统分析5.2.1功能需求5.22数据需求6.23性能需求6.3总体设计6.3.1 功能模块设计6.3.2 系统设计方案 6.4详细设计7.4.1登录模块742借书管理模块8.4.3还书管理模块9.5调试与测试-105.1调试1052测试1.16结论12结束语12参考文献12附录1用户手册(另起一页).13附录2 一源程序(另起一页) 17经过对程序设计题目的

2、分析可知,整个程序的设计实现大致分为五个模块,其中每 一个模块对应一个函数,他们的功能分别是:图书信息输入函数input。,借阅图书函数 (borrow),增力口删除图书函数(adddelet),图书查询函数(search),以及归还图书信息函 数(giveback)。在这些函数当中,这四个函数的实现严格按照题目的要求。1、 图书信息输入函数主要功能是从键盘输入图书信息并将其写入文件中作为图书馆的书库,以便对下面的函数进行运行,此函数是基础2、 图书借阅函数主要借阅图书的功能和录入学生应该还书的时间;3、 图书归还函数主要实现借阅图书后,归还图书的功能,并把应该还书的时间和实际还书的时间进行比

3、较过期时输出学生的信息,也是该程序的的一个重点4、 增加删除图书函数实现的功能是实现对图书的删除;5、 图书查询函数允许按照图书编号,书名,作者,出版社进行查询,并将查询信息输出;6、 退出函数该函数主要实现退出运行界面的功能.除上面介绍的功能之外,程序还具有退出功能,可以在程序的一次运行当中循环执 行所有的功能,并根据需要终止程序的执行。每一个图书记录都包含:图书编号,名称,出版社,作者,现有数量和总量在程序当中,将图书记录类型定义为结构体类型,并把它写入d:Miuya n.txt 中,其他函数每次对图书记录的访问,其数据来源都是d:liuya n. txt文件,这样做不但可以保证图书数据的

4、一致性,而且可以对图书数据进行永久保存,保证每次运行程序都可以采用原来的数据。1绪论整个程序的设计实现大致分为五个模块,其中每一个模块对应一个函数,他们的功 能分别是:图书信息输入函数input。,借阅图书函数(borrow),增加删除图书函数(adddelet),图书查询函数(search) 以及归还图书信息函数(giveback)。在 这些函数当中,这四个函数的实现严格按照题目的要求。2系统分析2.1功能需求设计一个通过链表实现对图书信息进行管理的程序,要求完成以下功能:1 .建立一个链表,每个结点应包含以下信息:图书号'书名及出版社'价格'ISBN、作者、册数;2

5、将输入信息按图书号进行从小到大的排序;3 .实现查询功能一一输入书名,查询输出相关信息;4 .实现插入功能一一输入图书信息并插入有序链表中;5 .实现删除功能一一输入书名或书号,可将其信息从链表中删除;6 .统计链表中图书总价值,并在屏幕上输出;7 .统计该链表中价值超过某一数目的图书总数,并在屏幕上输出。8 .有界面友好易于使用的菜单。2.2 数据需求需要向系统输入图书号、书名及出版社、价格、ISBN作者、册数2.3 性能需求在运行本程序时只要按照正确的操作方法不会出现无法运行的情况,系统稳定性好,安全,可靠。3总体设计3.1 功能模块设计根据分析整个系统主要划分为4个功能模块,分别执行要求

6、中的功能。该系统需要有添加,删 除,查询,修改,累加,循环显示主菜单,保存信息功能,能将会员卡进行注销,利用显示函数将会 员卡内所有信息显示。要求有循环显示菜单工能。功能模块图如图1所示。(1)输入读者输入相关读者信息至内存中;(2)输入书籍输入书籍号,对已存的书籍信息进行查询;(3)书籍管理模块输入相应代码,对相关信息进行查询;(4)退出管理模块主菜单中输入0退出系统登录;11图书管理系统图1图书管理系统流程图管理员版图书管理系统借书登记还书管理书籍信息修改书 籍 信 息 查 询图2管理员版图书管理系统流程图图书查询系统主界面图3图书查询主界面流程图3.2系统设计方案设计一个总菜单7登录信息

7、,2查询管理,3书籍管理系统,4退出系统基本功能的实现都将体现在这几个菜单选项中。struct reader *n ext;RD;BK *h_book;RD *h_reader; void Login(); in t Men u();/*登陆/void Menu _select(); void/*主菜单*/Ini t();void Ini t_reader(); void Ini t_book();void In sert_New_Book(); int Fin d();void Fi nd_Select(); void Fi nd_Reader(); void Fin d_Book(); v

8、oid Prin t_reader(); void Prin t_book(); void Borrow_Book(); void Return_Book(); void Save();void Save_Reader(); void Save_Book(); void Load();void Load_Reader();void Load_Book(); void/*主菜单选择函数*/*初始化*/初始化读者/*初始化图书/*新书入库*/*查找菜单*/*查找菜单选择函数*/*查找读者信息*/*查找图书信息/*打印读者信息*/打印图书信息*/*借书函数*/*还书函数*/*保存信息*/*保存读者信

9、息*/*保存图书信息*/*加载信息/Login。/* 登陆 */ system(nclsH);printf("nnnttt 欢迎登陆本系统 nn);printf("nntt系统版权所有 nnnnnnn")printf(”nnntt 按任意键进入系统");getchar(); system(Hclsn);int Menu() /* 主菜单 */int sn;printf("ntt图书管理系统主菜单n“);prin tf(H=nH); printftO-退出系统 *nM);printf新书入库printf ("*t2-查询*n"

10、);*n");*n");*n");n"); printf4详细设计4.1printf (“*t3借书登记 printf ("*t4-一还书管理 prin tf ("= (”请选择相应代码:");13!lnsertLinklist(Linklist)L)printf("内存已满 nn);exit(OVERFLOW);图5:输入书籍信息4.2借书管理模块主菜单中输入读者和书籍信息后,对已存的书籍进行借阅,程序流程如图4所示。10循环变量I输入应书日期关闭文件!图6借书模块流程图4.3还书管理模块对于已还书籍进行管理,程

11、序流程如图4所示。图7还5模块流程图5调试与测试 5.1调试调试是软件开发过程中的一个重要环节,也是最复杂,对软件开发者者来说也是最 艰巨的任务。调试的任务是及时改正测试过程中发现的软件错误。具体地说,调试过程 由两个步骤组成,它从表示程序中存在错误的某迹象开始,首先确定错误的准确位置, 也就是找出哪个模块或哪个语句引起的错误。然后仔细研究推断代码以确定问题的原 因,并设法改正。调试过程主要是运行编制好的程序,然后遇到错误后根据系统的提示,找到相关的 问题所在。本系统调试过程中遇到问题、原因和解决方法如下面介绍。(1)程序只能在当前运行时才能实现自动生成书籍信息,而关闭系统再次打开添加新读者又

12、从0开始与之前的读者重复,导致借还信息程序管理混乱,无法正确运行原因:在执行后系统没有记录当前的读者信息,因为读者信息自动按1、2、3、4依次递增生成系统;应该记录最后所生成的读者信息,在下次运行程序时系统会接 着上次记录的读者信息自动依次生成。(2)运行完程序一次有错误提醒原因:上次运行程序后没有关闭操作界面当点击编译时会有一个错误提 示,解决方法:将上一次运行时的操作界面关闭。(3)设计过程中的想法与程序中的不足总的来说这个程序大致实现了题目的要求,但是这套程序仍然存在着很多的问题与 不足。比如,程序中主函数写的有点繁琐,有太多的嵌套,不是那么井然有序,条理清 晰,程序注释也不是很完善,对

13、信息处理功能还有些不足之处,提示信息不明确。还有就 是没能做到模糊查询。这个系统主要是参照课本手机通讯录模版编写的,同时也得到了老师和同学的一些帮助。我在做系统的过程中也遇到了很多问题,有的是知识不足,有的是考虑不够 周全。事实证明,只靠自己的知识面还是很窄,独立处理问题能力不是很强,以后还要 加强对c语言的学习。我认为对于C语言编写的程序来说,使用方法大致都是一样的,所以如果要改 进的话,就是要改进一些算法,尽量把界面编写清楚,提示信息全面,方便易 用。5.2测试软件测试是软件生存期中的一个重要阶段,是软件质量保证的关键步骤从用户的角 度来看,普遍希望通过软件测试暴露软件中隐藏的错误和缺陷,

14、所以软件测试应该是“为了发现错误而执行程序的过程”。或者说,软件测试应该根据软件开发各 阶段的规格说明和程序的内部结构而精心设计一批测试用例(即输入数据及其预期的输出结果),并利用这些测试用例去运行程序,以发现程序错误或缺陷。过 度测试则会浪费许多宝贵的资源。到测试后期,即使找到了错误,然而付出了过高的代 价。测试数据过程如下。(1)登陆功能测试输入数据1:读者编号:23,读者姓名:tianwen,书籍编号:01,书名:xyz作者:XXX,数量:10预期结果:数据输入到系统中;41运行结果:出现图书管理系统主菜单说明:登陆功能实现(2)借书功能测试000(3)还书功能测试0006结论计算机综合

15、训练顺利完成,任务书中所提出的要求全部实现, 可以对会员 信息进行添加、修改、删除以及按各种信息查找,可将会员本次消费金额累加到会员卡 上,能够自动生成会员卡号并且将各种信息保存到文本文件中。不过这个程序还有些不够完善,例如:在添加新会员时当会员信息全部输入之后系统中的全部会员 信息自动显示,这样非常占用操作界面,使操作不是十分清晰;再一个就是系统无法正确识别身份证号和电话好码只能靠会员卡管理员的认真细心才能减少出 错,改进方式:调用一个可以判断号码位数的函数,如果输入位数不合 法则提出警告重 新输入。结束语在这一个星期的实践中,通过编写这个图书管理系统,我体会到了 c语言学习的实 用性。将理

16、论和实践结合在一起,用先进的计算机工具方便人们的生活。C语言程序的编 写首先要从大局考虑,把自己编写整个程序的思想都写在草稿上,这样有助于自己编写程 序,在编写时要完善注释,方便其他人理解程序。编写的程序从理论上来说并没有错,但 一上机就问题不断。甚至有些课本上的知识照搬不变,也不能得到正确的结果。有时一个 程序改了一遍又一遍,但就是不能成功,编程显得枯燥乏味,看似简单的程序题,在调试 时却屡屡出错。经反复的修改后,结果正确了,这时所有的乏味都显得那么无力,一切都 是值得的。我认为,开发一套系统,最重要的是细心,并且思考要全面,结合实际,充分 考虑到客户的需求和现实意义。不管什么系统,只用运用

17、到实际应用中,才具有 现实意义。所以c语言程序的实用性很强,我们以后还要更加努力认真地学习 编程语言。参考文献附录1-用户手"/L点击运行,首先出现的是菜单界面,选择菜单选项进行操作,可进行如图8所示。系统主界面(选择数字进入,退出系统)图8菜单界面选择1进入系统,然后出现功能菜单-aixl图9登陆功能;输入读者和书籍,然后出现功能菜单;图10图书管理系统主菜单WD:Progra> FilesMicrosoft Visual StudiolrojectstwDebugt<. exe*附录2 .源程序#in elude <stdio.h> #in elude &

18、lt;stri ng.h> #in elude <stdlib.h> #defi ne Max 3 typedef struct book(char book_ nu m10;char book_ name20; char book_writer10; int book_kc; int book_xy;struct book *n ext; BK;typedef struct borrow char borrow_book_ nu m10;char limit_date8;/*查找图书信息*/BO;typedef struct reader/*打印读者信息*/*打印图书信息*

19、/*借书函数*/char reader_ nu m10;char reader_ name10;int right;BO borrowMax;struct reader *n ext;RD;BK *h_book;RD *h_reader;void Logi n();in t Men u();void Menu _select();void In it();void In it_reader();void Ini t_book();void In sert_New_Book();int Fin d();void Fi nd_Select();void Fi nd_Reader();void Fi

20、 nd_Book();void Prin t_reader();void Prin t_book();void Borrow_Book();/*登陆*/*主菜单*/*主菜单选择函数*/*初始化*/*初始化读者*/*初始化图书*/*新书入库*/*查找菜单*/*查找菜单选择函数*/*查找读者信息*/void Return_Book();void Save();void Savevoid SaveReader();Book();/*还书函数*/*保存信息*/*保存读者信息*/void Load();void Load_Reader();void Load_Book();/*保存图书信息/*加载信息*

21、/*加载读者信息*/void Login()/*登陆*/*加载图书信息*/system("cls");printf(Hnnnttt 欢迎登陆本系统 n");printf(Hnntt系统片反权所有 nnnnnnn")printfC'nnntt按任意键进入系统任getchar(); system("cls");)int Menu() /* 主菜单 */ int sn;printf(Hntt图书管理系统主菜单n“);printf("=n");printf(”*tO -退出系统*nH);printf(”*t1 -新

22、书入库*n“);printf("*t2-查询*nn);printf(”*t3 -借书登记*nM);printf("*t4-还书管理*n");printf("=n");printf("请选择相应代码:");for(;) sea nf("d”, &sn); fflush(stdi n); if(s n<0|s n>4) printf("n 错误!请重新输入:"); else break;return sn;void Menu_select()/*主菜单选择函数*/ for(;)循

23、环调用模式,保证能进行重复操作*/ switch(Menu() /* 功能选择 */ case 0:systemic。);/*清楚屏幕先前的显示内容*/Save(); printf("nnt 文件保存成功!n“);printf('>nnt欢迎下次使用本系统! n*');getchar();exit(O);case 1:1 nsert_New_Book() ;break;case 2:Fin d_Select();break;case 3:Borrow_Book();break;case 4:Retur n_Book();break;default:printf(

24、"n 错误!");exit(O);)void lnit() /* 初始化 7In it_reader();Ini t_book();)void lnit_reader() /*初始化读者信息*/(RD *p0;inti;printf("n读者初始化开始,请输入读者信息.n包括编号姓名.n"); pO=(RD*)malloc(sizeof(RD);h_reader=pO;printf('>n请输入读者的信息:n");printf(”ReaderNo.:");/*输入读者编号(唯一 )*/sea nf(n%sH,pO->

25、;reader_ nu m);printf("ReaderName:");/* 输入读者姓名(不唯一 )7sea nf(n%s",pO->reader_ name);pO->right=O;for(i=0;i<Max;i+)strcpy(pO->borrowi.borrow_book_num;'0"); /* 所借图书直接置为0(即没有借书)*/strcpy(pO->borrowi.limit_date,"0");)p0-> next=NULL;printf("n读者信息初始化完毕

26、!按任意键继续下一步操作. An”);getchar(); system("cls");)void lnit_book() /*初始化图书信息*/BK*pO;printf("n图书初始化开始,请输入图书信息.n包括编号.书名.数量.n"); pO=(BK*)malloc(sizeof(BK); h_book=pO;printf(-n请输入图书信息:n");printfC'BookNo.:',);/*输入图书编号(唯一 )*/scan f("s”,pO->book_num);printfCBookName:'

27、;*);/* 输入图书名称 */sea nf("%s",pO->book_ name);printfCBookWriter:*');/* 输入图书作者 */scan f("%s",pO->book_writer);printfCNumber:");/* 输入图书数量 */scan f(n%d",&pO->book_kc);pO->book_xy=pO->book_kc;/*开始时图书现有量和库存量相等7p0-> next=NULL;printf("n图书信息初始化完毕!按任

28、意键继续下一步操作.n“);getchar();system("cls");)void lnsert_New_Book()/* 新书入库 */(BK *p,*pO,*p1;p=p1=h_book;printf("n新书入库模块n“);printf(-n请输入新书信息.n包括书号.书名.数量.n“);pO=(BK *)malloc(sizeof(BK);printf("BookNo.:n);scan f("%s",pO->book_num);while(strcmp(pO->book_ num,p1->book_ nu

29、 m)!=0&&p1-> next!=NULL) p1=p1- >n ext;if(strcmp(pO->book_ nu m,p1 ->book_ num)=0) /*此处分两种情况,若图书编号存在,则直接进库,只须输入书的数量*/(printf("n此编号图书已存在!直接入库!n“); prin tf(HNumber:");scan f("%d", &pO->book_kc);p1 ->book_kc+=pO->book_kc;p1 ->book_xy+=pO->book_

30、kc;)else/*若不存在,则需要输入其他的信息,然后在进行插入操作*/(prin tfC'BookName:1');sea nf("%s",pO->book_ name);prin tf(HBookWriter:H);sea nf(H%sH,pO->book_writer);prin tfC'Number:");sea nf("%d",&pO->book_kc);while(p-> next)p=p->n ext;)if(h_book=NULL) h_book=pO;/*此处分两

31、种情况,链表中没有数据,head直接指向pO处7else p->next=pO;/*此处分两种情况,链表中有数据,链表中最后元素的next指向P0处*/p0-> next=NULL;pO->book_xy=pO->book_kc;)printf("n新书入库完毕!按任意键继续下一步操作.n");getchar();system("cls");)int Find() /*查找菜单7 int sn;printf("ntt 信息查询菜单 nn);prin tf("=n");printf("为to-

32、返回上级t*nM);prin tf(H*tt*nM);printf("*t1 查找图书2-查找读者t*n");prin tf(u*tt*n");printf("飞3-打印图书4-打印读者t*n");prin tf("=rT);printf("请选择相应代码for(;)/*循环调用模式,保证能进行重复操作*/sea nf("d”,&sn);fflush(stdi n);if(s n<0|s n>4)printf(”n错误!请重新输入:");else break;)return sn;)v

33、oid Find_Select() /*查找菜单选择函数*/system("cls");/*循环调用模式,保证能进行重复操作*/switch(Find() /* 功能选择 7case O:system("cls"); Menu _select(); break;case 1 :Fin d_Book();break;case 2:Fin d_Reader();break;case 3:Pri nt_book();break;case 4:Pri nt_reader();break;default:printf("n 错误!");exit

34、(O);)void Find_Reader() /* 查找读者信息*/ (RD*p;inti;char fin d_reader1O;p=h_reader;printf('1n读者信息查询模块W);printf("n请输入你要查询读者编号:”);sea nf("%s",fi nd_reader);while(strcmp(p->reader_ nu m,fi nd_reader)!=0&&p->n ext)p=p->n ext;if(strcmp(p->reader_ nu m,fi nd_reader)=O) (p

35、rintf("n 读者编号:s 的信息为:n”,find_reader);printf("ReaderNo.tReaderName");/*此处这样处理,是为了能实现一个读者能借多本书可以Max 改*/prin tf(“n");prin tf("t%stt%s",p->reader_ nu m,p->reader_ name);for(i=0;i<Max;i+) prin tf("n");prin tf("BorrowBookNum%d",i+1);prin tf("

36、tReturn%dLimitDate",i+1);prin tf("n");prin tf("t%sn,p->borrowi.borrow_book_ nu m);prin tf(Mtt%sH,p->borrowi.limit_date);)prin tf("nM);)elseprintf("n此读者编号不存在,请核对!按任意键返回getchar();system(ucls");)void Find_Book()/* 查找图书信息*/(BK*p;charfind_book10;/*功能很简单,读者编号唯一,查找只

37、须一次遍历*/p=h_book;printf("n图书信息查询模块n)printf("n请输入你要查询图书编号:”);scan f("%s",fi nd_book);while(strcmp(p->book_ nu m,fi nd_book)!=0&&p->n ext)p=p->n ext;if(strcmp(p->book_ nu m,fi nd_book)=0)/*找到了就打印,否则提示不存在,或出错*/printf(-n 图书编号:s 的信息为:n”,find_book);prin tf("nBoo

38、kNo.ttBookNametBookWritertXia nYou tKuCu nnH);prin tf("%stt%stt%stt%dtt%dn",p->book_ num,p->book_ name,p->book_writer,p->book_xy,p->b ook_kc);)elseprintf("n此图书编号不存在,请核对!按任意键返回getchar(); system(MclsH);)void Print_reader() /* 打印读者信息*/RD*p;inti;p=h_reader;printf("n读者信

39、息如下:nn”);prin tfC'ReaderNoAtReaderName");/*此处这样处理,是为了能实现一个读者能借多本书Max可以改*/prin tf("n");while(p!=NULL)/*遍历链表一次就可以了*/prin tf(Ht%stt%sn,p->reader_ nu m3p->reader_ name);for(i=0;i<Max;i+)(prin tf(Hn");prin tf("BorrowBookNum%d',i+1);prin tf(HtReturn%dLimitDaten,i+

40、1); prin tf(Mn");prin tf(Ht%sM?p->borrowi.borrow_book_ nu m);prin tf(utt%s",p->borrowi.limit_date); )prin tf("nH);p=p->n ext;)printf("n读者信息打印完毕!按任意键继续下一步操作getchar();system("clsH);)void Print_book() /* 打印图书信息*/BK*p;p=h_book;printf("n图书信息如下:nn");printf("

41、;BookNo.ttBookNametBookWritertXianYou tKuCunn");/*直接打印所有图书的信息,遍历链表一次就可*/while(p!=NULL) prin tf("%stt%stt%stt%dtt%dn",p->book_ num,p->book_ name,p->book ook_kc); p=p->n ext;)printf("n图书信息打印完毕!按任意键继续下一步操作getchar();system("clsH);)void Borrow_Book() /* 借书模块 7BK *p0;

42、RD *p1;char bo_nu m10,rea_num10,lim_date8;inti;pO=h_book; p1=h_reader;printf('>n 借书模块n“);printf(”n请输入借书的读者编号:”);/*先输入借书的读者信息*/ sea nf("%s",rea_ nu m);while(p1- >n ext!=NULL&&strcmp(rea_ nu m,p1->reader_ nu m)!=0)读者是否存在*/p1=p1- >n ext;if(p1- >n ext=NULL&&s

43、trcmp(rea_ nu m,p1->reader_ nu m)!=0)在就、则提示错误!*/printf("n此读者编号不存在!按任意键返回.n”);writer,p_>book_xy,p_>b/*遍历一次读者链表,判断/*如果存在,则继续,不存goto END;)printf("n请输入你要借的书的编号:”);sea nf("%sn,bo_ nu m);while(strcmp(bo_ num,pO->book_ nu m)!=0&&p0-> next!=NULL) /* 遍历一次图书链表,判 断此图书是否存在*

44、/pO=pO _>n ext;if(pO->next=NULL&&strcmp(bo_num,pO->book_num)!=0)/* 如果存在,则继续,不存 在就、则提示错误!*/(printf('>n此图书编号不存在!按任意键返回)elseH(p0->book_xyv=0)/*判断此图书现在是否还有库存7( print(n抱歉,此书已借完!请等待新书的到来!n按任意键返回.”);)else if(p1 >right>=Max) /*判断此读者借书权限是否已达最大*/(printf("n不好意思,借书数目已满!不能借书

45、M按任意键返回else if(strcmp(p1 ->borrow0.borrow_book_num,"0n)!=0)/*此读者若已经借书,再判断此读者是否要借两本一样的书*/(for(i=0;ivMax;i+)/*遍历一次读者所借的书,如果发现有重复,则结束*/ (if(strcmp(p1 ->borrowi.borrow_book_ nu m5bo _nu m)=0) printf(”n抱歉!同一个读者不能同借两本相同的书片”);)else if(strcmp(p1->borrowi.borrow_book_num,'0,)=0)/* 如果没有重复 7

46、printf(An请输入你要归还图书的日期 :”);scan f("%s",lim_date);strcpy(p1 ->borrowp1 ->right+.borrow_book_ nu m,bo_ nu m);/* 记录所借书号并且借书数目加一,现存量减一 */strcpy(p1->borrowp1->right-1.limit_date,lim_date);pO_>book_xy_;printf(”n读者编号$借书完毕!按任意键继续下步操作.二p1 ->reader_num);) )else/此读者从未借过书*/printf(An请输

47、入你要归还图书的日期 :”);scan f(fl%snJim_date);strcpy(p1 ->borrowp1 ->right+.borrow_book_num,bo_num);/* 记录所借书号,并且借书数目加一,现存量减一 */strcpy(p1->borrowp1->right-1dimit_datejim_date);pO_>book_xy_;printf("n读者编号$借书完毕!按任意键继续下步操作;p1 ->reader_num);)END:getchar(); system(nclsH);)void Return_Book() /

48、* 还书模块 */BK*p; RD*q;int i,j,find=O;char return_book_ nu m10,return_reader_ nu m10;p=h_book; q=h_reader;printf(An还书模块n“);printf('>n请输入要还书的读者编号:”);/*基本同上*/scan f(n%s",return_reader_ nu m);/* 注意:数组的输入没有 &7while(q-> next!=NULL&&strcmp(return_reader_ nu m,q->reader_ nu m)!=0

49、)q=q_>n ext;if(q->n ext=NULL&&strcmp(retur n_reader_ num,q->reader_ nu m)!=0)(find=2;/*设置标志,用于判断读者是否借了此书或是否出错提前结束 ,若提前出错,则find=2,若借 了 厕find=1,若没借为find=O7printf('>n此读者编号不存在!按任意键返回.门);goto end;)printf("n请输入读者还书的编号:”);sea nf(,f%sM,retur n_book_ nu m);while(p-> next!=NULL

50、&&strcmp(return_book_ nu m3p->book_ nu m)!=0)p=p->n ext;if(p->n ext=NULL&&strcmp(retur n_book_ nu m5p->book_ nu m)!=0)(find=2;/*设置标志,用于判断读者是否借了此书或是否出错提前结束,若提前出错贝Ufind=2,若借了,则find=1,若没借为find=O7printf(”n错误!此图书编号不存在!按任意键返回.3”);goto end;)for(i=0;i<Max;i+)if(strcmp(retum_bo

51、ok_ nu m,q->borrowi.borrow_book_ nu m)=0)/*如果小匕i卖者借了itb书*/,若提前出错find=1;/*设置标志,用于判断读者是否借了此书或是否出错提前结束则find=2,若借了,则find=1,若没借为find=07for(j=i;j<Max-1 ;j+)strcpy(q->borrowj.borrow_book_ nu m,q->borrowj+1 .borrow_book_ nu m);strcpy(q->borrowj.limit_date5q->borrowj+1.limit_date);)strcpy(q

52、->borrowMax-1.borrow_book_ nu mJO”);strcpy(q->borrowMax-1.limit_date,"0M);p->book_xy+;q_>right_;printf("n编号s的读者还书完毕!按任意键继续下步操作.”,retumeader_num);)if(find=O)/*为什么有个find=O,因为遍历时循环Max次,如循环完毕还没有找到,则说明读者没有借此书,find用来保证只打印一次结果,否则每循环一次就会打印一个结果*/printf("n错误!此读者未借此书!按任意键返回/*如果遍历读者所借的书号发现读者未借此书,则提示错误!*/end: getchar(); system(HclsH);)void Save() /* 保

温馨提示

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

评论

0/150

提交评论