基于C语言的图书管理系统的方案设计书与实现.docx
- 文档编号:8021658
- 上传时间:2023-01-28
- 格式:DOCX
- 页数:34
- 大小:398.31KB
基于C语言的图书管理系统的方案设计书与实现.docx
《基于C语言的图书管理系统的方案设计书与实现.docx》由会员分享,可在线阅读,更多相关《基于C语言的图书管理系统的方案设计书与实现.docx(34页珍藏版)》请在冰豆网上搜索。
基于C语言的图书管理系统的方案设计书与实现
题目:
基于C语言的图书管理系统的设计与实现
英文题目:
DesignandImplementationofBooksManagementSystemBasedonCLanguage
院系:
专业:
电子信息科学与技术
班级:
2007级2班
姓名:
学号:
指导教师:
日 期:
2011年6月
中文摘要
人类已经跨入了新世纪,正在进入信息化时代。
信息化浪潮、网络革命在给社会带来冲击的同时,也使图书馆业务受到了强烈的冲击,图书馆传统的管理和服务方式已不能适应读者对日益增长的文献信息的需求。
随着馆藏量的不断增加,图书资料的录入和查询的难度也就相应增加,数据处理手工操作,工作量大,出错率高,出错后不易更改的手工方式,已经不能满足要求。
基于此问题,建立一个规范化,系统化,程序化的图书管理系统迫不急待。
为方便对图书馆书籍、读者资料、借还书等进行高效的管理,特编写程序以提高图书馆的管理效率。
使用程序之后,工作人员可以查询某位读者、某种图书的借阅情况,还可以对当前图书借阅情况进行一些统计,以便全面掌握图书的流通情况等等。
关键词:
C语言;图书管理;数据处理;信息技术
ABSTRACT
Mankindhasenteredthenewcentury,whichisenteringtheinformationage.Waveofinformationtechnology,thenetworkrevolutionhasbroughtabouttheimpact,butalsomakethelibraryservicehasbeenbadlyhit,andlibrarymanagementandservicesoftraditionalmethodscannotmeetthegrowingliteratureontheinformationthereaderneeds.Withthecontinuousincreaseinthecollections,books,dataentryandalsoacorrespondingincreaseinthedifficultyofqueries,dataprocessingmanualoperation,heavyworkload,errorrate,errorisnoteasytochangeafterthemanualmodecannolongermeettherequirements.
Basedonthisproblem,theestablishmentofastandardized,systematic,process-orientedlibrarymanagementsystemcannotwait.Fortheconvenienceoflibrarybooks,readersinformation,suchasborrowingandreturningbooksforefficientmanagement,especiallythepreparationofthemanagementprocedurestoenhancetheefficiencyofthelibrary.Afterusingtheprogram,staffcansearchforcertainreaders,borrowsomebooks,canalsoborrowbooksonthecurrentsituationofsomestatisticsinordertofullygrasptheflowofbooks.
KEYWORDS:
Clanguage,LibraryManagement,DataProcessing,InformationTechnology
目录
1绪论……………………………………………………………………………………...….1
1.1选题背景和选题意义1
1.1.1选题背景1
1.1.2选题意义1
1.2图书管理系统简介1
1.3图书管理系统需求分析1
2系统分析………...…………………….....................................................................................3
2.1题目分析3
2.2系统分析3
3管理系统的总体设计与详细设计4
3.1总体设计4
3.2详细设计4
4调试与测试14
5编码实现15
结论19
致谢20
参考文献21
附录22
1绪论
1.1选题背景和选题意义
1.1.1选题背景
随着社会的发展及知识经济时代的到来,信息管理系统在各行各业发挥着越来越重要的作用。
而在高校的图书管理中,避免了手工操作而带来的一些不必要的问题。
1.1.2选题意义
图书馆作为一种信息资源的集散地,图书和用户借阅资料繁多,包含很多的信息数据的管理,现今,有很多的图书馆都是初步开始使用,甚至尚未使用计算机进行信息管理。
根据调查得知,他们以前对信息管理的主要方式是基于文本,表格等纸介质的手工处理,数据处理工作量大,容易出错。
由于数据繁多,容易丢失,且不易查找。
总的来说,缺乏系统规范的信息管理手段。
尽管有的图书馆有计算机,但是尚未用于信息管理,没有发挥它的效力,资源闲置比较突出,这就是管理信息系统的开发的基于环境。
1.2图书管理系统简介
图书管理系统是图书馆的重要组成部分,图书是我们最好的获取信息的方式,但由于图书馆图书收藏量大大增加,使传统的图书管理员的工作日益繁重起来,迫使人们起用新的管理方法来管理图书。
本文通过设计和开发图书馆管理系统的实践,阐述了图书管理软件中所应具有的功能、设计、实现。
介绍了图书管理系统的设计和系统功能的实现过程。
该系统可以运用于高校的图书管理,由图书借阅,图书归还,图书查询,图书信息修改,等多个模块组成,实现了图书资料的计算机网络管理。
一般通用的图书馆管理系统通常包括系统管理、读者管理、编目、图书流通、统计、查询等功能。
比较先进的系统能够在一个界面下实现图书、音像、期刊的管理,设置假期、设置暂离锁、暂停某些读者的借阅权、导入导出读者资料、交换MARC(MachineReadableCatalogue)数据、升级辅助编目库、征订图书等。
此外,随着工Internet应用的发展,一个完善的系统还应提供无缝接入Internet的功能,通过IE浏览器让读者使用借阅资料查询、更换密码、预约、资料检索等功能。
有些系统还能提供读者自助服务,可以开放一些客户机让读者自行管理密码、查询自己的借阅史、预约资料、检索资料等。
1.3图书管理系统需求分析
为满足图书管理现代化的需求,国内软件商已开发出很多商品化图书管理软件,但他们大多是面向大型专业图书馆而开发的,专业性强,操作和使用比较复杂,难以掌握。
而国内很多中小型图书馆由于管理人员不多且大多数不是图书管理业务的专业人员、业务分工也不是很详细、明确,这样的软件对于他们而言太复杂,所以应用效果并不是很好。
目前在大的图书馆己经有一整套比较完善的信息管理系统,而在一般小型图书馆中大部分工作还是进行手工管理,工作效率低,并不能即时了解图书馆各类图书的库存,读者比较需求的图书难以在短时间内找到,图书的入库和更新比较麻烦等等,不便于动态及时调整图书结构。
同时由于不可避免的人为因素,造成数据的遗漏、误报等。
为了更好的适应当前中小型图书馆的读者借阅需求,缓解手工管理存在的各种弊端,因此开发了面向中小型图书馆的图书管理系统,为用户提供全方位的信息服务。
通过对中小型图书馆的调查、分析发现,用户的需求可分为4个方面:
第一是图书馆的工作人员通过计算机来管理各类图书,分类编号、调整图书结构、增加图书库存,适应读者的需求。
第二是读者能通过计算机来查询浏览图书馆中的图书,来确定自己需要的书籍,为借阅做好准备。
第三是工作人员对读者的借书情况能够作好全面掌握,能及时得到每个读者的当前借阅状态和历史借阅记录。
第四也是图书馆的核心工作,对图书的借阅管理。
在软、硬件方面对系统的需求是软件要易学,容易掌握,可以很简单方便地管理各种图书信息。
硬件的配置要求不能太高,这样可以适应中小型图书馆的经济条件。
总之,中小型图书馆管理信息系统旨在提供一个可以操作的,方便查询的,易于修改的辅助管理系统。
同时提供了系统智能辅助与用户自主选择的两种方式,提高查询效率。
2系统分析
2.1题目分析
本课程设计任务的目的是要求学生按照分析、设计、编码、调试和测试的软件开发过程独立完成管理系统设计,以及C语言算法的掌握,并能最终实现本系统的功能要求,通过这个程序可以学习到以前调试短程序没有的的经验。
要求为各项操作功能设计一个菜单。
应用程序运行后,先显示这个菜单,然后用户通过菜单项选择希望进行的操作项目;要求以上功能分别用函数实现。
2.2系统分析
图书馆管理系统包括:
●录入:
新进图书及基本信息输入
●删除:
旧图书及基本信息删除
●查询:
查询要借阅的图书信息
●修改:
修改已有的图书信息
●借书:
实现用户办理借书手续
●还书:
实现用户.办理还书手续
系统以菜单方式工作,界面友好,易于操作。
系统的程序设计环境;:
本系统使用VisualC++作为程序开发工具。
VisualC++是基于对象的快速应用程序开发工具,是当今最强大、最灵活的应用程序开发工具之一,具有良好的可视化应用程序开发环境和强大的可扩展数据库功能。
利用VisualC++提供的可视化组件库进行编程,可以快速、高效地开发出基于Windows环境的各类应用程序。
VisualC++语言的特点是面向对象设计的程序语言,VisualC++的基础编程语言是具有面向对象特性的语言,具有代码稳定、可读性好、编译速度快等优点,并将面向对象的概念移植到了C语言中,使这种基础语言有了新的发展空间。
与其它编程软件相比,特别是在数据库和网络应用方面,VisualC++具有简便易用、灵活高效的特点。
开发软件通常要经过修改源代码、编译、测试、再修改、再编译、再测试等操作,这些操作形成了一个开发循环,所以快速的编译器可以大大地降低开发周期。
VisualC++正是建立在这种高效编译器的基础之上,是针对Windows的最快的高级语言代码编译器,因此生成的代码十分精练高效,使VisualC++程序的运行速度更快。
这也是本人使用VisualC++作为程序设计开发语言的重要原因。
3管理系统的总体设计与详细设计
3.1总体设计
总体设计目标:
使用者可以利用本系统进行对图书馆借阅的各项运算操作,如根据用户的需求自动的进行添加图书,删除图书,借书还书。
查找所要的图书,查阅图书的详细资料,查阅读者的详细资料。
最后清晰完整的结果于屏幕中。
大大方便使用者对图书借阅的操作,不仅节省时间,而且提高准确性,可以达到事半功倍的效果。
总体设计策略:
本系统采用的是自顶向下、层次化的模块结构。
对高层模块,采用以事务为中心的设计策略,把一个大的模块逐步分解成较小的相对简单的模块。
对低层模块,采用以变换为中心的设计策略。
为了提高每个模块的内聚性、降低模块间的耦合性,将每个模块设计成具有单一功能的模块(即功能内聚),使模块间的联系完全是通过主模块的控制和调用来实现(即非直接耦合)。
结合上述分析该系统应包括以下模块:
信息输入、信息删除,信息查询,信息显示,信息修改,图书借出、图书归还。
结构图如图1:
图书馆管理系统
图书归还
图书借出
显示信息
信息
修改
信息
查询
信息
删除
信息
输入
图1结构框图
图书数据:
序号、书名、作者、出版社、存数、总数。
3.2详细设计
●主函数
主函数要求设计比较简洁,只提供设输入,处理和输出部分的函数调用。
其中各功能模块用菜单方式选择。
流程图如下图2:
图2主函数流程图
程序:
voidmain(void)
{
menu:
page_title("操作选单");
printf("请用数字键选择操作\n\n");
printf("\t\t\t1注册新书\t\t\t2借阅图书\n");
printf("\t\t\t3查询图书信息\t\t\t4修改图书信息\n");
printf("\t\t\t5归还图书\t\t\t6删除图书\n");
printf("\t\t\t7显示图书\t\t\t8退出系统\n");
printf("请按数字键:
\n");
switch(getch())
{case'1':
book_add();break;
case'2':
book_out();break;
case'3':
book_search();break;
case'4':
book_change();break;
case'5':
book_in();break;
case'6':
book_del();break;
case'7':
book_show();break;
case'8':
exit(0);
}gotomenu;
}
●输入模块
分析:
该模块的功能是假如用户需要新加入新的图书信息,通过键盘输入将新信息逐条加在原来输入文件上但不能覆盖原有信息。
流程图如下图3:
图3输入模块流程图
程序:
voidbook_add(void)
{intn;
system("cls");
page_title("注册新书");
for(n=0;n<100;n++)
if(books[n].id==0)break;
printf("序号:
");
scanf("%d",&books[n].id);
printf("书名:
");
scanf("%s",&books[n].name);
printf("作者:
");
scanf("%s",&books[n].author);
printf("出版社:
");
scanf("%s",&books[n].publish);
printf("数量:
");
scanf("%d",&books[n].total);
books[n].store=books[n].total;
return_confirm();}
●删除模块
分析:
该模块用于显示所有图书信息,由于记录较多,故而采取分屏显示。
显示完所有纪录后,用户需输入图书编号进而查找图书信息。
流程图如下图4:
图4删除模块流程图
程序:
intbook_del(void)
{
intn,num,i;
system("cls");
page_title("删除图书");
printf("请输入所要删除的书的编号:
");
scanf("%d",&num);
for(n=0;n<100;n++)
{
if(books[n].id==num)
for(i=n;i<100;i++)
{books[i].id=books[i+1].id;
strcpy(books[i].name,books[i+1].name);
strcpy(books[i].publish,books[i+1].publish);
printf("该书已删除.\n");
returnn;
}
}
printf("没有找到相关记录\n");
return-1;
}
●查询模块
分析:
改模块功能应体现为用户输入图书书名,若有书则查询出来。
流程图如下图5:
图5查询模块流程图
程序:
intbook_search(void)
{intn,i=1;
charnam[30];
system("cls");
printf("请输入书名:
");
scanf("%s",&nam);
for(n=0;n<100;n++)
{if((strcmp(books[n].name,nam)==0))
{printf("序号:
%d\t",books[n].id);
printf("书名:
%s\t",books[n].name);
printf("作者:
%s\t",books[n].author);
printf("出版社:
%s\t",books[n].publish);
printf("存数:
%d\t",books[n].store);
printf("总数:
%d\n",books[n].total);i=0;
}}
if(i==1)
printf("\n没有找到相关记录.\n");
return-1;}
●修改模块
分析:
该模块功能应体现为用户修改图书信息,若有记录则修改信息。
流程图如下图6:
图6修改模块流程图
程序:
intbook_change(void)
{
intn,i;
system("cls");
page_title("修改图书信息");
printf("请输入要修改的图书编号:
");
scanf("%d",&i);
for(n=0;n<100;n++)
{if(books[n].id==i)
{printf("修改书名:
");
scanf("%s",books[n].name);
printf("修改作者:
");
scanf("%s",books[n].author);
printf("修改出版社名:
");
scanf("%s",books[n].publish);
printf("修改总数:
");
scanf("%d",&books[n].total);
printf("修改图书信息成功.\n");
books[n].store=books[n].total;
returnn;}}
printf("\n没有找到相关记录.\n");
return-1;
}
●显示模块
分析:
该模块功能应体现为显示全部的图书信息。
流程图如下图7:
程序:
intbook_show(void)
{intn,i=1;
system("cls");
for(n=0;n<100;n++)
{
if(strlen(books[n].name)!
=0)
{
printf("序号:
%d\t",books[n].id);
printf("书名:
%s\t",books[n].name);
printf("作者:
%s\t",books[n].author);
printf("出版社:
%s\t",books[n].publish);
printf("存数:
%d\t",books[n].store);
printf("总数:
%d\n",books[n].total);
i=0;
}
}if(i==1)
printf("\n没有找到相关记录.\n");
return-1;
}
●借出模块
分析:
该模块功能应体现为用户输入图书序号,若有书则要求输入账号。
流程图如下图8:
图8借书模块流程图
程序:
voidbook_out(void)
{intn,s,l,d;
system("cls");
page_title("借阅图书");
if((n=search_book())!
=-1&&books[n].store>0)
{printf("请输入借书证序号:
");
scanf("%d",&s);
printf("请输入可借天数:
");
scanf("%d",&d);
for(l=0;l<10;l++)
{if(books[n].usr[l]==0)
{books[n].usr[l]=s;
books[n].days[l]=d;
break;}}
books[n].store--;}
if(n!
=-1&&books[n].store==0)printf("此书已经全部借出.\n");
return_confirm();}
●归还模块
分析:
该模块功能应体现为方便用户归还图书
流程图如下图9:
图9归还图书模块
程序:
voidbook_in(void)
{intn,s,l;
page_title("归还图书");
if((n=search_book())!
=-1&&books[n].store {printf("借阅者图书证列表: \n"); for(l=0;l<10;l++) if(books[n].usr[l]! =0) printf("[%d]-%d天\n",books[n].usr[l],books[n].days[l]); printf("请输入借书证序号: "); scanf("%d",&s); for(l=0;l<10;l++) {if(books[n].usr[l]==s) {books[n].usr[l]=0; books[n].days[l]=0; break;}} books[n].store++;} if(n! =-1&&books[n].store==books[n].total) printf("全部入藏.\n"); return_confirm();} ●公共函数 定义结构体: structBOOK {intid,usr[10],total,store,days[10],zt; charname[31],author[21]; }books[100]; voidpage_title(char*menu_item) {printf("\t\t\t************欢迎使用图书馆管理系统**********\n\n-%s-\n\n",menu_item);} voidreturn_confirm(void) {printf("\n按任意键返回……\n"); getch(); } 4调试与测试 第一,用一组简单的数据对程序进行调试,是否各函数有出错现象。 然后用复杂数据对程序进行调试。 直到确定程序对正常数据没有错误为止。 第二,当数据测试时,程序错误,要首先找到出错的函数,对函数中各个变量进行观察,有时变量很多,循环多重不要急,对各个数据的观察,对程序的调试有很大的帮助。 你也可以先对几个变量熟悉后,在多重循环里,确定正确的数据,将其跳过调试,对有疑问的数据循环进行仔细观察。 虽然这是比较省力气
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 语言 图书 管理 系统 方案设计 实现