4.17总结

今天实现了三个功能

分别是利用线性表录入图书信息

int lurumassage(LinkList *L)
{
	int i;
	system("CLS");
	printf("\t\t           =============           \n");
	printf("\t\t            录人图书信息           \n");
	printf("\t\t           =============           \n\n");
	LinkList* s, * q, * p;
	p = L;
	while (p->next != NULL)
	{
		p = p->next;
	}
	printf("\t\t请输入您要录入的书籍数量:");
	scanf_s("%d", &N);
	for (i = 1; i <= N; i++)
	{
		s = (LinkList*)malloc(sizeof(LinkList));
		printf("\t\t请输入第%d本书的书名:", i );
		scanf_s("%s",s->data.bookname);
		printf("\t\t请输入第%d本书的作者:", i );
		scanf_s("%s",s->data.author);
		printf("\t\t请输入第%d本书的书号:", i );
		scanf_s("%d",&s->data.num);
		printf("\t\t请输入第%d本书的出版社:", i);
		scanf_s("%s",s->data.press);
		printf("\t\t请输入第%d本书的馆内书本数量:", i);
		scanf_s("%d",&s->data.count);
		printf("\t\t请输入第%d本书的定价:", i);
		printf("%s", s ->data.price);
		q = L->next;
		if (q == NULL)
		{
			p->next = s;
			p = s;
			p->next = NULL;
			printf("\t\t%d本书全部录入成功\n", N);
			system("CLS");
			printf("\t\t        ===========================          \n");
			printf("\t\t            %d本书全部录入成功!               \n, N");
			printf("\t\t        ===========================          \n");
			printf("\t\t                     按任意键继续...\n");
			printf("\t\t        ===========================          \n");
			continue;
		}
		while (q != NULL)
		{
			if (strcmp(s->data.bookname, q->data.bookname) == 0)
			{
				printf("\t\t此书已存在!\n");
				printf("\t\t请重新输入:\n");
				printf("\t\t请输入第%d本书的书名:", i);
				scanf_s("%s", s->data.bookname);
				printf("\t\t请输入第%d本书的作者:", i);
				scanf_s("%s", s->data.author);
				printf("\t\t请输入第%d本书的书号:", i);
				scanf_s("%d", &s->data.num);
				printf("\t\t请输入第%d本书的出版社:", i);
				scanf_s("%s", s->data.press);
				printf("\t\t请输入第%d本书的馆内书本数量:", i);
				scanf_s("%d", &s->data.count);
				printf("\t\t请输入第%d本书的定价:", i);
				printf("%s", s->data.price);
			}
			q = q->next;
		}
		p->next = s;
		p = s;
		p->next = NULL;
		printf("\t\t录入成功!\n");
	}
	return 0;
}

分别按书名,作者,出版社查找图书信息

按书名查找

void search_name(LinkList* L)
{
	LinkList* p = L->next;
	char name1[20];
	int x = 0;
	printf("\t\t           ====================          \n");
	printf("\t\t                 按书名查找             \n");
	printf("\t\t           ====================          \n");
	printf("\n\t\t请输入您要查看的图书名称:");
	scanf_s("%s", name1);
	while (p != NULL)
	{
		if (strcmp(name1, p->data.bookname) != 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.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");
	}
}

按作者查找

void search_author(LinkList *L)
{
	LinkList* p = L->next;
	char author1[20];
	int x = 0;
	printf("\t\t           ====================          \n");
	printf("\t\t                 按作者查找             \n");
	printf("\t\t           ====================          \n");
	printf("\n\t\t请输入作者名称:");
	scanf_s("%s", author1);
	while (p != NULL)
	{
		if (strcmp(author1, p->data.author) != 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.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");
	}
}

按出版社查找

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.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");
	}
}

主查找界面

void search(LinkList* L)
{
	int c = 0;
	printf("\t\t         1.按书名查询\n");
	printf("\t\t         2.按作者查询\n");
	printf("\t\t         3.按出版社查询\n");
	printf("\t\t         4.返回\n");
	printf("\t\t         请从1--4个选项中选取一个进行查询\n");
	scanf_s("%d", &c);
	if (c > 4 || c < 1)
	{
		printf("\t\t         对不起,您的操作有误!\n");
		printf("\t\t         请再次输入操作选项\n");
		scanf_s("%d", &c);
	}
	switch(c)
	{
		case 1:system("cls"); search_name; break;
		case 2:system("cls"); search_author; break;
		case 3:system("cls"); search_press; break;
		case 4:break;
	}
}

排序

int sort(LinkList* L)
{
	LinkList* p = L->next, * q, * r;//p指向第一个数据节点
	if (p != NULL)
	{
		r = p->next;//r保存*p直接后继节点的指针
		p->next = NULL;//构造只含一个数据节点的有序表
		p = r;
		while (p != NULL)
		{
			r = p->next;//r保存*p直接后继节点的指针
			q = L;
			while (q->next != NULL && q->next->data.num < p->data.num)
			{
				q = q->next;//在有序表中找插入*p的直接前驱结点*q的位置
			}
			p->next = q->next;//将*p插入到*q之后
			q->next = q;
			p = r;//扫描原链表余下的结点
		}
	}
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值