图书管理系统程序设计.docx
- 文档编号:5738072
- 上传时间:2022-12-31
- 格式:DOCX
- 页数:28
- 大小:275.40KB
图书管理系统程序设计.docx
《图书管理系统程序设计.docx》由会员分享,可在线阅读,更多相关《图书管理系统程序设计.docx(28页珍藏版)》请在冰豆网上搜索。
图书管理系统程序设计
四川师范大学成都学院高级语言程序课程设计
基于C语言的图书管理系统程序设计
学生姓名
XXX
学号
XXXX
所在学院
通信工程学院
专业名称
通信工程
班级
XXXX
指导教师
XX
成绩
四川师范大学成都学院
二○一四年十二月
基于C语言的图书管理系统程序设计
内容摘要:
图书管理系统是图书馆的重要组成部分,图书是我们最好的获取信息的方式,但由于图书馆图书收藏量大大增加,使传统的图书管理员的工作日益繁重起来,迫使人们起用新的管理方法来管理图书。
基于C语言的设计和开发图书馆管理系统的实践,阐述了图书管理软件中所应具有的功能、设计、实现。
介绍了图书管理系统的设计和系统功能的实现过程。
该系统可以运用于高校的图书管理,由图书编目,图书流通,标准管理,资料管理,系统维护等多个子系统组成,实现对新进图书基本信息的输入、图书基本信息的查询、对撤消图书信息的删除、为借书人办理注册、办理借书手续、办理还书手续等。
实现了图书资料的计算机网络管理。
关键词:
图书管理C语言程序设计
BasedontheClanguagelibrarymanagementsystemprogramdesign
Abstract:
Librarymanagementsystemisanimportantpartofthelibrary,thebookisourbestwaytogetinformation,butduetothelargeincreaseincollectionoflibrarybooks,sothatthetraditionallibrarian'sworkincreasinglyheavyup,forcingpeoplehirednewmanagementwaystomanagebooks.
BasedonthepracticeoftheClanguagelibrarymanagementsystemdesignanddevelopment,describedthelibrarymanagementsoftwareshouldhavethefunctionality,design,implementation.Describesthedesignandimplementationofsystemfunctionslibrarymanagementsystem.Thecollegelibrarymanagementsystemcanbeappliedbycataloging,bookcirculation,standardmanagement,datamanagement,systemmaintenance,andothersubsystemstorealizenewbooksintotheinputbasicinformation,basicinformationqueriesbooks,booksforrevocationdeleteinformation,registrationfortheborrower,forthelibraryproceduresapplyalsobookprocedures.Achieveacomputernetworkmanagementlibrarymaterials.
Keywords:
LibrarymanagementClanguageProgramdesign
基于C语言的图书管理系统程序设计
前言
图书馆管理信息系统是对学校图书进行全面信息管理的系统。
该管理系统可以有效地管理学校图书资源,记录学校与读者之间的使用书籍情况。
此外,根据读者的要求,实现书籍基本信息的输入,查询等几个方面的功能。
本系统可以作为独立的系统使用,它包括借阅信息管理、书籍信息管理、读者信息管理、系统管理四个主要的功能模块。
该管理系统力求给读者方便快捷的途径去及时了解书籍信息。
针对各个模块不同的数据表实现添加记录、修改记录、删除记录、以及查询显示记录等功能,所有的操作方便而快捷,并全面实现了图书馆管理的各项功能。
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++[1]是基于对象的快速应用程序开发工具,是当今最强大、最灵活的应用程序开发工具之一,具有良好的可视化应用程序开发环境和强大的可扩展数据库功能。
利用VisualC++提供的可视化组件库进行编程,可以快速、高效地开发出基于Windows环境的各类应用程序。
VisualC++语言的特点是面向对象设计的程序语言,VisualC++的基础编程语言是具有面向对象特性的语言,具有代码稳定、可读性好、编译速度快等优点,并将面向对象的概念移植到了C语言中,使这种基础语言有了新的发展空间。
与其它编程软件相比,特别是在数据库和网络应用方面,VisualC++具有简便易用、灵活高效的特点。
开发软件通常要经过修改[2]源代码、编译、测试、再修改、再编译、再测试等操作,这些操作形成了一个开发循环,所以快速的编译器可以大大地降低开发周期。
VisualC++正是建立在这种高效编译器的基础之上,是针对Windows的最快的高级语言代码编译器,因此生成的代码十分精练高效,使VisualC++程序的运行速度更快。
这也是本人使用VisualC++作为程序设计开发语言的重要原因。
3管理系统的总体设计与详细设计
3.1总体设计
总体设计目标:
使用者可以利用本系统进行对图书馆借阅的各项运算操作,如根据用户的需求自动的进行添加图书,删除图书,借书还书。
查找所要的图书,查阅图书的详细资料,查阅读者的详细资料。
最后清晰完整的结果于屏幕中。
大大方便使用者对图书借阅的操作,不仅节省时间,而且提高准确性,可以达到事半功倍的效果。
总体设计策略:
本系统采用的是[3]自顶向下、层次化的模块结构。
对高层模块,采用以事务为中心的设计策略,把一个大的模块逐步分解成较小的相对简单的模块。
对低层模块,采用以变换为中心的设计策略。
为了提高每个模块的内聚性、降低模块间的耦合性,将每个模块设计成具有单一功能的模块(即功能内聚),使模块间的联系完全是通过主模块的控制和调用来实现(即[4]非直接耦合)。
结合上述分析该系统应包括以下模块:
信息输入、信息删除,信息查询,信息显示,信息修改,图书借出、图书归还。
结构图如图3-1:
图3-1结构框图
图书数据:
序号、书名、作者、出版社、存数、总数。
3.2详细设计
●主函数
主函数要求设计比较简洁,只提供设[5]输入,处理和输出部分的函数调用。
其中各功能模块用菜单方式选择。
流程图如下图3-2:
图3-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;
}
●输入模块
分析:
该模块的功能是假如用户需要新加入新的图书信息,通过[6]键盘输入将新信息逐条加在原来输入文件上但不能覆盖原有信息。
流程图如下图3-3:
图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();}
●删除模块
分析:
该模块用于显示所有图书信息,由于记录[7]较多,故而采取分屏显示。
显示完所有纪录后,用户需输入图书编号进而查找图书信息。
流程图如下图3-4:
图3-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;
}
●查询模块
分析:
改模块功能应体现为用户输入图书书名,若有书则查询[8]出来。
流程图如下图3-5:
图3-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;}
●修改模块
分析:
该模块功能应体现为用户修改图书信息,若有记录则修改信息。
流程图如下图3-6:
图3-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;
}
●显示模块
分析:
该模块功能应体现为显示全部的图书信息。
流程图如下图3-7:
图3-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;
}
●借出模块
分析:
该模块功能应体现为用户输入图书序号,若有书则要求输入账号。
流程图如下图3-8:
图3-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();}
●归还模块
分析:
该模块功能应体现为方便用户归还图书
流程图如下图3-9:
图3-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文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 图书 管理 系统 程序设计
![提示](https://static.bdocx.com/images/bang_tan.gif)