c++_电话薄

来源:互联网 发布:js求一个数组的最大值 编辑:程序博客网 时间:2024/06/11 06:35
编写C++程序完成以下功能:(1) 实现简单电话本功能,用姓名来搜索电话号码;(2) 用户输入姓名,程序查找并输出结果;(3) 用户可以通过输入,添加姓名和电话号码;(4) 用户可以删除姓名和电话号码;(5) 电话本可以保存在指定文件中;(6) 电话可被从指定文件中读入到内存。#include<iostream>#include<fstream>#include<stdio.h>#include<stdlib.h>using namespace std;struct imformationlist{       char name[30];       char num[20];       struct imformationlist* nextPtr;};typedef struct imformationlist List;typedef struct imformationlist* ListPtr;class operate{private:       char order;       ListPtr HeadPtr;public:       operate(char a='2',ListPtr N0=NULL) {order=a;HeadPtr=N0;}       ~operate() {}       void setoperate(char b='2') {order=b;}         void setoperate(ListPtr N=NULL) {HeadPtr=N;}       void seek();    void deleteit();    void input();       void print();       void select();       void outfile();       void infile();};void operate::select(){       switch(order)       {          case '0':                     deleteit();                     break;              case '1':                     seek();                     break;              case '2':                     input();                     break;              case '3':                     print();                     break;              case '4':            infile();            break;              default:                     break;       }}void operate::input(){       ListPtr newPtr=NULL,previousPtr=NULL,currentPtr=NULL;    char NAME[30];    char NUM[20];       int i=0,j=0;       cout<<"请输入姓名:"<<endl;    cin>>NAME;       cout<<endl<<"请输入其电话号码:"<<endl;    cin>>NUM;//     newPtr=new List;       newPtr=(ListPtr)malloc(sizeof(List));       if(newPtr!=NULL)       {                          while(NAME[i]!='\0')              {                (newPtr->name)[i]=NAME[i];                i++;              }              (newPtr->name)[i]='\0';              while(NUM[j]!='\0')              {                (newPtr->num)[j]=NUM[j];                j++;              }                   (newPtr->num)[j]='\0';              previousPtr=NULL;              currentPtr=HeadPtr;              if(currentPtr==NULL)              {                     HeadPtr=newPtr;                     HeadPtr->nextPtr=NULL;              }              else              {                     while(currentPtr!=NULL)                     {                            previousPtr=currentPtr;                            currentPtr=currentPtr->nextPtr;                     }                     previousPtr->nextPtr=newPtr;                     newPtr->nextPtr=NULL;              }       }}void operate::deleteit(){       ListPtr currentPtr=NULL,previousPtr=NULL,holdPtr=NULL;       char NAME[30];        int i=0,same=0;       cout<<endl<<"请输入要删除信息的联系人名字:"<<endl;    cin>>NAME;       currentPtr=HeadPtr;       if(currentPtr==NULL)       {              cout<<endl<<"当前电话本为空,不能执行删除操作!"<<endl;       }       else       {              while(currentPtr!=NULL)              {                     i=0;                     while(NAME[i]!='\0'&&(currentPtr->name)[i]!='\0')                     {                            if(NAME[i]!=(currentPtr->name)[i])                            {                                   same=0;                                   goto PRT;                            }                            same=1;                            i++;                     }                     if(!(NAME[i]=='\0'&&(currentPtr->name)[i]=='\0'))                     {                            same=0;                     }PRT:                  if(same==1)                     {                            if(HeadPtr==currentPtr)                            {                                   previousPtr=HeadPtr;                    HeadPtr=HeadPtr->nextPtr;                            }                            previousPtr->nextPtr=currentPtr->nextPtr;                            //currentPtr->nextPtr=NULL;                            free(currentPtr);                            currentPtr=previousPtr->nextPtr;                     }                     else                     {                            previousPtr=currentPtr;                            currentPtr=currentPtr->nextPtr;                     }              }            }}void operate::seek(){       ListPtr previousPtr,currentPtr;       char NAME[30];              int i=0,same=0,j=0;       cout<<endl<<"请输入要查找信息的联系人名字:"<<endl;       cin>>NAME;    previousPtr=NULL;       currentPtr=HeadPtr;       if(currentPtr==NULL)       {              cout<<endl<<"当前电话本为空,不能查找!"<<endl;       }       else       {              while(currentPtr!=NULL)              {                     i=0;                     while(NAME[i]!='\0'&&(currentPtr->name)[i]!='\0')                     {                            if(NAME[i]!=(currentPtr->name)[i])                            {                                   same=0;                                   goto PRT1;                            }                            same=1;                            i++;                     }                     if(!(NAME[i]=='\0'&&(currentPtr->name)[i]=='\0'))                     {                            same=0;                     }PRT1:                     if(same==1)                     {                            cout<<endl<<"要找的电话号码为:";                            cout<<(currentPtr->num);                            cout<<endl;                            j++;                     }                     previousPtr=currentPtr;                     currentPtr=currentPtr->nextPtr;              }              if(j==0)              {                     cout<<endl<<"没有要找的联系人信息!"<<endl;              }       }}void operate::print(){       ListPtr currentPtr;             currentPtr=HeadPtr;         if(currentPtr==NULL)       {              cout<<endl<<"当前电话本为空,没有信息!"<<endl;       }       else       {              cout<<endl<<"当前电话本信息如下:"<<endl;              while(currentPtr!=NULL)              {                     cout<<(currentPtr->name);                     cout<<": ";                     cout<<(currentPtr->num);                     cout<<endl;                     currentPtr=currentPtr->nextPtr;              }       }}void operate::outfile(){     ListPtr previousPtr=NULL,currentPtr=NULL;     ofstream outf;     outf.open("file",ios::out);     if(outf.fail())     {         cout<<"文件打开失败!"<<endl;         return;     }     currentPtr=HeadPtr;     while(currentPtr!=NULL)     {         outf<<(currentPtr->name)<<" "<<(currentPtr->num)<<endl;         previousPtr=currentPtr;         currentPtr=currentPtr->nextPtr;     }     outf.close();}void operate::infile(){     ListPtr previousPtr=NULL,currentPtr=NULL;     ifstream inf("file",ios::in);       if(inf.fail())      {           cout<<"文件打开失败!"<<endl;           return;       }       if(inf.eof())       {           cout<<"文件file为空文件!"<<endl;           return;       }        else      {         currentPtr=(ListPtr)malloc(sizeof(List));         inf.getline(currentPtr->name,30,' ');         inf.getline(currentPtr->num,20);           HeadPtr=currentPtr;         while(!inf.eof())         {                        previousPtr=currentPtr;                         currentPtr->nextPtr=(ListPtr)malloc(sizeof(List));             currentPtr=currentPtr->nextPtr;             inf.getline(currentPtr->name,30,' ');             inf.getline(currentPtr->num,20);                            }         currentPtr->nextPtr=NULL;         }     inf.close();}int main(){       char x;       ListPtr M=NULL;       operate Phion;       cout<<"请输入指令进行操作:-》删除;"<<endl;       cout<<"                    1-》查找;"<<endl;       cout<<"                    2-》添加;"<<endl;       cout<<"                    3-》查看电话本;"<<endl;              cout<<"                    4-》读取文件file中的数据;"<<endl;    cout<<"                    其他-》退出;"<<endl<<endl;       cout<<"请输入指令:"<<endl;       cin>>x;         Phion.setoperate(M);         while(x=='0'||x=='1'||x=='2'||x=='3'||x=='4')       {              Phion.setoperate(x);              Phion.select();              cout<<endl<<"请输入指令:"<<endl;              cin>>x;              if(x!='0'&&x!='1'&&x!='2'&&x!='3'&&x!='4')              {                     goto PRT2;              }       }PRT2:    Phion.outfile();       system("pause");       return 0;}
0 0
原创粉丝点击