1.系统要求
通讯录是一个可以记录亲人、好友信息的工具
这次练习利用C++来实现一个通讯录管理系统
系统中需要实现的主要功能如下:
1.添加联系人:向通讯录中添加新人,信息包括(姓名,性别,年龄,联系电话,家庭住址)最多记录1000人
2.显示联系人:显示通讯录中所有联系人信息
3.删除联系人:按照姓名进行删除指定联系人
4.查找联系人:按照姓名查看指定联系人信息
5.修改联系人:按照姓名重新修改指定联系人
6.清空联系人:清空通讯录中所有联系人信息
7.退出通讯录:退出当前使用的通讯录
实例:
#include <iostream>
#include <string>
using namespace std;
//定义联系人结构体
struct contactPerson {
string name;
string sex;
int age = 0;
string phone;
string address;
};
//定义给联系人添加信息的函数
void writeIn(struct contactPerson cArray[],int times) {
//给用户提示要存入的联系人信息
cout << "请输入联系人的姓名 性别 年龄 电话 家庭地址" << endl;
cin >> cArray[times].name >> cArray[times].sex >> cArray[times].age
>>cArray[times].phone >> cArray[times].address;
}
//定义一个打印联系人的函数
void printN(struct contactPerson cArray[],int times) {
for (int i = 0; i < times; i++) {
cout<< cArray[i].name<<" " << cArray[i].sex << " " << cArray[i].age << " "
<< cArray[i].phone << " " << cArray[i].address<<endl;
}
}
//定义一个删除联系人的函数
void Delete(struct contactPerson cArray[], int times) {
cout << "请输入删除联系人的姓名" << endl;
string name1;
cin >> name1;
for (int i = 0; i < times; i++) {
while (cArray[i].name == name1)
{
for (; i < times; i++) {
cArray[i].name = cArray[i + 1].name;
cArray[i].sex = cArray[i + 1].sex;
cArray[i].age = cArray[i + 1].age;
cArray[i].phone = cArray[i + 1].phone;
cArray[i].address = cArray[i + 1].address;
}
break;
}
}
}
//定义查找函数
void lookUp(struct contactPerson cArray[], int times) {
cout << "请输入联系人的姓名" << endl;
string name1;
cin >> name1;
for (int i = 0; i < times; i++) {
while (cArray[i].name == name1)
{
cout<< cArray[i].name << " " << cArray[i].sex << " " << cArray[i].age << " "
<< cArray[i].phone << " " << cArray[i].address<<endl;
break;
}
}
}
//定义修改函数
void modifies(struct contactPerson cArray[], int times) {
cout << "请输入要修改的联系人姓名" << endl;
string name1;
cin >> name1;
for (int i = 0; i < times; i++) {
while (cArray[i].name == name1)
{
cout << "请重新输入联系人信息" << endl;
cin >> cArray[i].name >> cArray[i].sex >> cArray[i].age
>> cArray[i].phone >> cArray[i].address;
break;
}
}
}
//定义清空函数
void empty(struct contactPerson cArray[], int times) {
for (int i = times; i > 0; i--) {
cArray[i - 1].name = cArray[i].name;
cArray[i - 1].sex = cArray[i].sex;
cArray[i - 1].age = cArray[i].age;
cArray[i - 1].phone = cArray[i].phone;
cArray[i - 1].address = cArray[i].address;
}
}
int main() {
/*1.添加联系人:向通讯录中添加新人,信息包括(姓名,性别,年龄,联系电话,家庭住址)最多记录1000人
2.显示联系人:显示通讯录中所有联系人信息
3.删除联系人:按照姓名进行删除指定联系人
4.查找联系人:按照姓名查看指定联系人信息
5.修改联系人:按照姓名重新修改指定联系人
6.清空联系人:清空通讯录中所有联系人信息
7.退出通讯录:退出当前使用的通讯录*/
//制作界面
cout << "-------------------------------" << endl;
cout << " 1.添加联系人" << endl;
cout << " 2.显示联系人" << endl;
cout << " 3.删除联系人" << endl;
cout << " 4.查找联系人" << endl;
cout << " 5.修改联系人" << endl;
cout << " 6.清空联系人" << endl;
cout << " 7.退出通讯录" << endl;
cout << "-------------------------------" << endl;
//给用户操作提示
cout << " 请输入操作序号" << endl;
//定义一个数组来存储结构体
struct contactPerson cArray[1000];
//定义一个times来记录添加的联系人的序号
int times = 0;
for (; 1;) {
//定义一个变量来记录用户的操作
int num = 0;
cin >> num;
//判断用户的操作
switch (num) {
case 1:
//调用输入练习人信息的函数
writeIn(cArray, times);
times++;
break;
case 2:
//调用打印函数
printN(cArray, times);
break;
case 3:
//调用删除函数
Delete(cArray, times);
times--;
break;
case 4:
//调用查找函数
lookUp(cArray, times);
break;
case 5:
//调用修改函数
modifies(cArray, times);
break;
case 6:
//调用清空函数
empty(cArray, times);
times = 0;
break;
default:
break;
}
if (num == 7)
break;
}
system("pause");
return 0;
}
运行结果:
反思:
1.在输出和判断时对数组的遍历次数出现错误,一定要注意for循环中i的范围
2.在存储电话号码时刚开始用了int问题,导致数值过大造成越界,一定要注意数据类型所存储的数据范围