一、系统需求:
- 添加联系人:向通讯录中添加新人,信息包括(姓名,性别,年龄,联系电话,家庭住址)
- 显示联系人:显示通讯录中所有联系人信息
- 删除联系人:按照姓名进行删除指定联系人
- 查找联系人:按照姓名查看指定联系人信息
- 修改联系人:按照姓名重新修改指定联系人
- 清空联系人:情况通讯录中所有信息
- 退出通讯录:退出当前使用的通讯录
这里只展示最简单基础功能的判断,为方便阅读代码,将代码分块展示;若有其他需求,大家可自行添加。
二、C++代码:
#include <iostream>
#include <string>
using namespace std;
//---------------------------------↑预处理↑-------↓常量声明↓-----------------------------------------------------------------------
//statement 1: menu characters;
#define HD "*****************************"
#define MID "*****"
//statement 2: struct Person's information
#define MAX 1000 //最大人数
//---------------------------------↑常量声明↑-------↓函数原型↓---------------------------------------------------------------------
void menu(void); //display menu
void addperson(void); //add information of new person
void show_person(void); //displaying each people's information
void del_person(void); //delete information
void _find_person(void); //find person
void change(void); //change information
void clear(void); //clear information
//---------------------------------↑函数原型↑-------↓结构声明↓---------------------------------------------------------------------
//1.人员信息
struct Person
{
string name;
int sex ; //1-男 2-女
int age ;
string tele;
string address;
int station; //排位
};
//2.通讯簿
struct AddressBook
{
Person person[MAX];
int num ;
};
struct AddressBook Book;
//---------------------------------↑函数原型↑-------↓main框架↓--------------------------------------------------------------------
int main()
{
Book.num = 0;
int selection = 9 ;
while (selection != 0)
{
menu();
cin >> selection;
switch (selection)
{
case 0:break; //退出程序
case 1:
addperson(); //添加联系人
break;
case 2:
show_person(); //显示联系人
break;
case 3:
del_person(); //删除联系人
break;
case 4:
_find_person(); //查找联系人
break;
case 5:
change(); //修改联系人信息
break;
case 6:
clear(); //清空联系人
break;
default:
break;
}
}
return 0;
}
//---------------------------------↑main框架↑-------↓函数接口↓--------------------------------------------------------------------
void menu(void) {
cout << HD << endl;
cout << MID << "\t1、添加联系人\t" << MID << endl;
cout << MID << "\t2、显示联系人\t" << MID << endl;
cout << MID << "\t3、删除联系人\t" << MID << endl;
cout << MID << "\t4、查找联系人\t" << MID << endl;
cout << MID << "\t5、修改联系人\t" << MID << endl;
cout << MID << "\t6、清空联系人\t" << MID << endl;
cout << MID << "\t0、退出软件\t" << MID << endl;
}
void addperson(void) {
int judgement = 0;
int num = Book.num;
cout << "请输入待添加联系人的姓名:"<<endl;
cin >> Book.person[num].name;
cout << "请输入待添加联系人的性别:(1-男 2-女)"<<endl;
cin >> Book.person[num].sex;
cout << "请输入待添加联系人的年龄:"<<endl;
cin >> Book.person[num].age;
cout << "请输入待添加联系人的手机号:"<<endl;
cin >> Book.person[num].tele;
cout << "请输入待添加联系人的住址:"<<endl;
cin >> Book.person[num].address;
if (Book.person[num].age != 0)
judgement = 1;
Book.num++;
Book.person[num].station = num+1;
if (judgement == 0)
cout << "联系人输入失败,请检查程序!"<<endl;
else cout<<"联系人添加成功!\n请继续进行操作..."<<endl;
}
void show_person(void) {
int num = Book.num;
string judge;
if (num ==0) {
cout << "没有记录,请继续操作。\n";
}
else {
cout << HD << HD << endl;
for (int i = 0; i < num; i++)
{
if (Book.person[i].sex == 1)
{
judge = "男";
}
else judge = "女";
cout << "#"<<Book.person[i].station<<": " <<Book.person[i].name << " , " << Book.person[i].age << " years old , "
<< judge << " , telephone :" << Book.person[i].tele
<< " , Address: " << Book.person[i].address << endl;
}
cout << HD << HD << endl;
cout << "请继续进行操作..." << endl;
}
}
void del_person(void) {
cout << "请输入要删除联系人的姓名:"<<endl;
char* name = (char*)malloc(sizeof(char*));
cin >> name;
int num = Book.num;
int tmp_num = -1; //要删除联系人的索引号
char * person_name;
//strcpy(nam,name.c_str());
//查找联系人索引号
for (int i = 0; i < num; i++) {
person_name =(char*)malloc(sizeof(Book.person[i].name)+1);
strcpy(person_name, Book.person[i].name.c_str());
if (strcmp(name,person_name)==0) {
tmp_num = Book.person[i].station-1;
free(person_name);
//更新数据
if (tmp_num != -1) {
for (int j = tmp_num; j < num; j++)
{
Book.person[j] = Book.person[j + 1];
Book.person[j].station = j;
}
Book.num--;
}
cout << "删除成功,输入2进行查验。\n";
break;
}
if ((strcmp(name, person_name) != 0) && i == (num - 1))
{
cout << "查无此人." << endl;
}
free(person_name);
}
free(name);
}
void _find_person(void) {
cout << "输入要查找的人的姓名:\n";
char* name = (char*)malloc(sizeof (char*));
cin >> name;
int num = Book.num;
char* tmp_name= (char*)malloc(sizeof(char*));
string judge;
for (int i = 0; i < num; i++)
{
strcpy(tmp_name,Book.person[i].name.c_str());
if (strcmp(name,tmp_name) ==0)
{
if (Book.person[i].sex == 1)
{
judge = "男";
}
else judge = "女";
cout << "Nunber: " << Book.person[i].station << endl << "Name: " << Book.person[i].name << endl << "Sex: " << judge << endl << "Age: " << Book.person[i].age
<< endl << "Phone Number: " << Book.person[i].tele << endl << "Address: " << Book.person[i].address << endl;
break;
}else if ((strcmp(name, tmp_name) != 0) && i == (num - 1))
cout << "查无此人." << endl;
}
free(name);
free(tmp_name);
}
void change(void) {
cout << "请输入要修改信息的联系人姓名:\n";
char* name = (char*)malloc(sizeof(char*));
cin >> name;
int num = Book.num;
char* tmp_name = (char*)malloc(sizeof(char*));
for (int i = 0; i < num; i++)
{
strcpy(tmp_name, Book.person[i].name.c_str());
if (strcmp(name,tmp_name)==0)
{
cout << "已查找到信息,请按提示修改:\n";
cout << "请修改姓名,若不改动则输入原名称:\n";
cin >> Book.person[i].name;
cout << "请修改年龄,若不改动则输入原年龄:\n";
cin >> Book.person[i].age;
cout << "请修改性别,若不改动则输入1-男 2-女:\n";
cin >> Book.person[i].sex;
cout << "请修改手机号,若不改动则输入原手机号:\n";
cin >> Book.person[i].tele;
cout << "请修改住址,若不改动则输入原住址:\n";
cin >> Book.person[i].address;
cout << "修改成功!\n";
break;
}
else if ((strcmp(name, tmp_name) != 0) && i == (num - 1))
cout << "查无此人." << endl;
}
free(name);
free(tmp_name);
}
void clear(void) {
cout << "清空数据后将丢失所有数据,请再次确认!"
<< endl << "1-确认 0-取消" << endl;
int judgement = 0;
cin >> judgement;
if (judgement == 1) {
Book.num = 0;
cout << "数据已清空!";
}
else cout << "取消数据清空。\n";
}
三、最终结果: