文章目录
项目需求
头文件 function.h
#pragma once
#include<iostream>
#include<string>
using namespace std;
#define MAX 1000
struct person {//联系人
//姓名
string p_name;
//性别
int p_sex;
// 年龄
int p_age;
//电话
string p_tell;
//住址
string p_address;
};
typedef struct addressBook {
struct person p[MAX];
int p_num;
}AddressBook;
//要实现的方法
void quit(int *flag);//退出功能
void addPerson(AddressBook* Book);//添加联系人功能
void showPerson(AddressBook Book);//显示联系人功能
void deletePerson(AddressBook* Book, int p_num);//删除联系人功能
void findPerson(AddressBook Book, int p_num);//查找联系人功能
void modifyPerson(AddressBook* Book, int p_num);//修改联系人功能
void emptyPerson(AddressBook* Book);//清空通讯录功能
注意:不要在头文件中定义全局变量,系统会报一个重复定义的错
直接传参也能实现功能
主函数 menu.cpp
#include"function.h"
using namespace std;
int flag = 1;//定义一个全局变量
void showmenu() {
cout << "***** 1.添加联系人 *****" << endl;
cout << "***** 2.显示联系人 *****" << endl;
cout << "***** 3.删除联系人 *****" << endl;
cout << "***** 4.查找联系人 *****" << endl;
cout << "***** 5.修改联系人 *****" << endl;
cout << "***** 6.清空联系人 *****" << endl;
cout << "***** 0.退出通讯录 *****" << endl;
}
int isExit(AddressBook *Book, string name) {//判断用户是否存在
for (int i = 0; i < Book->p_num; i++) {
if (Book->p[i].p_name==name) {
return i;
}
}
return -1;
}
int main() {
int n;
//定义通讯录结构体
AddressBook Book;
Book.p_num = 0;
string name;//用于检测是否有此人
while (flag){
printf_s("**************************\n");
showmenu();
printf_s("**************************\n");
cout << endl;
cout << "请选择您的需求:";
cin >> n;
switch (n)
{
case 0://退出通讯录
quit(&flag);
break;
case 1://添加联系人
addPerson(&Book);
break;
case 2://显示联系人
showPerson(Book);
break;
case 3://删除联系人
cout << "请输入您想要删除人的姓名:";
cin >> name;
if (isExit(&Book, name) == -1) {
cout << "查无此人" << endl;
}
else {
deletePerson(&Book, isExit(&Book, name));
}
break;
case 4://查找联系人
cout << "请输入您想查找人的姓名:";
cin >> name;
if (isExit(&Book, name) == -1) {
cout << "查无此人" << endl;
}
else {
findPerson(Book, isExit(&Book, name));
}
break;
case 5://修改联系人
cout << "请输入您想要修改的人姓名:";
cin >> name;
if (isExit(&Book, name) == -1) {
cout << "查无此人"<<endl;
}
else {
modifyPerson(&Book, isExit(&Book, name));
}
break;
case 6://清空联系人
emptyPerson(&Book);
break;
default:
cout << "对不起,该功能尚未开通!请重新输入" << endl;
system("pause");
system("cls");
break;
}
}
return 0;
}
退出功能:quit.cpp
#include"function.h"
void quit(int *flag) {
*flag = 0;
cout << "Goodbye!" << endl;
}
添加联系人功能:add.cpp
#include"function.h"
void addPerson(AddressBook* Book) {
//判断存储联系人空间是否已满
if (Book->p_num == MAX+1) {
cout << "存储空间已满,不能进行存储!" << endl;
return;//返回空
}
else {
cout << "请输入姓名:";
cin >> Book->p[Book->p_num].p_name;
cout << endl;
cout << "请输入性别:" << endl;
cout << "1--男" << endl;
cout << "2--女" << endl;
int sex;
while (true) {
cin >> sex;
if (sex == 1 || sex == 2) {
Book->p[Book->p_num].p_sex = sex;
break;
}
else {
cout << "输入错误,请重新输入:";
}
}
cout << endl;
cout << "请输入年龄:";
int age;
while (true) {
cin >> age;
if (age >= 10 && age <= 120) {
Book->p[Book->p_num].p_age = age;
break;
}
else {
cout << "输入错误,请重新输入:";
}
}
cout << endl;
cout << "请输入电话:";
string tell;
while (true) {
cin >> tell;
if (tell.length() == 11) {
Book->p[Book->p_num].p_tell = tell;
break;
}
else {
cout << "输入错误,请重新输入:";
}
}
cout << endl;
cout << "请输入住址:";
cin >> Book->p[Book->p_num].p_address;
cout << endl;
//联系人增加一个
Book->p_num++;
//清屏
system("pause");
system("cls");//清屏函数
}
}
删除联系人功能:deletePerson.cpp
#include"function.h"
void deletePerson(AddressBook* Book,int p_num) {
for (int i = p_num; i < Book->p_num-1; i++) {
Book->p[i] = Book->p[i + 1];
}
Book->p_num--;
cout << "删除成功" << endl;
return;
}
查找联系人功能:findPerson.cpp
#include"function.h"
void findPerson(AddressBook Book, int p_num) {
cout << "姓名:" << Book.p[p_num].p_name << "\t";
cout << "性别:" << (Book.p[p_num].p_sex == 1 ? "男" : "女") << "\t";
cout << "年龄:" << Book.p[p_num].p_age << "\t";
cout << "电话:" << Book.p[p_num].p_tell << "\t";
cout << "住址:" << Book.p[p_num].p_address << endl;
}
修改联系人功能:modifyperson.cpp
#include"function.h"
void modifyPerson(AddressBook *Book,int p_num) {
int f = 0;
cout << "要修改名字吗?" << endl;
cout << "1--Yes" << endl;
cout << "0--No" << endl;
cin >> f;
if (f) {
cout << "请输入更改姓名:";
cin >> Book->p[p_num].p_name;
}
cout << endl;
cout << "要修改性别吗?" << endl;
cout << "1--Yes" << endl;
cout << "0--No" << endl;
cin >> f;
if (f) {
cout << "请输入更改性别:" << endl;
cout << "1--男" << endl;
cout << "2--女" << endl;
int sex;
while (true) {
cin >> sex;
if (sex == 1 || sex == 2) {
Book->p[p_num].p_sex == sex;
break;
}
else {
cout << "输入错误,请重新输入:";
}
}
}
cout << endl;
cout << "要修改年龄吗?" << endl;
cout << "1--Yes" << endl;
cout << "0--No" << endl;
cin >> f;
if (f) {
cout << "请输入更改年龄:";
int age;
while (true) {
cin >> age;
if (age >= 10 && age <= 120) {
Book->p[p_num].p_age = age;
break;
}
else {
cout << "输入错误,请重新输入:";
}
}
}
cout << endl;
cout << "要修改电话吗?" << endl;
cout << "1--Yes" << endl;
cout << "0--No" << endl;
cin >> f;
if (f) {
cout << "请输入更改电话:";
string tell;
while (true) {
cin >> tell;
if (tell.length() == 11) {
Book->p[p_num].p_tell = tell;
break;
}
else {
cout << "输入错误,请重新输入:";
}
}
}
cout << endl;
cout << "要修改地址吗?" << endl;
cout << "1--Yes" << endl;
cout << "0--No" << endl;
cin >> f;
if (f) {
cout << "请输入更改后地址:";
cin >> Book->p[p_num].p_address;
}
cout << endl;
cout << "修改成功" << endl;
system("pause");
system("cls");//清屏
}
清空通讯录功能:emptyPerson.cpp
#include"function.h"
void emptyPerson(AddressBook* Book) {
Book->p_num = 0;
cout << "清空成功" << endl;
system("pause");
system("cls");
}
运行结果展示
添加联系人:
显示联系人:
再添加一个:
显示:
查找联系人:
删除联系人:
修改联系人:
跟着提示来就行
清空联系人:
退出:
总结
这里使用的是对功能函数进行封装,相信通过这个博客,可以帮助你巩固C++的基础语法和编程思维。
还有一个有BUG的地方,就大家自己去修改了,就是出现同名的情况。
有修改了好兄弟,欢迎评论区留码。