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

📄 vc++phonetext.txt

📁 嵌入式Linux系统下的软件开发
💻 TXT
📖 第 1 页 / 共 4 页
字号:
    {
     cout<<endl;
     break; 
    }
  } 
    
 }

 else
 {
  cout<<endl<<"您的电话本里没有任何记录."<<endl<<endl;
 }
 
}

//===============================================================================================
//输入中多余字符去除函数

bool Tel_Book::Rest_Eat(void)
{
 char tempchar;
 bool restflag = false;
 while(cin.get(tempchar) && tempchar != '\n')
 {
  restflag = true;
 }
 return restflag; 
}

//===============================================================================================
//结构元素清空函数

void Tel_Book::Struct_Clr(Person_Info &tempstruct)
{ 
 strcpy(tempstruct.name,"");
 strcpy(tempstruct.sex,"");
 strcpy(tempstruct.tel,"");
 strcpy(tempstruct.mo_tel,"");
 strcpy(tempstruct.born,"");
 strcpy(tempstruct.email,"");
 strcpy(tempstruct.qq,"");
 strcpy(tempstruct.postid,"");
 strcpy(tempstruct.addr,"");
 strcpy(tempstruct.modtime,""); 
}

//===============================================================================================
//信息列表函数

void Tel_Book::Info_Detail(Person_Info &tempstruct)
{
 cout<<endl<<endl;
 cout<<setw(80)<<setfill('=')<<"=";   
 cout<<endl<<"1.姓    名: "<<tempstruct.name<<endl;
 cout<<endl<<"2.性    别: "<<tempstruct.sex<<endl;
 cout<<endl<<"3.电    话: "<<tempstruct.tel<<endl; 
 cout<<endl<<"4.出生年月: "<<tempstruct.born<<endl;
 cout<<endl<<"5.手    机: "<<tempstruct.mo_tel<<endl;
 cout<<endl<<"6.电子邮箱: "<<tempstruct.email<<endl;
 cout<<endl<<"7.QQ 号 码: "<<tempstruct.qq<<endl; 
 cout<<endl<<"8.通信地址: "<<tempstruct.addr<<endl;
 cout<<endl<<"9.邮政编码: "<<tempstruct.postid<<endl;
 cout<<endl<<"★修改时间: "<<tempstruct.modtime<<endl<<endl;
 cout<<setw(80)<<setfill('=')<<"=";
}

//===============================================================================================
//电话本内容信息检查函数

void Tel_Book::Info_Check()
{
 char ch = 0;
 Info_Detail(telstruct); 
 while(1)
 {
  cout<<endl<<"确定添加请按Y,退出请按N,查看请按L,如果修改请按相应的数字键:";
  cin.get(ch);
  if(ch == '\n')
   continue;
  if(Rest_Eat())  
   ch = 0;  
  
  if(ch == 'Y' || ch == 'y') 
  {
   if(Add_To_Dat())   
    cout<<endl<<"添加成功."<<endl;
   else
    cout<<endl<<"数据文件出错,添加失败."<<endl;
   break;
  }
  else if(ch >= '1' && ch <= '9') 
  {
   Info_Add_Mod(ch,false,telstruct);
   Info_Detail(telstruct);
   //cout<<endl<<"修改成功."<<endl;   
  }
  else if(ch == 'L' || ch == 'l')
  {
   Info_Detail(telstruct);
  }
  else if(ch == 'N' || ch == 'n')
   break;
 }  
 cout<<endl; 
}

//==============================================================================================
//数据保存函数

