顺序表:实现图书管理系统

引入万能库和命名空间

#include<bits/stdc++.h>
using namespace std;

定义结构体

typedef struct
{
    char no[20];
    char name[20];
    double price;
}Book;

typedef struct
{
    Book* elem;
    int length;
}SqList;

初始化顺序表

//初始化_顺序表
int init_SqList(SqList &L)
{
    L.elem=new Book[30];
    if(!L.elem){
        cout<<"顺序表构造失败"<<endl;
        exit(-1);
    }
    L.length=0;
    cout<<"顺序表构造成功"<<endl;
    return 1;
}

添加

//添加_顺序表
int set_SqList(SqList &L)
{
    int x,i;
    cout<<"请输入你要录入的图书数量:";
    cin>>x;
    for(i=1;i<=x;i++){
        cout<<"书号:";
        cin>>L.elem[i].no;
        cout<<"书名:";
        cin>>L.elem[i].name;
        cout<<"书价:";
        cin>>L.elem[i].price;
        cout<<""<<endl;
        ++L.length;
    }
    return 0;
}

查询全部

void show_SqList(SqList L){
    int i=1;
    cout<<"书号\t\t"<<"书名\t\t"<<"图书价格"<<endl;
    for(i;i<=L.length;i++){
        cout<<L.elem[i].no<<"\t\t"<<L.elem[i].name<<"\t\t"<<L.elem[i].price<<endl;
    }
}

指定查询

int find_SqList(SqList L)
{
    int n;
    char a[20];
    char b[20];
    double c;
    int i;
    cout<<"----1.按书号查找-----"<<endl;
    cout<<"----2.按书名查找-----"<<endl;
    cout<<"----3.按书价查找-----"<<endl;
    cout<<"请选择你要执行的操作:";
    cin>>n;
    switch (n) {
    case 1:
        cout<<"请输入你要查询的书号: ";
        cin>>a;
        for(i=0;i<L.length;i++){
            if(!strcmp(L.elem[i].no,a)){
                cout<<"书号\t\t"<<"书名\t\t"<<"图书价格"<<endl;
                cout<<L.elem[i].no<<"\t\t"<<L.elem[i].name<<"\t\t"<<L.elem[i].price<<endl;
            }
        }
        break;
    case 2:
        cout<<"请输入你要查询的书名: ";
        cin>>b;
        for(i=0;i<L.length;i++){
            if(!strcmp(L.elem[i].name,b)){
                cout<<"书号\t\t"<<"书名\t\t"<<"图书价格"<<endl;
                cout<<L.elem[i].no<<"\t\t"<<L.elem[i].name<<"\t\t"<<L.elem[i].price<<endl;
            }
        }
        break;
    case 3:
        cout<<"请输入你要查询的书价: ";
        cin>>c;
        for(i=0;i<L.length;i++){
            if(L.elem[i].price==c){
                cout<<"书号\t\t"<<"书名\t\t"<<"图书价格"<<endl;
                cout<<L.elem[i].no<<"\t\t"<<L.elem[i].name<<"\t\t"<<L.elem[i].price<<endl;
            }
        }
        break;
    default:
        break;
    }
    return 0;
}

插入

int insert_SqList(SqList &L)
{
    int n;
    int i;
    char a[20];
    char b[20];
    double c;
    cout<<"请输入你要插入的位置: ";
    cin>>n;
    if(n<1|n>L.length+1){cout<<"插入位置不合法!!"<<endl;return 0;}
    if(L.length==30){cout<<"顺序表已经存满!"<<endl;return 0;}
    //腾出要插入的位置n
    for(int i=L.length;i>=n;i--){
        L.elem[i+1].price=L.elem[i].price;
        strcpy(L.elem[i+1].no,L.elem[i].no);
        strcpy(L.elem[i+1].name,L.elem[i].name);
    }
    //在位置n插入图书
    cout<<"请输入你要添加的图书信息: "<<endl;
    cout<<"书号: ";
    cin>>a;
    strcpy(L.elem[n].no,a);
    cout<<"书名: ";
    cin>>b;
    strcpy(L.elem[n].name,b);
    cout<<"图书价格: ";
    cin>>c;
    L.elem[n].price=c;
    L.length++;
    return 0;
}

删除

