前言
b站C++课程学习笔记整理。
b站视频: 黑马程序员匠心之作|C++教程从0到1入门编程,学习编程不再难
72-83. 通讯录管理系统
- 功能描述
- 添加联系人:向通讯录中添加新人,信息包括(姓名、性别、年龄、联系电话、家庭住址)最多纪录1000人。
- 显示联系人:显示通讯录中所有联系人信息。
- 删除联系人:按照姓名进行删除指定联系人。
- 查找联系人:按照姓名查看指定联系人信息。
- 修改联系人:按照姓名重新修改指定联系人。
- 清空联系人:清空通讯录中所有信息。
- 退出通讯录:退出当前使用的通讯录。
- 控制台暂停操作:
system("pause")
- 控制台清屏操作:
system("cls")
- 注意,c++里面使用
switch...case
时,case
的条件不能是字符串。即 case "1"
这样是不对的。必须是整数或者枚举类型。
- 程序的输入都有一个缓冲区,即输入缓冲区。一次输入过程是这样的,当一次键盘输入结束时会将输入的数据存入输入缓冲区,而cin对象直接从输入缓冲区中取数据。正因为cin对象是直接从缓冲区取数据的,所以有时候当缓冲区中有残留数据时,cin对象会直接取得这些残留数据而不会请求键盘输入。
cin.good
判断输入是否是正确的类型。cin.fail
判断输入是否是错误的类型。
- 注意清空
cin
的缓存
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208
| #include<iostream>; #define MAX 1000 using namespace std;
struct person { string name; string number; }; struct contactBook { person personArr[MAX]; int m_size=0; };
void showMenu() { cout << "欢迎来到通讯录管理系统!" << endl; cout << "-------------------" << endl; cout << "1、添加联系人" << endl; cout << "2、显示联系人" << endl; cout << "3、删除联系人" << endl; cout << "4、查找联系人" << endl; cout << "5、修改联系人" << endl; cout << "6、清空联系人" << endl; cout << "7、退出通讯录" << endl; cout << "-------------------" << endl; }
void addPerson(contactBook* p) { if (p->m_size == MAX) { cout << "该通讯录已满,无法添加。" << endl; } else { string name; string number; cout << "请添加姓名" << endl; cin >> name; cout << "请添加手机号" << endl; cin >> number;
person newOne = { name,number }; p->personArr[p->m_size] = newOne; p->m_size++; cout << "添加成功!" << endl; system("pause"); system("cls"); }
}
void showContact(contactBook* p) { if (p->m_size == 0) { cout << "通讯录为空!" << endl; system("pause"); system("cls"); return; } for (int i = 0; i < p->m_size; i++) { cout <<"姓名:" << p->personArr[i].name <<"\t手机号:" << p->personArr[i].number << endl; } system("pause"); system("cls"); }
void deleteContact(contactBook* p,string name) { bool flag = true; for (int i = 0; i < p->m_size; i++) { if (p->personArr[i].name == name) { flag = false; for (int j = i; j < p->m_size-1; j++) { p->personArr[j] = p->personArr[j + 1]; } p->m_size--; i--; } } if (flag) { cout << "未找到此人" << endl; system("pause"); system("cls"); return; } cout << "删除成功!" << endl; system("pause"); system("cls"); }
void searchContact(contactBook* p, string name) { bool flag = true; for (int i = 0; i < p->m_size; i++) { if (p->personArr[i].name == name) { flag = false; cout << "姓名是" << p->personArr[i].name << "\t电话号码是" << p->personArr[i].number<< endl; } } if (flag) { cout << "未找到此人" << endl; system("pause"); system("cls"); return; } system("pause"); system("cls"); }
void modifyContact(contactBook* p, string name) { bool flag = true; string modifiedName; string modifiedNum; for (int i = 0; i < p->m_size; i++) { if (p->personArr[i].name == name) { flag = false; cout << "姓名是" << p->personArr[i].name << "\t电话号码是" << p->personArr[i].number << endl; cout << "请输入新的姓名" << endl; cin >> modifiedName; p->personArr[i].name = modifiedName; cout << "请输入新的号码" << endl; cin >> modifiedNum; p->personArr[i].number = modifiedNum; cout << "修改成功!" << endl; } } if (flag) { cout << "未找到此人" << endl; system("pause"); system("cls"); return; }
system("pause"); system("cls"); }
void clearContact(contactBook* p) { p->m_size = 0; cout << "清空完成!" << endl; system("pause"); system("cls"); }
int main() { int command = 0; contactBook cb;
while (true) { showMenu(); cin >> command; switch (command) { case 1: cout << "开启添加联系人功能" << endl; addPerson(&cb); break; case 2: cout << "开启显示联系人功能" << endl; showContact(&cb); break; case 3: { cout << "开启删除联系人功能" << endl; string name; cout << "请输入要删除的人的名字" << endl; cin >> name; deleteContact(&cb, name); break; } case 4: { cout << "开启查找联系人功能" << endl; string name; cout << "请输入要查找的人的名字" << endl; cin >> name; searchContact(&cb, name); break; }
case 5: { cout << "开启修改联系人功能" << endl; string name; cout << "请输入要修改的人的名字" << endl; cin >> name; modifyContact(&cb, name); break; }
case 6: cout << "开启清除联系人功能" << endl; clearContact(&cb); break; case 7: cout << "欢迎下次使用!" << endl; system("pause"); return 0; break; default: system("cls"); cout << "你输入的命令有误,请重新输入。" << endl; cin.clear(); cin.ignore(numeric_limits<std::streamsize>::max(), '\n'); break; } }
system("pause"); return 0; }
|