#数据结构#

图书管理系统

#include <iostream>

#include<string.h>

#include<stdio.h>

//有头结点的表

using namespace std;

typedef struct{char name[30];char author[30];float price;}book;

typedef struct LNode{book data;LNode *next;}LNode,*LinkList;

//初始化,插入,单个,遍历,查找,删除,修改,退出

//初始化

void Init_Link(LinkList &L){L=new LNode;

if(!L){printf("分配空间失败。\n");return;}

L->next=NULL;

printf("已成功初始化。\n");}

//插入

void Insert_Link(LinkList &L){LinkList p;p=new LNode;

if(!p){printf("分配空间失败。\n");return;}

printf("请输入需要插入的书籍(书名-作者-价格,用空格隔开):\n");

cin>>p->data.name>>p->data.author>>p->data.price;

p->next=L->next;L->next=p;printf("插入结束。\n");

}

//单个

void Show_One(LinkList p){

printf("书名:%s\t作者:%s\t价格:%f\n",p->data.name,p->data.author,p->data.price);}

//遍历

void Show_Link(LinkList L){

LinkList p;p=L->next;

while(p){

printf("书名:%s\t作者:%s\t价格:%f\n",p->data.name,p->data.author,p->data.price);

p=p->next;}}

//查找

LinkList Find_Link(LinkList L){

int i=9;char n[30]="0";LinkList p=L->next,q;

while(i){

if(L->next==NULL){printf("没有可查找的书籍。\n");return NULL;}

printf("请输入查找操作(序号数字1-3):\n1.书名\t2.作者\t3.退出查找\n");

cin>>i;

if(i==1){

cout<<"输入书名:";cin>>n;

if(!strcmp(L->next->data.name,n)){Show_One(L->next);return L;}

while(1){if(p->next==NULL){printf("ERROR!请重新输入。\n");break;}

 else if(!strcmp(p->next->data.name,n)){Show_One(p->next);return p;}

 else if(p!=L)p=p->next;

 }}

else if(i==2){

cout<<"输入作者:";cin>>n;

if(!strcmp(L->next->data.author,n)){Show_One(L->next);return L;}

while(1){if(p->next==NULL){printf("ERROR!请重新输入。\n");break;}

 else if(!strcmp(p->next->data.author,n)){Show_One(p->next);return p;}

 else if(p!=L)p=p->next;

 }}

else if(i==3){cout<<"退出查找。查找结束。\n";break;}

}return NULL;}

//删除

void Delete_Link(LinkList &L){int i=9;LinkList p,q;

while(i){

printf("欢迎进入删除系统:\n1.进行查找删除\t2.遍历书籍\t3.退出删除\n");

cin>>i;

if(i==1){

p=Find_Link(L);q=p->next;p->next=q->next;

printf("被删除的书籍:\n");Show_One(q);

delete q;}

else if(i==2)Show_Link(L);

else if(i==3){cout<<"退出删除。删除结束。\n";break;}

else printf("ERROR!请重新输入。\n");}}

//修改

void Modify_Link(LinkList &L){

int i=9,j=9;LinkList p=L;char n[30]="0";float t;

while(i){

printf("欢迎进入修改系统:\n1.进行查找修改\t2.遍历书籍\t3.退出修改\n");

cin>>i;

if(i==1){

 p=Find_Link(L)->next;

 while(p){

 printf("请输入需修改的部位(序号数字1-3):\n1.书名\n2.作者\n3.价格\n4.退出修改\n");

 cin>>j;

 if(j==1){cin>>n;strcpy(p->data.name,n);}

 else if(j==2){cin>>n;strcpy(p->data.author,n);}

 else if(j==3){cin>>t;p->data.price=t;}

 else if(j==4)break;

 else cout<<"ERROR!请重新输入。\n";break;

printf("书籍被修改后:\n");Show_One(p);break;}}

else if(i==2)Show_Link(L);

else if(i==3){cout<<"退出修改。修改结束。\n";break;}}}

//主函数

int main() {

int i=9;LinkList L;

printf("欢迎进入图书馆管理菜单!\n");

printf("以下是可选择的选项:\n");

while(1){

printf("1.初始化(必须)\n");

printf("2.插入书籍\n");

printf("3.查找书籍\n");

printf("4.删除书籍\n");

printf("5.修改书籍\n");

printf("6.展示书籍\n");

printf("7.退出系统\n");

printf("请输入操作(序号数字1-7):\n");

cin>>i;//scanf("%d",&i);

if(i==1){Init_Link(L);continue;

}

else if(i==2){Insert_Link(L);continue;

}

else if(i==3){Find_Link(L);continue;

}

else if(i==4){Delete_Link(L);continue;

}

else if(i==5){Modify_Link(L);continue;

}

else if(i==6){

Show_Link(L);continue;}

else if(i==7)break;

cout<<"ERROR!请重新输入。\n";continue;

}

return 0;

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值