#include<iostream>
#include<fstream>
#include<string.h>
#define N 1000 //通讯录联系人存储最大值
using namespace std;
static int number=0;
class Addressbook
{
char nam[15]; //联系人姓名
char tel[15]; //联系人电话
char add[50]; //联系人住址
int p; //联系人邮政编码
public:
char *getnam(); //录入联系人姓名
char *gettel(); //录入联系人电话
char *getadd(); //录入联系人住址
int getp(); //录入联系人邮政编码
void show(); //输出信息
void input(); //录入联系人信息
void reinput(); //重新录入lianxiren信息
void alter(); //改变信息
static int getnumber();
};
char *Addressbook::getnam() //定义录入联系人姓名的函数
{
return nam;
}
char *Addressbook::gettel() //定义录入联系人电话的函数
{
return tel;
}
char *Addressbook::getadd() //定义录入联系人住址的函数
{
return add;
}
int Addressbook::getp() //定义录入联系人邮编的函数
{
return p;
}
int Addressbook::getnumber()
{
return number;
}
void Addressbook::show() //类外定义显示联系人信息的函数
{
cout<<"联系人姓名:"<<nam<<endl;
cout<<endl;
cout<<"联系人电话:"<<tel<<endl;
cout<<endl;
cout<<"联系人住址:"<<add<<endl;
cout<<endl;
cout<<"联系人邮编:"<<p<<endl;
cout<<endl;
}
void Addressbook::input() //类外定义键盘输入联系人信息的函数
{
char na[25],te[15],ad[25];
int n;
cout<<"输入联系人姓名:";
cin>>na;
strcpy(nam,na);
cout<<endl;
cout<<"输入联系人电话号码:";
cin>>te;
strcpy(tel,te);
cout<<endl;
cout<<"输入联系人住址:";
cin>>ad;
strcpy(add,ad);
cout<<endl;
cout<<"联系人邮政编码:";
cin>>n;
p=n;
number++;
}
void Addressbook::reinput() //类外定义重新输入联系人信息
{
char te[15],ad[25];int n;
cout<<"输入联系人电话号码:";
cin>>te;
strcpy(tel,te);
cout<<endl;
cout<<"输入联系人住址:";
cin>>ad;
strcpy(add,ad);
cout<<endl;
cout<<"联系人邮政编码:";
cin>>n;
p=n;
number++;
}
void Addressbook::alter() //类外定义修改联系人信息的函数
{
int i;
do
{
strcpy(nam,(this+1)->nam);
strcpy(tel,(this+1)->tel);
strcpy(add,(this+1)->add);
p=(this+1)->p;
cout<<"请重新输入联系人信息:"<<endl;
reinput();
cout<<"返回菜单页面请按0";
cin>>i;
system("cls");
}
while(i);
}
void inputl(Addressbook *a) //类外定义添加联系人信息的函数
{
int i;
do
{
if(Addressbook::getnumber()==N)
cout<<"人数已满,无法录入"<<endl;
a[number].input();
cout<<"继续录入请按1,否则请按0"<<endl;
cin>>i;
system("cls");
}
while(i);
}
void outputl(Addressbook *a) //类外定义显示所有联系人信息的函数
{
int i;
do
{
cout<<"联系人总数:"<<number<<endl;
for(i=0;i<number;i++)
{
cout<<i+1<<".";
a[i].show();
system("pause");
system("cls");
}
cout<<"返回菜单页面请按0"<<endl;
cin>>i;
system("cls");
}
while(i);
}
int seek(Addressbook *a,char *na) //定义按姓名查找联系人信息的函数
{
int i,j;
for(i=0;i<N;i++)
{
if(strcmp(a[i].getnam(),na)==0)
{j=i;
break;
}
};
return j;
}
int seek0(Addressbook *t,char *te) //定义按电话查找联系人信息的函数
{
int i,j;
for(i=0;i<N;i++)
{
if(strcmp(t[i].gettel(),te)==0)
{ j=i;
break;
}
};
return j;
}
void creatfile(Addressbook *a,char *b) //定义存储联系人信息的函数
{
ofstream outfile(b);
if(!outfile)
cout<<"文件打开错误!"<<endl;
for(int i=0;i<number;i++)
{
outfile<<"姓名:"<<a[i].getnam()<<endl;
outfile<<"联系人电话:"<<a[i].gettel()<<endl;
outfile<<"联系人住址:"<<a[i].getadd()<<endl;
outfile<<"联系人邮编:"<<a[i].getp()<<endl;
}
outfile.close();
}
int main()
{
Addressbook addressbook[N];
int i;
do //读入菜单栏选项
{
cout<<"========================欢迎使用通讯录管理系统==============================="<<endl;
cout<<" 1.添加联系人信息 "<<endl;
cout<<" 2.显示所有联系人信息 "<<endl;
cout<<" 3.按姓名查询联系人信息 "<<endl;
cout<<" 4.按电话查询联系人信息 "<<endl;
cout<<" 5.更改联系人信息 "<<endl;
cout<<" 0.退出通讯录管理系统 (选择好序号后请按回车键)"<<endl;
cin>>i;
switch(i) //执行选项功能
{
case 1:
system("cls");
inputl(addressbook);
break;
case 2:
system("cls");
outputl(addressbook);
break;
case 3:
system("cls");
cout<<endl;
cout<<"输入要查询的联系人姓名";
char na[25];
int r;
cin>>na;
r=seek(addressbook,na);
addressbook[r].show();
cout<<"返回菜单页请按0"<<endl;
cin>>r;
if(!r)
system("cls");
break;
case 4:
system("cls");
cout<<endl;
cout<<"输入要查询的联系人电话";
char te[15];
int u;
cin>>te;
u=seek0(addressbook,te);
addressbook[u].show();
cout<<"返回菜单页请按0"<<endl;
cin>>u;
if(!u)
system("cls");
case 5:
system("cls");
cout<<endl;
cout<<"请输入要更改信息的联系人姓名:"<<endl;
cin>>na;
u=seek(addressbook,na);
addressbook[u].alter();
break;
}
}
while(i);
creatfile(addressbook,"通讯录.txt");
return 0;
}