用VS2019所写,个人学习C++的第一个小项目,注释多,简单易懂,供大家参考。
可实现的功能有:
1、添加联系人
2、显示联系人
3、删除联系人
4、查找联系人
5、修改联系人
6、清空联系人
代码如下:
#include<iostream> using namespace std; #define MAX 100//通讯录最大人数
//联系人结构体 struct Preson { ?? ?string m_Name;//姓名 ?? ?? ?? ?int m_Sex;//性别 1男 ?2女 ?? ? ?? ?int m_Age;//年龄 ?? ? ?? ?string m_Phone;//电话 ?? ? ?? ?string m_Addr;//住址 };
//通讯录结构体 struct Addressbooks { ?? ?struct Preson presonArray[MAX]; ?? ?int m_max;//通讯录中的人数 };
//菜单界面 void ShowMenu() { ?? ?cout << "-----1、添加联系人-----" << endl; ?? ?cout << "-----2、显示联系人-----" << endl; ?? ?cout << "-----3、删除联系人-----" << endl; ?? ?cout << "-----4、查找联系人-----" << endl; ?? ?cout << "-----5、修改联系人-----" << endl; ?? ?cout << "-----6、清空联系人-----" << endl; ?? ?cout << "-----0、退出通讯录-----" << endl;
}
//1、添加通讯录联系人函数 void addpreson(Addressbooks* abs) { ?? ?//判断通讯录是否已经满人 ?? ?if (abs->m_max == 1000) ?? ?{ ?? ??? ?cout << "您的通信录人数已满" << endl; ?? ??? ?return; ?? ?} ?? ?else ?? ?{?? ??? ? ?? ??? ?//添加联系人 ?? ??? ?//姓名 ?? ??? ?string name; ?? ??? ?cout << "请输入您要添加联系人的姓名为:" << endl; ?? ??? ?cin >> name; ?? ??? ?abs->presonArray[abs->m_max].m_Name = name; ?? ??? ? ?? ??? ?//性别 ?? ??? ?cout << "请输入您要添加联系人的性别为:"<<"1、男"<<"2、女" ?? ??? ??? ?<< endl; ?? ??? ?int sex; ?? ??? ?while (true) ?? ??? ?{ ?? ??? ??? ?cin >> sex; ?? ??? ??? ?if (sex == 1 || sex == 2) ?? ??? ??? ?{ ?? ??? ??? ??? ?abs->presonArray[abs->m_max].m_Sex = sex; ?? ??? ??? ??? ?break; ?? ??? ??? ?} ?? ??? ??? ?cout << "输入有误请重新再输!" << endl; ?? ??? ?} ?? ??? ?//年龄 ?? ??? ?int age; ?? ??? ?cout << "请输入您要添加联系人的年龄为:" << endl; ?? ??? ?cin >> age; ?? ??? ?abs->presonArray[abs->m_max].m_Age = age; ?? ??? ?//电话 ?? ??? ?string phone; ?? ??? ?cout << "请输入您要添加联系人的电话号码为:" << endl; ?? ??? ?cin >> phone; ?? ??? ?abs->presonArray[abs->m_max].m_Phone = phone; ?? ??? ?//地址 ?? ??? ?string addr; ?? ??? ?cout << "请输入您要添加联系人的地址为:" << endl; ?? ??? ?cin >> addr; ?? ??? ?abs->presonArray[abs->m_max].m_Addr = addr; ?? ??? ?//更新通信录人数 ?? ??? ?abs->m_max++; ?? ??? ?cout << "恭喜添加成功!" << endl; ?? ??? ?system("pause");//请按任意键继续 ?? ??? ?system("cls");//清屏操作 ?? ?} }
//2、显示函数 void showpreson(Addressbooks* abs) { ?? ?//判断通信录人数是否为0,若是显示为空 ?? ?//如果不为零显示通信录联系人的信息 ?? ? ?? ??? ?if (abs->m_max == 0) ?? ??? ?{ ?? ??? ??? ?cout << "您的通信录为空" << endl; ?? ??? ?} ?? ??? ?else ?? ??? ?{ ?? ??? ??? ?for (int i = 0; i < abs->m_max;i++) ?? ??? ??? ?{ ?? ??? ??? ??? ?cout << "您的第" << i+1 << "个联系人姓名为:" << abs->presonArray[i].m_Name << "\t"; ?? ??? ??? ??? ?cout << "性别:" << (abs->presonArray[i].m_Sex == 1 ? "男" : "女") << "\t"; ?? ??? ??? ??? ?cout << "年龄:" << abs->presonArray[i].m_Age << "\t"; ?? ??? ??? ??? ?cout << "电话号码:" << abs->presonArray[i].m_Phone << "\t"; ?? ??? ??? ??? ?cout << "地址:" << abs->presonArray[i].m_Addr << endl; ?? ??? ??? ?} ?? ??? ?} ?? ??? ?system("pause");//按任意键继续 ?? ??? ?system("cls");//清屏 }
//检测函数 //检测联系人是否存在,如果存在,返回联系人在数组中的具体位置,不存在返回-1 //参数一 通信录 参数二 对比姓名 int isExist(Addressbooks* abs, string name) { ?? ?for (int i = 0;i < abs->m_max;i++) ?? ?{ ?? ??? ?//找到用户输入的姓名 ?? ??? ?if (abs->presonArray[i].m_Name == name) ?? ??? ?{ ?? ??? ??? ?return i; ?? ??? ?}?? ? ?? ?} ?? ?//没找到返回-1 ?? ?return -1; }
//3、删除函数 void deletePerson(Addressbooks* abs) { ?? ?cout << "请输入您要输入的联系人" << endl; ?? ? ?? ?string name; ?? ?cin >> name;
?? ?//ret来接收返回值 ?? ?int ret = isExist(abs, name); ?? ?if (ret != -1) ?? ?{ ?? ??? ?for (int i = ret;i < abs->m_max;i++) ?? ??? ?{ ?? ??? ??? ?//数据前移 ?? ??? ??? ?abs->presonArray[i] = abs->presonArray[i + 1]; ?? ??? ?} ?? ??? ?abs->m_max--;//更新通信录中联系人数 ?? ??? ?cout << "恭喜删除成功!" << endl; ?? ?} ?? ?else ?? ?{ ?? ??? ?cout << "对不起查无此人!" << endl; ?? ?} ?? ?system("pause"); ?? ?system("cls"); }
//4、查找指定的联系人信息 void findPreson(Addressbooks* abs) { ?? ?cout << "请输入您要查找联系人的姓名:" << endl; ?? ?string name; ?? ?cin >> name;
?? ?int ret = isExist(abs, name);//调用查找函数,查找是否有所要查找的联系人 ?? ?if (ret != -1)//若所要查找的联系人存在 ?? ?{ ?? ??? ?cout << "您的第" << ret + 1 << "个联系人姓名为:" << abs->presonArray[ret].m_Name << "\t"; ?? ??? ?cout << "性别:" << (abs->presonArray[ret].m_Sex == 1 ? "男" : "女") << "\t"; ?? ??? ?cout << "年龄:" << abs->presonArray[ret].m_Age << "\t"; ?? ??? ?cout << "电话号码:" << abs->presonArray[ret].m_Phone << "\t"; ?? ??? ?cout << "地址:" << abs->presonArray[ret].m_Addr << endl;
?? ?} ?? ?else//若没有所要查找的人 ?? ?{ ?? ??? ?cout << "对不起查无此人!" << endl; ?? ?} ?? ?system("pause");//按任意键继续 ?? ?system("cls");//清屏 }
//5、修改联系人 void modifyPreson(Addressbooks* abs) { ?? ?cout << "请输入您要修改联系人的姓名" << endl; ?? ?string name; ?? ?cin >> name;
?? ?int ret = isExist(abs, name);//调用查找函数,查找联系人是否存在 ?? ? ?? ?if (ret != -1)//找到指定联系人 ?? ?{ ?? ??? ?//先显示一下联系人当前的信息 ?? ??? ?cout << "您的第" << ret + 1 << "个联系人姓名为:" << abs->presonArray[ret].m_Name << "\t"; ?? ??? ?cout << "性别:" << (abs->presonArray[ret].m_Sex == 1 ? "男" : "女") << "\t"; ?? ??? ?cout << "年龄:" << abs->presonArray[ret].m_Age << "\t"; ?? ??? ?cout << "电话号码:" << abs->presonArray[ret].m_Phone << "\t"; ?? ??? ?cout << "地址:" << abs->presonArray[ret].m_Addr << endl; ?? ??? ? ?? ??? ?//姓名 ?? ??? ?cout << "姓名是否要修改?" <<"1、修改 ?2、不修改" << endl; ?? ??? ?int a = 0; ?? ??? ?cin >> a; ?? ??? ?if (a == 1)//若要修改 ?? ??? ?{ ?? ??? ??? ?cout << "请输入修改后的姓名:" << endl; ?? ??? ??? ?string name; ?? ??? ??? ?cin >> name; ?? ??? ??? ?abs->presonArray[ret].m_Name = name; ?? ??? ?} ?? ??? ?//性别 ?? ??? ?cout << "性别是否要修改?" << "1、修改 ?2、不修改" << endl; ?? ??? ?int b = 0; ?? ??? ?cin >> b; ?? ??? ?if (b == 1)//若要修改 ?? ??? ?{ ?? ??? ??? ?cout << "请输入修改后的性别:" <<"1: 男 ?2:女" << endl; ?? ??? ??? ?int sex; ?? ??? ??? ?cin >> sex; ?? ??? ??? ?abs->presonArray[ret].m_Sex = sex; ?? ??? ?} ?? ??? ?//年龄 ?? ??? ?cout << "年龄是否要修改?" << "1、修改 ?2、不修改" << endl; ?? ??? ?int c = 0; ?? ??? ?cin >> c; ?? ??? ?if (c == 1)//若要修改 ?? ??? ?{ ?? ??? ??? ?cout << "请输入修改后的年龄:" << endl; ?? ??? ??? ?int age; ?? ??? ??? ?cin >> age; ?? ??? ??? ?abs->presonArray[ret].m_Age = age; ?? ??? ?} ?? ??? ?//电话 ?? ??? ?cout << "电话是否要修改?" << "1、修改 ?2、不修改" << endl; ?? ??? ?int d = 0; ?? ??? ?cin >> d; ?? ??? ?if (d == 1)//若要修改 ?? ??? ?{ ?? ??? ??? ?cout << "请输入修改后的电话:" << endl; ?? ??? ??? ?string phone; ?? ??? ??? ?cin >> phone; ?? ??? ??? ?abs->presonArray[ret].m_Phone = phone; ?? ??? ?} ?? ??? ?//住址 ?? ??? ?cout << "住址是否要修改?" << "1、修改 ?2、不修改" << endl; ?? ??? ?int e = 0; ?? ??? ?cin >> e; ?? ??? ?if (e == 1)//若要修改 ?? ??? ?{ ?? ??? ??? ?cout << "请输入修改后的住址:" << endl; ?? ??? ??? ?string addr; ?? ??? ??? ?cin >> addr; ?? ??? ??? ?abs->presonArray[ret].m_Addr = addr; ?? ??? ?} ?? ??? ?cout << "恭喜修改成功!" << endl; ?? ?} ?? ?else//未找到指定联系人 ?? ?{ ?? ??? ?cout << "对不起查无此人!" << endl; ?? ?} ?? ? ?? ?system("pause");//按任意键继续 ?? ?system("cls");//清屏 }
//6、清空所有联系人 void cleanPreson(Addressbooks* abs) { ?? ?abs->m_max = 0;//将当前记录的联系人数置0,做逻辑清空操作 ?? ?cout << "通讯录已清空!" << endl; ?? ?system("pause");//按任意键继续 ?? ?system("cls");//清屏操作 } int main() { ?? ?Addressbooks abs;//创建通信录 ?? ?abs.m_max = 0;//初始化通信录
?? ?//用户选择输入 ?? ?int select = 0; ?? ?while (1) ?? ?{ ?? ??? ?ShowMenu(); ?? ??? ?cin >> select; ?? ??? ?switch (select) ?? ??? ?{ ?? ??? ?case 1://1、添加联系人 ?? ??? ??? ?addpreson(&abs); ?? ??? ??? ?break; ?? ??? ?case 2://2、显示联系人 ?? ??? ??? ?showpreson(&abs); ?? ??? ??? ?break; ?? ??? ?case 3://3、删除联系人 ?? ??? ??? ?deletePerson(&abs); ?? ??? ??? ?break; ?? ??? ?case 4://4、查找联系人 ?? ??? ??? ?findPreson(&abs); ?? ??? ??? ?break; ?? ??? ?case 5://5、修改联系人 ?? ??? ??? ?modifyPreson(&abs); ?? ??? ??? ?break; ?? ??? ?case 6://6、清空联系人 ?? ??? ??? ?cleanPreson(&abs); ?? ??? ??? ?break; ?? ??? ?case 0://0、退出通讯录 ?? ??? ??? ?cout << "欢迎下次使用" << endl; ?? ??? ??? ?system("pause"); ?? ??? ??? ?return 0; ?? ??? ?break; ?? ??? ?} ?? ?} ?? ?system("pause"); ?? ?return 0; }
|