nsndbdjdjff nsndbdjdjff
关注数: 9 粉丝数: 23 发帖数: 201 关注贴吧数: 17
一个通讯录小程序,有几个bug。不知道怎么修改,请大神有空指教 问题一:在查找的时候,先不添加联系人,然后随便输入一个人名去查找,总是显示查找成功;但是添加人名后,再去查找一个不存在的人名,他就正确输出 问题二:添加联系人的时候,性别输入的时候,输入字母,死循环 下边是代码: #include<iostream> using namespace std; #include<string> #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; int m_sex; int m_age; string m_phone; string m_address; }; //创建通讯录结构体 struct addressbook { //保存联系人的数组 struct person personarr[MAX]; //当前联系人个数 int m_size; }; //添加联系人 void addperson(addressbook * abs) { //先判断通讯录人员是否已满 if (abs->m_size == MAX) { cout << "通讯录人员已满,请删除后继续操作!" << endl; return; } else { string name; cout << "请输入姓名:"; cin >> name; abs->personarr[abs->m_size].m_name = name; int sex; cout << "请输入性别:"<<endl; cout << "1---男" << endl; cout << "2---女" << endl; while (true) { cin >> sex; if (sex == 1 || sex == 2) { abs->personarr[abs->m_size].m_sex = sex; break; } else { cout << "输入有误,请重新输入" << endl; } } int age; cout << "请输入年龄:" << endl; cin >> age; abs->personarr[abs->m_size].m_age = age; string phone; cout << "请输入手机号:" << endl; cin >> phone; //int plength; 判断手机号是否正确 abs->personarr[abs->m_size].m_phone = phone; string address; cout << "请输入住址" << endl; cin >> address; abs->personarr[abs->m_size].m_address = address; //更新一下通讯录人数 abs->m_size++; cout << "添加成功" << endl; system("pause");//请按任意键继续 system("cls");//清屏操作 } }; //显示联系人 void showperson(addressbook * abs) { if (abs->m_size == 0) { cout << "当前记录为空" << endl; } else { for (int i = 0; i < abs->m_size; i++) { cout << "姓名:" << abs->personarr[i].m_name << "\t"; cout << "性别:" << (abs->personarr[i].m_sex == 1 ? "男":"女") << "\t"; cout << "年龄:" << abs->personarr[i].m_age << "\t"; cout << "电话:" << abs->personarr[i].m_phone << "\t"; cout << "住址:" << abs->personarr[i].m_address << endl; } } system("pause"); system("cls"); } //检测联系人是否存在,如果存在返回数组中具体位置,不存在返回-1 //参数1 通讯录 参数2 对比姓名 int isexist(addressbook * abs, string name) { for (int i = 0; i < abs->m_size; i++) { if (abs->personarr[i].m_name == name) { // cout << abs->personarr[i].m_name << endl; //如果输入的姓名和通讯录中的姓名一样。返回通讯录中姓名的下标。 cout << "检查函数中,存在这个姓名" << endl; return i; } else { //如果没有返回-1 cout << "检查函数中,不存在这个姓名。" << endl; return -1; } } } //删除联系人 void deleteperson (addressbook * abs) { cout << "请输入要删除的姓名:" << endl; string name; cin >> name; int ret = isexist(abs, name); if (ret != -1) { for (int i = ret; i < abs->m_size; i++) { abs->personarr[i] = abs->personarr[i + 1]; } abs->m_size--; cout << "找到此人!" << endl; cout << "删除成功" << endl; } else { //int ret = isexist(abs, name); cout << "查无此人!" << endl; } system("pause"); system("cls"); } //查找联系人 void findperson(addressbook * abs) { cout << "请输入您要查找的联系人:" << endl; string name; cin >> name; //判断联系人是否存在 int ret = isexist(abs, name); //cout <<"这是ret" << ret << endl; if (ret != -1) { cout << "姓名:" << abs->personarr[ret].m_name << "\t"; cout << "性别:" << (abs->personarr[ret].m_sex == 1 ? "男" : "女") << "\t"; cout << "年龄:" << abs->personarr[ret].m_age << "\t"; cout << "手机:" << abs->personarr[ret].m_phone << "\t"; cout << "地址:" << abs->personarr[ret].m_address << endl; } else { cout << "查无此人" << endl; } system("pause"); system("cls"); } //修改指定联系人信息 void modifyperson(addressbook * abs) { cout << "请输入您要修改的联系人姓名:" << endl; string name; cin >> name; int ret = isexist(abs, name); if (ret != -1) { string name; cout << "找到此人,请根据提示修改。" << endl; cout << "重新输入姓名" << endl; cin >> name; abs->personarr[ret].m_name = name; cout << "重新输入性别:" << endl; cout << "1---男" << endl; cout << "2---女" << endl; int sex; cin >> sex; abs->personarr[ret].m_sex = sex; cout << "请重新输入年龄:" << endl; int age; while (true) { cin >> age; if (sex == 1 || sex == 2) { abs->personarr[ret].m_age = age; break; } else { cout << "输入有误,请输入有效数值!" << endl; } } cout << "重新输入电话" << endl; string phone; cin >> phone; abs->personarr[ret].m_phone = phone; cout << "重新输入地址" << endl; string address; cin >> address; abs->personarr[ret].m_address = address; cout << "修改成功" << endl; system("pause"); system("cls"); } } //清空联系人信息 void cleanperson(addressbook * abs) { abs->m_size = 0; cout << "通讯录已经清空" << endl; system("pause"); system("cls"); } int main() { int select; //创建通讯录结构体变量 addressbook abs; //初始化通讯录当前人员个数 abs.m_size = 0; while (true) { //菜单调用 showMenu(); //选择菜单 cout << "请输入您需要的操作:" << endl; 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、修改联系人 modifyperson(&abs); break; case 6:// 6、清空联系人 cleanperson(&abs); break; default://0、退出联系人 cout << "欢迎下次使用" << endl; system("pause"); break; } } system("pause"); return 0; }
1 下一页