⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 个人通讯录.cpp

📁 应用C++语言
💻 CPP
字号:
#pragma hdrstop
#include <iostream>      //引用输入输出流  
#include <string>
using namespace std;
const int MaxSize=100;  //100只是示例性的数据,可以根据实际问题具体定义

struct Myfrinde
{ 
  string name;     //姓名
  string tel;      //电话号
  string born;     //出生日期
  string qq;   //qq或MSN号   
  string addr;     //住址
};
template < class T >
class SeqList
{
public:
   SeqList() {length=0;}       //无参构造函数
   SeqList(T a[ ], int n);       //有参构造函数
   ~SeqList( ) { }             //析构函数为空
   int Length( ) {return length;}  //求顺序表的长度
   T Get(int i);             //取顺序表的第i个元素
   void Insert(int i, T x);  //在顺序表中第i个位置插入值为x的元素
   T Delete(int i);        //删除顺序表的第i个元素
   void Exchange(int i); //修改顺序表第i个元素 
   void PrintList( );       //遍历顺序表,按序号依次输出各元素
   void PrintMyfrinde(T x);  //有参输出函数
private:
   T data[MaxSize];     //存放数据元素的数组
   int length;            //顺序表的长度
};
template <class T > SeqList<T>:: SeqList(T a[ ], int n)
{
  int i;
  if (n>MaxSize) throw "参数非法";
  for (i=0; i<n; i++)
    data[i]=a[i];
  length=n;
}

/*
 *  插入函数Insert,将x插入到顺序表第i个位置
 */
template <class T >  void SeqList<T>::Insert(int i, T x)
{
  int j;
  if (length>=MaxSize) throw "上溢";
  if (i<1 || i>length+1) throw "位置错误";
  for (j=length; j>=i; j--)
  data[j]=data[j-1];   //注意第j个元素存在数组下标为j-1处
  data[i-1]=x;
  length++;
}
template <class T >  void SeqList<T>::Exchange(int i)
{
   
   int  which;
   string name;   //姓名
   string born;   //生日
   string qq;    //qq或MSN号
   string tel;      //手机号
   string addr;   //住址
   system("color f9");
   cout << "\n";
   cout << "\t\t★★★★★★★★★★★★★★★★★★★★★★★"<< "\n";
   cout << "\n";
   cout << "\t\t★          需要修改朋友名字请按1           ★" << "\n";
   cout << "\n";
   cout << "\t\t★          需要修改朋友电话号请按2         ★" << "\n";
   cout << "\n"; 
   cout << "\t\t★          需要修改朋友生日请按3           ★" << "\n";
   cout << "\n";
   cout << "\t\t★         需要修改朋友QQ或MSN请按4         ★" << "\n";
   cout << "\n"; 
   cout << "\t\t★          需要修改朋友的地址请按5         ★" << "\n";
   cout << "\n";
   cout << "\t\t★               需要返回请按6              ★" << "\n";
   cout << "\n";
   cout << "\t\t★★★★★★★★★★★★★★★★★★★★★★★" << "\n";
   cin >> which;
   system("cls");
        switch( which ) 
     {
      case 1:
             cout << endl;
             cout << "修改后朋友姓名:" << "\n";
             cin >> name;
             data[i].name=name;
             system("cls");
       break;
      case 2:                   
             cout << endl;
             cout << "修改后朋友电话号:" << "\n";
             cin >> tel;
              data[i].tel=tel;
              system("cls");
       break;       
      case 3:                   
             cout << "修改后朋友生日:" << "\n";
             cin >> born;
             data[i].born=born;
             system("cls");
       break;       
      case 4:      
             cout << endl;
             cout << "修改后朋友qq或MSN号:" << "\n";
             cin >> qq; 
             data[i].qq=qq; 
             system("cls");
      break;
      case 5:                             
             cout << "修改后朋友地址:" << "\n";
             cin >> addr;
             cout << endl;
             data[i].addr=addr;
             system("cls");
       break;
      case 6:               
       break;
       }
             
}

/*
 *  删除函数Delete,删除顺序表中第i个元素
 */
template <class T > T SeqList<T>::Delete(int i)
{
  int j;
  if (length==0 ) throw "下溢";
  if (i<1 || i>length) throw "位置错误";
  T x=data[i-1];
  for (j=i; j<length; j++)
    data[j-1]=data[j];   //注意此处j已经是元素所在的数组下标
  length--;
  return x;

}

/*
 *  遍历输出函数PrintList,输出所有顺序表中元素
 */


template <class T >  void SeqList<T>::PrintList( )
{
 int i;
 for (i=0; i<length; i++)
  {
    cout << endl;   
    cout << "姓名:" << data[i].name << endl; 
    cout << endl;
    cout << "电话号:" << data[i].tel << endl;  
    cout << endl;
    cout << "出生日期:" << data[i].born << endl;
    cout << endl;
    cout << "qq或MSN: " << data[i].qq << endl; 
    cout << endl;   
    cout << "住址:" << data[i].addr << endl;
  }
}

/*
 *  输出函数PrintStudent,输出顺序表中元素x
 */
template <class T > void SeqList<T>::PrintMyfrinde(T x)
{
  cout << endl;
  cout << "姓名:" << x.name << endl;
  cout << endl;
  cout << "电话号:" << x.tel<< endl;
  cout << endl;
  cout << "出生日期:" << x.born << endl;
  cout << endl;
  cout << "qq或MSN:" << x.qq << endl;  
  cout << endl;
  cout << "住址:" << x.addr << endl;
}

