《2022年C语言课程设计-图书借阅管理系统说明书 .pdf》由会员分享,可在线阅读,更多相关《2022年C语言课程设计-图书借阅管理系统说明书 .pdf(19页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、* 实践教学* 兰州理工大学计算机与通信学院2010 年春季学期计算机语言B 课程设计题目:图书借阅管理系统专业班级:信息与计算科学姓名:学号:指导教师:成绩:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 19 页 - - - - - - - - - 目录摘要 . 1前言 . 1正文 . 31.问题描述 . 32.需求分析 . 33.系统总体设计 . 34.详细设计 . 55.系统测试 . 76.软件使用说明书 . 8总结 . 9参考文献 . 10致谢 . 9附件部分原
2、程序代码 . 12名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 19 页 - - - - - - - - - 1 摘要创建一个“图书借阅管理系统”,系统以菜单方式工作,编写存放有图书信息,包含图书名称、图书编号、单价、作者、数量、借书人姓名、学号等,并可对这些信息进行浏览; 可按书名或按编号查找此信息,建立存放图书信息的文件,图书信息有图书名称、图书编号、单价、作者、数量、借书人姓名、学号等,并可对图书信息进行浏览。关键词:图书信息管理;文件;浏览;查询;修改;前言近年
3、来,随着图书馆规模的不断扩大,图书数量也相应的增加,人们对知识的渴求和有关图书的各种信息量也成倍增加,面对着庞大的信息量,传统的人工方式管理会导致图书馆管理上的混乱,人力与物力过多浪费,图书馆管理费用的增加,从而使图书馆的负担过重,影响整个图书馆的运作和控制管理,因此,必须制定一套合理、有效,规范和实用的图书借阅管理系统,对图书资料进行集中统一的管理。系统开发的总的设计目标是实现图书管理的系统化、规范化和自动化,实现对图书资料的集中统一的管理。满足不同人对各种书籍的借阅欲望,使图书馆的工作效率得到很大提高。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - -
4、 - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 19 页 - - - - - - - - - 2 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 19 页 - - - - - - - - - 3 正文1. 问题描述由于教职工和学生人数的增加,藏书规模的扩大,使得图书借阅管理工作繁重,而且手工管理效率极低,急需一个软件系统解决这些问题。为了跟上时代潮流,规范管理,提高图书馆的管理水平和管理效率,为全校职工和学生提供方便、快捷、准确的图书借
5、阅服务,开发一个“图书借阅管理系统”。;2. 需求分析本系统通过管理图书馆图书, 管理读者从进图书馆到离开的整个过程,以供图书馆图书信息管理。本系统能够维护读者的图书信息、读者信息,为图书借阅提供准确的资料,提高了人员的工作效率。3. 系统总体设计1:整体结构流程图 3、添加图书信息流程图空链表图书馆管理系统图书信息查询图书借阅图书归还名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 19 页 - - - - - - - - - 4 是否盛情存放一个结点内存空间查找链表尾表
6、头=新声请空间地址图书数目 =链表中最后一本书的编号图书数目 =初始数目声请存放一个结点的内存空间将链表表尾指针新声请空间地址图书数目自动加1 循环,使其能输入多种图书信息通过调用查询函数输入图书信息否继续输入是表尾指针=NULL ,返回表头指针,结束退出申请存放一个节点内存a)删除图书信息流程图名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 19 页 - - - - - - - - - 5 2:系统的执行应从功能菜单的选择开始,依据用户的选择来进行后续处理直到用户选择退
7、出系统为止。其间应对用户的选择做出判断和异常处理。4. 详细设计对应于总体设计时的系统功能模块图,各个功能模块的处理逻辑如下:信息输入模块:打开图书信息文件;while (继续输入) 读入图书信息;将读入信息添加到图书信息文件中;提示是否继续输入; 关闭图书信息文件;信息浏览模块:打开图书信息文件;while ( 不到文件结束) 是空链表否显示无任何次信息否输入要删除图书信息的编号在链表中查找是显示查无此书否查到与否是显示查无此书否删 除与否是放弃删除名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - -
8、- - - 第 7 页,共 19 页 - - - - - - - - - 6 从文件中顺序读出一个图书的信息;按指定格式输出该图书的信息; 关闭图书信息文件;信息查询模块:while ( 仍继续查询) if( 按书名查询) 读入查询的图书条件;打开图书信息文件;while( 不到文件结束) 顺序读出一个图书的信息;if( 该图书信息符合条件) 输出该图书的信息; 关闭图书信息文件;提示共有几条符合条件的记录; else if ( 按作者名查询) 读入图书的条件;打开图书信息文件;while( 不到文件结束) 顺序读出一个图书的信息;if( 该图书信息的学历符合条件) 输出该图书的信息;名师资料
9、总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 19 页 - - - - - - - - - 7 关闭图书信息文件;提示符合条件的记录数; else 提示输入不合适;提示是否继续查询; 5. 系统测试用以下的例子做测试,选择输入操作,依次输入,图书条码,作者名,返回则选择浏览、查询、修改、删除功能。图书条码书名作 者名出版单位出 版 时间是否 借出978730202801 数学分析张 天德天津大学出版社2003 是9787302104490 高等代数白晶北京大学出版社2005 否
10、9771009503607 海外英语席 广辉安徽科学技术出版社2005 是9787560825335 高等数学习题集李 炳钊同济大学出版社2003 是9787562811770 高等数学解题指导林 正国华东理工大学出版社2001 否97877207032799 家春秋巴金人民文学出版社2005 是9787562306573 数学物理方法何 淑芷华南理工大学出版社2001 否9787312014406 四级语法集训王 少琳中国科学技术大学出版社2002 是名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - -
11、 - - - 第 9 页,共 19 页 - - - - - - - - - 8 6. 软件使用说明书(1)根据正确的提示安装软件。(2)Intel486以上系列、 AMD K6 以上系列等 PC台式机和便携式电脑都可运行。 (3) 打开该程序系统,浏览菜单,根据需要选择功能,进行各项操作。操作如下:点击开始菜单,进入菜单选择。输入:将所需的信息输入。输出:书目信息、读者信息、借书信息与还书信息。输入:根据不同的需要选择,当信息输入显示出错误时,进入浏览信息,找出错误。当错误不能改正,则退出浏览信息。进入查询信息:则屏幕会出现两个对话框按作者名和按书名查找,查处相应的所需信息和书的状态(是否借出
12、)。当查询不能显示需要时进入修改程序,把所输入的信息进行修改,使之正确能够正常运行或进入删除信息中,重新输入自己所要的信息。当信息输入正确,进入你所需要的菜单程序中:书目信息:显示书的分类号、条码、出版单位、出版时间、价格等。读者信息: 显示出学生的学号、 图书卡号、 学院专业与班级与所借的图书。管理员信息:显示出图书借与还的负责人与图书管理的负责人以及他们的工作号。借书信息:显示出图书的借出频率与借出的时间以及续借的方法。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共
13、 19 页 - - - - - - - - - 9 总结该系统以图书信息管理为背景,涵盖了图书管理员对图书信息管理的多种功能,并且有一定的可行性和安全性,确保了各项指定功能得以运行。本系统以基本函数、结构体、枚举性、文件以及链表等多方位知识贯穿实现。通过此次程序设计实践,是同学们对所学知识的综合运用,也是程序设计得以提高的表现。通过此次编程培养了我们结构化程序设计的思想,加深了对高级语言基本语言要素和控制结构的理解,锻炼我们独立思考制作程序的能力,并且掌握了一些课程设计的相关知识与实践操作能力,为以后的学习提供了锻炼的机会。经过设计和开发,图书借阅管理系统基本开发完毕以及各类相关报表的打印。并
14、提供部分系统维护功能,使用户方便进行数据备份和恢复、数据删除。对于数据的一致性的问题也通过程序进行了有效的解决。从而是我对c 语言这门课程有了更好的了解。但是由于设计时间较短,所以该系统还有许多不尽如人意的地方,比如联机文档比较少,用户界面不够美观,出错处理不够等多方面问题。这些都有待进一步改善。致谢在编写程序的过程中,我们得到了丁政建老师的精心指导以及孜孜不倦的教诲,在老师的指导下,我们的能力得到了提高,同时养成了科学、严谨的作风和习惯,在此,我们对老师的精心栽培表示衷心的感谢!感谢我们小组同学对我的帮助和指点,尤其感谢我的舍友在非常时期,在生活和学习上帮我许多忙。在课设即将完成之际,我的心
15、情无法平静,从开始进入课题到课设的顺利完成,有多少可敬的师长、同学、朋友给了我无言的帮助,在这里请接受我诚挚的谢意。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 19 页 - - - - - - - - - 10 参考文献1c+程序设计教程,王连相,中国铁道出版社,2007 2 C 语言程序设计,谭浩强,清华大学出版社,1999 3C 程序设计题解与上机指导,谭浩强,清华大学出版社,1999 4 C 语言的实际应用,安徽科学技术出版社,2000 5 C 语言函数手册,
16、机械工业出版社,1999 6 C 语言实用程序荟萃,西安电子科技大学出版社,1993 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 19 页 - - - - - - - - - 11 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 19 页 - - - - - - - - - 12 附件 部分原程序代码* bookfunction.c*/ /*
17、 添加图书 */ #include 图书管理 .c void BookAdd() FILE *fp; Book consultbook; fp=fopen(book.txt,rb);/*读方式打开文件 */ if(fp=NULL) fp=fopen(book.txt,wb); /*写方式打开文件*/ else/* 如果有书就添加*/ fclose(fp); fp=fopen(book.txt,ab);/*追加方式打开文件*/ ClrScr();/* 清屏 */ printf(Intput new book num: );/*逐个输入新图书的资料*/ gets(consultbook.num);
18、 gotoxy(2,4); printf(Input new book name: ); gets(consultbook.name); gotoxy(2,5); printf(Please input new books price: ); scanf(%d%*c,&consultbook.price); strcpy(consultbook.person,); consultbook.yes=1;/*表示书存在未借出*/ consultbook.next=NULL; fwrite(&consultbook,sizeof(Book),1,fp);/*块写 */ fclose(fp); /*关
19、闭文件 */ ClrScr(); /* 图书查询 */ void BookConsult() FILE *fp; Book consultbook; char bookname20; /*书名 */ int flag=0,i=0; ClrScr(); gotoxy(2,3); printf(Input the book name: ); gets(bookname); /*输入要查询的图书名*/ fp=fopen(book.txt,rb); if(fp=NULL)/*没找到文件 */ ClrScr(); gotoxy(2,3); 名师资料总结 - - -精品资料欢迎下载 - - - - - -
20、 - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 14 页,共 19 页 - - - - - - - - - 13 printf(Error!); fclose(fp); return; else while(!feof(fp)/*查询图书资料 */ fread(&consultbook,sizeof(Book),1,fp); if(strcmp(consultbook.name,bookname)=0)/*如果查找到 */ ClrScr(); gotoxy(2,3+i*5); printf(This book %s information as
21、follow:,consultbook.name); gotoxy(2,4+i*5); printf(This book num is %s,consultbook.num); gotoxy(2,5+i*5); printf(This books price is %d,consultbook.price); gotoxy(2,6+i*5); printf(This books is browwed by %s,consultbook.person); gotoxy(2,7+i*5); printf(This books state is %d,consultbook.yes); i+; fl
22、ag=1; /*查找数据标志 */ if(flag=0) ClrScr(); gotoxy(2,3); printf(No found this book); fclose(fp); /* 删除图书资料 */ void BookDel() FILE *fp; Book *head,*p,*q; char bookname20; fp=fopen(book.txt,rb);/*读方式打开文件 */ if(fp=NULL)/*没找到文件 */ gotoxy(2,3); printf(Error!); fclose(fp); return; head=p=q=(Book*)malloc(sizeof
23、(Book);/*将文件内容放入链表*/ fread(p,sizeof(Book),1,fp); /*读第一条记录 */ while(!feof(fp) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 15 页,共 19 页 - - - - - - - - - 14 q=p; p=(Book*)malloc(sizeof(Book); fread(p,sizeof(Book),1,fp); /*读记录 */ q-next=p;/*新记录插入到链表的尾*/ p-next=NULL;/*
24、最后一个结点的后继为空*/ fclose(fp); ClrScr(); printf(Input the book name: ); gets(bookname); /*输入图书名 */ p=head; while(p!=NULL)/*按名字查找要删除的图书*/ if(strcmp(p-name,bookname)=0)/*找到要删除的图书*/ if(p=head) /*如果是第一个结点*/ head=head-next; else q-next=p-next;/*不是第一个结点*/ break; q=p; /*指针后移 */ p=p-next; fp=fopen(book.txt,wb);/
25、*删除后从链表的头开始重新保存*/ while(head!=NULL) fwrite(head,sizeof(Book),1,fp);/*块写 */ head=head-next; fclose(fp); ClrScr(); /* 借书 */ void BookBorrow() FILE *fp; Book consultbook; Member consultmember; char bookname20,membername20; int flag=0,mflag=0; ClrScr(); gotoxy(2,3); printf(Input the mermber name: ); get
26、s(membername); /*输入会员名 */ if(fp=fopen(member.txt,rb)=NULL)/*没找到文件 */ gotoxy(3,3); printf(Cannot open filen!); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 16 页,共 19 页 - - - - - - - - - 15 return; else while(!feof(fp)/*查询会员资料 */ fread(&consultmember,sizeof(Member),1
27、,fp); if(strcmp(consultmember.name,membername)=0) mflag=1; /*是会员标志 */ break; fclose(fp); if(mflag=0) gotoxy(2,4); printf(You not is a member,pleas register!);/*不是会员不能借书*/ return; gotoxy(3,5); printf(Input the book name: ); gets(bookname); /*输入图书名 */ ClrScr(); if(fp=fopen(book.txt,rb+)=NULL)/*没找到文件 *
28、/ gotoxy(2,3); printf(Cannot open filen!); return; while(!feof(fp)/*查询图书资料 */ fread(&consultbook,sizeof(Book),1,fp); if(strcmp(consultbook.name,bookname)=0) if(consultbook.yes=0)/*图书已经借出的判断*/ gotoxy(2,3); printf(This book has borrowedn!); break; else consultbook.yes=0; /*作借出标志 */ strcpy(consultbook.
29、person,membername);/*登记借书会员 */ fseek(fp,-1L*sizeof(Book),1);/*从当前位置前移一条记录指针*/ fwrite(&consultbook,sizeof(Book),1,fp);/*写记录 */ gotoxy(2,3); printf(Borrowed succ!); flag=1;/*借出书标志 */ break; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 17 页,共 19 页 - - - - - - - - - 16
30、 if(flag!=1) ClrScr(); gotoxy(2,3); printf(Borrowed fail!n);/*借书失败 */ fclose(fp); /* 还书 */ void BookReturn() FILE *fp; Book consultbook; char bookname20; int flag=0; ClrScr(); if(fp=fopen(book.txt,rb+)=NULL)/*没找到文件 */ gotoxy(2,3); printf(cannot open filen!); return; printf(Input the book name: ); ge
31、ts(bookname); /*输入图书名 */ ClrScr(); while(!feof(fp)/*查询图书资料 */ fread(&consultbook,sizeof(Book),1,fp); if(strcmp(consultbook.name,bookname)=0) if(consultbook.yes=0)/*图书已经借出的判断*/ consultbook.yes=1;/*作图书未借书标志,表示已还书*/ strcpy(consultbook.person,); fseek(fp,-1L*sizeof(Book),1); fwrite(&consultbook,sizeof(B
32、ook),1,fp); gotoxy(2,3); printf(Return book succ!); flag=1; break; if(flag!=1) printf(Return fail!n); fclose(fp); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 18 页,共 19 页 - - - - - - - - - 17 /* 清除屏幕 */ void ClrScr() int i,j; puttext(2,3,78,23,c);/*刚开始已经用gettext 把蓝色的一块地方保存下来,现在再还原 */ gotoxy(2,3); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 19 页,共 19 页 - - - - - - - - -