promotion image of download ymail app
Promoted

c++ 新增 修改 刪除 結束程式如何解答

寫一個程式 功能如下:

(1).可讓使用者先輸入:1.新增2.修改3.刪除4.結束程式

(2).按1為新增資料:可依序輸入: 學號,姓名,班級,並記錄之

(3).案2為修改資料:以及有資料中的學號為索引,修改對應的姓名與班級內容

(4)案3為刪除程式,並將現有的資料以學號"由小到大"排序後顯示在螢幕上

而程式中需包含:

(1)建立"SDATA"結構名稱,內容包含:學號,姓名,班級等欄位

(2)新增"CDATA"類別,其成員變數包含CDATA結構的指標陣列:*lps[1000],以計入輸入資料

(3)將新增,修改,刪除,及排序等功能以CDATA的"成員函數"撰寫

(4)修改資料的函數須為多載函數,例如:modify(int index,string name),modify(int index,string name,string cla),可以只修改姓名或同時修改姓名與班級。

有哪位高手能幫幫忙 謝謝~~~

已更新項目:

謝謝您的幫忙~

1 個解答

評分
  • 6 年前
    最佳解答

    #include <iostream>

    #include <string>

    #include <map>

    using namespace std;

    class S{

    public:

    int id,y;

    string nam;

    S():id(0),y(0),nam(""){

    cout<<"Enter id: " && cin>>id &&

    cout<<"Enter class year: " && cin >> y &&

    cout<<"Enter name: " && cin >> nam;

    }

    ~S(){}

    void m(string a){nam=a;}

    void m(int yr){y=yr;}

    void p(){

    cout<<"id: "<< id << endl

    <<"class year: " << y << endl

    <<"name: " << nam << endl;

    }

    };

    typedef std::map <int,S*> SL;

    typedef std::pair<int,S*> SP;

    int o(){

    int c;

    cout<<"1: add new record" << endl

    <<"2: mod an existing record" << endl

    <<"3: delete an existing record" << endl

    <<"4: print existing records" << endl

    <<"0: quit the prog"<<endl;

    cin>>c;

    return c;

    }

    int main(){

    SL c;

    SL::iterator ci;

    int x;

    for(;0<(x=o());){

    switch(x){

    case 1: {

    S *a=new S();

    if(c.end()==c.find(a->id)){

    c.insert(SP(a->id,a));

    } else {

    delete a;

    cout << "id already exists" << endl;

    }

    }

    break;

    case 2:{

    int id;

    cout << "modify id=" && cin>>id;

    if(c.end()!=(ci=c.find(id))){

    int yy; string aa;

    cout << "enter new year" && cin>>yy;

    ci->second->m(yy);

    cout << "enter new name" && cin>>aa;

    ci->second->m(aa);

    } else

    cout<<"bad id"<<endl;

    }

    break;

    case 3:{

    int id;

    cout << "delete id=" && cin>>id;

    if(c.end()!=(ci=c.find(id))){

    delete ci->second;

    c.erase(ci);

    } else

    cout<<"bad id"<<endl;

    }

    case 4:

    for(ci=c.begin();c.end()!=ci;++ci)ci->second->p();

    break;

    }

    }

    for(ci=c.begin();c.end()!=ci;++ci){delete ci->second; c.erase(ci);}

    cout << "謝謝你的使用" << endl;

    return 0;

    }

    • Commenter avatar登入以對解答發表意見
還有問題?馬上發問,尋求解答。