📄 书籍管理系统.txt
字号:
break;
}
q=q->next;
}while(q!=NULL);
if(x==0)
{printf("%s\n","未找到");
}
else/*找到了书*/
{
q=head->next;
/*打印出书的序号,以便删除*/
while(q!=NULL)
{if(strcmp(q->bookname,p->bookname)==0)
{printf("第%d本书:\n",k);/*在%d的地方输出k的值*/
printf("书名:");
printf("%s\n",q->bookname);
printf("书目编号:");
printf("%d\n",q->booknumber);
printf("序号:");
printf("%d\n",q->queuenumber);
printf("\n");
k++;
}
q=q->next;
/*打印出书的序号,以便删除*/
while(q!=NULL)
{if(strcmp(q->bookname,p->bookname)==0)
{printf("第%d本书:\n",k);/*在%d的地方输出k的值*/
printf("书名:");
printf("%s\n",q->bookname);
printf("书目编号:");
printf("%d\n",q->booknumber);
printf("序号:");
printf("%d\n",q->queuenumber);
printf("\n");
k++;
}
q=q->next;
} /*显示库存*/
printf("请输入要删除的书目编号");
scanf("%d",&p->booknumber);
printf("请输入要删除的书的序号");
scanf("%d",&p->queuenumber);
q=head->next;
/*因为第一个数据不好在循环里比较,所以这里提前比较一次*/
if((q->booknumber==p->booknumber)&&(q->queuenumber==p->queue
number))
{
head->next=q->next;
printf("%s\n","删除完成");
return;
}
/*这里开始第二个数据的比较*/
while(q->next!=NULL)
{
if((strcmp(q->next->bookname,p->bookname)==0)&&(q->next->que
uenumber==p->queuenumber))
{/*q->next->bookname是下一个数据的书名,比较下一个数据的书
名是便于删除数据*/
q->next=q->next->next;
printf("删除完成");
printf("\n");
return;
}
printf("查找中......");
printf("\n");
q=q->next;
}
printf("查找完成,书的序号没有找到");
printf("%\n");
}
}
/*此函数在删除同书目的书籍的时候,如果删除序号较小的书,序号
较大的书的序号应依次减一*/
/*因为时间不足,并且这段算法要进行数据的重新排序,所以并没有完
成此功能*/
void displaydata(void) /*显示数据库内容*/
{int x=1;
database q;
q=(database)malloc(sizeof(database));
if(head->next==NULL)
{/*如果第一个数据为空,则没有书*/
printf("%s\n","没有书籍数据");
}
q=head->next;
do
{if(q==NULL)
{break;}
printf("第");printf("%d",x);printf("本书");
printf("书名:");
printf("%s\n",q->bookname);
printf("书目编号:");
printf("%d\n",q->booknumber);
printf("作者:");
printf("%s\n",q->bookauthor);
printf("书的序号");
printf("%d\n",q->queuenumber);
printf("\n");
x=x+1;
q=q->next;
}while(q!=NULL);
}
void findbookname(void) /*通过书名查找*/
{database p,q;
p=(database)malloc(sizeof(database));
q=(database)malloc(sizeof(database));
q=head->next;
printf("请输入要查找的书名");
scanf("%s",&p->bookname);
do
{if(q==NULL)
{printf("没有书籍数据");
break;
}
if(strcmp(p->bookname,q->bookname)==0)
{printf("书名:");
printf("%s\n",q->bookname);
printf("书目编号:");
printf("%d\n",q->booknumber);
printf("作者:");
printf(q->bookauthor);
printf("书的序号:");
printf("%d\n",q->queuenumber);
}
q=q->next;
}while(q!=NULL);
printf("%s\n","查找完毕");
}
/*这几个查找的算法都是相同的,逐个比较就可以了*/
void findbooknumber(void) /*通过书目编号查找*/
{database p,q;
p=(database)malloc(sizeof(database));
q=(database)malloc(sizeof(database));
q=head->next;
printf("请输入要查找的书目编号");
scanf("%d",&p->booknumber);
do
{if(q==NULL)
{printf("没有书籍数据");
break;
}
if(q->booknumber==p->booknumber)
{printf("书名:");
printf("%s\n",q->bookname);
printf("书目编号:");
printf("%d\n",q->booknumber);
printf("作者:");
printf(q->bookauthor);
printf("书的序号:");
printf("%d\n",q->queuenumber);
}
q=q->next;
}while(q!=NULL);
printf("%s\n","查找完毕");
free(p);
}
void findbookauthor(void) /*通过作者查找*/
{database p,q;
p=(database)malloc(sizeof(database));
q=(database)malloc(sizeof(database));
q=head->next;
printf("请输入要查找的作者");
scanf("%s",&p->bookauthor);
do
{if(q==NULL)
{break;
printf("没有书籍数据");
}
if(strcmp(q->bookauthor,p->bookauthor)==0)
{printf("书名:");
printf("%s\n",q->bookname);
printf("书目编号:");
printf("%d\n",q->booknumber);
printf("作者:");
printf(q->bookauthor);
printf("书的序号:");
printf("%d\n",q->queuenumber);
}
q=q->next;
}while(q!=NULL);
}
void displaymenu(void)
{ printf("%s\n"," ************************");
printf("%s\n"," * **图书馆管理程序** *");
printf("%s\n"," * 输入新书,请按1 *");
printf("%s\n"," * 删除书籍,请按2 *");
printf("%s\n"," * 显示书目,请按3 *");
printf("%s\n"," * 查找书名,请按4 *");
printf("%s\n"," * 查找书号,请按5 *");
printf("%s\n"," * 查找作者,请按6 *");
printf("%s\n"," * 保存退出,请按0 *");
printf("%s\n"," * 保存数据,请按s *");
printf("%s\n"," ************************");
}
void main()
{/*现在开始初始化程序*/
char c= x ;
char m;/*这个m有特殊的用处,下面解释.*/
initdatabase();/*调用初始数据结构函数*/
displaymenu();/*调用菜单显示函数*/
while(c== x )
{printf("如果要显示菜单请按D");
printf("\n");/*输出换行符*/
c=getchar();/*取一个字符到c中*/
switch(c)
{case 1 : inputdata();c= x ;break;/*这里每一句后都有个
break不要忘了*/
case 2 : deldata();c= x ;break;
case 3 : displaydata();c= x ;break;
case 4 : findbookname();c= x ;break;
case 5 : findbooknumber();c= x ;break;
case 6 : findbookauthor();c= x ;break;
case d : displaymenu();c= x ;break;
case s : putfile();c= x ;break;
case 0 : break;
/*如果选到这个,c的值就是0,就会在while的时候退出循环*/
default : c= x ;
}/*switch*/
m=c;/*用m保存c的值,以便循环上去的时候while语句比较*/
c=getchar();/*因为getchar()会把最后的回车符读进去,而这个是
不需要的*/
/*所以再用一次getchar()把回车符读进来*/
c=m;/*因为c变成了回车符,所以这里要恢复成原来c的值*/
}/*while*/
putfile();/*保存数据到文件中*/
printf("%s\n","程序已经退出,谢谢使用");
}/*main*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -