高校图书管理系统.pdf
课课 程程 设设 计计学学号号班班级级姓姓名名指导教师指导教师20082008 年年 7 7 月月 1 1 日日xxxxxxxxxxxxxxxxxxxxxx课课 程程 设设 计计 任任 务务 书书一、课程设计时间一、课程设计时间200708 第 2 学期第 17 周,共计 1 周,20 学时。二、课程设计内容二、课程设计内容用 C 语言编写软件完成以下任务:1.录入图书信息根据图书馆的管理情况自行设定,要具有实用性 ;2.查询某本书的库存情况;3.过期催还显示所有的过期人员信息 。三、课程设计要求三、课程设计要求1. 程序质量:贯彻结构化的程序设计思想。用户界面友好,功能明确,操作方便。用户界面中的菜单至少应包括 “图书信息录入” 、 “图书信息查询根据书名或编号等 ” 、 “过期催还” 、 “退出”4 项。代码应适当缩进,并给出必要的注释,以增强程序的可读性。2. 课程设计说明书:课程结束后,上交课程设计说明书和源程序。课程设计说明书的格式和内容参见提供的模板。四、指导教师和学生签字四、指导教师和学生签字指导教师:指导教师:_学生签名:学生签名:_五、说明书成绩五、说明书成绩六、教师评语六、教师评语Ixxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx目录目录一、需求分析 . 1二、程序流程图 . 3三、 核心技术的实现说明及相应的程序段. 9四、个人总结.18五、参考文献.18六、源程序.19Ixxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx一、需求分析一、需求分析经过对程序设计题目的分析可知, 整个程序的设计实现大致分为五个模块,其中每一个模块对应一个函数,他们的功能分别是:图书信息输入函数 input(),借阅图书函数(borrow),增加删除图书函数(adddelet),图书查询函数(search),以及归还图书信息函数(giveback)。在这些函数当中,这四个函数的实现严格按照题目的要求。1、图书信息输入函数 主要功能是从键盘输入图书信息并将其写入文件中,作为图书馆的书库,以便对下面的函数进行运行,此函数是基础.2、图书借阅函数主要借阅图书的功能和录入学生应该还书的时间;3、图书归还函数 主要实现借阅图书后,归还图书的功能,并把应该还书的时间和实际还书的时间进行比较过期时输出学生的信息,也是该程序的的一个重点4、增加删除图书函数实现的功能是实现对图书的1xxxxxxxxxxxxxxxxxx删除;5、图书查询函数允许按照图书编号,书名,作者,出版社进行查询,并将查询信息输出;6、退出函数该函数主要实现退出运行界面的功能.除上面介绍的功能之外,程序还具有退出功能,可以在程序的一次运行当中循环执行所有的功能, 并根据需要终止程序的执行。每一个图书记录都包含:图书编号,名称,出版社,作者,现有数量和总量在程序当中, 将图书记录类型定义为结构体类型,并把它写入 d:liuyan.txt 中,其他函数每次对图书记录的访问,其数据来源都是 d:liuyan.txt 文件,这样做不但可以保证图书数据的一致性, 而且可以对图书数据进行永久保存,保证每次运行程序都可以采用原来的数据。2xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx二、程序流程图二、程序流程图1、程序总体流程图当当真真输输入入图图书书函函数数input(input() )输入值输入值 q=1?q=1?真真q=2?q=2?真真q=3q=3查查询询图图书书函函数数search()search()假假假假假假q=4?q=4?真真还还书书函数函数q=5?q=5?假假q=6q=6退出退出假假真真借增增加加借借书书删删除除函数函数函数函数图1程序总体结构图图(1)程序总体流程图3xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx2、具体功能框图1输入图书函数 input()读写方式打开读写方式打开 liuyanliuyan 文件不成功?文件不成功?真真假假输入要写入图书输入要写入图书的的数数 b b 量量输输 出出 文文将将 b b 的值写入文件的值写入文件件件 打打 开开循环变量循环变量 i=0;i=0;当当 i i 小于小于 b b 时时失败!失败!输入图书编号,书名,出版社,作者,现有数量,总量输入图书编号,书名,出版社,作者,现有数量,总量2读取学生数据 readsreturn;return;将书的信息写入文件将书的信息写入文件图 3 读取学生数据关闭文件关闭文件4图输入图书函数xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx查询图书函数真真读方式打开文件不成功?读方式打开文件不成功?假假输输 出出 文文件件 打打 开开失败!失败!循环变量循环变量 i ireturn;return;真真输输出出filefilereadreaderror!error!读出信息不等于读出信息不等于 1?1?假假变量变量 w=6?w=6?真真输出图书信息输出图书信息真真输出图书信息输出图书信息w=8?w=8?真真输出图书信息输出图书信息真真w=9?w=9?假假关闭文件关闭文件假假返回返回w=7?w=7?假假返返回回假假返回返回图3图书查询函数5xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx(3) 借阅图书函数关闭文件关闭文件! !该书现有量该书现有量0?0?Y Y输出输出 borrowborrow successsuccessY Y输入应书日输入应书日期期开始开始Y读方式打开文件不成功?读方式打开文件不成功?N输入你的学号和要借书的名输入你的学号和要借书的名Y Y循环变量循环变量 i iN Ni10?i10?Y Y借书书名和书库名一致借书书名和书库名一致?N Nreturn;return;borrow failedborrow failed结束结束图4借阅图书函数6xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx4还书函数图5还书函数7开始开始Y以读方式打开文件不成功以读方式打开文件不成功? ?N N输入学号输入学号ReturnReturn输入书的编号输入书的编号循环变量循环变量 i ii1000?i1000?N N输入的编号和书库编号一致输入的编号和书库编号一致Y YY Y输出还书成功输出还书成功breakbreak;关闭文件关闭文件结束结束xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx5添加删除函数Y写入书库写入书库从书库中删除从书库中删除N Ni10i10Y Yi10i10Y Y输入要加入书的编号输入要加入书的编号输入输入 t t 值等于值等于 1212Return;Return;读方式打开文件不成功?读方式打开文件不成功?Y Y输入输入 t t开始开始N N输入输入 t t 值等于值等于 1111输入要添加书的数量输入要添加书的数量输入要删除图书的编号输入要删除图书的编号循环变量循环变量 i=0i=0循环变量循环变量 i=0i=0N N输入的编号和书库中的编号一致?输入的编号和书库中的编号一致?关闭文件关闭文件结束结束图6添加删除函数8xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx三、三、 核心技术的实现说明及相应的程序段核心技术的实现说明及相应的程序段本程序主要由五个自定义函数和一个主函数组成, 其中主函数以菜单的形式调用其他函数来实现要求的所有功能。这些函数中以写入图书函数、借阅图书函数、还图书函数、查询图书函数、添加和删除函数为核心技术,下面分别进行说明。1、写入图书函数:input()首先要把图书写入文件,即书库,如果不存在文件首先要创建一个新文件(d:liuyan.txt),并将图书信息信息写入该文件当中;其二是在学生文件已经存在的情况下,此时文件要以读写方式或追加的方式打开, 这样才可以保证以前已经存在的数据不丧失。 此程序中原来不存在文件,所以先建立一个文件,具体的程序段如下:void input()void input()/* /*图书写入函数图书写入函数*/ */ FILE *fp;FILE *fp;charcharstr210=str210=;int i;int i;fp=fopen(liuyanfp=fopen(liuyan。txt,wb+)txt,wb+);printf(nHowprintf(nHow manymany booksbooks dodo you wantyou want toto input?n);/*input?n);/*输入写入书的本输入写入书的本数数*/ */9xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxscanf(%d,&b);scanf(%d,&b);for(i=0;ib;i+)for(i=0;ib;i+) printf(Enterprintf(Enter thethe %d%d booksbooks numbernumber namename presspress writerwriternownowalln,i+1);/*alln,i+1);/*输入书的编号输入书的编号, ,书名书名, ,出版社出版社, ,作者作者, ,现有数量现有数量, ,总数总数*/ */scanf(%s%s%s%s%d%d,&ai.number,&ai.name,&ai.press,&aiscanf(%s%s%s%s%d%d,&ai.number,&ai.name,&ai.press,&ai.writer,&ai.n,&ai.m);.writer,&ai.n,&ai.m);fwrite(&ai,sizeof(struct book),1,fp);fwrite(&ai,sizeof(struct book),1,fp); /*将书的信息写入文件将书的信息写入文件*/ */ fclose(fp);/*fclose(fp);/*关闭文件关闭文件*/ */2、借阅图书函数:borrow()首先要输入你的学号, 然后再输入你想要借的书的名字,通过一个 if 语句判断此书在书库中即写入的文件中是否存在,如果存在且该书的现有量大于零,则借书成功!如假设借书成功输入该学生应该还此书的日期。 这是为了计算借的书是否过期。具体程序如下:voidvoidborrow()/*borrow()/*借阅图书函数借阅图书函数*/ */ FILE *fp; FILE *fp;int i;int i;char xuehao20,number220char xuehao20,number220 ,month10,day10;,month10,day10;charcharjieyue20=borrowjieyue20=borrow:;if(fp=fopen(liuyan.txt,ab+)=NULL)if(fp=fopen(liuyan.txt,ab+)=NULL) printf(Open printf(Openfailedn);failedn);return; return; printf(Enter your number:n);/*printf(Enter your number:n);/*输入你的学号输入你的学号*/ */scanf(%s,xuehao);scanf(%s,xuehao);printf(Enterprintf(Enter thethe booksbooks numbernumber whichwhich youyou wantwant toto10 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxborrown);/*borrown);/*输入你想要借的书的编号输入你想要借的书的编号*/ */scanf(%s,number2);scanf(%s,number2);for(i=0;i10;i+)/*for(i=0;i0)/*if(ai.n0)/*在该书存在的情况下判断该书现有数量在该书存在的情况下判断该书现有数量是否大于零是否大于零*/ */ai.n-;ai.n-;printf(borrowprintf(borrow sucess!n);/*sucess!n);/*输出借书成输出借书成功功*/ */putw(b,fp);putw(b,fp);printf(enterprintf(enter monthmonth andand dayday whichwhich youyoushould returnn);should returnn);scanf(%s%s,&ai.month,&ai.day);scanf(%s%s,&ai.month,&ai.day);fwrite(&ai,sizeof(structfwrite(&ai,sizeof(struct book),1,fp);/*book),1,fp);/* 将将 应应还书的日期写入文件还书的日期写入文件*/ */if(fwrite(&xuehao20,sizeof(xuehao20),1,fp)!=1)if(fwrite(&xuehao20,sizeof(xuehao20),1,fp)!=1)printf(file write errorn);printf(file write errorn);if(fwrite(&jieyue20,sizeof(jieyue),1,fp)!=1)/*if(fwrite(&jieyue20,sizeof(jieyue),1,fp)!=1)/*把书再写回到该文件把书再写回到该文件中中*/ */printf(file write errorn);printf(file write errorn);if(fwrite(&ai,sizeof(struct book),1,fp)!=1)if(fwrite(&ai,sizeof(struct book),1,fp)!=1)printf(file write errorn);printf(file write errorn);break;break; elseelseprintf(borrow failed!printf(borrow failed!!);/*);/*输出借书失败输出借书失败*/ */fclose(fp);/*fclose(fp);/*关闭文件关闭文件*/ */ 3、归还图书函数: giveback()本函数由主函数调用后,先打开存储图书信息的文件,11xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx输入你的学号和你要归还图书的名字 ,接着输入还书当天的日期, 并和应该还书的日期进行比较如果过期输出过期人员的信息,如果没有过期则输出*。然后通过for 循环判断学号是否一致,然后将再进行还书的其他步骤,还书成功则有提示.具体程序如下:void giveback()/*void giveback()/*定义还书函数定义还书函数*/ */FILE *fp;FILE *fp;int i,m=0,n=0;int i,m=0,n=0;char xuehao20,number220,month210,day210;char xuehao20,number220,month210,day210;charcharguihuan220=give back;guihuan220=give back;if(fp=fopen(liuyan.txt,w)=NULL)/*if(fp=fopen(liuyan.txt,w)=NULL)/*打开文件打开文件*/ */printf(cannot open filen);printf(cannot open filen);return;return; printf(Enter your number:n);printf(Enter your number:n);scanf(%s,xuehao);/*scanf(%s,xuehao);/*输入你的学号输入你的学号*/ */printf(Enterprintf(Enter thethe booksbooks numbernumber whichwhich youyou wantwant toto givegivebackn);backn);scanf(%s,number2);/*scanf(%s,number2);/*输入书的编号输入书的编号*/ */printf(Enter month and day todayn );printf(Enter month and day todayn );scanf(%s,%s,month2,day2);scanf(%s,%s,month2,day2);if(strcmp(am.month,month2)0)if(strcmp(am.month,month2)0) printf(guoprintf(guo qiqi xuexue shengsheng dedexue hao %sn,xuehao);xue hao %sn,xuehao);else if(strcmp(am.month,month2)=0)else if(strcmp(am.month,month2)=0) if(strcmp(an.day,day2)0)if(strcmp(an.day,day2)=0) printf(*n);else if(strcmp(an.day,day2)=0) printf(*n); 12xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxelse printf(*n);else printf(*n);for(i=0;i1000;i+)for(i=0;i1000;i+)if(strcmp(ai.number,number2)=0)if(strcmp(ai.number,number2)=0) if(fwrite(&xuehao20,sizeof(xuehao),1,fp)!=1) if(fwrite(&xuehao20,sizeof(xuehao),1,fp)!=1)printf(file write errorn);printf(file write errorn);if(fwrite(&guihuan220,sizeof(guihuan2),1,fp)!=1)if(fwrite(&guihuan220,sizeof(guihuan2),1,fp)!=1)printf(file write errorn);printf(file write errorn);if(fwrite(&ai,sizeof(ai),1,fp)!=1)if(fwrite(&ai,sizeof(ai),1,fp)!=1)printf(file write errorn);printf(file write errorn);break;break; printf(give back sucess!n);printf(give back sucess!n);fclose(fp);fclose(fp); 4、查询图书函数: search()此函数用于对书库中的书进行查询 ,可按书的编号书的名字,书的出版社,书的作者来进行查询 .本函数应用了循环结构及分支结构,查询信息方便快捷.具体程序如下:void Search()/*void Search()/*定义查询函数定义查询函数*/ */ FILE *fp;/*FILE *fp;/*定义变量定义变量*/ */int w,i;int w,i;char str20;char str20;if(fp=fopen(liuyan.txt,w)=NULL)if(fp=fopen(liuyan.txt,w)=NULL) printf(Open printf(Openfailedn);failedn);return; return; for(i=0;ib;i+)/*for(i=0;ib;i+)/*寻找书的信息寻找书的信息*/ */if(fread(&ai,sizeof(struct book),1,fp)!=1)if(fread(&ai,sizeof(struct book),1,fp)!=1)printf(file read errorn);printf(file read errorn);printf(search by number-6n);/*printf(search by number-6n);/*按书的编号查询按书的编号查询*/ */printf(search by name-7n);/*printf(search by name-7n);/*按书的名字查询按书的名字查询*/ */13xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxprintf(search by writer-8n);/*printf(search by writer-8n);/*按书的作者查询按书的作者查询*/ */printf(search by press-9n);/*printf(search by press-9n);/*按书的出版社查询按书的出版社查询*/ */scanf(%d,&w);scanf(%d,&w);printf(Enter the word you want to search:n);/*printf(Enter the word you want to search:n);/*输入你想输入你想要查询的信息要查询的信息*/ */scanf(%s,str);scanf(%s,str);switch(w)/*switch(w)/*多分支结构进行查询多分支结构进行查询*/ */ case 6:case 6:for(i=0;ib;i+)for(i=0;ib;i+)if(strcmp(ai.number,str)=0)if(strcmp(ai.number,str)=0)printf(number:printf(number: %s%sname:name:%s%spress:press:%s%swriter:writer:%s%snow:now:%d%dallall: %dn,ai.number,ai.name,ai.press,ai.writer,ai.n,ai.m);%dn,ai.number,ai.name,ai.press,ai.writer,ai.n,ai.m);/* /*输出书的编号输出书的编号, ,书的名字书的名字, , 书的出版社书的出版社, ,书的作者书的作者, ,书的现有数量书的现有数量, ,书书的总量的总量*/ */break;break; break;break;case 7:case 7:for(i=0;ib;i+)for(i=0;ib;i+)if(strcmp(ai.name,str)=0)if(strcmp(ai.name,str)=0)printf(number:printf(number: %s%sname:name:%s%spress:press:%s%swriter:writer:%s%snow:now:%d%dallall: %dn,ai.number,ai.name,ai.press,ai.writer,ai.n,ai.m);%dn,ai.number,ai.name,ai.press,ai.writer,ai.n,ai.m);/* /*输出书的编号输出书的编号, ,书的名字书的名字, , 书的出版社书的出版社, ,书的作者书的作者, ,书的现有数量书的现有数量, ,书书的总量的总量*/ */break;break; break;break;case 8:case 8:for(i=0;ib;i+)for(i=0;ib;i+)14xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxif(strcmp(ai.press,str)=0)if(strcmp(ai.press,str)=0)printf(number:printf(number: %s%sname:name:%s%spress:press:%s%swriter:writer:%s%snow:now:%d%dallall: %dn,ai.number,ai.name,ai.press,ai.writer,ai.n,ai.m);%dn,ai.number,ai.name,ai.press,ai.writer,ai.n,ai.m);/* /*输出书的编号输出书的编号, ,书的名字书的名字, , 书的出版社书的出版社, ,书的作者书的作者, ,书的现有数量书的现有数量, ,书书的总量的总量*/ */break;break; break;break;case 9:case 9:for(i=0;ib;i+)for(i=0;ib;i+)if(strcmp(ai.writer,str)=0)if(strcmp(ai.writer,str)=0) printf(number:printf(number: %s%sname:name:%s%spress:press:%s%swriter:writer:%s%snow:now:%d%dallall: %dn,ai.number,ai.name,ai.press,ai.writer,ai.n,ai.m);%dn,ai.number,ai.name,ai.press,ai.writer,ai.n,ai.m);/* /*输出书的编号输出书的编号, ,书的名字书的名字, , 书的出版社书的出版社, ,书的作者书的作者, ,书的现有数量书的现有数量, ,书书的总量的总量*/ */break; break; fclose(fp);fclose(fp); 输出书的编号输出书的编号 , ,书的名字书的名字, , 书的出版社书的出版社, ,书的作者书的作者, ,书的现有书的现有数量数量, ,书的总量书的总量*/ */break;break; break;break;case 8:case 8:for(i=0;ib;i+)for(i=0;ib;i+)if(strcmp(ai.press,str)=0)if(strcmp(ai.press,str)=0)printf(number:printf(number: %s%sname:name:%s%spress:press:%s%swriter:writer:%s%snow:now:%d%dallall: %dn,ai.number,ai.name,ai.press,ai.writer,ai.n,ai.m);%dn,ai.number,ai.name,ai.press,ai.writer,ai.n,ai.m);/* /*输出书的编号输出书的编号, ,书的名字书的名字, , 书的出版社书的出版社, ,书的作者书的作者, ,书的现有数量书的现有数量, ,书书的总量的总量*/ */15xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxbreak;break; break;break;case 9:case 9:for(i=0;ib;i+)for(i=0;ib;i+)if(strcmp(ai.writer,str)=0)if(strcmp(ai.writer,str)=0) printf(number:printf(number: %s%sname:name:%s%spress:press:%s%swriter:writer:%s%snow:now:%d%dallall: %dn,ai.number,ai.name,ai.press,ai.writer,ai.n,ai.m);%dn,ai.number,ai.name,ai.press,ai.writer,ai.n,ai.m);输出书的编号输出书的编号, ,书的名字书的名字, ,书的出版社书的出版社, ,书的作者书的作者, ,现有量现有量, ,总量总量*/ */break; break; fclose(fp);fclose(fp); 5、添加、删除函数:adddelet此函数用于对书库中的书进行添加或删除, 出入要添加或是删除的书的编号,并输入要添加或删除的数量,利用 for 语句判断和书库的书编号一致的书,并进行添加或删除。具体程序如下:void adddelet()/*void adddelet()/*添加和删除信息函数添加和删除信息函数*/ */ FILE *fp; FILE *fp;charcharnumber320;number320;int s,i,j,t;int s,i,j,t;if(fp=fopen(liuyan.txt,w)=NULL)if(fp=fopen(liuyan.txt,w)=NULL)printf(cannot open filen);printf(cannot open filen);return ;return ; printf(Chose what you want to do:);/*printf(Chose what you want to do:);/*选择你要做什么选择你要做什么*/ */printf(add books-11n);/*printf(add books-11n);/*输入输入 1111代表添加书的信息代表添加书的信息*/ */printf(delet books-12n);/*printf(delet books-12n);/*输入输入 1212 代表删除书的信息代表删除书的信息*/ */16xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxscanf(%d,&t);scanf(%d,&t);switch(t)/*switch(t)/*选择任务选择任务*/ */ case 11:case 11:printf(Enter the booknumber whichprintf(Enter the booknumber which you want toyou want toadd:);add:);scanf(%s,number3);scanf(%s,number3);printf(How many books do you want to add?:);printf(How many books do you want to add?:);scanf(%d,&s);/*scanf(%d,&s);/*输入要想要添加书的数量输入要想要添加书的数量*/ */for(i=0;i10;i+)for(i=0;i10;i+)if(strcmp(ai.number,number3)=0)if(strcmp(ai.number,number3)=0)ai.m=ai.m+s;/*ai.m=ai.m+s;/*书的总量增加书的总量增加*/ */ break; break;default :default :printf(Enter the booknumber which you want toprintf(Enter the booknumber which you want todelet:);delet:);scanf(%s,number3);/*scanf(%s,number3);/*输入要删除书的编号输入要删除书的编号*/ */for(i=0;i10;i+)for(i=0;i10;i+)if(strcmp(ai.number,number3)=0)if(strcmp(ai.number,number3)=0)for(;i10;i+)for(;i10;i+) /* /*删除信息删除信息 , ,左移覆盖即可左移覆盖即可以将信息删除以将信息删除*/ */ for(j=0;j20;j+)for(j=0;j20;j+)ai.numberj=ai+1.numberj;ai.numberj=ai+1.numberj;for(j=0;j20;j+)for(j=0;j20;j+)ai.namej=ai+1.namej;ai.namej=ai+1.namej;for(j=0;j20;j+)for(j=0;j20;j+)ai.pressj=ai+1.pressj;ai.pressj=ai+1.pressj;for(j=0;j20;j+)for(j=0;j20;j+)ai.writerj=ai+1.writerj;ai.writerj=ai+1.writerj;ai.n=ai+1.n;ai.n=ai+1.n;ai.m=ai+1.m;ai.m=ai+1.m; fclose(fp);/*fclose(fp);/*关闭文件关闭文件*/ */ 17xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx四、个人总结四、个人总结在此次课设中,我充分运用了大一下学期 c 语言中所学的知识,明白了为什么能通过一台电脑就能统计出图书管中上百万册的的图书,这就是程序在起的作用,虽然只用了一周的时间但是在这一周里我重新温习了c 语言, 使自己对 c 语言有了更深入了了解, 也更加熟练的掌握了 c 语言编程序解决实际问题中的关键问题, 我学会了用自己所学的知识去运用到生活中的各个方面 ,更体会到知识的重要性,也深刻体会到了思考问题时逻辑思维严密性的重要性,所以在以后的学习生活中应该锻炼完善的思考逻辑,并逐培养自己遇到问题独立解决问题的能力, 总之在这短短的一周的时间里收获了很多,收益颇丰。五、参考文献五、参考文献1 谭浩强C 程序设计北京:清华大学出版社,20052 刘成等C 语言程序设计实验指导与习题集北京:中国铁道出版社,20063 教育部考试中心、二级教程c 语言程序设计、北京:18xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx高等教育出版社,1998六、源程序六、源程序#includestdio.h#includestdio.h#includestring.h#includestring.hstructstructbook/*book/*定义书的结构体定义书的结构体*/ */ charcharnumber20;number20;charcharname20;name20;charcharpress20;press20;charcharwriter20;writer20;charcharmonth10;month10;charcharday10;day10;intintn;n;intintm;m;a10;a10;int b;int b;void menu();void menu();void input();void input();void search();void search();void borrow();void borrow();void giveback();void giveback();void adddelet();void adddelet();void exit();void exit();void menu()void menu() printf(nWelcomeprintf(nWelcome toto labrary!nChoselabrary!nChose whatwhat youyou wantwant totodo:n);do:n);printf(Inputprintf(Input booksbooks information-1;n);/*information-1;n);/*输入输入 1 1 代表输入图代表输入图书信息书信息*/ */printf(serach books-2;n);/*printf(serach books-2;n);/*输入输入 2 2 代表查询图书信息代表查询图书信息*/ */19xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxprintf(borrow books-3;n);/*printf(borrow books-3;n);/*输入输入 3 3 代表借阅图书信息代表借阅图书信息*/ */printf(addprintf(add oror