<C++>5 项目:通讯录管理系统
本文最后更新于:2022年5月24日 早上
5 项目:通讯录管理系统
项目需求:
- 添加联系人:(序号、姓名、性别、年龄、联系电话、家庭住址)最多 1000 条
- 显示联系人
- 删除联系人:按照 姓名 / 电话 / 序号 删除联系人
- 查找联系人
- 修改联系人
- 清空联系人
- 退出通讯录
一些功能:
system("pause"); //按任意键继续
system("cls"); //清屏
附录:通讯录管理系统
Here.cpp
main 方法
#include<iostream>
using namespace std;
#include"headF1.h" //自定义头文件
int main() {
menu(); //通讯录方法
return 0;
}
headF1.h
头文件
#include<iostream>
using namespace std;
struct Data; //每条记录对应一个结构体变量
struct Book; //所有记录被包含在该结构体变量中
void menu(); //程序主方法
void showSingle(const Data* dp); //展示一条记录
void showMenu(const int* num); //展示通讯录菜单
void addList(Data* dp, int* num); //添加一条记录
void showList(const Data* p, int num); //展示全部记录
void searchList(const Data* dp, int num); //搜索记录
void changeList(Data* dp, int num); //修改记录
void deleteSingle(Data* dp, int* num); //删除一条记录
void clearList(Data* dp, int* num); //删除全部记录
menuTool.cpp
源文件
混沌!毁灭!RUA!!!
#include "headF1.h"
#include <iostream>
using namespace std;
const int MAX_SIZE = 1000;
struct Data {
int id = -1; //联系人 ID,该变量由系统生成,-1 的场合表示空
string name; //联系人名
char gender; //联系人性别
int age; //联系人年龄
string call; //联系人电话
string home; //联系人住址
};
struct Book { //保存全部联系人的结构体
//不如此做会导致一些问题
Data list[MAX_SIZE]; //联系人数组
int num = 0; //已添加的联系人数量
}book;
void menu() {
int userIn; //接收用户输入
while (true) {
showMenu(&book.num); //方法:显示菜单
cin >> userIn;
switch (userIn) {
case 1:
cout << "————添加联系人————" << endl;
addList(book.list, &book.num); //方法:添加联系人
break;
case 2:
cout << "————显示全部联系人————" << endl;
showList(book.list, book.num); //方法:显示通讯录
break;
case 3:
cout << "————查找联系人————" << endl;
searchList(book.list, book.num); //方法:查找联系人
break;
case 4:
cout << "————修改联系人————" << endl;
changeList(book.list, book.num); //方法:修改联系人
break;
case 5:
cout << "————删除联系人————" << endl;
deleteSingle(book.list, &book.num); //方法:删除联系人
break;
case 6:
cout << "————清空联系人————" << endl;
clearList(book.list, &book.num); //方法:清空联系人
break;
case 9:
cout << "再次输入 9 退出通讯录系统:";
cin >> userIn;
if (userIn == 9) {
return;
}
break;
}
system("pause"); //添加一个暂停
system("cls"); //清屏
}
}
void showMenu(const int * num) { //方法:显示菜单
cout << endl;
cout << "————通讯录系统(共 " << *num << " 条记录)————" << endl;
cout << "\t\t1.添加联系人" << endl;
cout << "\t\t2.显示全部联系人" << endl;
cout << "\t\t3.查找联系人" << endl;
cout << "\t\t4.修改联系人" << endl;
cout << "\t\t5.删除联系人" << endl;
cout << "\t\t6.清空联系人" << endl;
cout << "\t\t9.退 出" << endl;
cout << endl;
cout << "请选择:";
}
void showSingle(const Data* dp) { //方法:展示单条记录
cout << dp->id << '\t' << dp->name << '\t' << dp->gender << '\t' << dp->age << '\t' << dp->call << '\t' << dp->home << endl;
}
void addList(Data* dp, int* num) { //方法:添加联系人
if (*num >= MAX_SIZE) {
cout << "通讯录已满" << endl;
return;
}
int id = 0; //准备分配 ID
while (true) { //遍历全部通讯录位置,直到找到空位
++id; //其实,ID 即数组下标 + 1
if (dp->id == -1) { //位置 id = -1 表示该位为空位
break;
}
else {
dp++;
}
}
Data nextP; //创建新的联系人,并初始化
cout << "请输入联系人姓名:";
cin >> nextP.name;
cout << "请输入联系人性别(M/F):";
cin >> nextP.gender;
if ((nextP.gender != 'M') && (nextP.gender != 'F')) {
nextP.gender = '-';
}
cout << "请输入联系人年龄:";
cin >> nextP.age;
cout << "请输入联系人电话:";
cin >> nextP.call;
cout << "请输入联系人家庭住址:";
cin >> nextP.home;
nextP.id = id;
*dp = nextP; //在刚才确定的位置上,添加联系人
(*num)++; //添加的联系人数量 + 1
}
void showList(const Data* dp, int num) { //方法:展示通讯录
cout << "ID\t姓名\t性别\t年龄\t联系电话\t家庭住址" << endl;
while (num > 0) {
if (dp->id >= 0) {
num--;
showSingle(dp); //方法:展示单条记录
}
dp++;
}
}
/*——————————对了,我写啥注释啊,又没人看,溜了——————————*/
/*…………………………………………这么个破代码还看啥看…………………………………………*/
void searchList(const Data* dp, int num) {
cout << "请输入查找模式(1.ID;2.姓名;3.电话号码;0.取消):" << endl;
int user;
cin >> user;
string temp;
switch (user) {
case 1:
cout << "请输入要查询的 ID:";
cin >> user;
while (true) {
if (num <= 0) {
cout << "没有找到该联系人" << endl;
break;
}
if (dp->id == -1) {
continue;
}
num--;
if (dp->id == user) {
cout << "ID\t姓名\t性别\t年龄\t联系电话\t家庭住址" << endl;
showSingle(dp);
break;
}
dp++;
}
break;
case 2:
cout << "请输入要查询的 姓名:";
cin >> temp;
user = 0;
while (true) {
if (num <= 0) {
cout << (user == 0 ? "没有找到该联系人" : "查询完毕") << endl;
break;
}
if (dp->id == -1) {
continue;
}
num--;
if (dp->name == temp) {
cout << "ID\t姓名\t性别\t年龄\t联系电话\t家庭住址" << endl;
showSingle(dp);
user++;
}
dp++;
}
break;
case 3:
cout << "请输入要查询的 电话号码:";
cin >> temp;
user = 0;
while (true) {
if (num <= 0) {
cout << (user == 0 ? "没有找到该联系人" : "查询完毕") << endl;
break;
}
if (dp->id == -1) {
continue;
}
num--;
if (dp->call == temp) {
cout << "ID\t姓名\t性别\t年龄\t联系电话\t家庭住址" << endl;
showSingle(dp);
user++;
}
dp++;
}
break;
default:
return;
}
}
void changeList(Data* dp, int num) {
Data* start = dp;
int num2 = num;
cout << "请输入查找模式(1.ID;2.姓名;0.返回):" << endl;
int user;
cin >> user;
string temp;
if (user > 2 || user < 1) {
return;
}
if (user == 2) {
cout << "请输入要查询的联系人姓名:";
cin >> temp;
user = 0;
while (true) {
if (num <= 0) {
if (user == 0) {
cout << "没有找到该联系人" << endl;
}
break;
}
if (dp->id == -1) {
continue;
}
num--;
if (dp->name == temp) {
cout << "ID\t姓名\t性别\t年龄\t联系电话\t家庭住址" << endl;
showSingle(dp);
user++;
}
dp++;
}
}
if (user == 0) {
return;
}
dp = start;
num = num2;
cout << "请输入要修改的 ID:";
int id;
cin >> id;
while (true) {
if (num <= 0) {
cout << "没有找到该联系人" << endl;
return;
}
if (dp->id == -1) {
continue;
}
num--;
if (dp->id == id) {
break;
}
dp++;
}
while (true) {
cout << "——————————————————————————————" << endl;
cout << "ID\t姓名\t性别\t年龄\t联系电话\t家庭住址" << endl;
showSingle(dp);
cout << "请输入要修改的项(1.姓名;2.性别;3.年龄;4.联系电话;5.家庭住址;0.返回):";
cin >> user;
switch (user) {
case 1:
cout << "请输入姓名:";
cin >> dp->name;
break;
case 2:
cout << "请输入性别:";
cin >> dp->gender;
break;
case 3:
cout << "请输入年龄:";
cin >> dp->age;
break;
case 4:
cout << "请输入联系电话:";
cin >> dp->call;
break;
case 5:
cout << "请输入家庭住址:";
cin >> dp->home;
break;
default:
return;
}
}
}
void deleteSingle(Data* dp, int* num) {
cout << "首先查询联系人(不需要查询输入0)" << endl;
searchList(dp, *num);
cout << "请输入要删除的 ID(0.取消):";
int id;
cin >> id;
if (id == 0) {
return;
}
else if (id > 1000 || id < 0) {
cout << "ID 错误" << endl;
return;
}
int count = *num;
while (true) {
if (count <= 0) {
cout << "没有找到该联系人" << endl;
return;
}
if (dp->id == -1) {
continue;
}
count--;
if (dp->id == id) {
break;
}
dp++;
}
cout << "ID\t姓名\t性别\t年龄\t联系电话\t家庭住址" << endl;
showSingle(dp);
cout << "确定删除该联系人吗?(Y/N):";
char confirm;
cin >> confirm;
if (confirm != 'Y' && confirm != 'y') {
return;
}
dp->id = -1;
(*num)--;
}
void clearList(Data* dp, int* num) {
char user;
cout << "确定要删除全部联系人吗?(Y/N):";
cin >> user;
if (user != 'Y' && user != 'y') {
return;
}
while (true) {
if (*num <= 0) {
return;
}
if (dp->id != -1) {
(*num)--;
dp->id = -1;
}
dp++;
}
}
<C++>5 项目:通讯录管理系统
https://i-melody.github.io/2022/04/01/C++/入门阶段/5 项目:通讯录管理系统/