代码:
//-封装函数显示该界面 如 void showMenu() //-在main函数中调用封装好的函数 #include <iostream> using namespace std; //-菜单界面 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 main() { showMenu();//-菜单界面 system("pause"); return 0; }
#include <iostream> using namespace std; //-菜单界面 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 main() { int select = 0; while (true) { showMenu();//-菜单界面 cin >> select;//选择指令 switch (select) { case 1://1、添加联系人 break; case 2://2、显示联系人 break; case 3://3、删除联系人 break; case 4://4、查找联系人 break; case 5://5、修改联系人 break; case 6://6、清除联系人 break; case 0://0、退出通讯录 cout << "欢迎下次使用!" << endl; system("pause"); return 0; break; default: break; } } system("pause"); return 0; }
结果
tips:system("cls"); //cls 指的是 clean screen
system("cls"); //cls 指的是 clean screen
void showPerson(Addressbooks& abs) { //2、显示联系人 函数定义 //判断通讯录中人数是否为0,如果为0,提示记录为空 //如果不为0,显示记录的联系人信息 if (abs.m_Size == 0) { cout << "当前记录为空" << endl; } else { cout << "通讯录联系人信息列表:" << endl; for (int i = 0; i < abs.m_Size; i++) { cout << "姓名:" << abs.personArray[i].m_Name << "\t" << "性别:" << (abs.personArray[i].m_Sex==1?"男":"女") << "\t" << "年龄:" << abs.personArray[i].m_Age << "\t" << "电话:" << abs.personArray[i].m_Phone << "\t" << "地址:" << abs.personArray[i].m_Addr << "\t" << endl; } } system("pause"); system("cls"); }
//检测联系人是否存在,如果存在,返回联系人所在数组中的具体位置,不存在返回-1 //参数1-abs 通讯录 参数2-name 对比姓名 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; //如果遍历结束的没有找到,返回-1 }
关于赵六位置没了,它只能往后一位调用,后一位为0,原因如下:
代码
void deletePerson(Addressbooks& abs) { //3、删除联系人 函数定义 cout << "请输入联系人姓名:" << endl; string name; cin >> name; int ret = isExist(abs, name);//在通讯录里查找,并返回联系人下标编号 if (ret == -1) { cout << "查无此人" << endl; } else { for (int i = ret; i < abs.m_Size; i++) { abs.personArray[i] = abs.personArray[i + 1];//结构体之间是支持=号直接赋值的 } abs.m_Size--; cout << "删除成功" << endl; } system("pause"); system("cls");//清屏 }
void findPerson(Addressbooks& abs) { //4、查找联系人 函数定义 cout << "请输入联系人姓名:" << endl; string name; cin >> name; int ret = isExist(abs, name); if (ret == -1) { cout << "查无此人" << endl; } else { cout << "该联系人信息如下:" << endl; cout << "姓名:" << abs.personArray[ret].m_Name << "\t" << "性别:" << (abs.personArray[ret].m_Sex == 1 ? "男" : "女") << "\t" << "年龄:" << abs.personArray[ret].m_Age << "\t" << "电话:" << abs.personArray[ret].m_Phone << "\t" << "地址:" << abs.personArray[ret].m_Addr << "\t" << endl; } system("pause"); system("cls"); }
void renewPerson(Addressbooks& abs) { //5、修改联系人 函数定义 cout << "请输入联系人姓名:" << endl; string name; cin >> name; int ret = isExist(abs, name); if (ret == -1) { cout << "查无此人" << endl; } else { cout << "正在修改该联系人信息..." << endl; //姓名 string name; cout << "请输入名字:" << endl; cin >> name; abs.personArray[ret].m_Name = name; //性别 cout << "请输入性别:" << endl; cout << "1————男" << endl; cout << "2————女" << endl; int sex = 0; while (true) { cin >> sex; if (sex == 1 || sex == 2) { abs.personArray[ret].m_Sex = sex; break; } else cout << "输入有误,请重新输入!" << endl; } //年龄 cout << "请输入年龄:" << endl; int age = 0; while (true) { cin >> age; if (age > 0 && age < 150) { abs.personArray[ret].m_Age = age; break; } else { cout << "输入有误,请重新输入!" << endl; } } //联系电话 cout << "请输入联系电话:" << endl; string phone = ""; cin >> phone; abs.personArray[ret].m_Phone = phone; //家庭住址 cout << "请输入家庭住址:" << endl; string address; cin >> address; abs.personArray[ret].m_Addr = address; cout << "修改完成" << endl; } system("pause"); system("cls"); }
void cleanPerson(Addressbooks& abs) { //6、清空联系人 函数定义 cout << "确定要清空所有联系人信息嘛?" << endl << "1————确定清空" << endl << "2————放弃清空" << endl; int flag = 0; while (true) { cin >> flag; if (flag != 1 && flag != 2) { cout << "请输入正确指令" << endl; } else if (flag == 1) { abs.m_Size = 0; cout << "通讯录已经清空" << endl; break; } else { cout << "通讯录放弃清空" << endl; break; } } system("pause"); system("cls"); }
#include <iostream> #include <string> using namespace std; #define MAX 1000//最大可存入联系人人数 //-菜单界面 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; } //设计联系人结构体 struct Person { //姓名 string m_Name; //性别 1 男 2 女 int m_Sex; //年龄 int m_Age; //电话 string m_Phone; //地址 string m_Addr; }; //设计通讯录结构体 struct Addressbooks { //通讯录中保存的联系人数组 struct Person personArray[MAX]; //通讯录中当前记录联系人个数 int m_Size; }; void addPerson(Addressbooks& abs);//1、添加联系人 函数声明 void showPerson(Addressbooks& abs);//2、显示联系人 函数声明 void deletePerson(Addressbooks& abs);//3、删除联系人 函数声明 void findPerson(Addressbooks& abs); //4、查找联系人 函数声明 void renewPerson(Addressbooks& abs); //5、修改联系人 函数声明 void cleanPerson(Addressbooks& abs); //6、清空联系人 函数声明 int main() { int select = 0; Addressbooks abs;//创建通讯录 abs.m_Size = 0;//初始化通讯录中人数 while (true) { showMenu();//-菜单界面 cin >> select;//选择指令 switch (select) { case 1://1、添加联系人 addPerson(abs); break; case 2://2、显示联系人 showPerson(abs); break; case 3://3、删除联系人 deletePerson(abs); break; case 4://4、查找联系人 findPerson(abs); break; case 5://5、修改联系人 renewPerson(abs); break; case 6://6、清空联系人 cleanPerson(abs); break; case 0://0、退出通讯录 cout << "欢迎下次使用!" << endl; system("pause"); return 0; break; default: break; } } system("pause"); return 0; } void addPerson(Addressbooks& abs) { //1、添加联系人 函数定义 if (abs.m_Size == MAX) { cout << "通讯录已满,无法添加!" << endl; return; } else { //姓名 string name; cout << "请输入名字:" << endl; cin >> name; abs.personArray[abs.m_Size].m_Name = name; //性别 cout << "请输入性别:" << endl; cout << "1————男" << endl; cout << "2————女" << endl; int sex = 0; while (true) { cin >> sex; if (sex == 1 || sex == 2) { abs.personArray[abs.m_Size].m_Sex = sex; break; } else cout << "输入有误,请重新输入!" << endl; } //年龄 cout << "请输入年龄:" << endl; int age = 0; while (true) { cin >> age; if (age > 0 && age < 150) { abs.personArray[abs.m_Size].m_Age = age; break; } else { cout << "输入有误,请重新输入!" << endl; } } //联系电话 cout << "请输入联系电话:" << endl; string phone=""; cin >> phone; abs.personArray[abs.m_Size].m_Phone = phone; //家庭住址 cout << "请输入家庭住址:" << endl; string address; cin >> address; abs.personArray[abs.m_Size].m_Addr = address; abs.m_Size++;//通讯录更新 cout << "添加完成" << endl; system("pause");//"请按任意键继续",暂停界面 system("cls"); //清屏 } } void showPerson(Addressbooks& abs) { //2、显示联系人 函数定义 //判断通讯录中人数是否为0,如果为0,提示记录为空 //如果不为0,显示记录的联系人信息 if (abs.m_Size == 0) { cout << "当前记录为空" << endl; } else { cout << "通讯录联系人信息列表:" << endl; for (int i = 0; i < abs.m_Size; i++) { cout << "姓名:" << abs.personArray[i].m_Name << "\t" << "性别:" << (abs.personArray[i].m_Sex==1?"男":"女") << "\t" << "年龄:" << abs.personArray[i].m_Age << "\t" << "电话:" << abs.personArray[i].m_Phone << "\t" << "地址:" << abs.personArray[i].m_Addr << "\t" << endl; } } system("pause"); system("cls"); } //检测联系人是否存在,如果存在,返回联系人所在数组中的具体位置,不存在返回-1 //参数1-abs 通讯录 参数2-name 对比姓名 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; //如果遍历结束的没有找到,返回-1 } void deletePerson(Addressbooks& abs) { //3、删除联系人 函数定义 cout << "请输入联系人姓名:" << endl; string name; cin >> name; int ret = isExist(abs, name); if (ret == -1) { cout << "查无此人" << endl; } else { for (int i = ret; i < abs.m_Size; i++) { abs.personArray[i] = abs.personArray[i + 1];//结构体之间是支持=号直接赋值的 } abs.m_Size--; cout << "删除成功" << endl; } system("pause"); system("cls"); } void findPerson(Addressbooks& abs) { //4、查找联系人 函数定义 cout << "请输入联系人姓名:" << endl; string name; cin >> name; int ret = isExist(abs, name); if (ret == -1) { cout << "查无此人" << endl; } else { cout << "该联系人信息如下:" << endl; cout << "姓名:" << abs.personArray[ret].m_Name << "\t" << "性别:" << (abs.personArray[ret].m_Sex == 1 ? "男" : "女") << "\t" << "年龄:" << abs.personArray[ret].m_Age << "\t" << "电话:" << abs.personArray[ret].m_Phone << "\t" << "地址:" << abs.personArray[ret].m_Addr << "\t" << endl; } system("pause"); system("cls"); } void renewPerson(Addressbooks& abs) { //5、修改联系人 函数定义 cout << "请输入联系人姓名:" << endl; string name; cin >> name; int ret = isExist(abs, name); if (ret == -1) { cout << "查无此人" << endl; } else { cout << "正在修改该联系人信息..." << endl; //姓名 string name; cout << "请输入名字:" << endl; cin >> name; abs.personArray[ret].m_Name = name; //性别 cout << "请输入性别:" << endl; cout << "1————男" << endl; cout << "2————女" << endl; int sex = 0; while (true) { cin >> sex; if (sex == 1 || sex == 2) { abs.personArray[ret].m_Sex = sex; break; } else cout << "输入有误,请重新输入!" << endl; } //年龄 cout << "请输入年龄:" << endl; int age = 0; while (true) { cin >> age; if (age > 0 && age < 150) { abs.personArray[ret].m_Age = age; break; } else { cout << "输入有误,请重新输入!" << endl; } } //联系电话 cout << "请输入联系电话:" << endl; string phone = ""; cin >> phone; abs.personArray[ret].m_Phone = phone; //家庭住址 cout << "请输入家庭住址:" << endl; string address; cin >> address; abs.personArray[ret].m_Addr = address; cout << "修改完成" << endl; } system("pause"); system("cls"); } void cleanPerson(Addressbooks& abs) { //6、清空联系人 函数定义 cout << "确定要清空所有联系人信息嘛?" << endl << "1————确定清空" << endl << "2————放弃清空" << endl; int flag = 0; while (true) { cin >> flag; if (flag != 1 && flag != 2) { cout << "请输入正确指令" << endl; } else if (flag == 1) { abs.m_Size = 0; cout << "通讯录已经清空" << endl; break; } else { cout << "通讯录放弃清空" << endl; break; } } system("pause"); system("cls"); }