好久没写文章了,终于结束了满课的前三周以及烦人的考试,可以有多余的时间来自己学习。
今天学习了利用C++实现通讯录管理系统,自己手敲了一遍。
可以用来当实验题的答案或课设哦!
具体的解释在代码注释当中。
#include <iostream>
using namespace std;
#include <string>
#define max 1000
//菜单界面
void showMenu()
{
cout<<"*****************************"<<endl;
cout<<"*****\t 1.添加联系人 \t*****"<<endl;
cout<<"*****\t 2.显示联系人 \t*****"<<endl;
cout<<"*****\t 3.删除联系人 \t*****"<<endl;
cout<<"*****\t 4.查找联系人 \t*****"<<endl;
cout<<"*****\t 5.修改联系人 \t*****"<<endl;
cout<<"*****\t 6.清空联系人 \t*****"<<endl;
cout<<"*****\t 0.退出通讯录 \t*****"<<endl;
cout<<"*****************************"<<endl;
}
//联系人结构体
struct Person{
string name;
int sex;
int age;
string phone;
string addr;
};
//通讯录结构体
struct Addressbooks{
struct Person personarr[max];
int size;
};
//1.添加联系人
void addPerson(Addressbooks *abs){
//判断通讯录是否已满
if(abs->size==max){
cout<<"通讯录已满,无法添加!"<<endl;
return;
}else{
//添加具体的联系人
//姓名
string name;
cout<<"请输入姓名:"<<endl;
cin>>name;
abs->personarr[abs->size].name=name;
//性别
cout<<"请输入性别"<<endl;
cout<<"1-------男"<<endl;
cout<<"2-------女"<<endl;
int sex=0;
while(true){
//如果输入是1或2,则可以退出循环
cin>>sex;
if(sex==1||sex==2){
abs->personarr[abs->size].sex=sex;
break;
}
cout<<"输入有误,请重新输入!"<<endl;
}
//年龄
cout<<"请输入年龄:"<<endl;
int age=0;
while(true){
//输入正确的年龄才可以退出循环
cin>>age;
if(age>=0&&age<=150){
abs->personarr[abs->size].age=age;
break;
}
cout<<"您输入的年龄有误,请重新输入!"<<endl;
}
//电话
cout<<"请输入联系电话:"<<endl;
string phone;
cin>>phone;
abs->personarr[abs->size].phone=phone;
//住址
cout<<"请输入家庭住址:"<<endl;
string address;
cin>>address;
abs->personarr[abs->size].addr=address;
//更新通讯录人数
abs->size++;
cout<<"添加成功!"<<endl;
system("pause"); //按任意键继续
system("cls"); //清屏操作
}
}
//显示联系人
void showperson(Addressbooks *abs){
//判断通讯录中人数是否为0
if(abs->size==0){
cout<<"通讯录为空!"<<endl;
}
else{
for(int i=0;i<abs->size;i++){
cout<<"姓名:"<<abs->personarr[i].name<<"\t";
cout<<"性别:"<<(abs->personarr[i].sex==1?"男":"女")<<"\t";
cout<<"年龄:"<<abs->personarr[i].age<<"\t";
cout<<"电话:"<<abs->personarr[i].phone<<"\t";
cout<<"住址:"<<abs->personarr[i].addr<<endl;
}
}
system("pause");
system("cls");
}
//检测联系人是否存在
int isexist(Addressbooks *abs,string name){
for(int i=0;i<abs->size;i++){
if(abs->personarr[i].name==name){
return i; //如果找到则返回联系人的序号
}
}
return -1;
}
//删除联系人
void deletep(Addressbooks *abs){
cout<<"请输入您要删除的联系人:"<<endl;
string name;
cin>>name;
int ret=isexist(abs,name);
if(ret!=-1){
for(int i=ret;i<abs->size;i++)
{
abs->personarr[i]=abs->personarr[i+1];
}
cout<<"删除成功!"<<endl;
abs->size--;
}else{
cout<<"查无此人!"<<endl;
}
}
//查找指定的联系人信息
void findperson(Addressbooks *abs)
{
cout<<"输入您要查找的联系人:"<<endl;
string name;
cin>>name;
int ret=isexist(abs,name);
if(ret!=-1){
cout<<"姓名:"<<abs->personarr[ret].name<<"\t";
cout<<"性别:"<<abs->personarr[ret].sex<<"\t";
cout<<"年龄:"<<abs->personarr[ret].age<<"\t";
cout<<"电话:"<<abs->personarr[ret].phone<<"\t";
cout<<"地址:"<<abs->personarr[ret].addr<<endl;
}else{
cout<<"查无此人!"<<endl;
}
system("pause");
system("cls");
}
//修改联系人信息
void modifyperson(Addressbooks *abs){
cout<<"请输入您要修改的联系人:"<<endl;
string name;
cin>>name;
int ret=isexist(abs,name);
if(ret!=-1){
string name;
cout<<"请输入姓名:"<<endl;
cin>>name;
abs->personarr[ret].name=name;
cout<<"请输入性别:"<<endl;
cout<<"1---------男"<<endl;
cout<<"2---------女"<<endl;
int sex=0;
while(true){
cin>>sex;
if(sex==1||sex==2){
abs->personarr[ret].sex=sex;
break;
}else{
cout<<"输入有误,请重新输入:"<<endl;
}
}
cout<<"请输入年龄:"<<endl;
int age=0;
while(true){
//符合条件则退出循环
cin>>age;
if(age>=0&&age<=150){
abs->personarr[ret].age=age;
break;
}
cout<<"输入有误,请重新输入:"<<endl;
}
cout<<"请输入电话:"<<endl;
string phone;
cin>>phone;
abs->personarr[ret].phone=phone;
cout<<"请输入地址:"<<endl;
string addr;
cin>>addr;
abs->personarr[ret].addr=addr;
}else{
cout<<"未找到联系人!"<<endl;
}
// 按任意键清屏
system("pause");
system("cls");
}
//清空联系人
void clearp(Addressbooks *abs){
cout<<"确定清空?"<<endl;
cout<<"1-----确定"<<endl;
cout<<"2-----取消"<<endl;
int sel=0;
while(true){
cin>>sel;
if(sel==1){
abs->size=0;
cout<<"通讯录已清空!"<<endl;
system("pause");
system("cls");
break;
}else if(sel==2) {
return;
break;
}
else {
cout<<"输入有误,请重新输入:"<<endl;
}
}
}
int main()
{
//创建通讯录结构体变量
Addressbooks abs;
//初始化通讯录当中当前的人数个数
abs.size=0;
int select = 0; //创建用户选择输入的变量
while(true)
{
showMenu(); //菜单调用
cin >> select;
switch(select)
{
case 1: //1.添加联系人
addPerson(&abs);
break;
case 2: //2.显示联系人
showperson(&abs);
break;
case 3: //3.删除联系人
deletep(&abs);
break;
case 4: //4.查找联系人
findperson(&abs);
break;
case 5: //5.修改联系人
modifyperson(&abs);
break;
case 6: //6.清空联系人
clearp(&abs);
break;
case 0: //0.退出通讯录
cout<<"欢迎下次使用!"<<endl;
system("pause");
return 0;
break;
default:
cout<<"输入有误,请重新输入!"<<endl;
break;
}
}
system("pause");
return 0;
}