91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何使用C++實現圖書信息管理系統

發布時間:2022-03-14 09:14:44 來源:億速云 閱讀:232 作者:小新 欄目:開發技術

小編給大家分享一下如何使用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.效果

如何使用C++實現圖書信息管理系統

看完了這篇文章,相信你對“如何使用C++實現圖書信息管理系統”有了一定的了解,如果想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

c++
AI

凤冈县| 堆龙德庆县| 阳谷县| 广宁县| 乐都县| 即墨市| 蕉岭县| 黑龙江省| 兴海县| 罗源县| 宁陕县| 沭阳县| 营山县| 中西区| 太湖县| 随州市| 罗平县| 桃园县| 霍州市| 建平县| 肥西县| 江源县| 宜兴市| 武强县| 明星| 西贡区| 田东县| 廉江市| 资源县| 修武县| 阿巴嘎旗| 晴隆县| 临海市| 错那县| 凌源市| 阜平县| 揭西县| 肃宁县| 霍山县| 安岳县| 外汇|