2022年圣诞节到来啦,很高兴这次我们又能一起度过~
CSDN诚邀各位技术er分享关于圣诞节的各种技术创意,展现你与众不同的精彩!参与本次投稿即可获得【话题达人】勋章+【圣诞快乐】定制勋章(1年1次,错过要等下一年喔)!
一、前言
好久没有写blog了,现在恢复写blog的进度,打算在过年前对自己所学的 深度学习 的相关经验进行一个详细的总结,关于深度学习的实现过程主要是在谷歌的colab上实现的,但自从10月份colab推出新的收费政策,我便打算开始自己配一张显卡跑程序了,这篇blog主要是对现阶段C++语言学习的一个总结,主要是开篇一些简单的编程代码,这次就简单介绍一个 通讯录的创建,我发现啊!不管学C语言还是C++语言,好像离不开这个 通讯录了,哈哈 头疼。
二、创意名
在圣诞节过后,使用C++创建一个建议通讯录。(有点牵强…)
三、效果展示
-
添加联系人信息:姓名、性别、年龄、电话、地址
-
显示已添加联系人信息
-
查找联系人信息
-
修改联系人信息
四、实现步骤
- 先创建一个菜单,进行指令功能的设置;
- 之后注意编写每个子函数的内容(具体内容看代码)。
注意,C++代码编程的基本规则,小括号啊!花括号啊!分号啊!不要漏掉。
五、编码实现
#include <iostream>
#include <string>
using namespace std;
#define numMax 1000
// 用户人结构体
struct person {
// 姓名 性别 年龄 电话 地址
string pName;
// 1-男,2-女
int pGender;
int pAge;
string pPhone;
string pAddr;
};
// 通讯录结构体
struct contactList {
struct person con[numMax];
int pSize;
};
void displayMenu() {
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 addPerson(contactList * abs) {
if (abs->pSize == numMax) {
cout << "通讯录已满!" << endl;
return;
}
else {
//依次 姓名 性别 年龄 电话 地址
cout << "请输入姓名:" << endl;
string name;
cin >> name;
abs->con[abs->pSize].pName = name;
cout << "请输入性别编号(1-男,2-女):" << endl;
int gender = 0;
while (true) {
cin >> gender;
if (gender == 1 || gender == 2) {
abs->con[abs->pSize].pGender = gender;
break;
}
}
//数据类型问题需要有一个声明确认 否则容易程序崩坏
cout << "请输入年龄:" << endl;
int age = 0;
cin >> age;
abs->con[abs->pSize].pAge = age;
cout << "请输入电话:" << endl;
string phone;
cin >> phone;
abs->con[abs->pSize].pPhone = phone;
cout << "请输入地址:" << endl;
string addr;
cin >> addr;
abs->con[abs->pSize].pAddr = addr;
abs->pSize++;
cout << "添加联系人成功!" << endl;
system("pause");
system("cls");
}
}
void showPerson(contactList* abs) {
if (abs->pSize == 0) {
cout << "联系人列表为空!" << endl;
}
else {
for (int i = 0; i < abs->pSize; i++) {
// 对齐这里也有一个问题 需要注意 如果变量类型不确定
// \t 的缩进功能不明显
cout << "姓名:" << abs->con[i].pName << "\t";
cout << "性别:" << (abs->con[i].pGender == 1 ? "男" : "女") << "\t";
cout << "年龄:" << abs->con[i].pAge << "\t";
cout << "电话:" << abs->con[i].pPhone << "\t";
cout << "地址:" << abs->con[i].pAddr << endl;
}
}
system("pause");
system("cls");
}
int isExist(contactList* abs, string name) {
for (int i = 0; i < abs->pSize; i++) {
if (abs->con[i].pName == name) {
return i;
}
}
return -1;
}
void deletPerson(contactList* abs) {
cout << "请输入删除的联系人姓名:" << endl;
string name;
cin >> name;
int ret = isExist(abs, name);
if ( ret != -1) {
for (int i = ret+1; i < abs->pSize; i++) {
abs->con[i-1] = abs->con[i];
}
abs->pSize--;
cout << "删除成功!" << endl;
}
else {
cout << "查无此人!" << endl;
}
}
void findPerson(contactList* abs) {
cout << "请输入所查询联系人的姓名:" << endl;
string name;
cin >> name;
int ret = isExist(abs, name);
if (ret != -1) {
cout << "姓名:" << abs->con[ret].pName << "\t";
cout << "性别:" << (abs->con[ret].pGender == 1 ? "男" : "女") << "\t";
cout << "年龄:" << abs->con[ret].pAge << "\t";
cout << "电话:" << abs->con[ret].pPhone << "\t";
cout << "地址:" << abs->con[ret].pAddr << endl;
}
else {
cout << "查无此人!" << endl;
}
system("pause");
system("cls");
}
void modifyPerson(contactList* abs) {
cout << "请输入修改的联系人名称:" << endl;
string name;
cin >> name;
int ret = isExist(abs, name);
if (ret != -1) {
//依次修改 姓名 性别 年龄 电话 地址
cout << "请输入姓名:" << endl;
string name;
cin >> name;
abs->con[ret].pName = name;
cout << "请输入性别编号(1-男,2-女):" << endl;
int gender = 0;
while (true) {
cin >> gender;
if (gender == 1 || gender == 2) {
abs->con[ret].pGender = gender;
break;
}
}
//数据类型问题需要有一个声明确认 否则容易程序崩坏
cout << "请输入年龄:" << endl;
int age = 0;
cin >> age;
abs->con[ret].pAge = age;
cout << "请输入电话:" << endl;
string phone;
cin >> phone;
abs->con[ret].pPhone = phone;
cout << "请输入地址:" << endl;
string addr;
cin >> addr;
abs->con[ret].pAddr = addr;
cout << "修改完毕!" << endl;
system("pause");
system("cls");
}
else {
cout << "查无此人!" << endl;
}
}
void clearPerson(contactList* abs) {
abs->pSize = 0;
cout << "通讯录已清空!" << endl;
system("pause");
system("cls");
}
int main() {
// 通讯录变量创建 初始化大小为0
contactList abs;
abs.pSize = 0;
int select = 0;
while (true) {
displayMenu();
cin >> select;
switch (select) {
case 1:
// 添加联系人
addPerson(&abs);
break;
case 2:
showPerson(&abs);
break;
case 3:
deletPerson(&abs);
break;
case 4:
findPerson(&abs);
break;
case 5:
modifyPerson(&abs);
break;
case 6:
clearPerson(&abs);
break;
case 0:
cout << "欢迎下次使用!" << endl;
system("pause");
return 0;
break;
default:
break;
}
}
system("Pause");
return 0;
}
代码是在 visual studio 中编写的,该软件还是比较好用的,我安装的是2022专业版;
从py3再回到C++发现许多细节需要多用些心思,以后会更新一些编码过程中的心得经验;
不得不学习 C++ 啊! 为了找个好工作,多学习吧!
既然 无力改变大环境趋势,只能 自己默默努力学习了!
共勉!