基于Linux系统,IDE选择vscode,编程语言为C++来实现一个简易的通讯录管理系统。
该系统主要包括六项功能:
1 添加联系人
2 显示联系人
3 删除联系人
4 查找联系人
5 修改联系人
6 清空联系人
在windows系统下,为了程序运行的美观性,往往会用system(“pause”)以及system(“cls”)两条系统指令。后者在Linux下可以使用system(“clear”)来代替。前者在Linux下我没有找到合适的替代指令,因此自己写了一个简单的程序来替代它。程序如下:
void keyControl()
{
int keyNum;
while(1)
{
cout << "请按任意键继续~~~" << endl;
cin >> keyNum;
if(keyNum >=0 && keyNum <<9)
{
break;
}
}
}
通讯录管理系统的全部程序如下:
#include <iostream>
#include <string>
#define MAX 1000
using namespace std;
struct Person
{
string name;
string sex;
int age;
string tele;
string addr;
};
struct Addressbooks
{
struct Person personArray[MAX];
int m_size;
};
void showMenu(); // 显示菜单
void exitSystem(); // 退出系统
void addPerson(Addressbooks *abs); // 1 添加联系人
void showPerson(Addressbooks *abs); // 2 显示联系人
void deletePerson(Addressbooks *abs); // 3 删除联系人
void searchPerson(Addressbooks *abs); // 4 查找联系人
void modifyPerson(Addressbooks *abs); // 5 修改联系人
void clearPerson(Addressbooks *abs); // 6 清空联系人
int ishave(Addressbooks *abs, string name); // 检测联系人是否存在
void keyControl(); // 模拟“按下任意键继续”
int main(int argc, char **argv)
{
int select = 0;
Addressbooks abs;
abs.m_size = 0;
while(true)
{
showMenu();
cout << "通讯录当前人数:" << abs.m_size << endl;
cout << "please input select:";
cin >> select;
switch (select)
{
case 0:
cout << "bye bye ~~" << endl;
exitSystem();
break;
case 1: // 1 添加联系人
addPerson(&abs);
system("clear"); // 清屏
break;
case 2: // 2 显示联系人
showPerson(&abs);
break;
case 3: // 3 删除联系人
deletePerson(&abs);
break;
case 4: // 4 查找联系人
searchPerson(&abs);
break;
case 5: // 5 修改联系人
modifyPerson(&abs);
break;
case 6:
clearPerson(&abs);
break;
default:
cout << "input error!" << endl;
break;
}
}
return 0;
}
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;
}
void exitSystem()
{
exit(0);
}
void addPerson(Addressbooks *abs)
{
if(abs -> m_size < MAX)
{
cout << "name:";
cin >> abs->personArray[abs->m_size].name;
cout << "sex :";
cin >> abs->personArray[abs->m_size].sex;
cout << "age :";
cin >> abs->personArray[abs->m_size].age;
cout << "tele:";
cin >> abs->personArray[abs->m_size].tele;
cout << "addr:";
cin >> abs->personArray[abs->m_size].addr;
abs->m_size ++;
}
if(abs->m_size >= MAX)
{
cout << "addressbook full, add failure!"
<< endl;
}
}
void showPerson(Addressbooks *abs)
{
for(int i=0; i<abs->m_size; i++)
{
cout << "name:" << abs->personArray[i].name << "\t";
cout << "sex :" << abs->personArray[i].sex << "\t";
cout << "age :" << abs->personArray[i].age << "\t";
cout << "tele:" << abs->personArray[i].tele << "\t";
cout << "home:" << abs->personArray[i].addr << endl;
}
keyControl();
system("clear");
}
int ishave(Addressbooks *abs, string name)
{
int flag;
for(int i=0; i<abs->m_size; i++)
{
if(name == abs->personArray[i].name)
{
return i;
}
}
return -1;
}
void deletePerson(Addressbooks *abs)
{
string name;
cout << "输入要删除的联系人:";
cin >> name;
int index = ishave(abs, name);
if(index != -1)
{
for(int i = index; i<abs->m_size; i++)
{
abs->personArray[i] = abs->personArray[i+1];
}
abs->m_size --;
for(int i=0; i<abs->m_size; i++)
{
cout << "name:" << abs->personArray[i].name << "\t";
cout << "sex :" << abs->personArray[i].sex << "\t";
cout << "age :" << abs->personArray[i].age << "\t";
cout << "tele:" << abs->personArray[i].tele << "\t";
cout << "home:" << abs->personArray[i].addr << endl;
}
}
else
{
cout << "要删除的人不存在" << endl;
}
keyControl();
system("clear");
}
void searchPerson(Addressbooks *abs)
{
string name;
cout << "输入要查找的联系人:";
cin >> name;
int index = ishave(abs, name);
if(index != -1)
{
cout << "name:" << abs->personArray[index].name << "\t";
cout << "sex :" << abs->personArray[index].sex << "\t";
cout << "age :" << abs->personArray[index].age << "\t";
cout << "tele:" << abs->personArray[index].tele << "\t";
cout << "home:" << abs->personArray[index].addr << endl;
}
else
{
cout << "要查找的人不存在" << endl;
}
keyControl();
system("clear");
}
void modifyPerson(Addressbooks *abs)
{
string name;
cout << "输入要修改的联系人:";
cin >> name;
int index = ishave(abs, name);
if(index != -1)
{
cout << "修改姓名:"; cin >> abs->personArray[index].name;
cout << "修改性别:"; cin >> abs->personArray[index].sex;
cout << "修改年龄:"; cin >> abs->personArray[index].age;
cout << "修改电话:"; cin >> abs->personArray[index].tele;
cout << "修改住址:"; cin >> abs->personArray[index].addr;
for(int i=0; i<abs->m_size; i++)
{
cout << "name:" << abs->personArray[i].name << "\t";
cout << "sex :" << abs->personArray[i].sex << "\t";
cout << "age :" << abs->personArray[i].age << "\t";
cout << "tele:" << abs->personArray[i].tele << "\t";
cout << "home:" << abs->personArray[i].addr << endl;
}
}
else
{
cout << "要修改的人不存在" << endl;
}
keyControl();
system("clear");
}
void clearPerson(Addressbooks *abs)
{
abs->m_size = 0;
keyControl();
system("clear");
}
void keyControl()
{
int keyNum;
while(1)
{
cout << "请按任意键继续~~~" << endl;
cin >> keyNum;
if(keyNum >=0 && keyNum <<9)
{
break;
}
}
}