我的编程空间,编程开发者的网络收藏夹
学习永远不晚

C++实现图书信息管理系统

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

C++实现图书信息管理系统

本文实例为大家分享了C++实现图书信息管理系统的具体代码,供大家参考,具体内容如下

1.题目:

类型有:编号:ISBN
书名:name
价格:price

完成如下的功能:

①录入:从键盘输入(或从文件读入)图书(或学生)信息表的各个数据元素;
②查找:可按不同属性查找所有等于给定值的数据元素,找到并返回它们在表中的位序;
③插入:在表中第i(1=<i<=N+1)个位置插入一个新元素;
④删除:可删除表中第i(1=<i<=N)个位置上的元素;
⑤输出:依次打印表中的各个元素的值;
⑥排序:可按某属性对表中的元素进行排序。(可选)

2.实现方式:单链表(带头节点)

3.代码实现:

#include <iostream>
#include <string>
using namespace std;

struct Node
{
    int ISBN;//编号
    string name;//书名
    float price;//定价
    Node *next;
};

//操作类
class Link
{
private:
    int number;//图书数量
    Node *head;
public:
    Link(int a):number(a){}
    ~Link(){delete head;}
    void create_node();//创建
    void select();//功能选择
    int find_node(int i);//按照编号查找
    int find_node(string n);//按照书名查找
    int find_node(float p);//按照价格查找
    int insert_node(int pos);//插入
    int delete_node(int d);//删除
    int mod_node(int d);//修改
    void sort_node_ISBN();//按照编号排序
    void sort_node_price();//按照价格排序
    int get_node();//计数总数
    void print();//打印操作
};

void Link::create_node()
{
    Node *pnew;
    head = new Node;
    //cout<<"请按顺序输入图书的ISBN,书名,定价";
    head->ISBN = 0;
    head->name = 'n';
    head->price = 0;
    head->next = NULL;
    Node *ptemp = head;
    for(int i=0;i<number;i++)
    {
        pnew = new Node;
        cout<<endl;
        cout<<"请按顺序输入图书的ISBN,书名,定价:";
        cin>>pnew->ISBN>>pnew->name>>pnew->price;
        pnew->next = NULL;
        ptemp->next = pnew;
        ptemp = pnew;
    }
}

//按编号查找
int Link::find_node(int i)
{
    Node *ptemp = head->next;
    for(int count = 0;count<number;count++)
        {
            if(ptemp->ISBN == i)//按编号查找图书
            {
                cout<<"图书的编号为:"<<ptemp->ISBN<<"     书名为:"<<ptemp->name<<"       定价为:"<<ptemp->price<<endl;
                return 1;
            }
            ptemp = ptemp->next;
        }
        return 0;
}

//按照书名查找
int Link::find_node(string n)
{
    Node *ptemp = head->next;
    for(int count=0;count<number;count++)
        {
            if(ptemp->name == n)
            {
                cout<<"图书的编号为:"<<ptemp->ISBN<<"     书名为:"<<ptemp->name<<"       定价为:"<<ptemp->price<<endl;
                return 1;
            }
            ptemp = ptemp->next;
        }
        return 0;
}

//按照价格查找
int Link::find_node(float p)
{
    Node *ptemp = head->next;
    for(int count=0;count<number;count++)
        {
            if(ptemp->price == p)
            {
                cout<<"图书的编号为:"<<ptemp->ISBN<<"     书名为:"<<ptemp->name<<"       定价为:"<<ptemp->price<<endl;
                return 1;
            }
            ptemp = ptemp->next;
        }
    return 0;
}

//插入
int Link::insert_node(int pos)
{
    if((pos > number)||(pos<0))
    {
        cout<<"插入位置错误!"<<endl;
        return 0;
    }
    else
    {
        Node *ptemp = head,*pnew;
        for(int i=0;i<pos-1;i++)
        {
            ptemp = ptemp->next;
        }
        pnew = new Node;
        cout<<"请按顺序输入图书的ISBN,书名,价格:";
        cin>>pnew->ISBN>>pnew->name>>pnew->price;
        pnew->next = ptemp->next;
        ptemp->next = pnew;
        number += 1;
    }
    return 1;

}

//删除
int Link::delete_node(int d)
{
    if((d > number)||(d<0))
    {
        cout<<"删除位置错误!"<<endl;
        return 0;
    }
    else
    {
        Node *ptemp = head,*pdelete;
        for(int i=0;i<d-1;i++)
        {
            ptemp = ptemp->next;
        }
        pdelete = ptemp->next;
        ptemp->next = pdelete->next;
        delete pdelete;
        number -= 1;
    }
    return 1;
}

//修改
int Link::mod_node(int d)
{
    int aa;
    string bb;
    float cc;
    if((d > number)||(d<0))
    {
        cout<<"要修改的位置错误!"<<endl;
        return 0;
    }
    else
    {
        Node *ptemp = head->next;
        for(int i=0;i<d-1;i++)
        {
            ptemp = ptemp->next;
        }
        cout<<"要修改编号请输入0,要修改书名请输入1,要修改价格请输入2:";
        int k;
        cin>>k;
        switch(k)
        {
        case 0:
            cout<<"请输入要修改的编号:";
            cin>>aa;
            ptemp->ISBN = aa;
            cout<<endl;
            break;
        case 1:
            cout<<"请输入要更改的书名:";
            cin>>bb;
            ptemp->name = bb;
            cout<<endl;
            break;
        case 2:
            cout<<"请输入要更改的价格:";
            cin>>cc;
            ptemp->price = cc;
            cout<<endl;
            break;
        }
    }
    return 1;
}

