C++全局变量
AddressBook::AddressBook(){
name = "\0";
number = "\0";
sort = "\0";
email = "\0";
num = 0;
}
/添加联系人
void AddressBook::add_person()
{
const int MAXNUM=100;//通讯录人数允许的最大值
AddressBook*AB;
bool flag=true;//数据是否被修改过的标志
ifstream inData("pbook.txt",ios::in);
AddressBook abj;
cout<<"----姓名或电话号码为字符串,输入“\0”终止录入----"<<endl;
while(1)
{
if(num==(MAXNUM-1))
{
cout<<"通讯录人数已达到最大值!"<<endl;
return;
}
cout <<endl <<"根据下面提示输入新联系人信息" <<endl <<endl
<<"姓名 :" ;
if(!(cin>>abj.name))//输入的不是字符串,重新提示输入
{
cout<<"姓名应为字符串!"<<endl;
cin.clear();//清除状态标志
cin.sync();//清空输入缓冲区
continue;
}
if(Search(AB,abj.name)>0)//查找此姓名是否已存在
{
cout<<"此姓名已存在!"<<endl;
continue;
}
if(abj.name=="\0")//输入"\0"结束输入
{
cout<<"录入结束。"<<endl;
return;
}
cin.sync();//清空输入缓冲区
cout<<"电话 :";
if(!(cin>>abj.number))//输入的不是字符串,重新提示输入
{
cout<<"姓名应为字符串!"<<endl;
cin.clear();//清除状态标志
cin.sync();//清空输入缓冲区
continue;
}
if(Search(AB,abj.number)>0)//查找此姓名是否已存在
{
cout<<"此姓名已存在!"<<endl;
continue;
}
cin.sync();//清空输入缓冲区
cout<<"类别 :";
getline(cin,abj.sort);//读取一行
if(abj.sort=="")//如读取的为空串,则设sort为null
abj.sort="null";
cin.sync();//清空输入缓冲区
cout<<"电子邮件 :";
getline(cin,abj.email);//读取一行
if(abj.email=="")//如读取的为空串,则设email为null
abj.email="null";
++num;//通讯录人数增 1
AB[num]=abj;//将新录入的通讯录加入数组中
flag=true;//数据已改动
}
save_new();
cout <<endl <<endl <<"新联系人信息已经保存好!!!!!" <<endl <<endl;
system("pause");
}
//查找姓名为n的通讯录
这里的num为什么报错(未声明的标识符)
int Search(AddressBook*AB,string n)
{
for(int i=1;i<=num ;i++)
if(AB[i].name==n)
return i;//返回找到的通讯录的索引号
return 0;//没找到,返回0
}