bool Tel_Book::Add_To_Dat()
{
 unsigned int i;
 char tempchar;
 char nowtime[30];
 Person_Info *next_entry = NULL; 
 fstream outfile;
 outfile.open(datstr,ios::out|ios::in|ios::binary|ios::app|ios::ate);
 if(!outfile) 
  return false; 
 System_Time(nowtime);
 strcpy(telstruct.modtime,nowtime); 
 for(i=0;i<structsize;i++)
 {
  tempchar = ((char *) &telstruct)[i] ^ datcode;
  outfile.put(tempchar);
 } 
 outfile.close();
 count++;
 next_entry = new Person_Info;
 
 if(head != NULL)
 {  
  tail->next = next_entry;
  next_entry->prv = tail;
  tail = next_entry;
  tail->next = NULL;  
 }
 else
 {
  head = tail = next_entry;
  next_entry->next = NULL;
  next_entry->prv = NULL;
 }
 strcpy(next_entry->name,telstruct.name);
 strcpy(next_entry->sex , telstruct.sex);
 strcpy(next_entry->born , telstruct.born);
 strcpy(next_entry->tel , telstruct.tel);
 strcpy(next_entry->mo_tel , telstruct.mo_tel);
 strcpy(next_entry->qq , telstruct.qq);
 strcpy(next_entry->email , telstruct.email);
 strcpy(next_entry->addr , telstruct.addr);
 strcpy(next_entry->postid , telstruct.postid);
 strcpy(next_entry->modtime,nowtime); 
 return true;
}

//===============================================================================================
//重名检查函数

bool Tel_Book::Name_Check(char str[])
{
 Person_Info *next_entry = head; 
 if(count != 0)
 {

  while(next_entry != NULL)
  {
   if(stricmp(next_entry->name,str) == 0)
    return false;
   next_entry = next_entry->next;
  }
 
 }
 return true;
}

//===============================================================================================
//电话本内容信息增加函数

