学习视频资料见B站:https://www.bilibili.com/video/BV1et411b73Z
系统中需要实现的功能如下:
添加联系人:向通讯录中添加新人,信息包括(姓名、性别、年龄、联系电话、家庭住址)最多记录1000人显示联系人:显示通讯录中所有联系人信息删除联系人:按照姓名进行删除指定联系人查找联系人:按照姓名查看指定联系人信息修改联系人:按照姓名重新修改指定联系人清空联系人:清空通讯录中所有信息退出通讯录:退出当前使用的通讯录创建项目和源文件,之前讲过,这里不再赘述。
菜单界面如下: 步骤:
封装一个函数来实现菜单的显示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; }用switch语句实现
功能描述:
实现添加联系人功能,联系人上限为1000人,联系人信息包括(姓名、性别、年龄、联系电话、家庭住址)
添加联系人实现步骤:
设计联系人结构体设计通讯录结构体main函数中创建通讯录封装添加联系人函数测试添加联系人功能联系人信息包括:姓名、性别、年龄、联系电话、家庭住址
示例:
#include<string> //设计联系人结构体 struct Contact { string name; int gender; //1--男性 2--女性 int age; string phoneNum; string address; };里面包括了一个联系人结构体数组,以及目前通讯录中已有的人数。
示例:
#define MACX 1000 //创建通讯录结构体 struct contactBook { Contact pensonArray[MAX]; //通讯录中是一个联系人构成的数组,最大1000个 int size; //用来记录现有的联系人个数 };示例:
//创建一个通讯录变量 contactBook ctb; //给这个变量赋初值 ctb.size = 0; //一开始通讯录人数为零示例:
//封装添加联系人子函数 void addPerson(contactBook * p) { if (p->size >= MAX) { cout << "抱歉,通讯录已满" << endl; //判断通讯录是否已经满了 } else { //姓名 cout << "请输入联系人姓名:" << endl; string name; cin >> name; p->pensonArray[p->size].name = name; //性别 cout << "请输入联系人性别:" << endl; cout << "1——男性" << endl; cout << "2——女性" << endl; int gender; while (1) { cin >> gender; if (gender == 1 || gender == 2) { p->pensonArray[p->size].gender = gender; break; } else { cout << "请输入正确的性别!" << endl; } } //年龄 cout << "请输入联系人年龄:" << endl; int age; cin >> age; p->pensonArray[p->size].age = age; //电话号码 cout << "请输入联系人电话号码:" << endl; string num; cin >> num; p->pensonArray[p->size].phoneNum = num; //住址 cout << "请输入联系人地址:" << endl; string add; cin >> add; p->pensonArray[p->size].address = add; //更新通讯录人数 p->size++; cout<<"联系人 "<< name << " 添加成功!" << endl; system("pause"); //按任意键继续 system("cls"); //清屏操作 } }封装显示联系人子函数 示例:
//2.封装显示联系人子函数 void showPerson(contactBook * p) { //判断通讯录是否为空 if (p->size == 0) { cout << "当前通讯录为空!" << endl; } else { for (int i = 0; i < p->size; i++) { cout << "姓名:" << p->pensonArray[i].name << "\t" << "性别:" << (p->pensonArray[i].gender == 1 ? "男" : "女") << "\t" << "年龄:" << p->pensonArray[i].age << "\t" << "电话:" << p->pensonArray[i].phoneNum << "\t" << "住址:" << p->pensonArray[i].address << endl; } } system("pause"); system("cls"); }功能描述:按照姓名进行删除指定联系人
删除联系人实现步骤:
封装检测联系人是否存在封装删除联系人函数测试删除联系人功能示例:
//3.封装一个检测联系人是否存在的函数,存在返回位置,不存在返回-1 // 传入的参数 参数1:通讯录 参数2:查找的人 int weatherExist(contactBook * p, string name) { for (int i = 0; i < p->size; i++) { if (p->pensonArray[i].name == name) { return i; } } return -1; }示例:
//4.封装一个删除联系人的函数 void deletePerson(contactBook * p) { cout << "请输入想要删除的联系人姓名:" << endl; string name; cin >> name; int resp = weatherExist(p, name); if (resp !=-1) { for (int i = resp; i < p->size; i++) { p->pensonArray[i] = p->pensonArray[i + 1]; } p->size--; cout << "联系人 " << name << " 删除成功!" << endl; } else { cout << "查无此人!" << endl; } system("pause"); system("cls"); }封装一个查找联系人的子函数 示例:
//5.封装一个查找联系人的子函数 void findPerson(contactBook * p) { cout << "请输入您想要查找的联系人姓名:" << endl; string name; cin >> name; int resp = weatherExist(p, name); if (resp != -1) //联系人存在 { cout << "姓名:" << p->pensonArray[resp].name << "\t" << "性别:" << (p->pensonArray[resp].gender == 1 ? "男" : "女") << "\t" << "年龄:" << p->pensonArray[resp].age << "\t" << "电话:" << p->pensonArray[resp].phoneNum << "\t" << "住址:" << p->pensonArray[resp].address << endl; } else //联系人不存在 { cout << "查无此人" << endl; } system("pause"); system("cls"); }封装一个修改联系人的子函数 示例:
//6.封装一个修改联系人的子函数 void modifyPerson(contactBook * p) { cout << "请输入您想要修改的联系人姓名:" << endl; string name; cin >> name; int resp = weatherExist(p, name); if (resp != -1) //联系人存在 { //姓名 cout << "请输入修改后联系人姓名:" << endl; string name; cin >> name; p->pensonArray[resp].name = name; //性别 cout << "请输入修改后联系人性别:" << endl; cout << "1——男性" << endl; cout << "2——女性" << endl; int gender; while (1) { cin >> gender; if (gender == 1 || gender == 2) { p->pensonArray[resp].gender = gender; break; } else { cout << "请输入正确的性别!" << endl; } } //年龄 cout << "请输入修改后联系人年龄:" << endl; int age; cin >> age; p->pensonArray[resp].age = age; //电话号码 cout << "请输入修改后联系人电话号码:" << endl; string num; cin >> num; p->pensonArray[resp].phoneNum = num; //住址 cout << "请输入修改后联系人地址:" << endl; string add; cin >> add; p->pensonArray[resp].address = add; cout << "联系人 " << name << " 修改成功!" << endl; } else //联系人不存在 { cout << "查无此人" << endl; } system("pause"); system("cls"); }封装清空联系人函数 示例:
//7.封装一个清空联系人的函数 void cleanPerson(contactBook * p) { p->size = 0; //做逻辑清空操作 cout << "清空通讯录成功!" << endl; system("pause"); system("cls"); }