//取函数Get,从顺序表中返回第i个元素,并作为返回值返回
template <class T> T SeqList<T>::Get(int i)
{
  if (i>=0 && i<=length-1)
  return data[i];
  else
   {
	  T stu;
	 
     return stu;
   }
}




int main(int argc, char* argv[])
{

 int which;        //功能选择变量
 int i;
 int choose=0;    //控制 
 string name;   //姓名
 string born;   //生日
 string qq;    //qq或MSN号
 string tel;      //手机号
 string addr;   //住址
 int where;       //插入位置
 int length;      //链表长度
 SeqList< Myfrinde > s; //创建模版类的实例s
 Myfrinde temp;
 
 system("color 9f");
 cout << "\n"<< "\n"<< "\n"<< "\n"<< "\n";
   cout << "            ------------------------------------------" << "\n";
   cout << "            ******************************************" <<"\n";
   cout << "            **** 欢迎使用                         ****" << "\n";
   cout << "            ****                                  ****" << "\n";
   cout << "            ****        个人通讯录                ****" << "\n";
   cout << "            ****                                  ****" << "\n";
   cout << "            ****                管理系统          ****" << "\n";
   cout << "            ****                                  ****" << "\n";
   cout << "            ****         输入Enter键继续          ****" << "\n";
   cout << "            ******************************************" << "\n";
   cout << "            ------------------------------------------" << "\n";

   getchar();
   system("cls");

 while ( choose==0 )
 {
   cout << "\n";
   cout << "\t\t★★★★★★★★★★★★★★★★★★★★★★★"<< "\n";
   cout << "\n";
   cout << "\t\t★          需要插入朋友信息请按1           ★" << "\n";
   cout << "\n";
   cout << "\t\t★          需要删除朋友信息请按2           ★" << "\n";
   cout << "\n";
   cout << "\t\t★          需要修改朋友信息请按3           ★" << "\n";
   cout << "\n";
   cout << "\t\t★          需要查询朋友信息请按4           ★" << "\n";
   cout << "\n";
   cout << "\t\t★         需要输出全部朋友信息请按5        ★" << "\n";
   cout << "\n";
   cout << "\t\t★             需要退出请按6                ★" << "\n";
   cout << "\n";
   cout << "\t\t★★★★★★★★★★★★★★★★★★★★★★★" << "\n";
   cin >> which;
   system("cls");
   switch( which ) 
     {
      case 1:
             cout << endl;
             cout << "需要插入朋友姓名:" << "\n";
             cin >> name;
             cout << endl;
             cout << "需要插入朋友电话号:" << "\n";
             cin >> tel;
             cout << endl;
             cout << "需要插入朋友出生日期:" << "\n";
             cin >> born;
             cout << endl;
             cout << "需要插入朋友qq或MSN号:" << "\n";
             cin >> qq;  
             cout << endl;          
             cout << "需要插入朋友地址:" << "\n";
             cin >> addr;
             cout << endl;
             cout << "需要插入朋友位置:" << "\n";
             cin >> where;
             
             
             for (i=0; i<20; i++)   //将输入附给Myfrinde类型的temp
               {
                
                temp.name = name;
                temp.tel = tel;
                temp.qq= qq;
                temp.born = born;                
                temp.addr = addr;
               }
              try
               {
                s.Insert( where, temp );  //插入temp插入到顺序表中where位置
                
               }
              catch(char* wrong)
               {
                cout << wrong;     //如失败提示失败信息
               }
               system("cls");
     
      break;
      case 2:
             cout << "需要删除的朋友位置" << "\n";
             cin >> where;
             try
              {
               s.Delete(where);
			   cout << "已经删除";//删除顺序表中where位置的元素
              }
             catch(char* wrong)
              {
               cout << wrong;      //如失败提示失败信息
              }
             system("cls");
     break;
     case 3:
            cout << "需要要修改朋友姓名:" << "\n";
            cin >> name;
            length =s.Length();    //取顺序表长度附给length

            for (i=0; i<length; i++) //查询信息
           {
                 temp=s.Get(i);
                 if ( temp.name==name )
                {
                   try
                   {
                      s.Exchange(i);       //修改信息
                    }
                    catch(char* wrong)
                   {
                       cout << wrong;  //如失败提示失败信息
                   }
                }
            }
            system("cls");
     break;
    case 4:
             cout << "需要输入朋友名字查询座机号:" << "\n";
             cin >> name;
             length =s.Length();    //取顺序表长度附给length

             for (i=0; i<length; i++) //查询信息
             {
              temp=s.Get(i);
              if ( temp.name == name )
              {
               try
               {
                s.PrintMyfrinde(temp);       //输出所查信息
               }
               catch(char* wrong)
               {
                cout << wrong;  //如失败提示失败信息
               }
              }
              else
               cout << "fail to search\n";  //如失败提示失败信息
             }
              system("PAUSE");
              system("cls");
     break;
     system("cls");

    case 5:
             try
             {
              s.PrintList( );         //输出所有信息
             }
             catch(char* wrong)
             {
              cout << wrong;   //如失败提示失败信息
             }
             system("PAUSE");
    case 6:
             choose=1;
             system("cls");
    break;
    
  }
 }
   return 0;
}
//---------------------------------------------------------------------------

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -