材料天坑选手跨考408,从零学习C++,慢慢来吧。。。。。
跟着B站黑马程序员的视频做的第一个超级简单项目。。一个简单至极的通讯录,虽然很low不过是自己一点点敲出来的,继续努力!
可以实现功能如下:
- 添加&删除联系人
- 显示所有联系人
- 按名字查找&删除联系人
- 清空联系人列表
前天发的时候不会用排版,6月4日重新编辑一下
#include<iostream>
using namespace std;
#include<string>
//联系人上限MAX
#define MAX 1000
//联系人结构体
struct Person {
//姓名
string name;
//性别 1男 2女
int sex;
//年龄
int age;
//电话
string phone;
//住址
string address;
};
//通讯录结构体
struct AddressBooks {
//联系人数组
struct Person pArr[MAX];
//当前联系人个数
int perNum;
};
//菜单函数
void showMenu() {
system("pause");
system("cls");
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;
}
//显示第i个联系人的信息
void print_onePerson(AddressBooks *p,int i) {
cout << "姓名:" << p->pArr[i].name << "\t";
cout << "性别:" << (p->pArr[i].sex == 1 ? "男" : "女") << "\t";
cout << "年龄:" << p->pArr[i].age << "\t";
cout << "电话:" << p->pArr[i].phone << "\t";
cout << "住址:" << p->pArr[i].address << endl;
}
//按姓名查找函数
int findName(AddressBooks *p,string t) {
for (int i = 0; i < p->perNum; i++) {
if (t==p->pArr[i].name) {
return i;//返回目标联系人的序号
}
}
return -1;//如果没有查找到,返回-1
}
//1、添加联系人函数
void addPerson(AddressBooks *p) {
if (p->perNum==MAX) {
cout << "通讯录已满,无法添加" << endl;
}
else {
//姓名
cout << "请输入姓名:" << endl;
cin >> p->pArr[p->perNum].name;
//性别 1男 2女
int tempsex;
//输入正确退出循环,输入错误则重新输入,直到输入正确
while (true) {
cout << "请输入性别:" << endl;
cout << "1 --- 男" << endl;
cout << "2 --- 女" << endl;
cin >> tempsex;
if (tempsex == 1 || tempsex == 2) {
p->pArr[p->perNum].sex = tempsex;
break;
}
cout << "*****输入有误,请重新输入*****" << endl;
}
//年龄
int tempage;
while (true) {
cout << "请输入年龄:" << endl;
cin >> tempage;
if (tempage > 0 && tempage < 200) {
p->pArr[p->perNum].age = tempage;
break;
}
cout << "*****输入有误,请重新输入*****" << endl;
cout << "***** 正确范围:1~199 *****" << endl;
}
//电话
cout << "请输入电话:" << endl;
cin >> p->pArr[p->perNum].phone;
//住址
cout << "请输入住址:" << endl;
cin >> p->pArr[p->perNum].address;
cout << "***** 添加成功! *****" << endl;
p->perNum++;
}
}
//2、显示联系人函数
void showPerson(AddressBooks *p) {
//判断通讯录是否为0
//0--提示为通讯录空;其他--显示联系人
if (p->perNum==0) {
cout << "通讯录为空" << endl;
}
else {
for (int i = 0; i < p->perNum;i++) {
print_onePerson(p,i);
}
}
}
//3、删除联系人函数
void delePerson(AddressBooks *p) {
cout << "请输入您要删除的联系人姓名" << endl;
string tempname;
cin >> tempname;
int result =findName(p, tempname);
if (result ==-1) {
cout << "查无此人" << endl;
}
else {
cout << "找到此人" << endl;
for (int i = result; i < p->perNum;i++) {
p->pArr[i] = p->pArr[i + 1];
}
cout << "删除成功" << endl;
p->perNum--;
}
}
//4、查找联系人函数
void findPerson(AddressBooks *p) {
string name_case4;
cout << "请输入查找联系人的姓名:" << endl;
cin >> name_case4;
int tempResult = findName(p, name_case4);
if (tempResult == -1) {
cout << "查无此人" << endl;
}
else {
cout << "找到此人" << endl;
print_onePerson(p, tempResult);
}
}
//5、修改联系人函数
void editPerson(AddressBooks *p) {
cout << "请输入您要修改的联系人姓名" << endl;
string name;
cin >> name;
int tempResult = findName(p, name);
if (tempResult == -1) {
cout << "查无此人,无法修改!" << endl;
}
else {
cout << "找到此人,信息如下:" << endl;
print_onePerson(p, tempResult);
cout << "开始修改联系人信息" << endl;
cout << "*****************************" << endl;
//姓名
cout << "请输入姓名:" << endl;
cin >> p->pArr[tempResult].name;
//性别 1男 2女
int tempsex;
//输入正确退出循环,输入错误则重新输入,直到输入正确
while (true) {
cout << "请输入性别:" << endl;
cout << "1 --- 男" << endl;
cout << "2 --- 女" << endl;
cin >> tempsex;
if (tempsex == 1 || tempsex == 2) {
p->pArr[tempResult].sex = tempsex;
break;
}
cout << "*****输入有误,请重新输入*****" << endl;
}
//年龄
int tempage;
while (true) {
cout << "请输入年龄:" << endl;
cin >> tempage;
if (tempage > 0 && tempage < 200) {
p->pArr[tempResult].age = tempage;
break;
}
cout << "*****输入有误,请重新输入*****" << endl;
cout << "***** 正确范围:1~199 *****" << endl;
}
//电话
cout << "请输入电话:" << endl;
cin >> p->pArr[tempResult].phone;
//住址
cout << "请输入住址:" << endl;
cin >> p->pArr[tempResult].address;
cout << "***** 修改成功! *****" << endl;
}
}
//6、清空联系人函数
void cleanPerson(AddressBooks *p) {
cout << "您确定清空通讯录吗?\n(确定清空--1 取消清空--0)"
<< endl;
int b;
cin >> b;
while (!(b==1||b==0)) {
cout << "您的输入有误,请重新输入\n(确定清空--1 取消清空--0)" << endl;
cin >> b;
}
if (b) {
p->perNum = 0;
cout << "已清空通讯录!" << endl;
}
else {
cout << "取消清空!" << endl;
}
}
int main() {
int choose;
//创建,初始化通讯录abs
struct AddressBooks abs;
abs.perNum = 0;
while (1) {//利用while使用户一直使用
showMenu();
cin >> choose;
switch (choose) {
case 1://添加联系人
addPerson(&abs);
break;
case 2://显示联系人
showPerson(&abs);
break;
case 3://删除联系人
delePerson(&abs);
break;
case 4://查找联系人
findPerson(&abs);
break;
case 5://修改联系人
editPerson(&abs);
break;
case 6://清空联系人
cleanPerson(&abs);
break;
case 0://退出联系人
{
cout << "欢迎下次使用!" << endl;
system("pause");
return 0;
break;
}
default:
break;
}
}
system("pause");
return 0;
}
发个文章记录自己的成长,欢迎批评指正!