今天在自己原有的线性表上增添了一个内容:图书的类别
然后对查找部分进行了增添,增加了利用类别查找图书
void search_press(LinkList* L)
{
LinkList* p = L->next;
char press1[20];
int x = 0;
printf("\t\t ==================== \n");
printf("\t\t 按出版社查找 \n");
printf("\t\t ==================== \n");
printf("\n\t\t请输入出版社名称:");
scanf_s("%s", press1);
while (p != NULL)
{
if (strcmp(press1, p->data.press) != 0)
{
p = p->next;
}
else
{
printf("\t\t书号:%d", &p->data.num);
printf("\t\t书名:%s", p->data.bookname);
printf("\t\t作者:%s", p->data.author);
printf("\t\t类别:%s", p->data.category);
printf("\t\t出版社:%s", p->data.press);
printf("\t\t馆内书本数量:%d", &p->data.count);
printf("\t\t定价:%s", p->data.price);
printf("\n");
p = p->next;
x++;
}
}
if (p == NULL && x == 0)
{
printf("\t\t对不起,不存在此书\n");
}
}
还实现了删除,修改,借阅,归还图书操作
删除
int Delete_List(LinkList* L)
{
LinkList* p = L->next, * q = L;
char name1[20];
if (p != NULL)
{
printf("\t\t请输入要删除的书名\n");
scanf_s("%s", name1);
}
while (p->next != NULL && strcmp(p->data.bookname, name1) != 0)
{
p = p->next;
q = q->next;
}
if (p->next != NULL)//若p此时不是最后一个节点,说明已经找到书
{
q->next = p->next;
printf("\t\t删除成功!\n");
return 0;
}
if (p->next == NULL && strcmp(name1, p->data.bookname) != 0)//如果p此时为最后一个节点且没有找到与之相符的书名
{
printf("\t\t你输入的书名不存在,请核实后重新输入!\n");
}
else
{
q->next = NULL;
printf("\t\t删除成功!\n");
}
return 0;
}
修改
int ModifyList(LinkList* L)
{
LinkList* p = L;
char name1[20];
printf("\t\t请输入要修改的书名:\n");
scanf_s("%s", name1);
while (p != NULL)
{
if (strcmp(name1, p->data.bookname) == 0)
{
printf("\t\t请输入修改后的信息\n");
printf("\t\t请输入书名:");
scanf_s("%s", p->data.bookname);
printf("\t\t请输入作者:");
scanf_s("%s", p->data.author);
printf("\t\t请输入书号:");
scanf_s("%d", &p->data.num);
printf("\t\t请输入类别:");
scanf_s("%s", p->data.category);
printf("\t\t请输入出版社:");
scanf_s("%s", p->data.press);
printf("\t\t请输入馆内书本数量:");
scanf_s("%d", &p->data.count);
printf("\t\t请输入定价:");
printf("%s", p->data.price);
printf("\t\t修改成功!\n");
return 0;
}
p = p->next;
}
printf("\t\t不存在此图书!\n");
return 0;
}
借阅图书
void borrow(LinkList* L)
{
LinkList* p = L->next;
char name1[20];
printf("\t\t请输入要借阅的图书名称:\n");
scanf_s("%s", name1);
while (p->next != NULL && strcmp(name1, p->data.bookname) != 0)
{
p = p->next;
}
if (p->next == NULL && strcmp(name1, p->data.bookname) != 0)
{
printf("\t\t该图书不存在!\n");
}
else if (p->data.count < 1)
{
printf("\t\t此书已借完\n");
}
else if (strcmp(name1, p->data.bookname) == 0)
{
printf("\t\t借书成功!\n");
p->data.count--;
}
}
归还书籍
void Return(LinkList* L)
{
LinkList* p = L->next;
char name1[20];
printf("\t\t请输入归还书籍的书名:\n");
scanf_s("%s", name1);
while (p->next != NULL && strcmp(name1, p->data.bookname) != 0)
{
p = p->next;
}
if (p->next == NULL && strcmp(name1, p->data.bookname) != 0)
{
printf("\t\t错误!该书不存在!\n");
}
else if (strcmp(name1, p->data.bookname) == 0)
{
printf("\t\t该书归还成功!\n");
p->data.count++;
}
}