C语言程序设计大作业图书管理系统docx.docx
《C语言程序设计大作业图书管理系统docx.docx》由会员分享,可在线阅读,更多相关《C语言程序设计大作业图书管理系统docx.docx(18页珍藏版)》请在冰点文库上搜索。
![C语言程序设计大作业图书管理系统docx.docx](https://file1.bingdoc.com/fileroot1/2023-6/20/61ec3e55-2893-4c94-8635-47d245730ec8/61ec3e55-2893-4c94-8635-47d245730ec81.gif)
C语言程序设计大作业图书管理系统docx
C语言程序设计大作业
设计报告
一.设计方案
本程序旨在用一个C语言程序实现简单的图书馆图书管理系统,程序包含平时的借书,还书,新书录入,查询功能,用简单明了的人机交互界面快速实现图书管理的目的。
二.模块说明及代码分析
1.主函数:
源代码:
voidmain()
{
inta;
printf("\n");
printf("\n");
printf("(^_^)WELCOME!
\n");
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf("\t〉〉-------------BJTU图书管理系统--------------〈〈");
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf("\n");
do{
printf("1.借书2.还书3.新书录入4.查询0.退出");
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf("请选择序号:
");
scanf("%d",&a);
switch(a)
{
case1:
jieshu();break;
case2:
huanshu();break;
case3:
xinshu();break;
case4:
chaxun();break;
case0:
break;
default:
printf("请选择正确的序号!
\n");printf("\n");
}
}while(a!
=0);
printf("谢谢使用图书管理系统!
\n");
}
主函数提供人机交互界面,让操作者选择所需的操作项目,并有退出选项。
2.新书录入模块
源代码:
voidxinshu()
{
inti;
FILE*fp;
if((fp=fopen("library.txt","w"))==NULL)
{
printf("打开文件失败!
\n");
exit(0);
}
printf("请输入要录入的新书的编号:
");
scanf("%d",&s[count].number);
for(i=0;i{
if(s[i].number==s[count].number)
{
printf("编号已存在,请重新输入:
");
scanf("%d",&s[count].number);
}
}
printf("请输入图书名称:
");
scanf("%s",&s[count].name);
printf("请输入图书作者:
");
scanf("%s",&s[count].author);
printf("请输入图书数量:
");
scanf("%d",&s[count].shuliang);
count++;
fclose(fp);
printf("录入成功!
\n");
printf("\n");
printf("\n");
printf("\n");
}
新书录入模块实现了新书的编号、书名、作者、数量的录入,并设计有输入错误时的提示。
3.借书模块
源代码:
voidjieshu()
{
intb,i,shu;
printf("请输入要借书的编号:
");
scanf("%d",&b);
for(i=0;i<=count;i++)
{
if(s[i].number==b)
{
printf("您要借的书是:
\n");
printf("\t编号\t书名\t作者\t数量\n");
printf("\t%d\t%s\t%s\t%d\n",s[i].number,s[i].name,s[i].author,s[i].shuliang);
printf("确认后请输入要借书的数量:
");
scanf("%d",&shu);
if((s[i].shuliang-shu)>=0)
{
printf("借书成功!
");
s[i].shuliang=s[i].shuliang-shu;
}
else
{
printf("抱歉,图书数量不够><请重新输入:
");
scanf("%d",&shu);
}
}
printf("\n");
printf("\n");
printf("\n");
}
}
借书模块实现了对指定图书的借出,并在借出时程序将图书数量自行减去借出数量,在所借图书数量超过现有数量时给出提示。
4.还书模块
源代码:
voidhuanshu()
{
inti,d,e;
printf("请输入要还书的编号:
");
scanf("%d",&d);
for(i=0;i<=count;i++)
{
if(s[i].number==d)
{
printf("请输入要还书的数量:
");
scanf("%d",&e);
s[i].shuliang=s[i].shuliang+e;
printf("还书成功!
\n");
break;
}
}
if(i>count)
{
printf("此图书不存在");
}
printf("\n");
printf("\n");
printf("\n");
}
还书模块实现简便的还书过程,并用count的变化来调整图书数量。
5.查询模块
源代码:
voidchaxun()
{
inti,f;
printf("请输入要查找图书的编号:
");
scanf("%d",&f);
for(i=0;i{
if(s[i].number==f)
{
printf("您要查询的图书是:
\n");
printf("\t编号\t书名\t作者\t数量\n");
printf("\t%d\t%s\t%s\t%d\n",s[i].number,s[i].name,s[i].author,s[i].shuliang);
break;
}
}
if(i>count)
{
printf("此图书不存在\n");
}
printf("\n");
printf("\n");
printf("\n");
}
该模块实现对图书的查询功能,通过对图书编号的检索,给出该图书的对应信息,包括图书名称、作者、剩余数量。
三.数据文件名
数据文件名为library.txt,用于新书录入的数据存储。
四.系统运行测试结果分析
交互界面:
新书录入:
借书:
当所借数量小于等于所存数量时,即显示结束成功。
当所借书数量超过图书总量,则给出提示,重新输入。
查询:
从借书后的查询结果与新书录入时的数量相比较,可以看出已经减去所借出的图书数量。
还书:
还回借出的两本书里的一本后,经查询可得数量得到相对应的减少。
退出:
收获与体会:
经过一学期的C语言程序设计的学习后,对于C语言有了初步的认识,并能开始写简单的程序,但是对于这个大作业还是烦恼了一阵子,由于程序会写的很长,调试过程也会比较困难,所以我们决定组队一起完成这个大程序,xxx负责主函数以及借书、新书模块以及函数的调试过程等,xxxx负责查询、还书模块以及设计报告的封面等,
这个大程序占用了我们很多时间,调试过程中遇到了很多疑惑,也找过大神求助过,最后好不容易可以运行了,也是出现了好多小问题,就这样反反复复,最后的最后,得到成功的时候,我们都欢呼雀跃了,感觉到程序设计的神奇,看到自己写的程序可以实现这样的小功能就觉得非常自豪,当然,过程中也显示了我们的知识不扎实,才会如此辛苦,看来,学好C语言并不是一件容易的事,但是我们相信,只要有一次成功,就会有更多的成功。
我想,这就是我们学到的吧。
设计人员:
xxx:
设计报告封面,查询还书模块
xxx:
主函数,借书新书模块,程序运行调试
全代码:
#include
#include
#include
structBOOK
{
charname[20];charauthor[20];
intnumber,shuliang;
}s[10000];
intcount=0;
voidjieshu();
voidhuanshu();
voidxujie();
voidxinshu();
voidchaxun();
voidmain()
{
inta;
printf("\n");
printf("\n");
printf("(^_^)WELCOME!
\n");
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf("\t〉〉-------------BJTU图书管理系统--------------〈〈");
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf("\n");
do{
printf("1.借书2.还书3.新书录入4.查询0.退出");
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf("请选择序号:
");
scanf("%d",&a);
switch(a)
{
case1:
jieshu();break;
case2:
huanshu();break;
case3:
xinshu();break;
case4:
chaxun();break;
case0:
break;
default:
printf("请选择正确的序号!
\n");printf("\n");
}
}while(a!
=0);
printf("谢谢使用图书管理系统!
\n");
}
voidxinshu()
{
inti;
FILE*fp;
if((fp=fopen("library.txt","w"))==NULL)
{
printf("打开文件失败!
\n");
exit(0);
}
printf("请输入要录入的新书的编号:
");
scanf("%d",&s[count].number);
for(i=0;i{
if(s[i].number==s[count].number)
{
printf("编号已存在,请重新输入:
");
scanf("%d",&s[count].number);
}
}
printf("请输入图书名称:
");
scanf("%s",&s[count].name);
printf("请输入图书作者:
");
scanf("%s",&s[count].author);
printf("请输入图书数量:
");
scanf("%d",&s[count].shuliang);
count++;
fclose(fp);
printf("录入成功!
\n");
printf("\n");
printf("\n");
printf("\n");
}
voidhuanshu()
{
inti,d,e;
printf("请输入要还书的编号:
");
scanf("%d",&d);
for(i=0;i<=count;i++)
{
if(s[i].number==d)
{
printf("请输入要还书的数量:
");
scanf("%d",&e);
s[i].shuliang=s[i].shuliang+e;
printf("还书成功!
\n");
break;
}
}
if(i>count)
{
printf("此图书不存在");
}
printf("\n");
printf("\n");
printf("\n");
}
voidchaxun()
{
inti,f;
printf("请输入要查找图书的编号:
");
scanf("%d",&f);
for(i=0;i{
if(s[i].number==f)
{
printf("您要查询的图书是:
\n");
printf("\t编号\t书名\t作者\t数量\n");
printf("\t%d\t%s\t%s\t%d\n",s[i].number,s[i].name,s[i].author,s[i].shuliang);
break;
}
}
if(i>count)
{
printf("此图书不存在\n");
}
printf("\n");
printf("\n");
printf("\n");
}
voidjieshu()
{
intb,i,shu;
printf("请输入要借书的编号:
");
scanf("%d",&b);
for(i=0;i<=count;i++)
{
if(s[i].number==b)
{
printf("您要借的书是:
\n");
printf("\t编号\t书名\t作者\t数量\n");
printf("\t%d\t%s\t%s\t%d\n",s[i].number,s[i].name,s[i].author,s[i].shuliang);
printf("确认后请输入要借书的数量:
");
scanf("%d",&shu);
if((s[i].shuliang-shu)>=0)
{
printf("借书成功!
");
s[i].shuliang=s[i].shuliang-shu;
}
else
{
printf("抱歉,图书数量不够><请重新输入:
");
scanf("%d",&shu);
}
}
printf("\n");
printf("\n");
printf("\n");
}
}