您的位置:首页 > 编程语言

课程设计---图书登记管理系统(217行代码)【没看】

2012-09-16 12:05 429 查看
图书登记管理系统应该具有下列功能:

(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;
}原文地址:http://blog.csdn.net/hackbuteer1/article/details/6596255
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息