void Tel_Book::Info_Add_Mod(char ch,bool add_or_modify,Person_Info &tempstruct)
{ 
 bool k = false;
 unsigned int i;
 char namebuffer[20];
 char nowtime[30];
 cout<<endl;
 if(add_or_modify)
 {
  Struct_Clr(tempstruct); 
  cout<<"请输入您要增加的信息,不填直接按回车(带*号的为必填内容):"<<endl;
 }
 
 //*******************************************************************************************
 //输入姓名
 
 if((!add_or_modify && ch == '1') || add_or_modify)
 {
  while(1)
  {
   if(k)
    if (strlen(namebuffer) == 0)
     cout<<endl<<"姓名不能为空,请重新输入:"<<endl;
    else if (strlen(namebuffer) > 10)
     cout<<endl<<"您输入的姓名超过5个汉字或10个英文字符"<<endl;
    else if(!Name_Check(namebuffer))
    {
     cout<<endl<<"您的电话本里已经有此姓名."<<endl<<endl;
     return;
    }
    else
    {
     strcpy(tempstruct.name,namebuffer);
     break;
    }
    k = true;
    cout<<endl<<"(*)姓名:";
    cin.getline(namebuffer,sizeof(namebuffer));    
    if(strlen(namebuffer) < sizeof(namebuffer)-1)
     continue;
    if(Rest_Eat())
     continue;
    
  }
  k = false;
 }

 //*******************************************************************************************
 //输入性别
 
 if((!add_or_modify && ch == '2') || add_or_modify)
 {
  char sexnum; 
  while(1)
  {
   if(k)
    if(strlen(tempstruct.sex) == 0)
     cout<<endl<<"性别不能为空,请重新输入:"<<endl;
    else
     break;
    k = true;
    cout<<endl<<"(*)性别(1.男 2.女):";
    cin.get(sexnum);
    if(sexnum == '\n')
     continue;
    if(Rest_Eat())
     continue;
    switch(sexnum)
    {
    case '1':
     strcpy(tempstruct.sex,"男");
     break;
    case '2':
     strcpy(tempstruct.sex,"女");
     break;
    default:break;
    }  
  }
  k = false;
 }
 
 //*******************************************************************************************
 //输入电话号码
 
 if((!add_or_modify && ch == '3') || add_or_modify)
 {
  while(1)
  {
   if(k)
    if(strlen(tempstruct.tel) == 0)
     cout<<endl<<"电话不能为空,请重新输入:"<<endl;
    else if(strlen(tempstruct.tel) > 15)
     cout<<endl<<"电话号码位数不能超过15位,请重新输入:"<<endl;
    else
    {
     for(i=0;i<strlen(tempstruct.tel);i++)
     {
      if(tempstruct.tel[i]<'0' || tempstruct.tel[i]>'9')
      {
       cout<<endl<<"电话号码含有非法字符,请重新输入:"<<endl;
       break;
      }
     }
     if(i == strlen(tempstruct.tel))
      break;
    }
    k = true;
    cout<<endl<<"(*)电话号码:"; 
    cin.getline(tempstruct.tel,sizeof(tempstruct.tel));
    if(strlen(tempstruct.tel) < sizeof(tempstruct.tel)-1)
     continue;
    if(Rest_Eat())
     continue;
  }
  k = false;
 }
 
 //********************************************************************************************
 //输入出生年月
 
 if((!add_or_modify && ch == '4') || add_or_modify)
 {
  while(1)
  {
   if(k)
    if(strlen(tempstruct.born) == 0)
    {
     cout<<endl<<"出生年月输入放弃."<<endl;
     break;
    }
    else if(strlen(tempstruct.born) != 8 && strlen(tempstruct.born) != 6)
     cout<<endl<<"出生年月不是8位或6位数字,请重新输入:"<<endl;
    else
    {
     for(i=0;i<strlen(tempstruct.born);i++)
     {
      if(tempstruct.born[i]<'0' || tempstruct.born[i]>'9')
      {
       cout<<endl<<"出生年月含有非法字符,请重新输入:"<<endl;
       break;
      }
     }
     if(i == strlen(tempstruct.born))
      break;
    }
    k = true;
    cout<<endl<<"出生年月:";
    cin.getline(tempstruct.born,sizeof(tempstruct.born));
    
    if(strlen(tempstruct.born) < sizeof(tempstruct.born)-1)
     continue;
    if(Rest_Eat())
     continue;
  }
  k = false;
 }
 
 //*******************************************************************************************
 //输入手机号码
 
 if((!add_or_modify && ch == '5') || add_or_modify)
 {
  while(1)
  {
   if(k)
    if(strlen(tempstruct.mo_tel) == 0)
    {
     cout<<endl<<"手机号码输入放弃."<<endl;
     break;
    }
    else if(strlen(tempstruct.mo_tel) > 15)
     cout<<endl<<"手机号码位数不能超过15位,请重新输入:"<<endl;
    else
    {
     for(i=0;i<strlen(tempstruct.mo_tel);i++)
     {
      if(tempstruct.mo_tel[i]<'0' || tempstruct.mo_tel[i]>'9')
      {
       cout<<endl<<"手机号码含有非法字符,请重新输入:"<<endl;
       break;
      }
     }
     if(i == strlen(tempstruct.mo_tel))
      break;
    }  
    k = true;
    cout<<endl<<"手机:";
    cin.getline(tempstruct.mo_tel,sizeof(tempstruct.mo_tel));
    
    if(strlen(tempstruct.mo_tel) < sizeof(tempstruct.mo_tel)-1)
     continue;
    if(Rest_Eat())
     continue;
  }
  k = false;
 }
 
 //*******************************************************************************************
 //输入电子邮箱
 
 if((!add_or_modify && ch == '6') || add_or_modify)
 {
  while(1)
  {
   if(k)
    if(strlen(tempstruct.email) == 0)
    {
     cout<<endl<<"电子邮箱输入放弃."<<endl;
     break;
    }
    else if(strstr(tempstruct.email,"@") == NULL)
    {
     cout<<endl<<"电子邮箱输入错误.请重新输入:"<<endl;
    }
    else
    {
     for(i=0;i<strlen(tempstruct.email);i++)
     {
      if((tempstruct.email[i]>='a'&&tempstruct.email[i]<='z') || (tempstruct.email[i]>='A'&&tempstruct.email[i]<='Z') || (tempstruct.email[i]>='0'&&tempstruct.email[i]<='9') || tempstruct.email[i] == '_' || tempstruct.email[i] == '.' || tempstruct.email[i] == '@')
       continue;
      else
      {       
       cout<<endl<<"电子邮箱输入错误.请重新输入:"<<endl;
       break;
      }
     }     
     if(i == strlen(tempstruct.email))     
      break;
    }  
    k = true;
    cout<<endl<<"电子邮箱:";
    cin.getline(tempstruct.email,sizeof(tempstruct.email));
    if(strlen(tempstruct.email) < sizeof(tempstruct.email)-1)
     continue;
    if(Rest_Eat())
    {
     cout << endl << "对不起,您输入了过多的字符,请重新输入:" << endl;
     k = false;
     continue;
    }  
  }
  k = false;
 }
 
 //********************************************************************************************
 //输入QQ号码
 
 if((!add_or_modify && ch == '7') || add_or_modify)
 {
  while(1)
  {
   if(k)
   {
    if(strlen(tempstruct.qq)==0)
    {
     cout<<endl<<"QQ号码输入放弃."<<endl;
     break;
    }
    else if(strlen(tempstruct.qq) > 10)
     cout<<endl<<"QQ号码位数不能超过10位,请重新输入:"<<endl;
    else
    {
     for(i=0;i<strlen(tempstruct.qq);i++)
     {
      if(tempstruct.qq[i]<'0' || tempstruct.qq[i]>'9')
      {
       cout<<endl<<"QQ号码含有非法字符,请重新输入:"<<endl;
       break;
      }
     }
     if(i == strlen(tempstruct.qq))
      break;
    }
   }
   k = true;
   cout<<endl<<"QQ号码:";
   cin.getline(tempstruct.qq,sizeof(tempstruct.qq));
   if(strlen(tempstruct.qq) < sizeof(tempstruct.qq)-1)
    continue;
   if(Rest_Eat())
    continue;
  }
  k = false;
 }
 
 //********************************************************************************************
 //输入通信地址
 
 if((!add_or_modify && ch == '8') || add_or_modify)
 {
  while(1)
  {
   if(k)
   {
    if(strlen(tempstruct.addr) == 0)
    {
     cout<<endl<<"通信地址输入放弃."<<endl;
     break;
    }
    else
     break;
   }
   k = true;
   cout<<endl<<"通信地址:";
   cin.getline(tempstruct.addr,sizeof(tempstruct.addr));
   if(strlen(tempstruct.addr) < sizeof(tempstruct.addr)-1)
    continue;
   if(Rest_Eat())
   {
    cout << endl << "对不起,您输入了过多的字符,请重新输入:" << endl;
    k = false;
    continue;
   }
  }
  k = false;
 }
 
 //********************************************************************************************
 //输入邮政编码
 
 if((!add_or_modify && ch == '9') || add_or_modify)
 {
  while(1)
  {
   if(k)
   {
    if(strlen(tempstruct.postid)==0)
    {
     cout<<endl<<"邮政编码输入放弃."<<endl;
     break;
    }
    else if(strlen(tempstruct.postid) != 6)
     cout<<endl<<"邮政编码不是6位,请重新输入:"<<endl;
    else
    {
     for(i=0;i<strlen(tempstruct.postid);i++)
     {
      if(tempstruct.postid[i]<'0' || tempstruct.postid[i]>'9')
      {
       cout<<endl<<"邮政编码含有非法字符,请重新输入:"<<endl;
       break;
      }
     }
     if(i == strlen(tempstruct.postid))
      break;
    }
   }
   
   k = true;
   cout<<endl<<"邮政编码:";
   cin.getline(tempstruct.postid,sizeof(tempstruct.postid));
   if(strlen(tempstruct.postid) < sizeof(tempstruct.postid)-1)
    continue;
   if(Rest_Eat())
    continue;
  }
  k = false;
 }
 
 //*******************************************************************************************
 
 System_Time(nowtime);
 strcpy(tempstruct.modtime,nowtime);
 if(add_or_modify)
 {
  Info_Check(); 
  return;
 }
 else  
  return;
}

//================================================================================================
//主函数

void main(void)
{ 
 Tel_Book mytelbook; 
 mytelbook.Head_Intro();
 mytelbook.Info_Read();
 mytelbook.Command_Window(); 
}

⌨️ 快捷键说明

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