网站开发的需求文档,进行网站建设的上市公司,dede手机网站模板制作,wordpress腾讯后台账号文章目录 通讯录管理系统一、系统需求以及成品演示二、代码实现三、完整代码 通讯录管理系统
一、系统需求以及成品演示
1.1 系统需求
通讯录是一个可以记录亲人、好友信息的工具。这里利用C来实现一个通讯录管理系统
系统中需要实现的功能如下#xff1a;
添加联系人来实现一个通讯录管理系统
系统中需要实现的功能如下
添加联系人向通讯录中添加新人信息包括姓名、性别、年龄、联系电话、家庭住址最多记录1000人显示联系人显示通讯录中所有联系人信息删除联系人按照姓名进行删除指定联系人查找联系人按照姓名查看指定联系人信息修改联系人按照姓名重新修改指定联系人清空联系人清空通讯录中所有信息退出通讯录退出当前使用的通讯录
1.2 成品演示 通讯录管理系统 二、代码实现
2.1 菜单功能
功能描述 用户选择功能的界面 步骤
封装函数显示该界面 void showMenu()在main函数中调用封装好的函数
// 菜单函数
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;cout 请选择: ;
}2.2 退出功能
功能描述退出通讯录系统
思路根据用户不同的选择进入不同的功能可以选择switch分支结构将整个架构进行搭建
当用户选择0时候执行退出选择其他先不做操作也不会退出程序
int main()
{while (true){showMenu(); // 调用菜单函数int select 0; // 用户选择变量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;
}2.3 添加联系人
功能描述
实现添加联系人功能联系人上限为1000人联系人信息包括姓名、性别、年龄、联系电话、家庭住址
添加联系人实现步骤
设计联系人结构体设计通讯录结构体main函数中创建通讯录封装添加联系人函数测试添加联系人功能
设计联系人结构体 联系人信息包括姓名、性别、年龄、联系电话、家庭住址
// 联系人结构体
struct Person
{// 姓名string m_Name;// 性别 1、男 2、女int m_Set;// 年龄int m_Age;// 电话string m_Phone;// 地址string m_Addr;
};设计通讯录结构体 设计时候可以在通讯录结构体中维护一个容量为1000的存放联系人的数组并记录当前通讯录中联系人数量。
#define MAX 1000 // 最大人数
// 设计通讯录结构体
struct Addressbooks
{// 通讯录中保存的联系人数组struct Person personArray[MAX];// 通讯录中人员个数int m_Size;
};main函数中创建通讯录 添加联系人函数封装好后在main函数中创建一个通讯录变量这个就是我们需要一直维护的通讯录
mian函数起始位置添加
// 创建通讯录
Addressbooks abs;
//初始化通讯录中人数
abs.m_Size 0;封装添加联系人函数 思路添加联系人前先判断通讯录是否已满如果满了就不再添加未满情况将新联系人信息逐个加入到通讯录
// 1、添加联系人信息
void addPerson(Addressbooks* abs)
{// 判断通讯录是否已满if (abs-m_Size MAX){cout 通讯录已满无法继续添加新联系人 endl;return;}else {// 姓名string name; cout 请输入姓名: ;cin name;abs-personArray[abs-m_Size].m_Name name;// 性别int sex;while (true){cout 请输入性别(1、男 or 2、女): ;cin sex;if (sex 1 || sex 2) {abs-personArray[abs-m_Size].m_Sex sex;break;}cout 输入错误请重新输入 endl;}// 年龄int age;cout 请输入年龄: ;cin age;abs-personArray[abs-m_Size].m_Age age;// 联系电话string phone;cout 请输入联系电话: ;cin phone;abs-personArray[abs-m_Size].m_Phone phone;// 家庭地址string address;cout 请输入家庭地址: ;cin address;abs-personArray[abs-m_Size].m_Addr address;// 更新通讯录人数abs-m_Size;cout 添加成功 endl;system(pause);system(cls);}
}测试添加联系人功能 选择界面中如果玩家选择了1代表添加联系人我们可以测试下该功能
case 1: //添加联系人addPerson(abs);break;2.4 显示联系人
功能描述显示通讯录中已有的联系人信息
显示联系人实现步骤
封装显示联系人函数测试显示联系人功能
封装显示联系人函数 思路判断如果当前通讯录中没有人员就提示记录为空人数大于0显示通讯录中信息。
// 显示所有联系人信息
void showPerson(Addressbooks* abs)
{if (abs-m_Size 0) {cout 当前记录为空 endl;}else{for (int i 0; i abs-m_Size; 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;}}system(pause);system(cls);
}测试显示联系人功能 在switch case语句中case 2 里添加
case 2: //显示联系人showPerson(abs);break;2.5 删除联系人
功能描述按照姓名进行删除指定联系人
删除联系人实现步骤
封装检测联系人是否存在封装删除联系人函数测试删除联系人功能
封装检测联系人是否存在
设计思路
删除联系人前我们需要先判断用户输入的联系人是否存在如果存在删除不存在提示用户没有要删除的联系人 因此我们可以把检测联系人是否存在封装成一个函数中如果存在返回联系人在通讯录中的位置不存在返回-1。
// 判断是否存在查询的人员存在返回在数组中索引位置不存在返回-1
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; // 没找到
}封装删除联系人函数
根据用户输入的联系人判断该通讯录中是否有此人查找到进行删除并提示删除成功查不到提示查无此人。
// 3、删除指定联系人信息
void deletePerson(Addressbooks* abs)
{string name;cout 请输入你要删除的联系人: ;cin name;int ret isExist(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;}system(pause);system(cls);
}测试删除联系人功能
case 3: //删除联系人deletePerson(abs);break;2.6 查找联系人
功能描述按照姓名查看指定联系人信息
查找联系人实现步骤
封装查找联系人函数测试查找指定联系人
封装查找联系人函数 实现思路判断用户指定的联系人是否存在如果存在显示信息不存在则提示查无此人。
// 4、查找指定联系人信息
void findPerson(Addressbooks* abs)
{string name;cout 请输入你要查找的联系人姓名: ;cin name;int ret isExist(abs, name);if (ret ! -1) {cout 姓名: abs-personArray[ret].m_Name \t;cout 性别: (abs-personArray[ret].m_Sex 1 ? 男 : 女) \t;cout 年龄: abs-personArray[ret].m_Age \t;cout 联系电话: abs-personArray[ret].m_Phone \t;cout 家庭地址: abs-personArray[ret].m_Addr endl;}else {cout 查无此人 endl;}system(pause);system(cls);
}测试查找指定联系人 在switch case 语句中case4里添加
case 4: //查找联系人findPerson(abs);break;2.7 修改联系人
功能描述按照姓名重新修改指定联系人
修改联系人实现步骤
封装修改联系人函数测试修改联系人功能
封装修改联系人函数 实现思路查找用户输入的联系人如果查找成功进行修改操作查找失败提示查无此人。
// 5、修改指定联系人信息
void modifyPerson(Addressbooks* abs)
{string name;cout 请输入你要修改的联系人姓名: ;cin name;int ret isExist(abs, name);if (ret ! -1){// 姓名string name;cout 请输入姓名: ;cin name;abs-personArray[ret].m_Name name;// 性别int sex;while (true){cout 请输入性别(1、男 or 2、女): ;cin sex;if (sex 1 || sex 2) {abs-personArray[ret].m_Sex sex;break;}cout 输入错误请重新输入 endl;}// 年龄int age;cout 请输入年龄: ;cin age;abs-personArray[ret].m_Age age;// 联系电话string phone;cout 请输入联系电话: ;cin phone;abs-personArray[ret].m_Phone phone;// 家庭地址string address;cout 请输入家庭地址: ;cin address;abs-personArray[ret].m_Addr address;cout 联系人信息修改成功 endl;}else {cout 查无此人 endl;}system(pause);system(cls);
}测试修改联系人功能 在switch case 语句中case 5里添加
case 5: //修改联系人modifyPerson(abs);break;2.8 清空联系人
功能描述清空通讯录中所有信息
清空联系人实现步骤
封装清空联系人函数测试清空联系人
封装清空联系人函数 实现思路 将通讯录所有联系人信息清除掉只要将通讯录记录的联系人数量置为0做逻辑清空即可。
// 6、清空所有联系人
void cleanPerson(Addressbooks* abs)
{char chiose;cout 确认清空通讯录吗(y/n): ;while (true){cin chiose;if (chiose y) {abs-m_Size 0;cout 通讯录已清空 endl;break;}else if (chiose n) {cout 已取消清空 endl;break;}else {cout 输入错误请重新输入 endl;}}system(pause);system(cls);
}测试清空联系人 在switch case 语句中case 6 里添加
case 6: //清空联系人cleanPerson(abs);break;三、完整代码
#includeiostream
#includestring
using namespace std;
#define MAX 1000 // 最大人数// 联系人结构体
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;return;}else {// 姓名string name; cout 请输入姓名: ;cin name;abs-personArray[abs-m_Size].m_Name name;// 性别int sex;while (true){cout 请输入性别(1、男 or 2、女): ;cin sex;if (sex 1 || sex 2) {abs-personArray[abs-m_Size].m_Sex sex;break;}cout 输入错误请重新输入 endl;}// 年龄int age;cout 请输入年龄: ;cin age;abs-personArray[abs-m_Size].m_Age age;// 联系电话string phone;cout 请输入联系电话: ;cin phone;abs-personArray[abs-m_Size].m_Phone phone;// 家庭地址string address;cout 请输入家庭地址: ;cin address;abs-personArray[abs-m_Size].m_Addr address;// 更新通讯录人数abs-m_Size;cout 添加成功 endl;system(pause);system(cls);}
}// 显示所有联系人信息
void showPerson(Addressbooks* abs)
{if (abs-m_Size 0) {cout 当前记录为空 endl;}else{for (int i 0; i abs-m_Size; 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;}}system(pause);system(cls);
}// 判断是否存在查询的人员存在返回在数组中索引位置不存在返回-1
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; // 没找到
}// 3、删除指定联系人信息
void deletePerson(Addressbooks* abs)
{string name;cout 请输入你要删除的联系人: ;cin name;int ret isExist(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;}system(pause);system(cls);
}// 4、查找指定联系人信息
void findPerson(Addressbooks* abs)
{string name;cout 请输入你要查找的联系人姓名: ;cin name;int ret isExist(abs, name);if (ret ! -1) {cout 姓名: abs-personArray[ret].m_Name \t;cout 性别: (abs-personArray[ret].m_Sex 1 ? 男 : 女) \t;cout 年龄: abs-personArray[ret].m_Age \t;cout 联系电话: abs-personArray[ret].m_Phone \t;cout 家庭地址: abs-personArray[ret].m_Addr endl;}else {cout 查无此人 endl;}system(pause);system(cls);
}// 5、修改指定联系人信息
void modifyPerson(Addressbooks* abs)
{string name;cout 请输入你要修改的联系人姓名: ;cin name;int ret isExist(abs, name);if (ret ! -1){// 姓名string name;cout 请输入姓名: ;cin name;abs-personArray[ret].m_Name name;// 性别int sex;while (true){cout 请输入性别(1、男 or 2、女): ;cin sex;if (sex 1 || sex 2) {abs-personArray[ret].m_Sex sex;break;}cout 输入错误请重新输入 endl;}// 年龄int age;cout 请输入年龄: ;cin age;abs-personArray[ret].m_Age age;// 联系电话string phone;cout 请输入联系电话: ;cin phone;abs-personArray[ret].m_Phone phone;// 家庭地址string address;cout 请输入家庭地址: ;cin address;abs-personArray[ret].m_Addr address;cout 联系人信息修改成功 endl;}else {cout 查无此人 endl;}system(pause);system(cls);
}// 6、清空所有联系人
void cleanPerson(Addressbooks* abs)
{char chiose;cout 确认清空通讯录吗(y/n): ;while (true){cin chiose;if (chiose y) {abs-m_Size 0;cout 通讯录已清空 endl;break;}else if (chiose n) {cout 已取消清空 endl;break;}else {cout 输入错误请重新输入 endl;}}system(pause);system(cls);
}// 菜单函数
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;cout 请选择: ;
}int main()
{// 创建通讯录Addressbooks abs;//初始化通讯录中人数abs.m_Size 0;while (true){showMenu(); // 调用菜单函数int select 0; // 用户选择变量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;case 0: // 0、退出通讯录cout 欢迎下次使用 endl;system(pause);return 0;break;default:break;}}system(pause);return 0;
}至此通讯录管理系统完成