9.1 系统要求
9.2 创建项目
vs正常操作, 不多说。
9.3 菜单功能
//显示菜单界面
void showMenu()
{
cout << "*****************************" << endl;
cout << "*****\t1、添加联系人\t*****" << endl;
cout << "*****\t2、显示联系人\t*****" << endl;
cout << "*****\t3、删除联系人\t*****" << endl;
cout << "*****\t4、查找联系人\t*****" << endl;
cout << "*****\t5、修改联系人\t*****" << endl;
cout << "*****\t6、清空联系人\t*****" << endl;
cout << "*****\t0、退出通讯录\t*****" << endl;
cout << "*****************************" << endl;
}
9.4 退出功能
防止用户误输入, 这里使用字符串格式的选择变量。
while(1)
{
showMenu(); //菜单显示
cout << "请输入您的指令" << endl;
string select = " ";
cin >> select;
if (select[1] != 0) //如果第二个字符不是结束符0/NULL,说明输入格式不正确,说明字符数量大于1
{
cout << "请不要胡来,just按照提示输入:" << endl;
continue;
}
switch(select[0])
{
case('1'):break; // 1、添加联系人
case('2'):break; // 2、显示联系人
case('3'):break; // 3、删除联系人
case('4'):break; // 4、查找联系人
case('5'):break; // 5、修改联系人
case('6'):break; // 6、清空联系人
case('0'): // 0、退出通讯录
{
system("pause");
return 0;
}
default:
{
cout << "请不要胡来,just按照提示输入:" << endl;
}
}
system("pause"); //请按任意键继续
system("cls");//system("cls"); 清空界面用的
}
9.5 添加联系人
struct Person //联系人
{
string m_Name;
string m_Sex;
int m_Age;
string m_Phone;
string m_Addr;
};
struct Addressbooks //通讯录
{
//通讯录中保存的联系人数组
struct Person personArray[MAX];
//通讯录中保存的
int m_Size;
};
void _1addPerson(Addressbooks* abs)
{
//判断通讯录是否满了
if (abs->m_Size == MAX)
{
cout << "通讯录已满, 无法添加" << endl;
return;
}
else
{
//添加联系人
cout << "请输入姓名: " << endl;
cin >> (abs->personArray[abs->m_Size].m_Name);
cout << "请输入性别(男|女): " << endl;
string sex = " ";
while (1)
{
cin >> sex;
if (sex == "男")
{
abs->personArray[abs->m_Size].m_Sex = "男";
break;
}
else if (sex == "女")
{
abs->personArray[abs->m_Size].m_Sex = "女";
break;
}
else
{
cout << "请正确输入,只有男和女两种选择,谢谢合作" << endl;
continue;
}
}
//之后不再做判断了
cout << "请输入年龄: " << endl;
int age = 0;
cin >> age;
abs->personArray[abs->m_Size].m_Age = age;
cout << "请输入电话: " << endl;
string phone = " ";
cin >> phone;
abs->personArray[abs->m_Size].m_Phone = phone;
cout << "请输入家庭住址" << endl;
cin>>(abs->personArray[abs->m_Size].m_Addr);
(abs->m_Size)++;
cout << "恭喜您添加成功,现在您的通讯录有: " <<abs->m_Size<<" 位联系人" << endl;
}
9.6 显示联系人
void _2showPerson(Addressbooks* abs)
{
//判断通讯录中人数是否位0
if (abs->m_Size == 0)
{
cout << "当前通讯录为空" << endl;
}
else
{
for (int i = 0; i < abs->m_Size; i++)
{
cout << "姓名: " << abs->personArray[i].m_Name << "\t";
cout << "性别: " << abs->personArray[i].m_Sex << "\t";
cout << "年龄: " << abs->personArray[i].m_Age << "\t";
cout << "电话: " << abs->personArray[i].m_Phone << "\t";
cout << "住址: " << abs->personArray[i].m_Addr << endl;
}
}
}
9.7 删除联系人
void _3deletePerson(Addressbooks* abs)
{
string Person;
cout << "请输入的要删除的联系人姓名: " << endl;
cin >> Person;
int Flag = 0;
for (int i = 0; i < abs->m_Size; i++)
{
if (Person == abs->personArray[i].m_Name)
{
Flag = 1;
if (abs->m_Size == 1) {}
else if (i == (abs->m_Size - 1)) {}
else
{
for (int j = i; j < abs->m_Size-1; j++ )
{
abs->personArray[j] = abs->personArray[j + 1];
break;
}
}
abs->m_Size--;
cout << "恭喜您删除成功, 现在通讯录有 " << abs->m_Size << " 位联系人" << endl;
break;
}
}
if (Flag == 0)
{
cout << "查无此人" << endl;
}
}
9.8 查找联系人
void _4findPerson(Addressbooks* abs)
{
string Person;
cout << "请输入的要查找的联系人姓名: " << endl;
cin >> Person;
int Flag = 0;
for (int i = 0; i < abs->m_Size; i++)
{
if (Person == abs->personArray[i].m_Name)
{
Flag = 1;
cout << "姓名: " << abs->personArray[i].m_Name << "\t";
cout << "性别: " << abs->personArray[i].m_Sex << "\t";
cout << "年龄: " << abs->personArray[i].m_Age << "\t";
cout << "电话: " << abs->personArray[i].m_Phone << "\t";
cout << "住址: " << abs->personArray[i].m_Addr << endl;
break;
}
}
if (Flag == 0)
{
cout << "查无此人" << endl;
}
}
9.9 修改联系人
void _5modifyPerson(Addressbooks* abs)
{
cout << "请输入的要修改的联系人姓名: " << endl;
string Person;
cin >> Person;
int Flag = 0;
for (int i = 0; i < abs->m_Size; i++)
{
if (Person == abs->personArray[i].m_Name)
{
Flag = 1;
cout << "请你现在修改您需要修改的信息,对于不需要修改的信息,输入0跳过\n" << endl;
string name;
string sex;
int age=0;
string phone;
string addr;
cout << "请输入您要修改的姓名,如果不需要修改,请输入0跳过" << endl;
cin >> name;
if (name[0] == 0) {}
else
{
abs->personArray[i].m_Name = name;
}
cout << "请输入您要修改的性别(男|女),如果不需要修改,请输入0跳过" << endl;
cin >> sex;
if (sex[0] == 0) {}
else
{
abs->personArray[i].m_Sex = sex;
}
cout << "请输入您要修改的年龄,如果不需要修改,请输入0跳过" << endl;
cin >> age;
if (age == 0) {}
else
{
abs->personArray[i].m_Age = age;
}
cout << "请输入您要修改的电话,如果不需要修改,请输入0跳过" << endl;
cin >> phone;
if (phone[0] == 0) {}
else
{
abs->personArray[i].m_Phone = phone;
}
cout << "请输入您要修改的住址,如果不需要修改,请直接按下回车键" << endl;
cin >> addr;
if (addr[0] == 0) {}
else
{
abs->personArray[i].m_Addr = addr;
}
cout << "恭喜您修改完成" << endl;
}
}
if (Flag == 0)
{
cout << "查无此人" << endl;
}
}
9.10 清空联系人
int temp;
cout << "通讯录已有 "<<abs.m_Size<< " 位联系人。\n请问您真的要清空吗,如果要继续,请输入1,并按下回车键,否则将不会执行清空操作。" << endl;
cin >> temp;
if (temp == 1)
{
abs.m_Size = 0;
cout << "通讯录已清空 " << endl;
}
else { }
break;
}
最终代码
因为我在这里使用了分文件调用函数的方法, 所以一共有三个文件.
- 头文件-----function.h
#include<iostream>
using namespace std;
#include<string>
#define MAX 1000
struct Person //联系人
{
string m_Name;
string m_Sex;
int m_Age;
string m_Phone;
string m_Addr;
};
struct Addressbooks //通讯录
{
//通讯录中保存的联系人数组
struct Person personArray[MAX];
//通讯录中保存的
int m_Size;
};
void showMenu();
void _1addPerson(Addressbooks* abs);
void _2showPerson(Addressbooks* abs);
void _3deletePerson(Addressbooks* abs);
void _4findPerson(Addressbooks* abs);
void _5modifyPerson(Addressbooks* abs);
- 源文件-----函数.cpp
#include"function.h"
void showMenu()//显示菜单界面
{
cout << "*****************************" << endl;
cout << "*****\t1、添加联系人\t*****" << endl;
cout << "*****\t2、显示联系人\t*****" << endl;
cout << "*****\t3、删除联系人\t*****" << endl;
cout << "*****\t4、查找联系人\t*****" << endl;
cout << "*****\t5、修改联系人\t*****" << endl;
cout << "*****\t6、清空联系人\t*****" << endl;
cout << "*****\t0、退出通讯录\t*****" << endl;
cout << "*****************************" << endl;
}
void _1addPerson(Addressbooks* abs) //添加联系人
{
//判断通讯录是否满了
if (abs->m_Size == MAX)
{
cout << "通讯录已满, 无法添加" << endl;
return;
}
else
{
//添加联系人
cout << "请输入姓名: " << endl;
cin >> (abs->personArray[abs->m_Size].m_Name);
cout << "请输入性别(男|女): " << endl;
string sex = " ";
while (1)
{
cin >> sex;
if (sex == "男")
{
abs->personArray[abs->m_Size].m_Sex = "男";
break;
}
else if (sex == "女")
{
abs->personArray[abs->m_Size].m_Sex = "女";
break;
}
else
{
cout << "请正确输入,只有男和女两种选择,谢谢合作" << endl;
continue;
}
}
//之后不再做判断了
cout << "请输入年龄: " << endl;
int age = 0;
cin >> age;
abs->personArray[abs->m_Size].m_Age = age;
cout << "请输入电话: " << endl;
string phone = " ";
cin >> phone;
abs->personArray[abs->m_Size].m_Phone = phone;
cout << "请输入家庭住址" << endl;
cin >> (abs->personArray[abs->m_Size].m_Addr);
(abs->m_Size)++;
cout << "恭喜您添加成功,现在您的通讯录有: " << abs->m_Size << " 位联系人" << endl;
}
}
void _2showPerson(Addressbooks* abs)
{
//判断通讯录中人数是否位0
if (abs->m_Size == 0)
{
cout << "当前通讯录为空" << endl;
}
else
{
for (int i = 0; i < abs->m_Size; i++)
{
cout << "姓名: " << abs->personArray[i].m_Name << "\t";
cout << "性别: " << abs->personArray[i].m_Sex << "\t";
cout << "年龄: " << abs->personArray[i].m_Age << "\t";
cout << "电话: " << abs->personArray[i].m_Phone << "\t";
cout << "住址: " << abs->personArray[i].m_Addr << endl;
}
}
}
void _3deletePerson(Addressbooks* abs)
{
string Person;
cout << "请输入的要删除的联系人姓名: " << endl;
cin >> Person;
int Flag = 0;
for (int i = 0; i < abs->m_Size; i++)
{
if (Person == abs->personArray[i].m_Name)
{
Flag = 1;
if (abs->m_Size == 1) {}
else if (i == (abs->m_Size - 1)) {}
else
{
for (int j = i; j < abs->m_Size-1; j++ )
{
abs->personArray[j] = abs->personArray[j + 1];
break;
}
}
abs->m_Size--;
cout << "恭喜您删除成功, 现在通讯录有 " << abs->m_Size << " 位联系人" << endl;
break;
}
}
if (Flag == 0)
{
cout << "查无此人" << endl;
}
}
void _4findPerson(Addressbooks* abs)
{
cout << "请输入的要查找的联系人姓名: " << endl;
string Person;
cin >> Person;
int Flag = 0;
for (int i = 0; i < abs->m_Size; i++)
{
if (Person == abs->personArray[i].m_Name)
{
Flag = 1;
cout << "姓名: " << abs->personArray[i].m_Name << "\t";
cout << "性别: " << abs->personArray[i].m_Sex << "\t";
cout << "年龄: " << abs->personArray[i].m_Age << "\t";
cout << "电话: " << abs->personArray[i].m_Phone << "\t";
cout << "住址: " << abs->personArray[i].m_Addr << endl;
break;
}
}
if (Flag == 0)
{
cout << "查无此人" << endl;
}
}
void _5modifyPerson(Addressbooks* abs)
{
cout << "请输入的要修改的联系人姓名: " << endl;
string Person;
cin >> Person;
int Flag = 0;
for (int i = 0; i < abs->m_Size; i++)
{
if (Person == abs->personArray[i].m_Name)
{
Flag = 1;
cout << "请你现在修改您需要修改的信息,对于不需要修改的信息,输入0跳过\n" << endl;
string name;
string sex;
int age=0;
string phone;
string addr;
cout << "请输入您要修改的姓名,如果不需要修改,请输入0跳过" << endl;
cin >> name;
if (name[0] == 0) {}
else
{
abs->personArray[i].m_Name = name;
}
cout << "请输入您要修改的性别(男|女),如果不需要修改,请输入0跳过" << endl;
cin >> sex;
if (sex[0] == 0) {}
else
{
abs->personArray[i].m_Sex = sex;
}
cout << "请输入您要修改的年龄,如果不需要修改,请输入0跳过" << endl;
cin >> age;
if (age == 0) {}
else
{
abs->personArray[i].m_Age = age;
}
cout << "请输入您要修改的电话,如果不需要修改,请输入0跳过" << endl;
cin >> phone;
if (phone[0] == 0) {}
else
{
abs->personArray[i].m_Phone = phone;
}
cout << "请输入您要修改的住址,如果不需要修改,请直接按下回车键" << endl;
cin >> addr;
if (addr[0] == 0) {}
else
{
abs->personArray[i].m_Addr = addr;
}
cout << "恭喜您修改完成" << endl;
}
}
if (Flag == 0)
{
cout << "查无此人" << endl;
}
}
- 源文件----项目管理系统.cpp
#include"function.h"
int main()
{
//创建通讯录结构体变量
Addressbooks abs;
//初始化通讯录中当前人员个数
abs.m_Size = 0;
while(1)
{
showMenu(); //菜单显示
cout << "请输入您的指令" << endl;
string select = " ";
cin >> select;
if (select[1] != 0) //如果第二个字符不是结束符0/NULL,说明输入格式不正确
{
cout << "请不要胡来,just按照提示输入:" << endl;
}
else
{
switch(select[0])
{
case('1'): // 1、添加联系人
{
_1addPerson(&abs);
break;
}
case('2'): // 2、显示联系人
{
_2showPerson(&abs);
break;
}
case('3'): // 3、删除联系人
{
_3deletePerson(&abs);
break;
}
case('4'): // 4、查找联系人
{
_4findPerson(&abs);
break;
}
case('5'): // 5、修改联系人
{
_5modifyPerson(&abs);
break;
}
case('6'): // 6、清空联系人
{
int temp;
cout << "通讯录已有 "<<abs.m_Size<< " 位联系人。\n请问您真的要清空吗,如果要继续,请输入1,并按下回车键,否则将不会执行清空操作。" << endl;
cin >> temp;
if (temp == 1)
{
abs.m_Size = 0;
cout << "通讯录已清空 " << endl;
}
else { }
break;
}
case('0'): // 0、退出通讯录
{
return 0;
}
default:
{
cout << "请不要胡来,just按照提示输入:" << endl;
}
}
}
system("pause"); //请按任意键继续
system("cls");//system("cls"); 清空界面用的
}
system("pause");
return 0;
}