现在的位置: 首页 > 综合 > 正文

课程设计—图书登记管理系统

2012年11月13日 ⁄ 综合 ⁄ 共 2818字 ⁄ 字号 评论关闭

 图书登记管理系统应该具有下列功能:
(1)、 通过键盘输入某本图书的信息;
(2) 、给定图书编号,显示该本图书的信息;
(3) 、给定作者姓名,显示所有该作者编写的图书信息;
(4) 、给定出版社,显示该出版社的所有图书信息;
(5) 、给定图书编号,删除该本图书的信息;
(6) 、提供一些统计各类信息的功能。

程序完整的实现代码如下:

#include "stdio.h"
#include "stdlib.h"
#include "string.h"
typedef struct book
{
	int book_id;          //图书编号
	char book_name[20];   //图书名字
	char name[20];        //作者姓名
	char press[20];       //出版社
	struct book *next;
}book;
book *head=NULL;
int length;   //链表的长度

void create()
{
	book *p1,*p2;
	length=0;
	p1=(book *)malloc(sizeof(book));
	p1->book_id=-1;
	if(head==NULL)
		head=p1;
	printf("请输入图书的编号、名字、作者姓名、出版社信息:\n");
	while(1)  //图书编号为0的时候退出
	{
		p2=(book *)malloc(sizeof(book));
		scanf("%d %s %s %s",&p2->book_id,p2->book_name,p2->name,p2->press); //输入图书信息
		if(p2->book_id==0)
		{
			printf("图书信息输入完成!\n");
			break;
		}
		length++; //链表的长度
		p1->next=p2;
		p2->next=NULL;
		p1=p1->next;
	}
	return ;
}

void display()
{
	book *p=head->next;
	printf("链表中所有的图书信息如下:\n");
	while(p!=NULL)
	{
		printf("%d %s %s %s\n",p->book_id,p->book_name,p->name,p->press);
		p=p->next;
	}
	return ;
}
void search()
{
	int num,x,flag1=0,flag2=0;
	char name[20],press[20];
	book *p=head->next;
	printf("1、根据图书编号进行查找\n");
	printf("2、根据作者姓名进行查找\n");
	printf("3、根据出版社进行查找\n");
	printf("请选择功能:");
	scanf("%d",&x);
	if(x==1)
	{
		printf("需要查找的图书编号为:");
		scanf("%d",&num);

		while(p!=NULL)
		{

			if(p->book_id==num)
			{
				printf("图书编号为%d的图书的信息如下:\n",num);
				printf("%d %s %s %s\n",p->book_id,p->book_name,p->name,p->press);
				return;
			}   
			p=p->next;
		}
		if(p==NULL)
			printf("无此记录!\n");
	}
	else if(x==2)
	{
		printf("需要查找的作者姓名为:");
		scanf("%s",name);
		while(p!=NULL)
		{
			if(strcmp(p->name,name)==0)
			{
				if(flag1==0)
					printf("作者%s编写的图书信息如下:\n",name);
				flag1=1;
				printf("%d %s %s %s\n",p->book_id,p->book_name,p->name,p->press);
			}
			p=p->next;
		}
		if(flag1==0)
			printf("图书馆没有作者%s编写的图书!\n",name);
	}
	else if(x==3)
	{
		printf("需要查找的出版社为:");
		scanf("%s",press);
		while(p!=NULL)
		{
			if(strcmp(p->press,press)==0)
			{
				if(flag2==0)
					printf("出版社为%s编写的图书信息如下:\n",press);
				flag2=1;
				printf("%d %s %s %s\n",p->book_id,p->book_name,p->name,p->press);
			}
			p=p->next;
		}
		if(flag2==0)
			printf("图书馆没有出版社%s编写的图书!\n",press);
	}
	return ;
}

void Delete()
{
	int num;
	book *p,*q;
	q=head,p=head->next;
	printf("请输入要删除的图书编号:\n");
	scanf("%d",&num);

	while(p!=NULL)
	{
		if(p->book_id==num)
		{
			q->next=p->next;
			free(p);
			length--;
			printf("删除成功!\n");
			return ;
		}
		p=p->next;
		q=q->next;
	}
	if(p==NULL)
	{
		printf("找不到要删除的图书编号!\n");
		return ;
	}
}
void menu()
{
	printf("________________________________________________________________\n");
	printf("|               图书登记管理系统                               |\n");
	printf("|               0、 退出系统                                   |\n");
	printf("|               1、 输入图书信息                               |\n");
	printf("|               2、 显示图书信息                               |\n");
	printf("|               3、 查询图书信息                               |\n");
	printf("|               4、 删除图书信息                               |\n");
	printf("________________________________________________________________\n");
	return ;
}
int main(void)
{
	int a;
	menu();
	while(1)
	{
		printf("请选择相应的功能:");
		scanf("%d",&a);
		switch(a)
		{
		case 0:
			return 0;
		case 1:
			create();
			menu();
			break;
		case 2:
			if(head)
			{
				display();
				menu();
			}
			else
			{
				printf("图书信息为空,请先输入图书信息!\n");
				menu();
			}
			break;
		case 3:
			if(head)
			{
				search();
				menu();
			}
			else
			{
				printf("图书信息为空,请先输入图书信息!\n");
				menu();
			}
			break;
		case 4:
			if(head)
			{
				Delete();
				menu();
			}
			else
			{
				printf("图书信息为空,请先输入图书信息!\n");
				menu();
			}
			break;
		default:
			break;
		}
	}
	system("pause");
	return 0;
}

 

抱歉!评论已关闭.