图书借阅管理系统.docx
《图书借阅管理系统.docx》由会员分享,可在线阅读,更多相关《图书借阅管理系统.docx(14页珍藏版)》请在冰豆网上搜索。
图书借阅管理系统
《高级语言程序设计》
课程设计报告
题目:
图书借阅管理系统
专业:
班级:
姓名:
指导教师:
成绩:
计算机与信息工程系
2014年6月20日
目录
1目的要求1
2设计思路2
2.1系统需求分析2
2.2功能介绍2
2.3模块划分3
2.4数据流图3
3设计代码4
4总结15
1目的要求
设计一图书信息管理系统,使之能提供以下功能:
1)系统以菜单方式工作;
2)图书信息录入功能(图书信息用文件保存)——输入;
3)图书信息浏览功能——输出;
4)查询和排序功能:
(至少一种查询方式)——算法;
5)按书名查询;
6)按作者名查询;
7)图书信息的删除与修改(可选项)。
2设计思路
根据题目要求,应当把图书信息用结构体形式输入,再定义一个全局变量和文件指针进行整个程序的运行,然后把图书信息送到文件中去,所以应该提供下个结构体和文件的输入等操作:
在程序中需要实现图书信息录入,浏览,查询,删除和修改等功能的操作,所以需要建立相应的模块来实现:
另外还需提供选择菜单实现功能,在运行时达到所要求的目的。
2.1系统需求分析
经过以上对本系统的调研及可行性分析后,下面将对系统在功能上以及性能上进行进一步的需求分析。
2.2功能介绍
输入图书信息,出现一个"图书信息管理系统的主界面",其中有6个数字代表的选项,可以按相关的数字进行操作。
每一条记录包括一本书的书名、图书号、作者、出版时间、出版社名、价格。
0)退出:
如果在图书管理系统的主界面,则退出的是系统,如果是在子菜单下则返回到主界面。
1)录入新图书:
可以完成一条信息的输入,也可以完成多条信息的输入。
2)浏览图书信息:
学生可以浏览图书的相关信息,包括一本书的书名、图书号、作者、出版时间、出版社名、价格。
3)自主查询图书信息:
可以按书名或按作者查找图书的相关信息并显示。
4)删除图书信息:
只能通过图书号删除一本书的相关信息。
5)修改图书信息:
只能通过图书号进行修改该图书的相关信息。
2.3模块划分
图1系统功能模块图
2.4数据流图
图2系统数据流程图
3设计代码
#include
#include
#include
typedefstruct{
charnumber[10];//书号
charname[20];//书名
charauthor[20];//作者
charpublish[50];//出版社
chartime[20];//出版时间
floatprice;
}mbook;
typedefstruct{
intcount;//书的本数
mbookbook[100];//最大可有100本书
}mlibrary;
mlibrarylibrary;
voidsave()//保存图书信息。
{
FILE*fp;
if((fp=fopen("library.doc","w"))==NULL)
{
printf("\n不能保存图书信息\n");
return;
}
fwrite(&library.count,sizeof(int),1,fp);
fwrite(library.book,sizeof(library.book[0]),library.count,fp);
}
voidputin()/*定义录入函数*/
{
inty=1;
system("cls");
while(y)
{
printf("\t请输入您的书籍的书号:
");
scanf("%s",library.book[library.count].number);
printf("\t请输入书名:
");
scanf("%s",library.book[library.count].name);
printf("\t请输入作者名:
");
scanf("%s",library.book[library.count].author);
printf("\t请输入出版社:
");
scanf("%s",library.book[library.count].publish);
printf("\t请输入出版时间:
");
scanf("%s",library.book[library.count].time);
printf("\t请输入该书的价格:
");
fflush(stdin);
scanf("%f",&library.book[library.count].price);
library.count++;
printf("录入成功,恭喜您!
");
printf("\n是否继续录入(1.继续;0,退出录入):
");
fflush(stdin);
scanf("%d",&y);
if(y!
=1)
{
y=0;
break;
}
}
save();
}
voidlookup()
{
system("cls");
printf("图书号\t图书名\t作者名\t出版社\t出版日期\t图书价格\n");
for(inti=0;i{
printf("%s\t%s\t%s\t%s\t%s\t%6.2f\n",library.book[i].number,library.book[i].name,library.book[i].author,library.book[i].publish,library.book[i].time,library.book[i].price);
}
printf("\n查询结果如上按0键返回主菜单:
");
fflush(stdin);
getchar();
}
voidsearch_by_name()/*定义按书名查询*/
{
chars2[20];
intflag=1;
printf("\n请输入要查询的书名:
");
fflush(stdin);
scanf("%s",s2);
printf("图书号\t图书名\t作者名\t出版社\t出版日期\t图书价格\n");
for(inti=0;iif(strcmp(s2,library.book[i].name)==0)
{
flag=0;
printf("%s\t%s\t%s\t%s\t%s\t%6.2f\n",library.book[i].number,library.book[i].name,library.book[i].author,library.book[i].publish,library.book[i].time,library.book[i].price);
}
if(flag)
{
printf("查询错误!
按0键返回主菜单:
");
}
fflush(stdin);
getchar();
}
voidsearch_by_author()/*定义按作者名查询*/
{
chars3[20];
intflag=1;
printf("请输入要查询的书的作者:
");
fflush(stdin);
scanf("%s",s3);
printf("图书号\t图书名\t作者名\t出版社\t出版日期\t图书价格\n");
for(inti=0;iif(strcmp(s3,library.book[i].author)==0)
{
flag=0;
printf("%s\t%s\t%s\t%s\t%s\t%6.2f\n",library.book[i].number,library.book[i].name,library.book[i].author,library.book[i].publish,library.book[i].time,library.book[i].price);
}
if(flag)
{
printf("查询出错!
按0键返回主菜单:
");
}
fflush(stdin);
getchar();
}
voidsearch()/*定义查询函数*/
{
inta;
system("cls");/*进行清屏*/
printf("\t\t******************************\n");
printf("开始查询\n");
printf("\t\t\t1---------------按书名查询\n");
printf("\t\t\t2---------------按作者名查询\n");
printf("\t\t\t0---------------退出\n");
printf("\t\t******************************\n");
printf("\t\t请选择你想要的查询方式:
");
fflush(stdin);
scanf("%d",&a);
switch(a)
{
case1:
search_by_name();
break;
case2:
search_by_author();
break;
case0:
return;
}
}
voiddel()/*定义删除函数*/
{
charnumber[10];
system("cls");/*清屏*/
printf("\n请输入想要删除的书名:
");
fflush(stdin);
scanf("%s",number);
inti;
for(i=0;i{
if(strcmp(number,library.book[i].number)==0)break;
}
if(i!
=library.count)
{
for(;i{
strcpy(library.book[i].name,library.book[i+1].name);
strcpy(library.book[i].number,library.book[i+1].number);
strcpy(library.book[i].publish,library.book[i+1].publish);
strcpy(library.book[i].author,library.book[i+1].author);
strcpy(library.book[i].time,library.book[i+1].time);
library.book[i].price=library.book[i+1].price;
}
library.count--;
}
else
printf("\ncannotfound!
\n");
printf("删除成功按0键返回主菜单");
save();
fflush(stdin);
getchar();
}
voidupdate()//修改图书信息
{
charnumber[10];
system("cls");/*清屏*/
printf("\n请输入你要更改的图书名:
");
fflush(stdin);
scanf("%s",number);
inti;
for(i=0;i{
if(strcmp(number,library.book[i].number)==0)
{
printf("图书号\t图书名\t作者名\t出版社\t出版日期\t图书价格\n");
printf("%s\t%s\t%s\t%s\t%s\t%6.2f\n",library.book[i].number,library.book[i].name,library.book[i].author,library.book[i].publish,library.book[i].time,library.book[i].price);
break;
}
}
if(i!
=library.count)
{
mbookbook;
printf("\n\t\t请输入修改后此图书的信息\n");
printf("\t请输入图书号:
");
scanf("%s",book.number);
printf("\t请输入图书名:
");
scanf("%s",book.name);
printf("\t请输入作者名:
");
scanf("%s",book.author);
printf("\t请输入出版社:
");
scanf("%s",book.publish);
printf("\t请输入出版时间:
");
scanf("%s",book.time);
printf("\t请输入该书的价格:
");
fflush(stdin);
scanf("%f",&book.price);
strcpy(library.book[i].name,book.name);
strcpy(library.book[i].number,book.number);
strcpy(library.book[i].publish,book.publish);
strcpy(library.book[i].author,book.author);
strcpy(library.book[i].time,book.time);
library.book[i].price=book.price;
save();
printf("\n修改成功请按0键返回主菜单:
");
}
else
printf("\n修改出错!
请按0键返回主菜单:
\n");
fflush(stdin);
getchar();
}
voidmain()
{
FILE*fp;
if((fp=fopen("library.doc","r"))==NULL)
{
printf("\n不能打开图书信息库\n");
fp=fopen("library.doc","w+");
printf("\n初始化图书信息库,初始化之后要重启程序\n");
library.count=0;
fwrite(&library.count,sizeof(int),1,fp);
fclose(fp);
}
fread(&library.count,sizeof(int),1,fp);
fread(library.book,sizeof(library.book[0]),library.count,fp);
fclose(fp);
inta;
do
{
system("cls");
printf("\n\n\n\n\n\t\t\t\t图书信息管理系统\t\t\t\t\n");
printf("\t\t*********************************************\n");
printf("\t\t\t1------------------图书信息录入\n");
printf("\t\t\t2------------------图书信息浏览\n");
printf("\t\t\t3------------------图书信息查询\n");
printf("\t\t\t4------------------图书信息删除\n");
printf("\t\t\t5------------------图书信息修改\n");
printf("\t\t\t0-----------------退出图书信息系统\n");
printf("\t\t*********************************************\n");
printf("\t\t请输入操作类型:
");
fflush(stdin);
scanf("%d",&a);
switch(a)
{
case1:
putin();
break;
case2:
lookup();
break;
case3:
search();
break;
case4:
del();
break;
case5:
update();
break;
case0:
printf("\n\n退出\n\n");
break;
default:
printf("\n序号不对\n");
}
}while(a!
=0);
save();
}
4总结
通过课程设计,对《C语言》这门课程有了更深一步的了解。
它是计算机程序设计的重要理论技术基础,在我们软件工程专业的学习中占据着十分重要的地位。
这个程序的结构大体是从网络上借鉴的,但是结果无法运行,只能自己修改,最后终于调试通过,同时也使我们知道,要学好这门课程,仅学习书本上的知识是不够的,还要有较强的实践能力。
因为我们学习知识就是为了实践。
而只有多实践,多编写程序,才能更好的理解与掌握书本上的东西。