高校图书管理系统.pdf
《高校图书管理系统.pdf》由会员分享,可在线阅读,更多相关《高校图书管理系统.pdf(30页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、课课 程程 设设 计计学学号号班班级级姓姓名名指导教师指导教师20082008 年年 7 7 月月 1 1 日日xxxxxxxxxxxxxxxxxxxxxx课课 程程 设设 计计 任任 务务 书书一、课程设计时间一、课程设计时间200708 第 2 学期第 17 周,共计 1 周,20 学时。二、课程设计内容二、课程设计内容用 C 语言编写软件完成以下任务:1.录入图书信息根据图书馆的管理情况自行设定,要具有实用性 ;2.查询某本书的库存情况;3.过期催还显示所有的过期人员信息 。三、课程设计要求三、课程设计要求1. 程序质量:贯彻结构化的程序设计思想。用户界面友好,功能明确,操作方便。用户界
2、面中的菜单至少应包括 “图书信息录入” 、 “图书信息查询根据书名或编号等 ” 、 “过期催还” 、 “退出”4 项。代码应适当缩进,并给出必要的注释,以增强程序的可读性。2. 课程设计说明书:课程结束后,上交课程设计说明书和源程序。课程设计说明书的格式和内容参见提供的模板。四、指导教师和学生签字四、指导教师和学生签字指导教师:指导教师:_学生签名:学生签名:_五、说明书成绩五、说明书成绩六、教师评语六、教师评语Ixxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx目录目录一、需求分析 . 1二、程序流程图 . 3三、 核心技术的实现说明及相应的程序段. 9四、个人总结.1
3、8五、参考文献.18六、源程序.19Ixxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx一、需求分析一、需求分析经过对程序设计题目的分析可知, 整个程序的设计实现大致分为五个模块,其中每一个模块对应一个函数,他们的功能分别是:图书信息输入函数 input(),借阅图书函数(borrow),增加删除图书函数(adddelet),图书查询函数(search),以及归还图书信息函数(giveback)。在这些函数当中,这四个函数的实现严格按照题目的要求。1、图书信息输入函数 主要功能是从键盘输入图书信息并将其写入文件中,作为图书馆的书库,以便对下面的函数进行运行,此函数是基础.
4、2、图书借阅函数主要借阅图书的功能和录入学生应该还书的时间;3、图书归还函数 主要实现借阅图书后,归还图书的功能,并把应该还书的时间和实际还书的时间进行比较过期时输出学生的信息,也是该程序的的一个重点4、增加删除图书函数实现的功能是实现对图书的1xxxxxxxxxxxxxxxxxx删除;5、图书查询函数允许按照图书编号,书名,作者,出版社进行查询,并将查询信息输出;6、退出函数该函数主要实现退出运行界面的功能.除上面介绍的功能之外,程序还具有退出功能,可以在程序的一次运行当中循环执行所有的功能, 并根据需要终止程序的执行。每一个图书记录都包含:图书编号,名称,出版社,作者,现有数量和总量在程序
5、当中, 将图书记录类型定义为结构体类型,并把它写入 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?
6、真真还还书书函数函数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 时时失败!失败!输入图书编号,书名,出版社,作者,现有数量,
7、总量输入图书编号,书名,出版社,作者,现有数量,总量2读取学生数据 readsreturn;return;将书的信息写入文件将书的信息写入文件图 3 读取学生数据关闭文件关闭文件4图输入图书函数xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx查询图书函数真真读方式打开文件不成功?读方式打开文件不成功?假假输输 出出 文文件件 打打 开开失败!失败!循环变量循环变量 i ireturn;return;真真输输出出filefilereadreaderror!error!读出信息不等于读出信息不等于 1?1?假假变量变量 w=6?w=6?真真输出图书信息输出图书信息真真输出图
8、书信息输出图书信息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借书书名和书库名一致借书
9、书名和书库名一致?N Nreturn;return;borrow failedborrow failed结束结束图4借阅图书函数6xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx4还书函数图5还书函数7开始开始Y以读方式打开文件不成功以读方式打开文件不成功? ?N N输入学号输入学号ReturnReturn输入书的编号输入书的编号循环变量循环变量 i ii1000?i1000?N N输入的编号和书库编号一致输入的编号和书库编号一致Y YY Y输出还书成功输出还书成功breakbreak;关闭文件关闭文件结束结束xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
10、xxxxxx5添加删除函数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添加删除函数8xxxxxxxxxxx
11、xxxxxxxxxxxxxxxxxxxxxxxxx三、三、 核心技术的实现说明及相应的程序段核心技术的实现说明及相应的程序段本程序主要由五个自定义函数和一个主函数组成, 其中主函数以菜单的形式调用其他函数来实现要求的所有功能。这些函数中以写入图书函数、借阅图书函数、还图书函数、查询图书函数、添加和删除函数为核心技术,下面分别进行说明。1、写入图书函数:input()首先要把图书写入文件,即书库,如果不存在文件首先要创建一个新文件(d:liuyan.txt),并将图书信息信息写入该文件当中;其二是在学生文件已经存在的情况下,此时文件要以读写方式或追加的方式打开, 这样才可以保证以前已经存在的数据
12、不丧失。 此程序中原来不存在文件,所以先建立一个文件,具体的程序段如下: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);/*输入写入书的本输入写入书的本数数*/ */9xx
13、xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxscanf(%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,
14、&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()首先要输入你的学号, 然后再输入你想要借的书的名字,通
15、过一个 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(l
16、iuyan.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 want
17、want 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);/*输出借书成输出借书成功功*/
18、 */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(
19、&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 error
20、n);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()本函数由主函数调用后
21、,先打开存储图书信息的文件,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,
22、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);s
23、canf(%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(%
24、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,da
25、y2)=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(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 高校 图书 管理 系统
限制150内