用C++的部分基础语法写了一个简单的不完善的通讯录管理系统。
我用的是VS2022。
#includeusing namespace std;
#define MAX 1000
//联系人
struct Person {string m_Name;
//1--男 2--女
int m_Sex;
int m_Age;
string m_Phone;
string m_Address;
};
//通讯录
struct Addressbooks {Person personArray[MAX];
int m_Size;
};
//菜单显示
void showMenu() {cout<< "*************************"<< endl;
cout<< "***** 1、添加联系人 *****"<< endl;
cout<< "***** 2、显示联系人 *****"<< endl;
cout<< "***** 3、删除联系人 *****"<< endl;
cout<< "***** 4、查找联系人 *****"<< endl;
cout<< "***** 5、修改联系人 *****"<< endl;
cout<< "***** 6、清空联系人 *****"<< endl;
cout<< "***** 0、退出通讯录 *****"<< endl;
cout<< "*************************"<< endl;
}
//检测联系人是否存在
int isExist(Addressbooks* abs, string phone) {//如果存在,返回其下标;如果不存在,返回-1
for (int i = 0; i< abs->m_Size; i++) {//如果存在
if (abs->personArray[i].m_Phone == phone) { return i;
}
//如果不存在
else { ;
}
}
cout<< "查无此人!"<< endl;
return -1;
}
//1、添加联系人
void addPerson(Addressbooks* abs) {//判断通讯录是否已满
if (abs->m_Size == MAX) {cout<< "通讯录已满,不能添加!"<< endl;
return;
}
//添加联系人信息
else {//姓名
cout<< "请输入姓名:";
cin >>abs->personArray[abs->m_Size].m_Name;
//性别
while (1) { cout<< "1--男 2--女"<< endl;
cout<< "请输入性别:";
int sex = 0;
cin >>sex;
//判断性别输入是否正确
if (sex == 1 || sex == 2) { abs->personArray[abs->m_Size].m_Sex = sex;
break;
}
else { cout<< "输入错误,请重新输入!";
}
}
//年龄
while (1) { cout<< "请输入年龄:";
int age = 0;
cin >>age;
if (age< 0) { cout<< "输入错误,请重新输入!"<< endl;
}
else { abs->personArray[abs->m_Size].m_Age = age;
break;
}
}
//号码
cout<< "请输入号码:";
cin >>abs->personArray[abs->m_Size].m_Phone;
//住址
cout<< "请输入住址:";
cin >>abs->personArray[abs->m_Size].m_Address;
cout<< "添加成功!"<< endl;
//更新通讯录人数
abs->m_Size++;
}
}
//2、显示联系人
void showPerson(Addressbooks* abs) {//判断通讯录是否为空
if (abs->m_Size == 0) {cout<< "通讯录为空!"<< endl;
}
else {for (int i = 0; i< abs->m_Size; i++) { //姓名
cout<< "姓名:"<< abs->personArray[i].m_Name<< "\t";
//性别
if (abs->personArray[i].m_Sex == 1) { cout<< "性别:"<< "男"<< "\t";
}
else { cout<< "性别:"<< "女"<< "\t";
}
//年龄
cout<< "年龄:"<< abs->personArray[i].m_Age<< "\t";
//号码
cout<< "号码:"<< abs->personArray[i].m_Phone<< "\t";
//住址
cout<< "住址:"<< abs->personArray[i].m_Address<< endl;
}
}
}
//3、删除联系人
void deletePerson(Addressbooks* abs, int person) {//逻辑删除
for (int i = person; i< abs->m_Size - 1; i++) {//注意数组的越界访问
abs->personArray[i] = abs->personArray[i + 1];
}
cout<< "删除成功!"<< endl;
//更新通讯录人数
abs->m_Size--;
}
//4、查找联系人
void findPerson(Addressbooks* abs) {//检测联系人是否存在
cout<< "请输入要查找联系人的手机号码:";
string phone;
cin >>phone;
int person = isExist(abs, phone);
//所找联系人存在
if (person != -1) {cout<< "姓名:"<< abs->personArray[person].m_Name<< "\t";
cout<< "性别:"<< (abs->personArray[person].m_Sex == 1 ? "男" : "女")<< "\t";//三目运算符
cout<< "年龄:"<< abs->personArray[person].m_Age<< "\t";
cout<< "号码:"<< abs->personArray[person].m_Phone<< "\t";
cout<< "住址:"<< abs->personArray[person].m_Address<< endl;
}
else {;
}
}
//5、修改联系人
void modifyPerson(Addressbooks* abs) {cout<< "请输入要修改联系人的手机号码:";
string phone;
cin >>phone;
int person = isExist(abs, phone);
if (person != -1) {//找到了
//修改
//判断通讯录是否已满
if (abs->m_Size == MAX) { cout<< "通讯录已满,不能添加!"<< endl;
return;
}
//修改联系人信息
else { cout<< "1--修改该联系人的全部信息 2--修改该联系人的局部信息"<< endl;
cout<< "请输入您的选择:";
int select;
cin >>select;
//1--修改该联系人的全部信息
if (select == 1) { cout<< "以下是(1--修改该联系人的全部信息)部分";
cout<< endl;
cout<< "输入要修改的信息!"<< endl;
//姓名
cout<< "请输入姓名:";
cin >>abs->personArray[person].m_Name;
//性别
while (1) {cout<< "1--男 2--女"<< endl;
cout<< "请输入性别:";
int sex;
cin >>sex;
//判断性别输入是否正确
if (sex == 1 || sex == 2) {abs->personArray[person].m_Sex = sex;
break;
}
else {cout<< "输入错误!";
}
}
//年龄
while (1) {cout<< "请输入年龄:";
if (abs->personArray[person].m_Age< 0) {cout<< "输入错误,请重新输入!"<< endl;
}
else {cin >>abs->personArray[person].m_Age;
break;
}
}
//号码
cout<< "请输入号码:";
cin >>abs->personArray[person].m_Phone;
//住址
cout<< "请输入住址:";
cin >>abs->personArray[person].m_Address;
cout<< "修改成功!"<< endl;
}
//2--修改该联系人的部分信息
else { //联系人所拥有的信息的序号
//1--姓名 2--性别 3--年龄 4--号码 5--住址
cout<< "以下是(2--修改该联系人的局部信息)部分";
cout<< endl;
cout<< "1--姓名 2--性别 3--年龄 4--号码 5--住址"<< endl;
cout<< "请输入您的选择:";
int choice;
cin >>choice;
while (1) {switch (choice) {case 1: {//姓名
cout<< "请输入姓名:";
cin >>abs->personArray[person].m_Name;
//判断是否继续修改
cout<< "是否继续修改"<< endl;
//1--停止修改 2--继续修改
cout<< "1--停止修改 2--继续修改"<< endl;
cout<< "请输入您的选择:";
int option;
cin >>option;
if (option ==1) { //停止修改
break;
}
else { //继续修改
;
}
}
case 2: {//性别
while (1) { cout<< "1--男 2--女"<< endl;
cout<< "请输入性别:";
int sex;
cin >>sex;
//判断性别输入是否正确
if (sex == 1 || sex == 2) { abs->personArray[person].m_Sex = sex;
break;
}
else { cout<< "输入错误!";
}
}
//判断是否继续修改
cout<< "是否继续修改"<< endl;
//1--停止修改 2--继续修改
cout<< "1--停止修改 2--继续修改"<< endl;
cout<< "请输入您的选择:";
int option;
cin >>option;
if (option == 1) { //停止修改
break;
}
else { //继续修改
;
}
}
case 3: {//年龄
while (1) { cout<< "请输入年龄:";
if (abs->personArray[person].m_Age< 0) { cout<< "输入错误,请重新输入!"<< endl;
}
else { cin >>abs->personArray[person].m_Age;
break;
}
}
//判断是否继续修改
cout<< "是否继续修改"<< endl;
//1--停止修改 2--继续修改
cout<< "1--停止修改 2--继续修改"<< endl;
cout<< "请输入您的选择:";
int option;
cin >>option;
if (option == 1) { //停止修改
break;
}
else { //继续修改
;
}
}
case 4: {//号码
cout<< "请输入号码:";
cin >>abs->personArray[person].m_Phone;
//判断是否继续修改
cout<< "是否继续修改"<< endl;
//1--停止修改 2--继续修改
cout<< "1--停止修改 2--继续修改"<< endl;
cout<< "请输入您的选择:";
int option;
cin >>option;
if (option == 1) { //停止修改
break;
}
else { //继续修改
;
}
}
case 5: {//住址
cout<< "请输入住址:";
cin >>abs->personArray[person].m_Address;
//判断是否继续修改
cout<< "是否继续修改"<< endl;
//1--停止修改 2--继续修改
cout<< "1--停止修改 2--继续修改"<< endl;
cout<< "请输入您的选择:";
int option;
cin >>option;
if (option == 1) { //停止修改
break;
}
else { //继续修改
;
}
}
default:
break;
}
cout<< "修改成功"<< endl;
break;
}
}
}
}
else {;
}
}
//6、清空联系人
void clearPerson(Addressbooks* abs) {//逻辑清空
abs->m_Size = 0;
cout<< "清理成功!"<< endl;
}
int main() {//创建通讯录变量
Addressbooks abs;
abs.m_Size = 0;
while (1) {//显示菜单
showMenu();
int select = 0;
cin >>select;
switch (select)
{case 1://1、添加联系人
addPerson(&abs);
break;
case 2: //2、显示联系人
showPerson(&abs);
break;
case 3: {//3、删除联系人
//检测联系人是否存在
string phone;
cout<< "请输入要删除联系人的手机号:";
cin >>phone;
int person = isExist(&abs, phone);
//删除联系人
deletePerson(&abs, person);
break;
}
case 4://4、查找联系人
findPerson(&abs);
break;
case 5://5、修改联系人
modifyPerson(&abs);
break;
case 6://6、清空联系人
clearPerson(&abs);
break;
case 0://0、退出通讯录
cout<< "退出通讯录,欢迎下次使用!"<< endl;
return 0;
default:
break;
}
system("pause");
system("cls");
}
}
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
售后响应及时
7×24小时客服热线数据备份
更安全、更高效、更稳定价格公道精准
项目经理精准报价不弄虚作假合作无风险
重合同讲信誉,无效全额退款