我的程序对联系人的修改部分不对,只要修改,以前的其他联系人信息就没有了,请大家帮忙看看alter()函数那边的错误,谢谢啊
#include<iostream>#include<string>
#include<iomanip>
#include<fstream>
#include<cstdlib>
#include<ctime>
using namespace std;
class book
{
public:
book();//默认构造函数
char intface();//通讯录管理首页
void addperson();//添加联系人
void alter();//修改信息
void delperson();//删除联系人
void showall();//显示所有信息
void savenew();//保存通讯录文件
void show();//显示查询的类型
void showA();//显示群组A
void showB();//显示群组B
void showC();//显示群组C
void remind();//提醒生日
private:
string name;//姓名
string number;//电话
string type;//类型
string email;//电子信箱
string birmonth;//出生月份
string birday;//出生日
};
book::book()//构造函数
{
name="\0";
number="\0";
type="\0";
email="\0";
birmonth="\0";
birday="\0";
}
char book::intface()//通信录管理界面
{
system("cls");
cout<<"\t\t\t@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"<<endl
<<"\t\t\t 通 信 录 管 理 系 统 "<<endl
<<"\t\t\t "<<endl
<<"\t\t\t 1.添加新联系人 2.修改信息 "<<endl
<<"\t\t\t "<<endl
<<"\t\t\t 3.删除联系人 4.查看联系人 "<<endl
<<"\t\t\t "<<endl
<<"\t\t\t 5.关闭通信录 6.显示所有联系人"<<endl
<<"\t\t\t "<<endl
<<"\t\t\t 0.退出系统 "<<endl
<<"\t\t\t@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"<<endl
<<"\t\t\t 选择:";
char choose;
cin>>choose;
fflush(stdin);
return choose;//返回choose
}
void book::addperson()//添加新联系人
{
cout<<endl<<"根据下面提示输入新联系人"<<endl<<endl
<<"姓名:";
cin>>name;
fflush(stdin);
cout<<"电话:";
cin>>number;
fflush(stdin);
cout<<"类型(A:办公类B:个人类C:商务类):";
cin>>type;
fflush(stdin);
cout<<"邮箱:";
cin>>email;
fflush(stdin);
cout<<"生日:"<<endl;
cout<<"\t"<<"月:";
cin>>birmonth;
fflush(stdin);
cout<<"\t"<<"日:";
cin>>birday;
fflush(stdin);
savenew();//保存进文件
cout<<endl<<endl<<"新联系人以保存好!!!"<<endl<<endl;
system("pause");
}
void book::alter()//修改信息记录
{
ifstream infile("pbook.txt", ios::in);
if (!infile)
{
cout <<endl <<"对不起不能打开文件!!!!!" <<endl <<endl;
system("pause");
return;
}
showall();
string sign;
cout <<endl <<"请输入你想要修改的联系人的姓名或电话号码 :";
cin >>sign;
fflush(stdin);
bool flag=true;
string str1;
while (infile >>name >>number >>type//读出文件所有记录循环
>>email>>birmonth>>birday)
{
getline(infile, str1);
if ((name==sign) || (number==sign))
{
cout <<endl <<"你想修改你联系人的信息如下: " <<endl <<endl;
cout <<setiosflags(ios::left) <<setw(17)
<<name <<" " <<setw(16) <<number
<<" " <<setw(10) <<type
<<" " <<setw(18) <<email<< " " << setw(2)<<birmonth<<" "<<birday<<endl;
cout <<endl <<"请根据下面提示修改信息 : " <<endl;
cout <<"姓名 :" ;
cin >>name;
fflush(stdin);
cout <<"电话:";
cin >>number;
fflush(stdin);
cout <<"类型:";
cin >>type;
fflush(stdin);
cout <<"邮箱:";
cin >>email;
fflush(stdin);
cout<<"生日:"<<endl;
cout<<"\t"<<"月:";
cin>>birmonth;
fflush(stdin);
cout<<"\t"<<"日:";
cin>>birday;
fflush(stdin);
flag = false;
break;
}break;
}
if (flag)
{
cout <<endl <<"你的通迅录中没有你找的联系人!!!!" <<endl <<endl;
system("pause");
return;
}
else
{
ofstream out("pbook.txt",ios::out);
if (!out)
{
cout <<endl <<"对不起!!!不能打开文件!!!!" <<endl;
system("pause");
return;
}
out <<str1 <<endl;
out <<setiosflags(ios::left) <<setw(17) <<name
<<" " <<setw(16) <<number
<<" " <<setw(10) <<type
<<" " <<setw(18) <<email <<" "<<birmonth<<" "<<birday<<endl;
out.close();
cout <<endl <<"信息已经修改完成!!!!" <<endl <<endl;
system("pause");
}
}
void book::delperson()//删除文件里的联系人信息
{
ofstream outfile("temp.txt",ios::out);//以写入打开文件
ifstream infile("pbook.txt",ios::in);//以读出打开文件
if(!outfile||!infile)
{
cout<<endl<<"文件不存在!!!"<<endl;
system("pause");
return ;
}
string sign;
cout<<endl<<"你要删除的姓名或电话号:";
cin>>sign;
bool flag=true;
string str;
while(infile>>name>>number)//读入信息记录循环
{
getline(infile,str);//读入信息
if((sign==name)||(sign==number))
{
cout<<endl<<"你想删除的联系人:"<<endl<<endl;
cout<<setiosflags(ios::left)<<setw(17)<<name
<<" "<<number<<str<<endl;
flag=false;
break;
}
outfile<<setiosflags(ios::left)<<setw(17)<<name<<
" "<<number<<str<<endl;
}
if(flag)
{
cout<<endl<<"对不起!没有你要找的人!!!"<<endl<<endl;
}
else
{
while(getline(infile,str))
{
outfile<<str<<endl;
}
outfile.close();
infile.close();
ofstream out("pbook.txt",ios::out);
ifstream in("temp.txt",ios::in);
if(!out||!in)
{
cout<<endl<<"对不起不能打开文件!!!"<<endl<<endl;
system("pause");
return ;
}
while(getline(in,str))
{
out<<str<<endl;
}
out.close();
in.close();
cout<<endl<<"这个人的通讯信息已删除!!!"<<endl<<endl;
}
system("pause");
}
void book::showall()//显示所有人信息
{
ifstream infile("pbook.txt",ios::in);
if (!infile)
{
cout <<endl <<"对不起!文件找不到!" <<endl;
system("pause");
return;
}
string record;
bool flag = true;
while (getline(infile, record))
{
if (flag)
{
cout <<endl <<"所有人信息如下: " <<endl <<endl;
}
cout<<record<<endl;
flag=false;
}
if(flag)
{cout<<endl<<"通信录里没有联系人!"<<endl<<endl;}
else
{
cout<<endl<<"所有人已全部显示出来!"<<endl;
}
system("pause");
}
void book::showA()//显示类型A
{
ifstream infile("pbook.txt",ios::in);
if (!infile)
{
cout <<endl <<"对不起!文件找不到!" <<endl;
system("pause");
return;
}
string sign;
cout <<endl <<"输入你想查找的联系人的类型: ";
cin >>sign;
fflush(stdin);
string str1;
bool flag = true;
string str;
while (infile>>name>>number>>type>>email>>birmonth>>birday)
{
getline(infile, str);
if (type==sign)
{
cout<<str1<<endl;
cout <<setiosflags(ios::left)<< setw(17) << name
<<" " << setw(16) << number <<" "
<< setw(10) << type<<" "
<< setw(18) << email
<<" "<<setw(2)<<birmonth<<" "<<birday<<str <<endl;
flag = false;
}
}
system("pause");
}
void book::showB()//显示类型B
{
ifstream infile("pbook.txt",ios::in);
if (!infile)
{
cout <<endl <<"对不起!文件找不到!" <<endl;
system("pause");
return;
}
string sign;
cout <<endl <<"输入你想查找的联系人的类型: ";
cin >>sign;
fflush(stdin);
string str1;
bool flag = true;
string str;
while (infile>>name>>number>>type>>email>>birmonth>>birday)
{
getline(infile, str);
if (type==sign)
{
cout <<endl <<endl <<endl;
cout<<str1<<endl;
cout <<setiosflags(ios::left)<< setw(17) << name
<<" " << setw(16) << number <<" "
<< setw(10) << type<<" "
<< setw(18) << email <<" "<<setw(2)<<birmonth<<" "<<birday<<str <<endl;
flag = false;
break;
}
}
system("pause");
}
void book::showC()//显示类型C
{
ifstream infile("pbook.txt",ios::in);
if (!infile)
{
cout <<endl <<"对不起!文件找不到!" <<endl;
system("pause");
return;
}
string sign;
cout <<endl <<"输入你想查找的联系人的类型:C ";
cin >>sign;
fflush(stdin);
string str1;
bool flag = true;
string str;
while (infile>>name>>number>>type>>email>>birmonth>>birday)
{
getline(infile, str);
if (type==sign)
{
cout <<endl <<endl <<endl;
cout<<str1<<endl;
cout <<setiosflags(ios::left)<< setw(17) << name
<<" " << setw(16) << number <<" "
<< setw(10) << type<<" "
<< setw(18) << email <<" "<<setw(2)<<birmonth<<" "<<birday<<str <<endl;
flag = false;
break;
}
}
system("pause");
}
void book::show()//显示同一类函数
{
char ch1;
cout<<"你想输出哪一类信息:"<<endl;
cout<<"A:办公类 "<<"B:个人类 "<<"C:商务类 "<<endl;
cout<<"请选择:"<<endl;
cin>>ch1;
switch(ch1)
{
case 'A':showA(); break;
case 'B':showB(); break;
case 'C':showC(); break;
default:cout<<"ERROR!"<<endl;
}
}
void book::savenew()//保存入录的信息
{
ofstream outfile("pbook.txt", ios::app);
if (!outfile)
{
cout <<endl <<"打开文件失败!" <<endl <<endl;
system("pause");
return;
}
outfile << setiosflags(ios::left) << setw(17) << name
<<" " << setw(16) << number <<" "
<< setw(10) << type<<" "
<< setw(18) << email<<" "<<setw(2)<<birmonth<<""<<birday <<endl;
outfile.close();//关闭文件
}
void book::remind() //生日提醒
{
tm *month;
tm *day;
time_t t;
t = time(0);
month = localtime(&t);
day = localtime(&t);
int a,b;
a=month->tm_mon+1;
b=day->tm_mday;
char s[5];
sprintf(s,"%d",a);
char m[20];
sprintf(m,"%d",b);
ifstream infile("pbook.txt",ios::in);
if (!infile)
{
cout <<endl <<"对不起!文件找不到!" <<endl;
system("pause");
return;
}
bool flag=true;
string str;
while(infile>>name>>number>>type>>email>>birmonth>>birday)
{
getline(infile,str);
if(birmonth==s&&birday==m)
{
cout<<"今天是"<<name<<"的生日"<<endl;
flag=false;
break;
}
}
}
enum power{ADD = '1',Alter= '2', DEL = '3' , //通信系统菜单选项定义
Search = '4', END = '5',SHOWALL='6',EXIT='0'};
enum power1{LOG='1',CRE='2',QUIT='0'};//登录系统菜单选项定义
int main()//主函数
{
system("color 57");
char choose;
book abj;
abj.remind();
cout<<system("time")<<system("date")<<endl;
abj.remind();
system("cls");
while (choose = abj.intface())
{
switch (choose)
{
case ADD:
abj.addperson();
break;
case Alter:
abj.alter();
break;
case DEL:
abj.delperson();
break;
case Search:
abj.show();
break;
case SHOWALL:
abj.showall();
break;
case QUIT:
cout <<endl <<"谢谢使用!!!!!" <<endl <<endl;
exit(0);
break;
default:
break;
}
}
return 0;
}