百忙之中抽出了点时间来制作了一个通讯录的管理系统,各位觉得有用的话可以借鉴学习一下,当然,有疑问或代码上的问题欢迎指出(当时本人写的比较急,所以测试没怎么到底,海涵!!!)
/*create the Mail_list**********/
/***author :ysj***************/
#include<iostream>
#include<stdio.h>
#include<string>
#include<windows.h>
const int MAX = 1e3;
using namespace std;
struct person //a person;
{
string m_name; //people name
string m_sex; // people sex
int m_age; //people Age
string m_phone; // people phone_number;
string m_add; //people address;
};
struct Addressbooks //main_list
{
struct person personArray[MAX];
int m_size;
};
void addperson(Addressbooks *abs) //添加联系人
{
if(abs->m_size==MAX)
{
cout<<"通讯录已满,无法添加"<<endl;
return;
}
string name;
cout<<"请输入联系人姓名"<<endl;
getchar();
cin>>name;
abs->personArray[abs->m_size].m_name=name;
cout<<"请输入性别(1--男,2--女)"<<endl;
int sex=0;
while(true)
{
cin>>sex;
if(sex==1)
{
abs->personArray[abs->m_size].m_sex="男";
break;
}
if(sex==2)
{
abs->personArray[abs->m_size].m_sex="女";
break;
}
cout<<"输入非法,请重新输入"<<endl;
}
cout<<"请输入联系人年龄"<<endl;
int age=0;
while(1)
{
cin>>age;
if(age>0)
{
abs->personArray[abs->m_size].m_age=age;
break;
}
cout<<"输入非法,请重新输入"<<endl;
}
cout<<"请输入联系人电话"<<endl;
string number;
while(true)
{
cin>>number;
if(number.length()==11)
{
abs->personArray[abs->m_size].m_phone=number;
break;
}
cout<<"输入非法,请重新输入"<<endl;
}
cout<<"请输入联系人家庭住址"<<endl;
string addre;
while(true)
{
cin>>addre;
if(addre.length()>0)
{
abs->personArray[abs->m_size].m_add=addre;
break;
}
cout<<"输入非法,请重新输入"<<endl;
}
cout<<"添加该联系人成功"<<endl;
abs->m_size++;
system("pause");
system("CLS");
}
void showperson(Addressbooks *abs) //显示所有联系人
{
if(abs->m_size==0)
{
cout<<"通讯录为空"<<endl;
system("pause");
system("CLS");
return;
}
for(int i=0;i<abs->m_size;i++)
{
cout<<"通讯人列表"<<endl<<endl;
printf(">>>%d号通讯人:\n",i+1);
cout<<"姓名:-> "<<abs->personArray[i].m_name<<"\t";
cout<<"性别:-> "<<abs->personArray[i].m_sex<<"\t";
cout<<"年龄:-> "<<abs->personArray[i].m_age<<"\t";
cout<<"电话:-> "<<abs->personArray[i].m_phone<<"\t";
cout<<"地址:-> "<<abs->personArray[i].m_add<<endl;
}
system("pause");
system("CLS");
}
int isexist(Addressbooks *abs,string name)
{
for(int i=0;i<abs->m_size;i++)
if(abs->personArray[i].m_name==name)
return i;
return -1;
}
void deleteperson(Addressbooks *abs) //删除联系人
{
if(abs->m_size==0)
{
cout<<"通讯录为空,非法操作!"<<endl<<endl;
system("pause");
system("CLS");
return;
}
cout<<"请输入你要删除的联系人姓名:"<<endl;
string name;
while(true)
{
cin>>name;
if(isexist(abs,name)==-1)
{
cout<<"该联系人不存在,请重新输入"<<endl;
}
else if(isexist(abs,name)!=-1)
{
int mid=isexist(abs,name);
for(int i=mid;i<abs->m_size;i++)
{
abs->personArray[i]=abs->personArray[i+1];
}
abs->m_size--;
break;
}
}
cout<<"删除成功"<<endl;
system("pause");
system("CLS");
}
int isfind(Addressbooks *abs,string name)
{
for(int i=0;i<abs->m_size;i++)
if(abs->personArray[i].m_name==name)
return i;
return -1;
}
void findperson(Addressbooks *abs) //查找联系人
{
if(abs->m_size==0)
{
cout<<"通讯录为空,非法操作!"<<endl<<endl;
system("pause");
system("CLS");
return;
}
cout<<"请输入你要查找的联系人姓名:"<<endl;
string name;
while(true)
{
cin>>name;
if(isfind(abs,name)==-1)
{
cout<<"该联系人不存在,请重新输入"<<endl<<endl;
}
else if(isexist(abs,name)!=-1)
{
cout<<"找了该联系人: "<<endl<<endl;
int mid=isfind(abs,name);
cout<<"姓名:-> "<<abs->personArray[mid].m_name<<endl;
cout<<"性别:-> "<<abs->personArray[mid].m_sex<<endl;
cout<<"年龄:-> "<<abs->personArray[mid].m_age<<endl;
cout<<"电话:-> "<<abs->personArray[mid].m_phone<<endl;
cout<<"地址:-> "<<abs->personArray[mid].m_add<<endl<<endl;
break;
}
}
cout<<"查找成功"<<endl;
system("pause");
system("CLS");
}
void changeperson(Addressbooks *abs) //修改联系人
{
if(abs->m_size==0)
{
cout<<"通讯录为空,非法操作!"<<endl<<endl;
system("pause");
system("CLS");
return;
}
cout<<"请输入你要修改的联系人姓名:"<<endl;
string name;
while(true)
{
cin>>name;
if(isfind(abs,name)==-1)
{
cout<<"该联系人不存在,请重新输入"<<endl<<endl;
}
else if(isexist(abs,name)!=-1)
{
cout<<"找了该联系人: "<<endl<<endl;
int mid=isfind(abs,name);
while(1)
{
cout<<"是否修改联系人姓名?(1--yes,2--no)"<<endl;
int flag1=0;
string name;
cin>>flag1;
if(flag1==1)
{
cout<<"请输入你想修改后的姓名:"<<endl;
cin>>name;
abs->personArray[mid].m_name=name;
cout<<"修改联系人姓名成功"<<endl;
break;
}
if(flag1==2) break;
}
while(1)
{
cout<<"是否修改联系人性别?(1--yes,2--no)"<<endl;
int flag2=0;
cin>>flag2;
if(flag2==1)
{
if(abs->personArray[mid].m_name=="男")
{
abs->personArray[mid].m_name="女";
cout<<"成功修改联系人的性别为女"<<endl;
}
else if(abs->personArray[mid].m_name=="女")
{
abs->personArray[mid].m_name="男";
cout<<"成功修改联系人的性别为男"<<endl;
}
break;
}
if(flag2==2) break;
}
while(1)
{
cout<<"是否修改联系人年龄?(1--yes,2--no)"<<endl;
int flag3=0,age,mid1=0;
cin>>flag3;
if(flag3==1)
{
while(1)
{
cout<<"请输入你想修改后的年龄:"<<endl;
cin>>age;
if(age>0)
{
abs->personArray[mid].m_age=age;
cout<<"修改联系人年龄成功"<<endl;
mid1=1;
break;
}
else
{
cout<<"输入非法年龄,请重新输入"<<endl;
}
}
}
if(flag3==2 ||mid1)
break;
}
while(1)
{
cout<<"是否修改联系人电话?(1--yes,2--no)"<<endl;
int flag4=0,mid2=0;
string number;
cin>>flag4;
if(flag4==1)
{
while(1)
{
cout<<"请输入你想修改后的电话号码:"<<endl;
cin>>number;
if(number.length()==11)
{
abs->personArray[mid].m_phone=number;
cout<<"修改联系人电话号码成功"<<endl;
mid2=1;
break;
}
else
{
cout<<"输入非法电话号码,请重新输入"<<endl;
}
}
}
if(flag4==2 ||mid2)
break;
}
while(1)
{
cout<<"是否修改联系人地址?(1--yes,2--no)"<<endl;
int flag5=0;
string addre;
cin>>flag5;
if(flag5==1)
{
cout<<"请输入你想修改后的地址:"<<endl;
cin>>addre;
abs->personArray[mid].m_add=addre;
cout<<"修改联系人地址成功"<<endl;
break;
}
if(flag5==2) break;
}
}
break;
}
cout<<"修改完成"<<endl;
system("pause");
system("CLS");
}
void clearperson(Addressbooks *abs) //清空联系人
{
int flag=0;
cout<<"警告:确定要清空所有联系人吗(1--yes,2--no)"<<endl;
cin>>flag;
if(flag==1)
{
abs->m_size=0;
cout<<"操作成功,已清空所有联系人!"<<endl;
}
if(flag==2)
{
cout<<"操作成功,未清空!"<<endl;
}
system("pause");
system("CLS");
return;
}
void showMenu()//show the main menu
{
printf("************************\n\n");
printf("#### 1.添加联系人 ####\n");
printf("#### 2.显示联系人 ####\n");
printf("#### 3.删除联系人 ####\n");
printf("#### 4.查找联系人 ####\n");
printf("#### 5.修改联系人 ####\n");
printf("#### 6.清空联系人 ####\n");
printf("#### 7.退出通讯录 ####\n\n");
printf("************************\n");
}
int main()
{
Addressbooks abs;
abs.m_size=0;
int select =0; //创建一个用户选择的变量
while(true)
{
showMenu();
cin>>select;
switch(select)
{
case 1: //添加联系人
addperson(&abs);
break;
case 2: //显示联系人
showperson(&abs);
break;
case 3: //删除联系人
deleteperson(&abs);
break;
case 4: //查找联系人
findperson(&abs);
break;
case 5: //修改联系人
changeperson(&abs);
break;
case 6: //清空联系人
clearperson(&abs);
break;
case 7: //退出通讯录
cout<<"欢迎以后再次使用该通讯录"<<endl;
system("pause");
return 0;
break;
}
}
system("pause");
return 0;
}
以下不一一列举了,希望对大家有帮助(抱拳)
今天进步一点点。