64,654
社区成员
发帖
与我相关
我的任务
分享
#include<iostream>
#include<fstream>
#include<stdlib.h>
#include<string>
#include<iomanip>//setw
using namespace std;
class Person{
private:
string name;
string tel;
string address;
string email;
string QQ;
public:
Person(){}
Person(string name,string tel,string address,string email,string QQ){
this->name = name;
this->tel = tel;
this->address = address;
this->email = email;
this->QQ = QQ;
}
void setName(string name){this->name = name;}
string getName(){return name;}
void setTel(string tel){this->tel = tel;}
string getTel(){return tel;}
void setAddress(string address){this->address = address;}
string getAddress(){return address;}
void setEmail(string email){this->email = email;}
string getEmail(){return email;}
void setQQ(string QQ){this->QQ = QQ;}
string getQQ(){return QQ;}
};
class Menu{
public:
Menu(){};
void add();
void del();
void find_name(); //查找(按姓名)
void find_tel(); //查找(按电话)
void alter(); //修改信息
void show(); //显示通讯录
void format(); //格式化通讯录
void sort(); //排序(按姓名)
void save(); //保存
};
void Menu::add(){
cout<<"姓名:";
string n;
cin>>n;
cout<<"电话号码:";
string t;
cin>>t;
cout<<"地址:";
string a;
cin>>a;
cout<<"邮箱:";
string e;
cin>>e;
cout<<"QQ号码:";
string Q;
cin>>Q;
ofstream outData("通讯录.dat",ios::app|ios::binary);
if(!outData){
cerr<<endl<<"打开文件失败!!"<<endl;
system("pause");
return;
}
/*outData.write(n.c_str(),n.size());
outData.write(t.c_str(),t.size());
outData.write(a.c_str(),e.size());
outData.write(e.c_str(),a.size());
outData.write(Q.c_str(),Q.size()); */
outData<<setiosflags(ios::left)<<n<<"|"<<t<<"|"<<a<<"|"<<e<<"|"<<Q<<"|"<<endl;
outData.close();
}
void Menu::del(){
cout<<"del"<<endl;
}
void Menu::find_name(){
cout<<"find_name"<<endl;
}
void Menu::find_tel(){
cout<<"find_tel"<<endl;
}
void Menu::alter(){
cout<<"alter"<<endl;
}
void Menu::show(){
ifstream inData("通讯录.dat",ios::in|ios::binary);
if(!inData){
cout<<endl<<"找不到文件!!"<<endl;
system("pause");
return;
}
inData.seekg(0,ios::beg);
if(inData.peek()==EOF){
cout<<"通讯录中没有联系人!"<<endl;
return;
}
cout<<"\t姓名\t电话号码\t地址\t\t邮箱\t\tQQ号码"<<endl;
Person p_sh[100];
int i = 0;
int z=1;
char buffer[256];
string record;
while(1){
//inData.read((char*)&p_sh[i],sizeof(p_sh[i]));
if(inData.eof()){
break;
}else{
while(getline(inData,record,'|')){
//cout<<record<<" ";
if(z==5){p_sh[i].setQQ(record);cout<<p_sh[i].getQQ();z=1;i++;}
if(z==4){p_sh[i].setEmail(record);cout<<p_sh[i].getEmail();z++;}
if(z==3){p_sh[i].setAddress(record);cout<<p_sh[i].getAddress();z++;}
if(z==2){p_sh[i].setTel(record);cout<<p_sh[i].getTel();z++;}
if(z==1){p_sh[i].setName(record);cout<<p_sh[i].getName();z++;}
}
}
}
inData.close();
}
void Menu::format(){
cout<<"format"<<endl;
}
void Menu::sort(){
cout<<"sort"<<endl;
}
void Menu::save(){
cout<<"save"<<endl;
}
void main(){
Menu m;
int w = 0;
do{
cout<<" 1.添加联系人 2.删除联系人 3.查询联系人 4.修改信息 "<<endl;
cout<<" 5.按序排列 6.显示通讯录 7.清空通讯录 0.退出通讯录 "<<endl;
cout<<"\t\t\t请选择:";
int select_1;
cin>>select_1;
switch(select_1){
case 1: m.add();break;
case 2: m.del();break;
case 3: cout<<"\t\t1.按姓名查找 2.按电话号码查找 3.返回主菜单"<<endl;
int select_2;
cin>>select_2;
switch(select_2){
case 1: m.find_name();break;
case 2: m.find_tel();break;
case 3: break;
default: cout<<"\t\t\t输入错误"<<endl;
}
break;
case 4: m.alter();break;
case 5: m.sort();break;
case 6: m.show();break;
case 7: m.format();break;
case 0: cout<<"\t\t\t感谢使用"<<endl;w=1;break;
default: cout<<"\t\t\t输入错误"<<endl;
}
}while(w!=1);
}
if(z==5) {p_sh[i].setQQ(record);cout<<p_sh[i].getQQ();z=1;i++;}
else if(z==4){p_sh[i].setEmail(record);cout<<p_sh[i].getEmail();z++;}
else if(z==3){p_sh[i].setAddress(record);cout<<p_sh[i].getAddress();z++;}
else if(z==2){p_sh[i].setTel(record);cout<<p_sh[i].getTel();z++;}
else if(z==1){p_sh[i].setName(record);cout<<p_sh[i].getName();z++;}