文章目錄
- 1、系統需求
- 完整代碼
1、系統需求
本文將利用C++來實現一個通訊錄管理系統
系統中需要實現的功能如下:
- 添加聯系人:向通訊錄中添加新人,信息包括(姓名、性別、年齡、聯系電話、家庭住址)最多記錄1000人
- 顯示聯系人:顯示通訊錄中所有聯系人信息
- 刪除聯系人:按照姓名進行刪除指定聯系人
- 查找聯系人:按照姓名查看指定聯系人信息
- 修改聯系人:按照姓名重新修改指定聯系人
- 清空聯系人:清空通訊錄中所有信息
- 退出通訊錄:退出當前使用的通訊錄
以下是本篇文章正文內容
完整代碼
#include<iostream>
#include<string>
#define MAX 1000
using namespace std;//設計聯系人結構體
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;
};//1、添加聯系人
void addPerson(Addressbooks * abs)
{//判斷通訊錄是否已經加滿,如果加滿則不再添加if (abs->m_Size == MAX){cout << "通訊錄已滿,無法添加!" << endl;}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;}cout << "輸入有誤,請重新輸入" << endl;}//年齡cout << "請輸入年齡:" << endl;int age = 0;cin >> age;abs->PersonArray[abs->m_Size].m_Age = age;//電話string phone;cout << "請輸入聯系電話:" << endl;cin >> phone;abs->PersonArray[abs->m_Size].m_Phone = phone;//住址string address;cout << "請輸入家庭地址:" << endl;cin >> address;abs->PersonArray[abs->m_Size].m_Addr = address;//更新通訊錄人數abs->m_Size++;cout << "添加成功" << endl; }}//打印聯系人
//打印數組中第i個聯系人
void print(Addressbooks * abs, int i)
{cout << "姓名:" << abs->PersonArray[i].m_Name << "\t";cout << "性別:" << (abs->PersonArray[i].m_Sex == 1 ? "男" : "女") << "\t";cout << "年齡:" << abs->PersonArray[i].m_Age << "\t";cout << "電話:" << abs->PersonArray[i].m_Phone << "\t";cout << "地址:" << abs->PersonArray[i].m_Addr << endl;
}//2、顯示所有的聯系人
void showPerson(Addressbooks * abs)
{//判斷通訊錄中人數是否為0,如果為0,提示記錄為空if (abs->m_Size == 0){cout << "通訊錄為空" << endl;}else{for (int i = 0; i < abs->m_Size; i++){print(abs, i);}}}//檢測聯系人是否存在,如果存在,返回聯系人所在數組中的具體位置,不存在返回-1
//參數1:通訊錄參數
//參數2:對比姓名
int isExit(Addressbooks * abs,string name)
{for (int i = 0; i < abs->m_Size; i++){if (abs->PersonArray[i].m_Name == name){return i;}else{return -1;}}
}//3、刪除聯系人
void deletePerson(Addressbooks * abs)
{cout << "請輸入您要刪除的聯系人姓名" << endl;string name;cin >> name;//ret == -1 未查到//ret != -1 查到了int ret = isExit(abs, name);if (ret != -1){for (int i = ret;i < abs->m_Size; i++){//數據前移abs->PersonArray[i] = abs->PersonArray[i + 1];}abs->m_Size--; //更新通訊錄中的人數cout << "刪除成功" << endl;}else{cout << "查無此人" << endl;}
}//4、查找聯系人
void findPerson(Addressbooks * abs)
{cout << "請輸入您要查找的聯系人:" << endl;string name;cin >> name;int ret = isExit(abs, name);if (ret != -1){print(abs, ret);}else{cout << "查無此人" << endl;}
}//5、修改指定聯系人信息
void modifyPerson(Addressbooks * abs)
{cout << "請輸入您要修改的聯系人:" << endl;string name;cin >> name;int ret = isExit(abs, name);if (ret != -1){cout << "請輸入姓名:" << endl;string name;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;}cout << "輸入有誤,請重新輸入" << endl;}cout << "請輸入年齡:" << endl;int age = 0;cin >> age;abs->PersonArray[ret].m_Age = age;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;}else{cout << "查無此人" << endl;}}//6、清空所有聯系人
void clearPerson(Addressbooks* abs)
{abs->m_Size = 0; //將當前聯系人數量計為0,做邏輯清空操作cout << "通訊錄已清空" << endl;
}//菜單界面
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()
{//創建通訊錄結構體變量Addressbooks abs;//初始化通訊錄中當前成員個數abs.m_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、刪除聯系人deletePerson(&abs);break;case 4: //4、查找聯系人findPerson(&abs);break;case 5: //5、修改聯系人modifyPerson(&abs);break;case 6: //6、清空聯系人clearPerson(&abs);break;case 0: //0、退出通訊錄cout << "歡迎下次使用" << endl;system("pause");return 0;default:break;}system("pause");system("cls");}}