xx师范学院信号分析与处理基于C语言的图书管理系统程序设计.docx
《xx师范学院信号分析与处理基于C语言的图书管理系统程序设计.docx》由会员分享,可在线阅读,更多相关《xx师范学院信号分析与处理基于C语言的图书管理系统程序设计.docx(31页珍藏版)》请在冰豆网上搜索。
xx师范学院信号分析与处理基于C语言的图书管理系统程序设计
xx师范大学成都学院信号分析与处理
基于C语言的图书管理系统程序设计
学生姓名
x
学号
x
所在学院
x
专业名称
x
班级
xx班
指导教师
x
成绩
x学院
二○一四年十二月
课程设计任务书
学生姓名
xx
学生学号
x
学生专业
x
学生班级
x
指导教师
x
职称
xx
发题日期
2014年10月23日
完成日期
2014年11月15日
设计题目
基于C语言的图书管理系统程序设计
设计目的:
1、初步了解软件开发的一般方法和步骤;
2、提高学生用C语言进行文件操作和绘图应用的编程技术水平;
3、提高撰写技术文档的能力。
具体任务及要求:
任务:
利用C语言的文件操作能力设计开发一个图书管理系统,实现对新进图书基本信息的输入、图书基本信息的查询、对撤消图书信息的删除、为借书人办理注册、办理借书手续、办理还书手续等。
要求:
1、必须有完整程序及必要的解释说明;
2、必须有运行结果;
3、写出设计课程设计报告。
课程设计进度安排:
序号
内容安排
时间
1
阅读题目并分析课题内容,提前安排进度
10.22—10.23
2
查找资料,并与同学讨论课题要求
10.25—10.28
3
通过软件实现课题要求,完成各个模块
11.1—11.3
4
完成所有的课题,并与同学分享,相互检验
11.4—11.6
5
完成实验报告,交老师检查
11.10—11.12
课程设计参考文献:
[1]谭浩强.C语言程序设计教程.清华大学出版社,2005,7:
161-166
[2]苏小红.C语言大学使用教程.电子工业出版社,2004,7:
89-92
[3]王敬华,林萍,张维.语言程序设计[M].北京:
清华大学出版社,2003.4
[4]朱三元.计算机应用与软件[J],2004(02):
18-20
指导教
师签字
院长审核签字
基于C语言的图书管理系统程序设计
内容摘要:
人类已经跨入了新世纪,正在进入信息化时代。
信息化浪潮、网络革命在给社会来冲击的同时,也使图书馆业务受到了强烈的冲击,图书馆传统的管理和服务方式已不能适应读者对日益增长的文献信息的需求。
随着馆藏量的不断增加,图书资料的录入和查询的难度也就相应增加,数据处理手工操作,工作量大,出错率高,出错后不易更改的手工方式,已经不能满足要求。
基于此问题,建立一个规范化,系统化,程序化的图书管理系统迫不急待。
为方便对图书馆书籍、读者资料、借还书等进行高效的管理,特编写程序以提高图书馆的管理效率。
使用程序之后,工作人员可以查询某位读者、某种图书的借阅情况,还可以对当前图书借阅情况进行一些统计,以便全面掌握图书的流通情况等等。
关键词:
语言图书管理数据处理信息技术
ThebooksmanagementsystembasedonClanguageprogramdesign
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.
基于C语言的图书管理系统程序设计
前言
图书馆作为一种信息资源的集散地,图书和用户借阅资料繁多,包含很多的信息数据的管理,现今,有很多的图书馆都是初步开始使用,甚至尚未使用计算机进行信息管理。
图书馆数据处理工作量大,容易出错,由于数据繁多,容易丢失,且不易查找。
为了使图书借阅管理系统既能够提高工作效率,又可以提高工作水平。
我使用visualC++6.0作为开发工具,设计了一个可以实现图书增删改查、借书还书的一个图书借阅管理系统。
1本课题的开发背景
随着社会信息量的与日俱增,作为信息存储的主要媒体之一图书,数量、规模比以往任何时候都大的多,不论个人还是图书管理部门都需要使用方便而有效的方式来管理自己的书籍。
在计算机日益普及的今天,对个人而言若采用一套行之有效的图书管理系统来管理自己的书籍,会方便许多。
对图书管理部门而言,以前单一的手工检索已不能满足人们的要求,为了便于图书资料的管理需要有效的图书管理软件。
计算机网络近年来获得飞速的发展,十年前,很少有人接触过网络。
如今,计算机网络已经成为我们社会结构的一个基本组成部分。
网络已被应用到人类生活的各个方面,人们通过网络通信,共享资源,网上超市、电子银行等也应运而生,各种提供不同特色,不同内容的网站如雨后春笋般涌现。
计算机网络的发展为人们打开了一种新的视野,促成了一个新领域新产业的产生。
网络的发展试图用一种全新的概念冲击各个传统的商业模式,改变人们的生活方式。
新的需求产生了,人们想通过网络进行个人通信、媒体传播、商业运作、办公、教学等。
总之网络技术的发展促进了社会经济结构的变革。
反之,社会经济对网络发展提出的新的需求又大大的促进了网络的发展,计算机网络及其所涉及的一系列技术成为计算机领域新的研究热点。
在计算机日益普及的今天,对个人而言若采用一套行之有效的图书管理系统来管理自己的书籍,会方便许多。
对图书管理部门而言,以前单一的手工检索已不能满足人们的要求,为了便于图书资料的管理需要有效的图书管理软件。
该软件采用功能强大的数据库软件开发工具进行开发,具有很好的可移植性,可在应用范围较广的WINDOWS系列等操作系统上使用。
除此以外,图书馆管理系统已成为方便了广大师生、学校与外界之间的沟通架起了一座桥梁。
但是,这并不能满足目前师生的需要。
比如一些特定的需要要,在管理方面特别不方便,因为它受到地域的限制太大。
就目前情况而言,急需充分利用网络方式的图书管理。
我们的网络图书馆管理系统就是为了解决这问题而设计的。
经过分析,我们使用microsoft公司的visualC++开发工具。
利用其提供的各种面向对象的开发工具能方便而简洁建立系统应用原型,然后,对初始原型系统进行需求迭代,不断修正和改进,直到形成用户满意的可行系统。
1.1本课题要达到的设计目标
本系统可以实现以下功能:
●系统以菜单方式工作;v
●图书信息录入功能(图书信息用文件保存);
●图书信息浏览功能;
●查询功能;
●图书信息的删除与修改;
●办理借书手续;
●办理还书手续等等;
●退出程序。
2系统设计
本图书管理系统包含8个模块:
借书模块、还书模块、新书入库模块、注销书模块、查询图书信息模块、查询作者信息模块、排序模块、退出模块。
2.1开发技术及工具
本系统是以WindowsXP/7为环境,VC++6.0为应用程序,主要以C语言为编程语言完成代码的编写。
VC++6.0是微软公司推出的开发Win32应用程序(Windows95/98/2000/XP/NT)的、面向对象的可视化集成工具。
它的最大优点就是提供了功能强大的MFC类库,MFC是一个很大的C++类层次结构,其中封装了大量的类及其函数,很多Windows程序所共有的标准内容可以由MFC的类来提供,MFC类为这些内容提供了用户接口的标准实现方法,程序员所要做的就是通过预定义的接口把具体应用程序特有的东西填入这个轮廓,这将简化编程工作,大大的减少程序员编写的代码数量,使编程工作变得更加轻松容易。
C语言是最基本的编程语言,其有以下优点:
●数据结构丰富。
C语言的数据类型有:
整型、实型、字符型、数组类型、指针类型、结构体类型、共用体类型等。
能用来实现各种复杂的数据结构的运算。
并引入了指针概念,使程序效率更高。
另外C语言具有强大的图形功能,支持多种显示器和驱动器。
且计算功能、逻辑判断功能强大。
●C是结构式语言。
结构式语言的显著特点是代码及数据的分隔化,即程序的各个部分除了必要的信息交流外彼此独立。
这种结构化方式可使程序层次清晰,便于使用、维护以及调试。
C语言是以函数形式提供给用户的,这些函数可方便的调用,并具有多种循环、条件语句控制程序流向,从而使程序完全结构化。
●C语法限制不太严格,程序设计自由度大。
虽然C语言也是强类型语言,但它的语法比较灵活,允许程序编写者有较大的自由度。
●C语言允许直接访问物理地址,可以直接对硬件进行操作。
由于C语言允许直接访问物理地址,可以直接对硬件进行操作,因此它既具有高级语言的功能,又具有低级语言的许多功能,能够像汇编语言一样对位、字节和地址进行操作,而这三者是计算机最基本的工作单元,可用来写系统软件。
2.2系统功能模块
主函数是程序入口,采用模块化设计。
首先在主程序中调出欢迎界面,定义一些必要变量,作一无限循环程序,循环体为一开关语句,该语句设置一个断点,其条件值是通过调用主菜单函数得到的返回值,根据该值,调用相应的功能函数,同时设置一个断点,当返回值为一定条件时结束程序。
图2.1总体结构图
2.3系统主要流程分析
否是
否是
图2.2增加图书
2.3.1借书
该模块是对借阅图书进行相应操作。
运用if语句进行判断选择,看目录中试否有该书信息,有则根据提示进行相应操作。
运用while循环判当借书的数量是否大于库存量时,大于则要求再次输入,直至输入达到要求为止。
voidbook_out(void)
{intn,s,l,d,x;......
if((n=search_book())!
=-1&&books[n].store>0)
{。
。
。
输入查询信息部分......
while(x>books[n].store)
{......输入信息部分
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=books[n].store-x;}
if(n!
=-1&&books[n].store==0)......}
2.3.2还书
该模块是对归还图书进行相应操作。
运用if语句进行判断选择,看目录中试否有该书信息,有则根据提示进行相应操作。
运用while循环判归还图书的数量是否大于库存量与现存量之差,大于则要求再次输入,直至输入达到要求为止。
voidbook_in(void)
{intn,s,l,x;......
if((n=search_book())!
=-1&&books[n].store{printf("借阅者图书证列表:
\n");
for(l=0;l<10;l++)
if(books[n].usr[l]!
=0)......输入信息部分
while(x>(books[n].total-books[n].store))
输入归还信息...
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=books[n].store+x;}
if(n!
=-1&&books[n].store==books[n].total)......;}
2.3.3新书入库
该模块是把新进图书进行入库处理,可输入图书的一些基本信息。
例如:
书号、书名、作者、现存量和库存量。
intbook_add(void)
{charc;
intn;......
for(n=0;n<100;n++)
if(books[n].id==0)break;
图书的信息录入。
。
。
books[n].store=books[n].total;
return_confirm();c=getchar();
returnn;}
2.3.4注销书
该部分是图书目录中已有图书进行注销处理,删除该书在目录中的各种信息。
voidbook_del(void)
{intn;
......
if((n=search_book())!
=-1)books[n].id=0;
printf("该书已注销.\n");
......}
2.3.5排序
对输入图书的编号进行升序排列。
当图书目录为空时,显示“库存中无此书”。
运用双层循环,i和j比较,i为0为止图书书号,j为i的下一个图书书号,当i书号大于j书号。
运用第三变量进行交换,例如:
a=b;b=c;c=a;。
voidpaixu(void)/*排序*/
{chart2[10];
chart3[10];
intt4;intt5;intt,i,j;
system("cls");
for(i=0;i<100;i++)
{for(j=i+1;j<100;j++)
if(books[i].id>books[j].id)
{t=books[i].id;strcpy(t2,books[i].name);
strcpy(t3,books[i].author);t4=books[i].total;t5=books[i].store;
books[i].id=books[j].id;strcpy(books[i].name,books[j].name);
strcpy(books[i].author,books[j].author);
books[i].total=books[j].total;books[i].store=books[j].store;
books[j].id=t;strcpy(books[j].name,t2);
strcpy(books[j].author,t3);books[j].total=t4;
books[j].store=t5;}}
printf("恭喜你排序成功!
\n");
for(i=0;i<100;i++)
if(books[i].id!
=0)
{打印图书信息...}
......;}
2.3.6查询图书信息
该模块是对指定图书编号进行查询。
当输入一需查询图书书号后,在图书目录中进行查询,用if判断是否有此书。
有则打印该书信息。
无则打印“图书书号不存在”。
intbook_reader(void)
{system("cls");
intn,i;
printf("请输入图书序号:
");
scanf("%d",&i);
for(n=0;n<100;n++)
{if(books[n].id==i)
......打印图书信息。
。
returnn;}}
printf("\n输入有错或图书序号不存在!
\n");
return-1;}
2.3.7查询作者信息
当选择该模块后,输入要查询的作者信息后,会打印出该作者所著的所有书籍。
用strmp进行字符串比较,当strmp=0时,查找到该作者,打印信息。
intbook_writer(void)
{intn;
charwriter[20],c;
作者信息的输入。
for(n=0;n<100;n++)
{if(strcmp(writer,books[n].author)==0){打印图书信息}}......
3系统实现
系统共定义了三个结构体类型,包括会员类型、图书类型和借书卡类型。
在此系统中应用了结构体,基本的指针运用,基本的循环语句,函数的调用,switch语句,文件保存,fwrite函数等来实现的。
图3.1主菜单
3.1新书入库
序号:
02书名:
语文作者:
asd数量:
50
01书名:
数学作者:
qwe数量:
20
图3.2新书入库
3.2排序
序号:
01书名:
数学作者:
qwe数量:
20
序号:
02书名:
语文作者:
asd数量:
50
图3.3排序
3.3查询图书信息
请输入图书序号:
01
书名:
数学作者:
qwe数量:
20
图3.4查询图书信息
3.4查询作者信息
请输入作者姓名:
asd
书名:
语文作者:
asd数量:
50
图3.5查询作者信息
3.5借书
请输入图书序号:
01
书名:
数学作者:
qwe存数:
20总数:
20
请输入借书证序号(图书证):
01
请输入可借天数:
3
请输入要借数量:
10(当输入值超过总数会提示重新输入)
(这时候可以进行查询图书现存量检测是否已借出)
图3.6借书
3.6还书
请输入图书序号:
01
书名:
数学作者:
qwe存数:
10总数:
20
请输入借书证序号(图书证):
01
请输入所还数量:
10
(全部入藏。
这是可以进行图书查询检查是否全部入藏)
图3.7还书
3.7注销书
请输入图书序号:
02
书名:
语文作者:
asd数量:
50
该书已注销!
!
这是可进行图书查询检测是否已经注销)
图3.8注销书
4结束语
通过这次设计,使我对C语言有了更进一步的认识和了解,要想学好它要重在实践,要通过不断的上机操作才能更好地学习它,我也发现我的好多不足之处,首先是自己在指法上还不行,经常按错字母,通过学习也有所改进;再有对C语言的一些标准库函数不太了解,还有对函数调用的正确使用不够熟悉,还有对C语言中经常出现的错误也不了解,通过实践的学习,我认识到学好计算机要重视实践操作,不仅仅是学习C语言,还是其它的语言,以及其它的计算机方面的知识都要重在实践,所以后在学习过程中,我会更加注视实践操作,使自己便好地学好计算机。
在实习过程中,收获知识,提高能力的同时,我也学到了很多人生的哲理,懂得怎么样去制定计划,怎么样去实现这个计划,并掌握了在执行过程中怎么样去克服心理上的不良情绪。
因此在以后的生活和学习的过程中,我一定会把这种精神带到生活中,不畏艰难,勇往直前!
附录
附录1:
系统共定义了一个图书类型结构体,定义如下:
structbook//定义图书类型结构体
{
intbooknum;//图书号
charbookname[20];//图书名
floatbookprice;//图书价格
intstore;//库存量
charbookcreat[20];//作者
}book[1000];//定义一个比较大的1000本书
附录2:
图书信息管理模块的函数定义
//=============================================================//
//功能:
从键盘输入一本图书的全部信息
//参数:
i表示对第i本图书进行输入操作
//返回:
return
//主要思路:
先进入panduan函数,判断书号是否重复,如果重复就重新输入。
按提示信息用scanf输入图书的各项信息,定义指向文件的指针变量fp,使其指向“book.txt”并以追加的方式打开文件,依次从键盘读入图书的各个信息,写入文件,然后关闭文件。
附录3:
structBOOK
{
intid,total,store;
charname[30],author[20],usr[10],days[10];
}
books[100];
/*结构体,存放书籍及借书信息。
*/
voidpage_title(char*menu_item)
{
printf("\t>>>欢迎进入图书管理系统--请按要求操作<<<\n\n-%s-\n\n",menu_item);
}
/*页头函数,可以通过参数menu_item,显示当前状态。
*/
voidreturn_confirm(void)
{
printf("\n任意键返回……\n");
getch();
}
/*返回前请求确认函数,方便返回前观察结果*/
intsearch_book(void)
{
intn,i;
printf("请输入图书序号:
");
getch();
scanf("%d",&i);
for(n=0;n<100;n++)
{
if(books[n].id==i)
{
printf("书名:
%s\