这是我学习C++基本知识的第一个任务,完成一个通讯录代码实现,记录自己的一小步
代码如下:
//任务要求:1、添加联系人
// 2、显示联系人
// 3、删除联系人
// 4、查找联系人
// 5、修改联系人
// 6、清空联系人
// 0、退出系统
#include<iostream>
#include<string>
using namespace std;
#define MAX 1000
//11-封装函数显示该界面 如void showMenu()
//11-在main函数中调用封装好的函数
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;
}
//22退出系统功能,用switch,最后面行
//33--添加联系人
//步骤:
//1、设计联系人结构体
//2、设计通讯录结构体
//3、main函数中创建通讯录
//4、封装添加联系人函数
//5、测试添加联系人功能
//(1姓名 2性别 3年龄 4联系电话 5家庭住址)
//33-联系人结构体
struct person {
string personname;//姓名
int psex;//性别
int page;//年龄
string personnumber;//联系电话
string personaddress;//家庭住址
};
//33-通讯录结构体
struct numberbook {
struct person array[MAX];
int booknumbers;
};
void addperson(numberbook * abs) {
if (abs->booknumbers == MAX) {
cout << "通讯录已满,无法添加" << endl;
}
else {
//添加具体联系人
//姓名
string name;
cout << "请输入姓名: " << endl;
cin >> name;
abs->array[abs->booknumbers].personname = name;
//性别
cout << "请输入性别" << endl;
cout << "1 --- 男" << endl;
cout << "2 --- 女" << endl;
int sex=0;
while (true) {
cin >> sex;
if (sex == 1 || sex == 2) {
abs->array[abs->booknumbers].psex = sex;
break;//如果输入的1或2可以退出循环,因为输入的是正确值
}
cout<<"输入有误,请重新输入" << endl;//如果是其他数字请重新输入
}
//年龄
int age=0;
cout << "请输入年龄" << endl;
cin >> age;
abs->array[abs->booknumbers].page = age;
//联系电话
cout<<"请输入联系电话: " << endl;
string phonenumber;
cin >> phonenumber;
abs->array[abs->booknumbers].personnumber = phonenumber;
//家庭住址
string addressment;
cout << "请输入家庭地址: " << endl;
cin >> addressment;
abs->array[abs->booknumbers].personaddress = addressment;
abs->booknumbers++;
cout << "添加成功!" << endl;
}
system("pause");//按任意键退出
system("cls");//清屏
}
//44--2显示联系人
//显示联系人,步骤:
//1、封装显示联系人函数
//2、测试显示联系人功能
//如果当前通讯录人数没有人员,就提示记录为空;人数大于0,显示通讯录信息
void showbookmessage(numberbook*abs) {
if (abs->booknumbers==0) {
cout << "通讯录无人员信息!" << endl;
}
else {
for (int i = 0; i < abs->booknumbers; i++) {
cout << " " << endl;
cout << "第" << i + 1 << "位联系人的信息如下:" << endl;
cout << "姓名:" <<abs->array[i].personname<< endl;
cout << "性别:" <<(abs->array[i].psex == 1 ? "男" : "女") << endl;
cout << "年龄:" <<abs->array[i].page << "岁" << endl;
cout << "联系电话:" <<abs->array[i].personnumber<< endl;
cout << "家庭住址:" <<abs->array[i].personaddress << endl;
cout << "____________________________________________________" << endl;
}
}
system("pause");
system("cls");
}
//55--3删除联系人
// 步骤:
//1、封装检测联系人是否存在---如果存在返回联系人在通讯录的位置,不存在返回-1
//2、封装删除联系人函数
int EXIST(numberbook*abs,string name) {
for (int i = 0; i <= abs->booknumbers; i++) {
//找到用户名字
if (abs->array[i].personname == name) {
return i;
}
}
return -1;//没有找到,返回-1
}
/// <summary>
/// //
/// </summary>
/// <param name="abs"></param>
void deleteperson(numberbook*abs){
cout<<"请输入你要删除的联系人的名字:" << endl;
string name;
cin >> name;
int reactions = EXIST(abs, name);
if(reactions !=-1){
for (int j=reactions; j < abs->booknumbers; j++) {
abs->array[j] = abs->array[j+1];
}
abs->booknumbers--;
cout<<"删除成功!" << endl;
}
else
{
cout<<"查无此人..." << endl;
}
system("pause");
system("cls");
}
//ok
//66--4查找联系人
void findperson(numberbook*abs) {
cout << "请输入你要查询的联系人的名字:" << endl;
string name;
cin >> name;
int rea= EXIST(abs, name);
if (rea != -1) {
cout << "_______________________________________________________________" << endl;
cout << "为你查询到的信息如下:"<<endl;
cout << "姓名:"<<abs->array[rea].personname <<endl;
cout << "性别:"<<abs->array[rea].psex <<endl;
cout << "年龄:"<<abs->array[rea].page <<endl;
cout << "联系电话:"<<abs->array[rea].personaddress <<endl;
cout << "家庭住址:"<<abs->array[rea].personnumber <<endl;
cout << "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"<< endl;
}
else
{
cout << "查无此人..." << endl;
}
system("pause");
system("cls");
}
//77--5修改联系人
void conlact(numberbook*abs){
cout << "请输入你要修改的联系人的名字:" << endl;
string name;
cin >> name;
int reacti = EXIST(abs, name);
if (reacti != -1) {
cout << "查询到该联系人信息,请修改:" << endl;
cout << "_________________________________________" << endl;
//录入新名字
cout<<"请输入新的名字信息:" << endl;
string newname;
cin >> newname;
abs->array[reacti].personname = newname;
//录入新性别信息
cout << "请输入新的性别信息:" << endl;
int newsex;
while (true) {
cin >> newsex;
if (newsex == 1 || newsex == 2) {
abs->array[reacti].psex = newsex;
break;//如果输入的1或2可以退出循环,因为输入的是正确值
}
cout << "输入有误,请重新输入" << endl;//如果是其他数字请重新输入
}
//录入新年龄
cout << "请输入新的年龄信息:" << endl;
int newage;
cin >> newage;
abs->array[reacti].page = newage;
//录入新电话号码
cout << "请输入新的联系电话信息:" << endl;
string newnumber;
cin >> newnumber;
abs->array[reacti].personnumber = newnumber;
//录入新地址
cout << "请输入新的家庭住址信息:" << endl;
string newaddress;
cin >> newaddress;
abs->array[reacti].personaddress = newaddress;
cout << "修改完成" << endl;
}
else
{
cout << "查无此人,无法进行修改" << endl;
}
system("pause");
system("cls");
}
//88--6清空联系人
//封装清空联系人函数
void cleaningperson(numberbook*abs) {
//abs->booknumbers = 0;
for (int i = 0; i < abs->booknumbers; i++) {
for (int j = 0; j < abs->booknumbers; j++) {
abs->array[j].personname = abs->array[j + 1].personname;
abs->array[j].psex = abs->array[j + 1].psex;
abs->array[j].page = abs->array[j + 1].page;
abs->array[j].personnumber = abs->array[j + 1].personnumber;
abs->array[j].personaddress = abs->array[j + 1].personaddress;
}
}
cout << "该通讯录已清空!" << endl;
system("pause");
system("cls");
}
int main() {
//33-创建通讯录结构体变量
struct numberbook abs;
//33-初始化通讯录中当前人员个数
abs.booknumbers = 0;
//22创建用户选择变量
int select = 0;
//循环体使得功能循环使用
while (true)
{
//11菜单的调用
showMenu();
cin >> select;
switch (select)
{
case 1:addperson(&abs); break;//22-1 1、添加联系人(利用地址传递,可以修改实参)
case 2:showbookmessage(&abs); break;//22-2、显示联系人
case 3:deleteperson(&abs); break;//22-3、删除联系人
case 4:findperson(&abs); break;//22-4、查找联系人
case 5:conlact(&abs); break;//22-5、修改联系人
case 6:cleaningperson(&abs); break;//22-6、清空联系人
case 0:{cout << "欢迎下次使用" << endl;
system("pause");
return 0; //22-0、退出通讯录
}
default:
break;
}
}
system("pause");
return 0;
}