[数据结构][C++]使用线性表实现一个通讯录

使用线性表实现一个通讯录,通讯录内容包含学号、姓名、电话三项数据。完成通讯录数据的建立,纪录插入和删除功能。

#include <iostream.h>
#include <conio.h>
#include <iomanip.h>
#include <string.h>
//--------------------------------------------------------------------
struct ElemType              // 数据元素的类型
{ 
        int numb;
        char name[20];
        int tel;
};

const int MAXSIZE=100;     // 数组的容量

class Sqlist
{
private:
        ElemType  elem[MAXSIZE];
        int length;
    public:
                Sqlist( void);
                ~Sqlist(){ };
                void  SetData();
                void  Insert( int i, ElemType e);
                ElemType Delet(int i);
                void PrintOut();
};
//-------------------------------------------------------------
Sqlist::Sqlist( ) { length=0;}
void  Sqlist::SetData( )     //初步建立一个通讯录 
{
        cout<<"\n 输入人数length="<<endl;
        cin>>length;
        for(int i=0;i<length;i++)
        { 
                cout<<"\n 输入学号:";  
                cin>>elem[i].numb;
                cout<<"\n 输入姓名:"; 
                cin>> elem[i].name;
                cout<<"\n 输入电话号:="; 
                cin>>elem[i].tel;
        }
}
void  Sqlist::Insert( int i, ElemType e) //请完成此函数
{
        if(length==MAXSIZE)
                cout<<"FLOW!"<<endl;
        else
                if(i<1||i>length+1)
                        cout<<"Insert ERROR!"<<endl;
                else
                        for(int j=length;j>=i;j--)
                                elem[j]=elem[j-1];
                        elem[i-1]=e;
                        length++;
                        cout<<"Insert success!"<<endl;

}
ElemType Sqlist::Delet(int i)
{
  ElemType x;
        if(i<1||i>length)
                cout<<"RANGE ERROR!"<<endl;
        else
        {
                x=elem[i-1];
                for(int j=i;j<length;j++)
                        elem[j-1]=elem[j];
                length--;
                cout<<"success"<<endl;
        }
   return x;
}
void Sqlist::PrintOut()  //输出
{ 
        cout<<"\n 通讯录总人数:"<<length;
        cout<<"\n PrintOut Data:\n";
        cout<<setw(16)<<"学号"<<setw(20)<<"姓名"<<setw(20)<<"电话号"<<endl;
        for(int k=0; k<length;k++)      
        { 
                cout<<setw(16)<<elem[k].numb<<setw(20)<<elem[k].name<<setw(20)<<elem[k].tel<<endl;
        }
}
//--------------------------------------------------
int main( )
{ int i,k;  ElemType e,x;
  Sqlist  as;
  cout<<"\n               通讯录演示";
  do{
      cout<<"\n\n";
      cout<<"\n\n    1. 初步建立一个通讯录(线性表) ";
      cout<<"\n\n    2. 插入一个数据元素 ";
      cout<<"\n\n    3. 删除一个元素,返回其值";
      cout<<"\n\n    4. 结束程序";
      cout<<"\n******************************** ";
      cout<<"\n    请输入你的选择(1,2,3,4)";  cin>>k;
          switch(k)
          { 
          case 1:
                  {  as.SetData(); as.PrintOut();  }break;
          case 2:{ cout<<"\n 插入的位置, i=?"; cin>>i;
                   cout<<"\n 插入的数据 编号=?"; cin>>e.numb;
                   cout<<"\n 插入的数据 姓名=?"; cin>>e.name;
                   cout<<"\n 插入的数据 电话号=?"; cin>>e.tel;
                   as.Insert(i,e);  as.PrintOut();
                 }break;
          case 3:{ cout<<"\n 删除第几个元i=?";  cin>>i;
                  x=as.Delet(i);
                  cout<<"\n  被删除的元素数值= "<<setw(10)<<x.numb<<
                  setw(10)<<x.name<<setw(10)<<x.tel;
                  as.PrintOut();
                 }break;
          default:break;
          } //switch
  }while(k>=1&&k<4);
  cout<<"\n          再见!";  cout<<"\n     按任意键,返回。";
  _getch(); return 0;
}

猜你喜欢

转载自blog.csdn.net/Keith_Prime/article/details/82799914
今日推荐