int delete_SqList(SqList &L)
{
    int n;
    int i;
    cout<<"请输入你要删除的位置: ";
    cin>>n;
    if(n<1|n>L.length+1){cout<<"删除位置不合法!!"<<endl;return 0;}
    //覆盖要删除的位置
    for(i=n;i<L.length;i++){
        L.elem[i].price=L.elem[i+1].price;
        strcpy(L.elem[i].no,L.elem[i+1].no);
        strcpy(L.elem[i].name,L.elem[i+1].name);
    }
    L.length--;
    cout<<"删除成功!"<<endl;
    return 1;

}

主方法

int main()
{
    int n;
    SqList L;
    system("color 3b");
    while (1) {
        cout<<"=======================图书管理系统============================"<<endl;
        cout<<"-----------------------1.初始化-------------------------------"<<endl;
        cout<<"-----------------------2.录入图书信息--------------------------"<<endl;
        cout<<"-----------------------3.查看所有图书--------------------------"<<endl;
        cout<<"-----------------------4.查询图书-----------------------------"<<endl;
        cout<<"-----------------------5.插入图书-----------------------------"<<endl;
        cout<<"-----------------------6.删除图书-----------------------------"<<endl;
        cout<<"-----------------------7.图书数量-----------------------------"<<endl;
        cout<<"-----------------------0.退出---------------------------------"<<endl;
        cout<<"请选择你要执行的操作:";
        cin>>n;
        cout<<""<<endl;
        switch (n) {
        case 1:
            init_SqList(L);
            break;
        case 2:
            set_SqList(L);
            break;
        case 3:
            show_SqList(L);
            break;
        case 4:
            find_SqList(L);
            break;
        case 5:
            insert_SqList(L);
            break;
        case 6:
            delete_SqList(L);
            break;
        case 7:
            cout<<"现有图书的总数量为: "<<L.length<<endl;
            break;
        case 0:
            cout<<"-----------感谢使用图书管理系统--------"<<endl;
            exit(0);
            break;
        default:
            cout<<"你输入的数字有错,请输入0-6的执行数字。"<<endl;
            break;
        }
    }

    return 0;
}

全部代码及实现

#include<bits/stdc++.h>
using namespace std;

typedef struct
{
    char no[20];
    char name[20];
    double price;
}Book;