//按编号排序
void Link::sort_node_ISBN()
{
    Node *ptemp = head->next,*pre;
    Node *pr = ptemp->next;
    ptemp->next = NULL;
    ptemp = pr;
    while(ptemp != NULL)
    {
        pr = ptemp->next;
        pre = head;
        while(pre->next != NULL && pre->next->ISBN > ptemp->ISBN)
        {
            pre = pre->next;
        }
        ptemp->next = pre->next;
        pre->next = ptemp;
        ptemp = pr;
    }
    Link::print();
}

//按照价格排序
void Link::sort_node_price()
{
    Node *ptemp = head->next,*pre;
    Node *pr = ptemp->next;
    ptemp->next = NULL;
    ptemp = pr;
    while(ptemp != NULL)
    {
        pr = ptemp->next;
        pre = head;
        while(pre->next != NULL && pre->next->price > ptemp->price)
        {
            pre = pre->next;
        }
        ptemp->next = pre->next;
        pre->next = ptemp;
        ptemp = pr;
    }
     Link::print();
}

//获取长度
int Link::get_node()
{
    return number;
}

//打印输出
void Link::print()
{
    Node *ptemp = head->next;
    for(int k=0;k<number;k++)
    {
        cout<<"图书编号:"<<ptemp->ISBN<<"       书名为:"<<ptemp->name<<"       价格为:"<<ptemp->price<<endl;
        ptemp = ptemp->next;
    }
}

//功能函数
void Link::select()
{
    int a;//ISBN
    string b;//书名
    float c;//定价
    int d;//位置
    int p;//选择功能
    cin>>p;
    switch(p)
    {
    case 0:
        cout<<"请输入图书的编号";
        cin>>a;
        if(this->find_node(a))
        {
            cout<<endl;
        }
        else
            cout<<"该图书不存在!"<<endl;
        break;
    case 1:
        cout<<"请输入图书的名字:";
        cin>>b;
        if(this->find_node(b))
        {
            cout<<endl;
        }
        else
            cout<<"该图书不存在!"<<endl;
        break;
    case 2:
        cout<<"请输入图书的价格:";
        cin>>c;
        if(this->find_node(c))
        {
            cout<<endl;
        }
        else
            cout<<"该图书不存在!"<<endl;
        break;
    case 3:
        cout<<"请输入要插入的位置:";
        cin>>d;
        if(this->insert_node(d))
        {
            cout<<"插入操作的结果为:"<<endl;
            this->print();//打印插入结果
        }
        break;
    case 4:
        cout<<"请输入要删除的位置:";
        cin>>d;
        if(this->delete_node(d))
        {
            cout<<"删除操作的结果为:"<<endl;
            this->print();//打印插入结果
        }
        break;
    case 5:
        cout<<"请输入要修改的图书的位置:";
        cin>>d;
        if(this->mod_node(d))
        {
            cout<<"修改后的结果为:"<<endl;
            this->print();
        }
        break;
    case 6:
        cout<<"按照图书的编号进行排序的结果为:"<<endl;
        this->sort_node_ISBN();
        break;
    case 7:
        cout<<"按照图书的价格进行排序的结果为:"<<endl;
        this->sort_node_price();
        break;
    case 8:
        cout<<"当前馆内的图书数量为:";
        cout<<this->get_node();
        break;
    }
}


int main()
{
    int sele=1;//功能选择
    int i;//最开始的数量
    cout<<"请输入你要输入的图书的数量:";
    cin>>i;
    Link l(i);
    l.create_node();
    cout<<endl;
    cout<<"0---------------------为查找(按编号)"<<endl;
    cout<<"1---------------------为查找(按书名)"<<endl;
    cout<<"2---------------------为查找(按定价)"<<endl;
    cout<<"3---------------------为插入"<<endl;
    cout<<"4---------------------为删除"<<endl;
    cout<<"5---------------------为修改"<<endl;
    cout<<"6---------------------为按照图书编号排序"<<endl;
    cout<<"7---------------------为按照图书的价格排序"<<endl;
    cout<<"8---------------------为显示当前馆内的图书总数"<<endl;
    cout<<"请输入要选择的功能:";
    while(sele == 1)
    {
        l.select();
        cout<<"是否要退出管理系统?(输入0退出、输入1继续)";
        cin>>sele;
        cout<<"请输入要选择的功能:";
    }
    cout<<"-----------已退出图书管理系统------------";
    return 0;
}

4.效果

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

C++实现图书信息管理系统

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

如何使用C++实现图书信息管理系统

小编给大家分享一下如何使用C++实现图书信息管理系统,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!具体内容如下1.题目:类型有:编号:ISBN书名:name价格:price完成如下的功能:①录入:从键盘输入(或从文件读入)
2023-06-29

C++利用链表如何实现图书信息管理系统

这篇文章将为大家详细讲解有关C++利用链表如何实现图书信息管理系统,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。C++利用链表实现一个简单的图书信息管理系统,具体内容如下(1)图书信息包括I
2023-06-25

C++如何实现图书管理系统

本文小编为大家详细介绍“C++如何实现图书管理系统”,内容详细,步骤清晰,细节处理妥当,希望这篇“C++如何实现图书管理系统”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。功能:1.首先是注册,登录,找回密码和修改
2023-06-29

C#如何实现图书管理系统

本文小编为大家详细介绍“C#如何实现图书管理系统”,内容详细,步骤清晰,细节处理妥当,希望这篇“C#如何实现图书管理系统”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一、设计目的通过模拟图书管理系统,实现以下功能
2023-06-29

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录