C++電話本程式

來源:互聯網
上載者:User
/*        C++電話本程式               *//* 1.可實現txt檔案的讀取和儲存。      *//* 2.可實現連絡人的增添、刪除和修改。 *//* 3.可實現通過連絡人查詢號碼。       *//* 4.可實現通過號碼查詢連絡人。       *//* 5.可實現全部連絡人的顯示。         *//* 運行環境vs2010||codeblocks         */#include<iostream>#include<string>#include<vector>#include<fstream>#include<set>#include<stdlib.h>using namespace std;#define file_name1 "phonenumin.txt" //使用宏定義輸出檔案名#define file_name2 "phonenumout.txt"class Phonenumtext{    public:      string name;      string num;     Phonenumtext(string mz,string hm){        name=mz;        num=hm;      }};class all{  public:      vector<Phonenumtext> phone;      bool addnum(string mz,string hm);      bool delnum(int bianhao);      void displaynum(vector<Phonenumtext>::iterator iter1);      void displayallnum();      int change(int bianhao);      void find1(string hm);      void find2(string mz);      void readfromtxt();      void savetxt();}ans;bool all::addnum(string mz,string hm){  Phonenumtext tmp(mz,hm);     for(int i=0;i<phone.size();i++){               if(mz==phone[i].name){                 cout<<"該連絡人已經存在!"<<endl;                 return false;                }         }    phone.push_back(tmp);    cout<< "新增連絡人... "<<tmp.name<<" 成功" << endl;    return false;}bool all::delnum(int bianhao){      if(bianhao>phone.size() || bianhao<1){        cout << "編號輸入錯誤" << endl;        return false;    }    vector<Phonenumtext>::iterator iter1;    iter1=phone.begin()+bianhao-1;    phone.erase(iter1);    return true;}int all::change(int bianhao){      if(bianhao>phone.size()||bianhao<1){        cout<<"編號輸入錯誤"<<endl;        return 0;      }      vector<Phonenumtext>::iterator iter1;      iter1=phone.begin()+bianhao-1;      cout<<"輸入需要修改後的新號碼:"<<endl;       string str;      cin>>str;      iter1->num=str;      return 1;}void all::displayallnum(){       if(phone.size()==0){        cout << "沒有連絡人資訊" << endl;        return;    }    cout << "編號\t姓名\t號碼" << endl;    for(vector<Phonenumtext>::iterator iter1=phone.begin();iter1!=phone.end();iter1++){        displaynum(iter1);    }}void all::displaynum(vector<Phonenumtext>::iterator iter1){      cout << (int)(iter1-phone.begin()+1) << "\t" << iter1->name << "\t";      cout << "\t" << iter1->num << "\t\t" <<endl;}void all::find1(string hm){   //輸入號碼查詢連絡人   for(vector<Phonenumtext>::iterator iter1=phone.begin();iter1!=phone.end();iter1++){      if(iter1->num==hm)        cout<<"該號碼的連絡人為:"<<iter1->name<<endl;            return;      }      cout<<"無該號碼的連絡人!"<<endl;      return ;}void all::find2(string mz){  //輸入連絡人查詢號碼  for(vector<Phonenumtext>::iterator iter1=phone.begin();iter1!=phone.end();iter1++){      if(iter1->name==mz)      cout<<"改連絡人的號碼為:"<<iter1->num<<endl;        return;      }      cout<<"無該連絡人的號碼!"<<endl;      return;}void all::readfromtxt(){    //從檔案讀取    ifstream fin(file_name1);    string mz,hm;    while(fin >> mz>>hm){        addnum(mz,hm);    }    fin.close();    cout << "讀取到" << phone.size() << "組資料" << endl;    system("pause");}void all::savetxt(){   //儲存至檔案    ofstream fout(file_name2);    for(vector<Phonenumtext>::iterator iter1=phone.begin();iter1!=phone.end();iter1++){        fout << "連絡人" <<"\t"<< iter1->name << endl;        fout<<"號碼"<<"\t"<<iter1->num<<endl;    }    fout.close();    cout << "儲存完畢" << endl;}void menu_add(){  //新增連絡人...菜單    string name,num;    cout << "->新增連絡人..." << endl;    cout << "您正在添加第 " << ans.phone.size()+1 <<" 個連絡人" << endl;    cout << "請輸入連絡人姓名:" << endl;    cin >> name;    cout<<"請輸入連絡人號碼:";    cin>>num;    ans.addnum(name,num);    return;}void menu_del(){    //連絡人刪除菜單    cout << "->刪除連絡人" << endl;    if( ans.phone.size()==0){        cout << "沒有連絡人資訊,無法執行刪除操作" << endl;        return;    }    ans.displayallnum();    cout << "請輸入要刪除連絡人的編號:" << endl;    int ipt;    cin >> ipt;    if(ans.delnum(ipt)) cout << "刪除成功" << endl;    else cout << "刪除失敗" << endl;    return;}void menu_change(){      ans.displayallnum();    cout<<"->輸入需要修改連絡人的編號"<<endl;      int x;      cin>>x;   if(ans.change(x))   cout << "您已成功修改第 " << ans.phone.size() <<" 個連絡人" << endl;   else      menu_change();}void menu_find(){  //查詢菜單      cout<<"->查詢"<<endl;        if( ans.phone.size()==0){        cout << "沒有連絡人資訊,無法執行查詢操作" << endl;        return;    }    cout<<"請選擇您要進行的操作:"<<endl;    cout<<"\t1.輸入號碼查詢連絡人"<<endl;    cout<<"\t2.輸入連絡人查詢號碼"<<endl;    cout<<"\t3.返回"<<endl;      int x;   string str;      cin>>x;      switch(x){            case 1:cout<<"請輸入需要查詢的連絡人的號碼:"<<endl;                   cin>>str;  ans.find1(str);  break;            case 2:cout<<"請輸入需要查詢的連絡人的姓名:"<<endl;                   cin>>str;  ans.find2(str);  break;            case 3: return;            default: cout << "輸入有誤" << endl;      }}void menu1(){  //主菜單      int ipt;      system("cls");      while(true){      cout<<"\t*******************************"<<endl;      cout<<"\t\t歡迎使用您的電話本"<<endl;      cout<<"\t*******************************"<<endl<<endl;      cout << "請選擇您要進行的操作:" << endl;        cout << "      1.新增連絡人..." << endl;        cout << "      2.刪除連絡人" << endl;        cout << "      3.顯示全部連絡人" << endl;        cout << "      4.尋找" << endl;        cout << "      5.修改" << endl;        cout << "      6.儲存到檔案" << endl;        cout << "      7.退出程式" << endl;        cin >> ipt;        switch(ipt){        case 1:menu_add();break;        case 2:menu_del();break;        case 3:ans.displayallnum();break;        case 4:menu_find();break;        case 5:menu_change();break;        case 6:ans.savetxt();break;        case 7:exit(0);break;        default:cout << "輸入有誤,請重新輸入" << endl;break;        }        system("pause");        system("cls");   }}int main(){    int ipt1;    string str1;    system("color A");    cout<<"\t*******************************"<<endl;    cout<<"\t\t歡迎使用您的電話本"<<endl;    cout<<"\t*******************************"<<endl<<endl;    retry:  cout << "請選擇資料來源:" << endl;            cout << "1.從檔案讀入" << endl;            cout << "2.鍵盤錄入" << endl;            cout << "請輸入:" << endl;            cin >> ipt1;           switch(ipt1){    case 1: ans.readfromtxt();break;    case 2:break;    default:cout << "輸入錯誤,請重新輸入" << endl;goto retry;break;    }    menu1();    return 0;}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.