typedef struct
{
    Book* elem;
    int length;
}SqList;
//初始化_顺序表
int init_SqList(SqList &L)
{
    L.elem=new Book[30];
    if(!L.elem){
        cout<<"顺序表构造失败"<<endl;
        exit(-1);
    }
    L.length=0;
    cout<<"顺序表构造成功"<<endl;
    return 1;
}
//添加_顺序表
int set_SqList(SqList &L)
{
    int x,i;
    cout<<"请输入你要录入的图书数量:";
    cin>>x;
    for(i=1;i<=x;i++){
        cout<<"书号:";
        cin>>L.elem[i].no;
        cout<<"书名:";
        cin>>L.elem[i].name;
        cout<<"书价:";
        cin>>L.elem[i].price;
        cout<<""<<endl;
        ++L.length;
    }
    return 0;
}
//查询全部_顺序表
void show_SqList(SqList L){
    int i=1;
    cout<<"书号\t\t"<<"书名\t\t"<<"图书价格"<<endl;
    for(i;i<=L.length;i++){
        cout<<L.elem[i].no<<"\t\t"<<L.elem[i].name<<"\t\t"<<L.elem[i].price<<endl;
    }
}
//指定查询_顺序表
int find_SqList(SqList L)
{
    int n;
    char a[20];
    char b[20];
    double c;
    int i;
    cout<<"----1.按书号查找-----"<<endl;
    cout<<"----2.按书名查找-----"<<endl;
    cout<<"----3.按书价查找-----"<<endl;
    cout<<"请选择你要执行的操作:";
    cin>>n;
    switch (n) {
    case 1:
        cout<<"请输入你要查询的书号: ";
        cin>>a;
        for(i=0;i<L.length;i++){
            if(!strcmp(L.elem[i].no,a)){
                cout<<"书号\t\t"<<"书名\t\t"<<"图书价格"<<endl;
                cout<<L.elem[i].no<<"\t\t"<<L.elem[i].name<<"\t\t"<<L.elem[i].price<<endl;
            }
        }
        break;
    case 2:
        cout<<"请输入你要查询的书名: ";
        cin>>b;
        for(i=0;i<L.length;i++){
            if(!strcmp(L.elem[i].name,b)){
                cout<<"书号\t\t"<<"书名\t\t"<<"图书价格"<<endl;
                cout<<L.elem[i].no<<"\t\t"<<L.elem[i].name<<"\t\t"<<L.elem[i].price<<endl;
            }
        }
        break;
    case 3:
        cout<<"请输入你要查询的书价: ";
        cin>>c;
        for(i=0;i<L.length;i++){
            if(L.elem[i].price==c){
                cout<<"书号\t\t"<<"书名\t\t"<<"图书价格"<<endl;
                cout<<L.elem[i].no<<"\t\t"<<L.elem[i].name<<"\t\t"<<L.elem[i].price<<endl;
            }
        }
        break;
    default:
        break;
    }
    return 0;
}
//插入_顺序表
int insert_SqList(SqList &L)
{
    int n;
    int i;
    char a[20];
    char b[20];
    double c;
    cout<<"请输入你要插入的位置: ";
    cin>>n;
    if(n<1|n>L.length+1){cout<<"插入位置不合法!!"<<endl;return 0;}
    if(L.length==30){cout<<"顺序表已经存满!"<<endl;return 0;}
    //腾出要插入的位置n
    for(int i=L.length;i>=n;i--){
        L.elem[i+1].price=L.elem[i].price;
        strcpy(L.elem[i+1].no,L.elem[i].no);
        strcpy(L.elem[i+1].name,L.elem[i].name);
    }
    //在位置n插入图书
    cout<<"请输入你要添加的图书信息: "<<endl;
    cout<<"书号: ";
    cin>>a;
    strcpy(L.elem[n].no,a);
    cout<<"书名: ";
    cin>>b;
    strcpy(L.elem[n].name,b);
    cout<<"图书价格: ";
    cin>>c;
    L.elem[n].price=c;
    L.length++;
    return 0;
}
//删除_顺序表
int delete_SqList(SqList &L)
{
    int n;
    int i;
    cout<<"请输入你要删除的位置: ";
    cin>>n;
    if(n<1|n>L.length+1){cout<<"删除位置不合法!!"<<endl;return 0;}
    //覆盖要删除的位置
    for(i=n;i<L.length;i++){
        L.elem[i].price=L.elem[i+1].price;
        strcpy(L.elem[i].no,L.elem[i+1].no);
        strcpy(L.elem[i].name,L.elem[i+1].name);
    }
    L.length--;
    cout<<"删除成功!"<<endl;
    return 1;

}

int main()
{
    int n;
    SqList L;
    system("color 3b");
    while (1) {
        cout<<"=======================图书管理系统============================"<<endl;
        cout<<"-----------------------1.初始化-------------------------------"<<endl;
        cout<<"-----------------------2.录入图书信息--------------------------"<<endl;
        cout<<"-----------------------3.查看所有图书--------------------------"<<endl;
        cout<<"-----------------------4.查询图书-----------------------------"<<endl;
        cout<<"-----------------------5.插入图书-----------------------------"<<endl;
        cout<<"-----------------------6.删除图书-----------------------------"<<endl;
        cout<<"-----------------------7.图书数量-----------------------------"<<endl;
        cout<<"-----------------------0.退出---------------------------------"<<endl;
        cout<<"请选择你要执行的操作:";
        cin>>n;
        cout<<""<<endl;
        switch (n) {
        case 1:
            init_SqList(L);
            break;
        case 2:
            set_SqList(L);
            break;
        case 3:
            show_SqList(L);
            break;
        case 4:
            find_SqList(L);
            break;
        case 5:
            insert_SqList(L);
            break;
        case 6:
            delete_SqList(L);
            break;
        case 7:
            cout<<"现有图书的总数量为: "<<L.length<<endl;
            break;
        case 0:
            cout<<"-----------感谢使用图书管理系统--------"<<endl;
            exit(0);
            break;
        default:
            cout<<"你输入的数字有错,请输入0-6的执行数字。"<<endl;
            break;
        }
    }

    return 0;
}


  • 9
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

月木@

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值