C++电话通讯录_黑马

news/2024/11/17 1:50:13/
  • 任务

添加联系人:姓名,性别,年龄,联系电话,家庭住址(上限1K)
显示
删除(按照姓名
查找(按照姓名
修改(按照姓名
清空全部
退出sys

效果:

在这里插入图片描述

Code:

#include<iostream>
#include<string>
#include<cstdio>
#include<unistd.h>
#define MAX 1000
using namespace std;
/*  添加联系人:姓名,性别,年龄,联系电话,家庭住址(上限1K)显示删除(按照姓名查找(按照姓名修改(按照姓名清空全部退出sys*/
struct Person{string mName;int mSex;   //1 male ; 2 femaleint mAge;char mPhone[50];char mAddr[100];
};
struct AddressBook{Person PersonArr[MAX];int mNum;
};
bool phoneNumTrue (char num[50]){int i,j,tag=0,len;len=strlen(num);for(i=0;i<len;i++){if(!(num[i]>='0' && num[i]<='9')){tag=1;break;}}if(11==len && num[0]=='1' && tag==0)return 1;else return 0;
}bool ageTrue(int age){return ((age>0 && age<151) ? 1 : 0 );
}void showPerson_2(AddressBook const *abs);int isExist(AddressBook const *abs,string *name){for(int i = 0;i<abs->mNum;i++){if(*name == abs->PersonArr[i].mName){cout<<"\033c"<<"Find it:"<<endl;name = NULL;return i;}     }name = NULL;cout<<"\033c"<<"People is't Exist!"<<endl;return -1;      //不存在
}void inputData(AddressBook *abs,int *loc){cout<<"\033c";if(abs->mNum >MAX){cout<<"AddressBook FULL!!!"<<endl;return;}else{cout<<"Input Name:"<<endl;cin>>abs->PersonArr[*loc].mName;cout<<"\033c";int sex = 0;int age = -1;while (1){cout<<"Input Sex(1 for Male ; 2 for Female):"<<endl;cin>>sex;if(1==sex || 2==sex){abs->PersonArr[*loc].mSex = sex;break;}elsecout<<"Please input 1 or 2!"<<endl;}cout<<"\033c";while (1){cout<<"Input Age:"<<endl;cin>>age;if(ageTrue(age)){abs->PersonArr[*loc].mAge = age;break;}elsecout<<"Please input Right Age!"<<endl;}cout<<"\033c";while (1){cout<<"Input PhoneNum:"<<endl;char Num[50];cin>>Num;if(phoneNumTrue(Num)){strcpy(abs->PersonArr[*loc].mPhone, Num);break;}elsecout<<"Please input Right PhoneNum!"<<endl;}cout<<"\033c"<<"Input Address:"<<endl;cin>>abs->PersonArr[*loc].mAddr;cout<<"\033c"<<"Done!"<<endl;}
}void ShowData(AddressBook const *abs,int *loc){cout<<abs->PersonArr[*loc].mName<<"\t";if(1 == abs->PersonArr[*loc].mSex)cout<<"Male\t";elsecout<<"Female\t";cout<<abs->PersonArr[*loc].mAge<<"\t"<<abs->PersonArr[*loc].mPhone<<"\t"<<abs->PersonArr[*loc].mAddr<<endl;
}void addPerson_1(AddressBook *abs,int *loc){inputData(abs,loc);++abs->mNum;
}void showPerson_2(AddressBook const *abs){cout<<"\033c";if(0 == abs->mNum)cout<<"Data is Empty!"<<endl;else{cout<<"AddressBook By GodOuO"<<endl<<"Name\tSex\tAge\tPhoneNum\tLoc"<<endl;for(int i = 0;i<abs->mNum;i++){ShowData(abs,&i);}}
}void searchPerson_3(AddressBook const *abs,string *name){int e = isExist(abs,name);if(-1 != e){cout<<"Name\tSex\tAge\tPhoneNum\tLoc"<<endl;ShowData(abs,&e);}
}void delPerson_4(AddressBook *abs,string *name){int loc = isExist(abs,name);if(-1!=loc){ShowData(abs,&loc);for(int i = loc;i<abs->mNum;i++){abs->PersonArr[i] = abs->PersonArr[i+1];    //前移数据}abs->mNum--;cout<<"Done!"<<endl;}
}void modifyPerson_5(AddressBook *abs,string *name){int loc = isExist(abs,name);if(-1!=loc){inputData(abs,&loc);}
}void cleanPerson_6(AddressBook *abs){if(abs->mNum != 0){for(int i = abs->mNum ; i >= 0; i--)abs->PersonArr[abs->mNum--].mName = "";}abs->mNum = 0;cout<<"\033c"<<"AddressBook Empty!!!"<<endl;
}void Select(int select,AddressBook *abs,string *name){switch (select){case 0:cout<<"\033c"<<"Bye Bye!"<<endl;//pause();    //system("pause");For Linux 系统挂起exit(0);        //终止进程break;case 1:addPerson_1(abs,&abs->mNum);break;case 2:showPerson_2(abs);break;case 3:searchPerson_3(abs,name);break;case 4:delPerson_4(abs,name);break;case 5:modifyPerson_5(abs,name);break;case 6:cleanPerson_6(abs);break;default:cout<<"Wrong Choice!"<<endl;break;}
}void showMenu(){for (int i = 0; i < 9; i++){if(0==i||8==i)cout<<"**********************"<<endl;else if(i<7&&i>0){cout<<"******"<<i;if(1==i)cout<<"-Add\t";if(2==i)cout<<"-Show\t";if(3==i)cout<<"-Search\t";if(4==i)cout<<"-Del\t";if(5==i)cout<<"-Modify\t";if(6==i)cout<<"-Clean\t";cout<<"******"<<endl;}elsecout<<"******"<<i-7<<"-Quit\t"<<"******"<<endl;}cout<<"Please Input Your Choice:"<<endl;
}int main(){AddressBook abs;abs.mNum = 0;while (1){int select = -1;string name;showMenu();cin>>select;if(2 < select && 6 >select){cout<<"\033c"<<"Input The Name:"<<endl;cin>>name;}Select(select,&abs,&name);}
}

http://www.ppmy.cn/news/701139.html

相关文章

通讯录_通讯录拦截防爆

为了通讯录所谓的面子强撑 很多朋友因为其他原因借了714高炮或者其他网贷口子&#xff0c;一直在循环使用&#xff0c;每月给的利息就是工资的一半或更多&#xff0c;导致快到强制的边缘 每个人的家庭环境又不一样&#xff0c;想强制又因为怕催收骚扰到家人一直在苦苦强撑&…

插入排序——希尔排序

希尔排序其实就是一种插入排序&#xff0c;实际上就是通过直接插入排序一步步改进优化而实现的。所以在了解希尔排序之前要明白插入排序的实现原理。 插入排序 其实我觉得插入排序也可以叫做摸牌排序&#xff0c;就是从第二张牌开始处理&#xff0c;将摸到的牌按照合适的顺序插…

浅谈智能照明系统发展及在工程中的应用

安科瑞 华楠 &#xff3b;摘 要&#xff3d;长久以来&#xff0c;智能照明系统在国内未被得到重视&#xff0c;多数建筑物仍用传统方式来控制的灯光照明&#xff0c;一些智能建筑使用楼宇自动化&#xff08;ba&#xff09;系统监控照明&#xff0c;但只能实现简单的区域照明和…

抓取高德地图位置信息及预览图片,生成excel文件小白教程

本人也是小白初学者&#xff0c;所以教程很小白&#xff0c;有不对的地方请指正&#xff0c;谢谢。 抓取步骤 1.申请高德地图API 2.新建excel文件 3.获取网页源代码 4.分析代码&#xff0c;找到需要抓取的内容位置特点&#xff0c;抓取内容 5.将抓取到的内容插入到文件中&…

批量提取PDF和图片发票信息 2.2

人工录入发票信息真的好烦&#xff0c;有什么软件可以快速解决这个问题吗&#xff1f;​ 那天看到这个问题后&#xff0c;自己写了一个批量提取发票信息的小软件&#xff0c;打开软件之后&#xff0c;选择大量发票文件所在的文件夹就可以了&#xff0c;会自动把发票识别的结果…

免费物流跟踪轨迹订阅接口技术文档-快递鸟

物流跟踪由轨迹订阅接口和轨迹推送接口组成&#xff0c;对接时需要对接以下二个接口 1.轨迹订阅接口 1.1 功能说明 快递鸟物流轨迹订阅接口用于向快递鸟订阅物流轨迹信息。将订单内容通过订阅接口订阅到快递鸟&#xff0c;客户可自动获取运单的轨迹节点信息。 免费试用接口&…

Thinkphp企业级知宇自动发卡系统源码bug漏洞分析和修复

导读&#xff1a; 网上90%以上的自动发卡平台都是使用知宇自动发卡系统&#xff0c;这个系统功能强大、业务完善&#xff0c;是个很不错的程序。知宇自动发卡系统使用Thinkphp5.0内核开发的&#xff0c;是一个完全开源的项目&#xff0c;这套系统在网上早已泛滥&#xff0c;泛…

iText+freemarker 生成PDF 使用ftl模板

iTextfreemarker 生成PDF 生成样式图片模板地址mavenPDF生成工具类PDF生成辅助类base64编码工具类service方法调用总结 生成样式图片 模板地址 maven <!--PDF start--><dependency><groupId>org.xhtmlrenderer</groupId><artifactId>flying-sau…