通讯录是我们记录好友、亲人、朋友的重要的一个信息管理工具。本项目是基于C语言和C++语言混合编程来设计一个通讯录管理系统。该系统的主要功能如下几个要点所示:
1、添加联系人:可以向通讯录中添加新人信息包括:姓名、性别、年龄、联系电话、家庭住址。添加的人数记录最多为1000人。
2、显示联系人:显示通讯录中所有的联系人信息。
3、查找联系人:按照姓名进行删除指定的联系人信息。
4、修改联系人:按照姓名进行查看指定的联系人信息。
5、删除联系人:按照姓名进行重新修改指定的联系人信息。
6、清空联系人:清空通讯录中所有的联系人信息。
7、退出通讯录:退出当前使用的通讯录管理系统。
打开VS2019,选择语言为C++,所属平台为Windows,项目类型为控制台项目,并选择空项目,如下图所示
然后输入项目的名称和选择项目的路径如下图所示
创建好项目后,向项目中添加头文件和源文件如下所示
然后编写相关的代码如下
Main.h头文件代码
#ifndef MAIN_H
#define MAIN_H
#include
#include
using namespace std;
#endif
Main.cpp源文件代码
#include "Main.h"
int main()
{
system("color 3E");
system("pause");
return 0;
}
AddressBook.h头文件代码
#ifndef ADDRESSBOOK_H
#define ADDRESSBOOK_H
#endif
AddressBook.cpp源文件代码
#include "AddressBook.h"
现在项目就创建好了。
在Main.h头文件中声明一个void addressBookMenu();函数,用于通讯录菜单功能的显示,然后再Main.cpp源文件中定义这个函数的功能,如下所示
// 通讯录系统的功能菜单
void addressBookMenu()
{
cout << "欢迎来到通讯录管理系统" << endl;
cout << "1 添加联系人" << endl;
cout << "2 显示联系人" << endl;
cout << "3 查找联系人" << endl;
cout << "4 修改联系人" << endl;
cout << "5 删除联系人" << endl;
cout << "6 清空联系人" << endl;
cout << "0 退出系统" << endl;
cout << "请输入相关的数字,进行功能的选择:";
}
然后再主函数中调用addressBookMenu()函数,调试结果如下
到这里通讯录菜单功能实现了。
在AddressBook.h头文件中声明void quitSystem();函数,然后再AddressBook.cpp中定义函数的功能,其代码如下
// 退出通讯录管理系统
void quitSystem()
{
cout << "欢迎使用通讯录管理系统!!" << endl;
cout << "欢迎在一次使用!!!" << endl;
}
然后在main函数中添加如下的代码
// 开辟内存
pAddressBooks addrBook = new addressBooks;
addrBook->size = 0;
int select = 0;
while (1)
{
addressBookMenu(); // 调用显示菜单
cin >> select;
switch (select) // 功能选择
{
case 1:
// 添加联系人
break;
case 2:
// 显示联系人
break;
case 3:
// 查找联系人
break;
case 4:
// 修改联系人
break;
case 5:
// 删除联系人
break;
case 6:
// 清空联系人
break;
case 0: // 退出系统
quitSystem();
system("pause");
return 0;
break;
default:
break;
}
}
当用户输入数字0时,就会退出通讯录管理系统,其调试结果如下所示
在AddressBook.h头文件中声明一个添加联系人信息的函数void addPerson(pAddressBooks addrBook);并在AddressBook.cpp源文件中定义相关的功能。其代码如下所示
定义一个Penson类,在Penson中定义联系人相关的成员变量如下所示
// 添加联系人信息
void addPerson(pAddressBooks addrBook)
{
if (addrBook->size == MAX)
{
cout << "通讯录已满!!!" << endl;
return;
}
else
{
string name;
cout << "输入姓名: ";
cin >> name;
addrBook->personArray[addrBook->size].name = name;
string sex;
cout << "输入性别: ";
cin >> sex;
addrBook->personArray[addrBook->size].sex = sex;
int age;
cout << "输入年龄: ";
cin >> age;
addrBook->personArray[addrBook->size].age = age;
string phone;
cout << "输入联系电话: ";
cin >> phone;
addrBook->personArray[addrBook->size].phone = phone;
string address;
cout << "输入地址: ";
cin >> address;
addrBook->personArray[addrBook->size].address = address;
addrBook->size++;
cout << "添加联系人成功!!!" << endl;
system("pause");
system("cls");
}
}
在main函数中,在case 1:语句后面调用添加联系人信息的addPerson函数,如下所示
case 1:
addPerson(addrBook); // 添加联系人
break;
然后调试结果如下所示
如上图的调试结果显示,已经完成了添加联系人功能的设计。
在AddressBook.h头文件中声明一个显示联系人信息的函数void showPerson(pAddressBooks addrBook);并在AddressBook.cpp源文件中定义相关的功能。其代码如下所示
// 显示联系人信息
void showPerson(pAddressBooks addrBook)
{
if (addrBook->size == 0)
{
cout << "当前记录是空!!!" << endl;
}
else
{
for (int i = 0; i < addrBook->size; i++)
{
cout << "姓名: " << addrBook->personArray[i].name << endl;
cout << "性别: " << addrBook->personArray[i].sex << endl;
cout << "年龄: " << addrBook->personArray[i].age << endl;
cout << "电话: " << addrBook->personArray[i].phone << endl;
cout << "住址: " << addrBook->personArray[i].address << endl << endl;
}
}
system("pause");
system("cls");
}
在main函数中,在case 2:语句后面调用显示联系人信息的showPerson函数,如下所示
case 2:
showPerson(addrBook); // 显示联系人
break;
然后调试结果如下所示
1、先添加联系人信息
2、在选择显示联系人信息
如上图,系统可以正确显示我们刚刚输入的联系人信息,已经完成了显示联系人功能的设计
在AddressBook.h头文件中声明一个查找联系人信息是否存在的函数int isExist(pAddressBooks, string);并在AddressBook.cpp源文件中定义相关的功能。其代码如下所示
// 判断联系人是否存在
int isExist(pAddressBooks addrBook, string name)
{
for (int i = 0; i < addrBook->size; i++)
{
if (addrBook->personArray[i].name == name)
return i;
}
return -1;
return 0;
}
在AddressBook.h头文件中声明一个查找联系人信息的函数void findPerson(pAddressBooks); 并在AddressBook.cpp源文件中定义相关的功能。
其查找联系人信息是根据联系人的姓名查找的,先调用isExist函数对联系人信息的是否存在进行判断,如果在通讯录中查找到联系人信息,则显示联系人的相关的信息。
其代码如下所示
// 查找联系人信息
void findPerson(pAddressBooks addrBook)
{
cout << "输入要查找联系人的姓名: ";
string name;
cin >> name;
int judgeNameIndex = isExist(addrBook, name);
if (judgeNameIndex != -1)
{
cout << "通讯录中姓名是 " << name << " 的联系人的信息如下" << endl;
cout << "姓名: " << addrBook->personArray[judgeNameIndex].name << endl;
cout << "性别: " << addrBook->personArray[judgeNameIndex].sex << endl;
cout << "年龄: " << addrBook->personArray[judgeNameIndex].age << endl;
cout << "电话: " << addrBook->personArray[judgeNameIndex].phone << endl;
cout << "住址: " << addrBook->personArray[judgeNameIndex].address << endl << endl;
}
else
cout << "通讯录中不存在姓名是 " << name << " 的联系人!!!" << endl;
system("pause");
system("cls");
}
在main函数中,在case 3:语句后面调用查找联系人信息的findPerson函数,如下所示
case 3:
findPerson(addrBook); // 查找联系人
break;
2、在选择查找联系人信息
当输入姓名在通讯录中不存在时的情况
如上图,系统可以正确查找我们刚刚输入的联系人信息,并且可以正确判断输入的姓名在通讯录中是否存在的功能。已经完成了查找联系人功能的设计
在AddressBook.h头文件中声明一个添加修改联系人信息的函数void modifyPerson(pAddressBooks);并在AddressBook.cpp源文件中定义相关的功能。
其修改联系人信息是根据联系人的姓名查找的,先调用isExist函数对联系人信息的是否存在进行判断,如果在通讯录中查找到联系人信息,则修改联系人的相关的信息。
其代码如下所示
// 修改联系人信息
void modifyPerson(pAddressBooks addrBook)
{
cout << "输入要修改联系人的姓名: ";
string name;
cin >> name;
int judgeNameIndex = isExist(addrBook, name);
if (judgeNameIndex != -1)
{
cout << "输入姓名是 " << name << " 的信息" << endl;
string name;
cout << "输入姓名: ";
cin >> name;
addrBook->personArray[judgeNameIndex].name = name;
string sex;
cout << "输入性别: ";
cin >> sex;
addrBook->personArray[judgeNameIndex].sex = sex;
int age;
cout << "输入年龄: ";
cin >> age;
addrBook->personArray[judgeNameIndex].age = age;
string phone;
cout << "输入联系电话: ";
cin >> phone;
addrBook->personArray[judgeNameIndex].phone = phone;
string address;
cout << "输入地址: ";
cin >> address;
addrBook->personArray[judgeNameIndex].address = address;
cout << "修改联系人信息成功!!!" << endl;
}
else
cout << "通讯录中不存在姓名是 " << name << " 的联系人!!!" << endl;
system("pause");
system("cls");
}
在main函数中,在case 4:语句后面调用显示联系人信息的showPerson函数,如下所示
case 4:
modifyPerson(addrBook); // 修改联系人
break;
2、在选择修改联系人信息
当输入姓名在通讯录中不存在时的情况
当输入姓名在通讯录中存在时的情况
如上图,系统可以正确修改我们刚刚输入的联系人信息,并且可以正确判断输入的姓名在通讯录中是否存在的功能。已经完成了修改联系人功能的设计。
在AddressBook.h头文件中声明一个删除联系人信息的函数void deletePerosn(pAddressBooks);并在AddressBook.cpp源文件中定义相关的功能。
其删除联系人信息是根据联系人的姓名查找的而且是删除一个联系人的信息,先调用isExist函数对联系人信息的是否存在进行判断,如果在通讯录中查找到联系人信息,则删除联系人的相关的信息。
其代码如下所示
// 删除联系人信息
void deletePerosn(pAddressBooks addrBook)
{
cout << "输入要删除联系人的姓名: ";
string name;
cin >> name;
int judgeNameIndex = isExist(addrBook, name);
if (judgeNameIndex != -1)
{
for (int i = judgeNameIndex; i < addrBook->size; i++)
addrBook->personArray[i] = addrBook->personArray[i + 1];
addrBook->size--;
cout << "删除联系人是 " << name << " 成功!!!" << endl;
}
else
cout << "通讯录中不存在姓名是 " << name << " 的联系人!!!" << endl;
system("pause");
system("cls");
}
在main函数中,在case 5:语句后面调用显示联系人信息的showPerson函数,如下所示
case 5:
deletePerosn(addrBook); // 删除联系人
break;
然后调试结果如下所示
1、先添加两个联系人信息,两个人的联系信息如下
2、在选择修改联系人信息
当输入姓名在通讯录中不存在时的情况
当输入姓名在通讯录中存在时的情况
如上图,系统可以正删除改我们刚刚输入的联系人信息,并且可以正确判断输入的姓名在通讯录中是否存在的功能。已经完成了删除联系人功能的设计。
在AddressBook.h头文件中声明一个清空联系人信息的函数void cleanPerson(pAddressBooks);并在AddressBook.cpp源文件中定义相关的功能。
其清空联系人信息是删除通讯录中所有的联系人信息。
其代码如下所示
// 清空联系人信息
void cleanPerson(pAddressBooks addrBook)
{
addrBook->size = 0;
cout << "通讯录的联系人信息已全部清空!!!" << endl;
system("pause");
system("cls");
}
在main函数中,在case 6:语句后面调用显示联系人信息的showPerson函数,如下所示
case 6:
cleanPerson(addrBook); // 清空联系人
break;
然后调试结果如下所示
1、先添加两个联系人信息,两个人的联系信息如下
2、在选择清空联系人信息,其结果如下
如上图,系统可以正清空我们刚刚输入的联系人信息,完成了清空联系人功能的设计。
到这里我们完成了通讯录系统功能的设计。在设计的工程中,我们主要使用了C语言的函数,循环、指针、结构体等知识,并使用了简单的C++语言的输入输出语句。