代码如下
#include<iostream>
using namespace std;
#define LEN_DATA 20
struct personInfo
{
char name[LEN_DATA];
char number[LEN_DATA];
//personInfo()
//{
// memset(name, 0, LEN_DATA);
// memset(number, 0, LEN_DATA);
//}
};
struct Node
{
personInfo info;
Node* next = NULL;
};
static Node* allLinker = NULL;
void showLinker()
{
if(allLinker)
{
Node* node = allLinker;
while(node)
{
cout << node->info.name << ": " << node->info.number << endl;
node = node->next;
}
}
else{
cout << " 没有联系人 " << endl;
}
}
void addLinker()
{
Node* node = new Node;
memset(node, 0, sizeof(Node));
char name[LEN_DATA];
char number[LEN_DATA];
cout << "请输入联系人姓名:";
cin >> name;
cout << "\n请输入联系人电话:";
cin >> number;
memcpy(node->info.name,name,LEN_DATA);
memcpy(node->info.number,number,LEN_DATA);
if (allLinker)
{
Node* temp = allLinker;
while (temp->next)
{
temp = temp->next;
}
//temp->next = new Node();
temp->next = node;
}
else {
allLinker = node;
}
}
void deleteLinkerByName()
{
char name[LEN_DATA];
cout << "请输入您要删除联系人的姓名:";
cin >> name;
cout << endl;
if (allLinker){
if(strcmp(allLinker->info.name,name) == 0)
{
allLinker = allLinker->next;
}
else {
Node* temp = allLinker;
bool isHave = false;
while (temp->next)
{
if (0 == strcmp(temp->next->info.name, name))
{
temp->next = temp->next->next;
isHave = true;
break;
}
temp = temp->next;
}
if (!isHave)
{
cout << "没有姓名为" << name << "的联系人" << endl;
}
}
}
}
void deleteLinkerBynumber()
{
char number[LEN_DATA];
cout << "请输入您要删除联系人的电话号码:";
cin >> number;
cout << endl;
if (allLinker) {
if (strcmp(allLinker->info.number, number) == 0)
{
allLinker = allLinker->next;
}
else {
Node* temp = allLinker;
bool isHave = false;
while (temp->next)
{
if (0 == strcmp(temp->next->info.number, number))
{
temp->next = temp->next->next;
isHave = true;
break;
}
temp = temp->next;
}
if (!isHave)
{
cout << "没有电话为" << number << "的联系人" << endl;
}
}
}
else
{
cout << "没有联系人" << endl;
}
}
void removeAllLinker()
{
allLinker = NULL;
}
void showMenu()
{
while (true) {
cout << "******这是一个通讯录******" << endl;
cout << "*****1.查看所有联系人*****" << endl;
cout << "*******2.添加联系人*******" << endl;
cout << "***3.根据名字删除联系人***" << endl;
cout << "***4.根据电话删除联系人***" << endl;
cout << "*****5.删除所有联系人*****" << endl;
cout << "********6.退出程序********" << endl;
int input;
cin >> input;
if (input == 6)
{
break;
}
switch (input)
{
case 1:
showLinker();
break;
case 2:
addLinker();
break;
case 3:
deleteLinkerByName();
break;
case 4:
deleteLinkerBynumber();
break;
case 5:
removeAllLinker();
break;
default:
cout << "\n请输入您需要的功能" << endl;
}
}
}
int main(int agrc,char* arg[])
{
showMenu();
system("pause");
return 0;
}