图书管理系统代码.docx
《图书管理系统代码.docx》由会员分享,可在线阅读,更多相关《图书管理系统代码.docx(18页珍藏版)》请在冰豆网上搜索。
图书管理系统代码
图书管理系统代码
//***********************
//图书馆管理系统
//***********************
#include
#include
#include
#definenull0
#definemax65536
staticintn;
//*********************
//图书结构体
//*********************
typedefstruct
{
charnum[10];//书号
charname[9];//书名
charaddr[31];//作者
intNowcounter;//现存量
intAllcounter;//总库存量
}datatype;
datatype*x[max];//定义两个指针数组
datatype*p;
//*****************************
//图书功能函数列表
//*****************************
voidredo();//主递归函数
voidcreatlist(datatype*x[]);//图书建立函数
intmenu_select();//功能菜单函数
voidfind(datatype*x[],intn);//查找函数
voiddelnode(datatype*x[]);//插入函数
voidprintlist(datatype*x[]);//显示函数
voidjieyue(datatype*x[],intn);//借阅函数
voidguihuan(datatype*x[],intn);//归还函数
//*****************************
//主递归函数程序
//*****************************
voidredo()
{
inti=0,j,n1,k=0,flage;
for(;;)
{
switch(menu_select())
{
case1:
//选项1的实现
printf("***********************\n");
printf("*图书的建立*\n");
printf("***********************\n");
creatlist(x);
break;
case2:
//选项2的实现
printf("***********************\n");
printf("*新图书信息的添加*\n");
printf("***********************\n");
printf("插入的个数:
");
scanf("%d",&n1);//输入插入新图书的个数
for(i=0;i{
flage=0;
p=(datatype*)malloc(sizeof(datatype));//分配一个节点空间
printf("书名:
");
scanf("%s",p->name);//输入插入书的书名
if(flage==0)
{
for(j=0;j{
if(strcmp(x[j]->name,p->name)==0)//调用比较函数查看书名是否已知
{
x[j]->Allcounter++;
x[j]->Nowcounter++;
flage=1;
}
}
if(flage==0)
{
n++;
printf("第%d个图书数据:
\n",n);//插入新的图书
p=(datatype*)malloc(sizeof(datatype));
x[n-1]=p;
printf("书名:
");
scanf("%s",x[n-1]->name);//输入书名
printf("编号:
");
scanf("%s",x[n-1]->num);//输入书号
printf("作者:
");
scanf("%s",x[n-1]->addr);//输入作者名
printf("总库存量:
");
scanf("%d",&x[n-1]->Allcounter);//输入总库存量
x[n-1]->Nowcounter=x[n-1]->Allcounter;
}
}
}
break;
case3:
printf("***********************\n");
printf("*图书信息的查询*\n");
printf("***********************\n");
find(x,n);
break;
case4:
printf("************************\n");
printf("*图书信息的删除*\n");
printf("************************\n");
delnode(x);
break;
case5:
printf("************************\n");
printf("*图书信息的显示*\n");
printf("************************\n");
printlist(x);
break;
case6:
printf("************************\n");
printf("图书的借阅\n");
printf("************************\n");
jieyue(x,n);
break;
case7:
printf("************************\n");
printf("图书的归还\n");
printf("************************\n");
guihuan(x,n);
break;
case0:
printf("\t谢谢使用,再见!
\n");
return;
}
}
}
//*************************
//主函数程序
//*************************
voidmain()
{
redo();//调用主递归函数
}
//*************************
//功能菜单函数
//*************************
intmenu_select()
{
inti;
printf("欢迎进入图书管理系统!
\n");
printf("===========================\n");
printf("1.图书信息的采集\n");
printf("2.新图书的插入\n");
printf("3.图书信息的查询\n");
printf("4.图书的删除\n");
printf("5.图书的显示\n");
printf("6.图书的借阅\n");
printf("7.图书的归还\n");
printf("0.退出管理系统\n");
printf("===========================\n");
printf("请选择0-7:
");
scanf("%d",&i);
while(i<0||i>7)
{
printf("\n\t输入出错,重选0-7:
");
scanf("%d",&i);
}
returni;
}
//********************************
//建立链表图书建造函数
//********************************
voidcreatlist(datatype*x[])
{
inti;
printf("请输入要建立图书的个数:
");
scanf("%d",&n);
for(i=0;i{
printf("第%d个图书数据:
\n",i+1);
p=(datatype*)malloc(sizeof(datatype));//分配一个节点空间
x[i]=p;
printf("书名:
");//输入图书各项内容
scanf("%s",x[i]->name);
printf("编号:
");
scanf("%s",x[i]->num);
printf("作者:
");
scanf("%s",x[i]->addr);
printf("总库存量:
");
scanf("%d",&x[i]->Allcounter);
x[i]->Nowcounter=x[i]->Allcounter;
}
}
//**********************************
//查找函数程序
//*********************************
voidfind(datatype*x[],intn)
{
charnum[10];
charname[9];
intt,i;
printf("=================\n");//输出查找方式
printf("1.按编号查询\n");
printf("2.按书名查询\n");
printf("=================\n");
printf("请选择:
");
scanf("%d",&t);//输入选择信息
if(t==1)
{
printf("请输入要查找者的编号:
");
scanf("%s",num);//输入书号
for(i=0;i{
if(strcmp(x[i]->num,num)==0)//调用strcmp函数
{
printf("编号书名作者现库存量总库存量\n");//输出要查询书的信息
printf("%-10s%-10s%-10s%-10d%-10d\n",x[i]->num,x[i]->name,x[i]->addr,x[i]->Nowcounter,x[i]->Allcounter);
}
else
continue;
}
}
else
{
printf("请输入要查询的书名:
");
scanf("%s",name);//输入书名
for(i=0;i{
if(strcmp(x[i]->name,name)==0)
{
printf("编号书名作者现库存量总库存量\n");//输出要查询书的信息
printf("%-10s%-10s%-10s%-10d%-10d\n",x[i]->num,x[i]->name,x[i]->addr,x[i]->Nowcounter,x[i]->Allcounter);
}
else
continue;
}
}
}
//******************************
//删除函数程序
//******************************
voiddelnode(datatype*x[])
{
charnum1[10],name1[10];//定义两个字符数组
inti,j,m=1,p;
printf("1.按编号删除\n");//输出选择方式
printf("2.按书名删除\n");
printf("3.返回\n");
printf("请选择:
\n");
scanf("%d",&p);//输入选择信息
if(p>3||p<1)
{
printf("您的输入有误,请重新输入!
\n");
scanf("%d",&p);//重新输入选择信息
}
switch(p)//实现删除程序
{
case1:
printf("输入要删除书的编号:
\n");
scanf("%s",num1);
for(i=0;i{
if(strcmp(x[i]->num,num1)==0)//调用strcmp函数
{
m=0;
n--;
for(j=i;jx[j]=x[j+1];//将该书信息删除
printf("该书已删除!
\n");
}
}
if(m==1)
printf("没有这样的的图书\n");
break;
case2:
printf("输入要删除书的名字:
\n");
scanf("%s",&name1);
for(i=0;i{
if(strcmp(x[i]->name,name1)==0)//调用strcmp函数
{
m=0;
n--;
for(j=i;jx[j]=x[j+1];
printf("该书已删除!
\n");
}
}
if(m==1)
printf("没有这样的的图书\n");
break;
case3:
break;
}
}
//////////////////////////
////借阅函数程序
/////////////////////////
voidjieyue(datatype*x[],intn)
{
inti,m=1,p;
charname1[10],num1[10];//定义两个字符数组
printf("1.按名字借阅\n");//输出选择方式
printf("2.按编号借阅\n");
printf("3.返回\n");
printf("请选择\n");
scanf("%d",&p);//输入选择信息
if(p>3||p<1)
{
printf("您的输入有误!
\n");
scanf("%d",&p);//重新输入选择信息
}
switch(p)//实现查询程序
{
case1:
printf("请输入你要的书的名字!
\n");
scanf("%s",&name1);//输入书名
for(i=0;i{
if(strcmp(x[i]->name,name1)==0)//调用strcmp函数
{
m=0;
if(x[i]->Nowcounter!
=0)
x[i]->Nowcounter--;
printf("借书成功!
\n");
if(x[i]->Nowcounter==0)
printf("这本书已经没有了\n");
}
}
if(m==1)
printf("您要的书不存在!
\n");
break;
case2:
printf("请输入你要的书的编号!
\n");
scanf("%s",&num1);//输入书号
for(i=0;i{
if(strcmp(x[i]->num,num1)==0)//调用strcmp函数
{
m=0;
if(x[i]->Nowcounter!
=0)
x[i]->Nowcounter--;//现存书数量减1
printf("借书成功!
\n");
if(x[i]->Nowcounter==0)
printf("这本书已经没有了\n");
}
}
if(m==1)
printf("您要的书不存在!
\n");
break;
case3:
break;
}
}
///////////////////////
/////归还程序
//////////////////////
voidguihuan(datatype*x[],intn)
{
inti,q,m=1;
charname1[10],num1[10];//定义两个字符数组
printf("1.按书名归还\n");//输出可选择方式
printf("2.按书号归还\n");
printf("3.返回\n");
printf("请选择\n");
scanf("%d",&q);//输入选择信息
if(q>3||q<1)
{
printf("您的输入有误!
\n");
scanf("%d",&q);//重新输入选择信息
}
switch(q)//实现归还程序
{
case1:
printf("输入归还书的书名:
");
scanf("%s",&name1);//输入书名
for(i=0;i{
if(strcmp(x[i]->name,name1)==0)
{
m=0;
x[i]->Nowcounter++;
printf("此书归还成功!
\n");
printf("此书的存储情况\n");
printf("编号书名作者现存量总存量\n");
printf("===============================================\n");
printf("%-10s%-10s%-10s%-10d%-10d\n",x[i]->num,x[i]->name,x[i]->addr,x[i]->Nowcounter,x[i]->Allcounter);
printf("===============================================\n");
}
if(strcmp(x[i]->name,name1)==0)
continue;
}
if(m==1)
printf("此书不是图书馆的!
\n");
break;
case2:
printf("输入归还书的书号\n");
scanf("%s",&num1);//输入书号
for(i=0;i{
if(strcmp(x[i]->num,num1)==0)
{
m=0;
x[i]->Nowcounter++;//显存书增加1
printf("此书归还成功!
\n");
printf("此书的存储情况\n");
printf("编号书名作者现存量总存量\n");
printf("==============================================\n");
printf("%-10s%-10s%-10s%-10d%-10d\n",x[i]->num,x[i]->name,x[i]->addr,x[i]->Nowcounter,x[i]->Allcounter);
printf("==============================================\n");
}
if(strcmp(x[i]->num,num1)==0)//调用strcmp函数
continue;
}
if(m==1)
printf("此书不是图书馆的!
\n");
break;
case3:
break;
}
}
//**************************************
//输出程序
//**************************************
voidprintlist(datatype*x[])
{
inti;
printf("编号书名作者现存量总存量\n");//输出图书各项信息
for(i=0;i{
printf("%-10s%-10s%-10s%-10d%-10d\n",x[i]->num,x[i]->name,x[i]->addr,x[i]->Nowcounter,x[i]->Allcounter);
}
printf("===============================================\n");
}