通信録——データ構造課設置


学友を手伝ってn多课设を书いて、とても简単だと感じて、あまり気にしていないで、これはまた20 minを使って人を手伝って1つ书いて、ブログの上で出すことを决めて、后で谁が似ているのが直接リンクにあげます;-)機知の巣
タスク要件:
タイトルの説明:通信録の基本的な属性は番号、名前、性別、住所、連絡電話などを含む.最も基本的な機能モジュールは以下の通りである.
(1)通信録の作成;このモジュールは主にデータを格納する作業を完了します.レコードはテキストファイルから読み込むこともできるし、キーボードからメモを1つずつ入力することもできる.
(2)通信録照会;ユーザーは、連絡先の名前または電話番号に従って問い合わせることができます.調べたら、その記録の情報が表示されます.そうでなければ、検索に失敗したプロンプトが表示されます.
(3)通信録のメンテナンス;レコードの変更、削除、挿入、ソートなどの操作を実現します.
(4)通信録の出力;画面表示と記録情報のテキストファイルへの書き込みを実現
 
機能要求及び説明:
(1)メニュー選択操作を使用して、友好的なヒューマンマシンのインタラクティブなヒントと表示を持って、ユーザーがプログラムの運行過程、結果を入力して表示するのに便利である.
(2)プログラムは、ユーザの選択に従って、ユーザが終了するまで複数回実行することができる.
(3)問題解決のステップ(例えばキーボードから入力データ、ディスプレイに出力結果)を実行するには、ディスプレイに以を表示することができるほか、処理後の結果をファイルとしてoutfileに保存することができる.txtファイルにあります.
実はチェーンテーブルの操作です.次は直接コードを貼りましょう.
#include 
#include 
#include 
#include 

using namespace std;

typedef struct Node{ //       
    string name;
    string sex;
    string adress;
    string phoneNum;
    struct Node * next;
    Node(Node * p = NULL ){ next= p;}
    Node(const string &na,const string &se,const string &ad,const string &ph, Node * p = NULL){
        name = na;
        sex= se;
        adress = ad;
        phoneNum =ph;
        next= p;
    }
}Person;

class phonePage{
public :
    phonePage(){ //    ,
        Head = new Person();
    }
    //            
    Person *creatP(string na, string se, string ad,string ph){
        Person *tmp= new Person(na,se,ad,ph);
        return tmp;
    }
    //            
    Person *creatP(){
        Person *tmp= new Person();
        cout<> tmp->name;
        cout<> tmp->sex;
        cout<> tmp->adress;
        cout<> tmp->phoneNum;
        tmp->next= NULL;
        return tmp;
    }
    //       
    void addPfromFile(){
        ifstream ins;
        string na,se,ad,ph;
        ins.open("input.txt");
        Person * newP;
        Person *inse;
        while(ins>>na>> se>> ad >> ph ){
            newP= creatP(na,se,ad,ph);
            inse = findLast();
            inse->next = newP;
        }
        cout<< "       "<next !=NULL  )
            p=p->next;
        return p;
    }
    //         
    void  addPformKb(){
        Person * newP =creatP();
        newP->next = Head->next;
        Head->next = newP;
    }
    //          output.txt
    void WtoFile(){
        ofstream outs;
        outs.open("output.txt");
        Person *p = Head->next;
        while(p != NULL ){
            outs<name<sex << " "<< p->adress << " "<< p->phoneNum<< endl; p=p->next;
        }
        outs.close();
    }
    //       
    void resetPerson(Person *someP){
        if(someP == NULL ){
            cout<> someP->name;
            cout<> someP->sex;
            cout<> someP->adress;
            cout<> someP->phoneNum;
            cout<next;
        int cho;
        string str;
        cout<> cho;
        if(cho == 1 )
            cout<< "       :";
        else if(cho == 2 )
            cout<< "       :";
        else{
            cout<< "      ."<> str;
        while( p!=NULL ){
            if(cho == 1 ){
                if(p->name == str )
                    break;
            }else{
                if(p->phoneNum == str )
                    break;
            }
            p=p->next;
            q=q->next;
        }
        if(p!=NULL )
            return q;
        return NULL;
    }
    //    
    void delP(){
        Person * someP= findFrontDelP();
        if( someP == NULL ){
            cout<< "      ."<next);
            char suredel;
            cout<< "      :"<> suredel;
            if(suredel == 'Y' || suredel == 'y'){
                Person * del = someP->next;
                someP->next = someP->next->next;
                delete del;
                WtoFile();
            }
        }
    }
    //     ,        
    Person *findP(){
        Person *p =Head->next;
        int cho;
        string str;
        cout<> cho;
        if(cho == 1 )
            cout<< "       :";
        else if(cho == 2 )
            cout<< "       :";
        else{
            cout<< "      ."<> str;
        while(p!=NULL){
            if(cho == 1 ){
                if(p->name == str )
                    break;
            }else{
                if(p->phoneNum == str )
                    break;
            }

            p=p->next;
        }
        if(p == NULL )
            return NULL;
        return p;
    }
    //       
    void printAll(){
        Person *someP= Head->next;
        int num=0;
        if(someP == NULL )
            cout<< "     "<next;
        }
    }
    //         
    void printP(Person *somebody){
        if(somebody !=NULL ){
            cout<name      <sex       <adress   <phoneNum  <> cho;
    while(cho<1 || cho > 5){
        cout<>cho;
    }
    return cho;
}


int main()
{   phonePage *tml = new phonePage();
    int cho;
    while(  cho =mnue()){
        if(cho == 1){
            int tmp;
            cout<>tmp;
            if(tmp == 1){
                tml->addPfromFile();
            }else if(tmp == 2){
                tml->addPformKb();
            }else{
                cout<printP( tml->findP() );
        }else if(cho == 3){
            int tmp;
            cout<> tmp;
            if(tmp == 1){
                tml->resetPerson( tml->findP() );
            }else if(tmp == 2){
                tml->delP();
            }else if(tmp == 3){
                tml->printP( tml->findP() ) ;
            }else{
                cout<printAll();
            tml->WtoFile();
        }else{
            break;
        }
    }

    return 0;
}