📄 vc++phonetext.txt
字号:
{
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 + -