4.18总结

今天在自己原有的线性表上增添了一个内容:图书的类别

然后对查找部分进行了增添,增加了利用类别查找图书

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++;
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值