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

 图书登记管理系统应该具有下列功能:
(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; }

 

转载于:https://www.cnblogs.com/newthing/archive/2011/07/10/2157468.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值