最近在学习c++,学习完基础语法部分进行一个小项目的练习。
注释完善,,,
#include <iostream>
#include <string>
using namespace std;
/*
通讯录系统:
author: 晚风亦是救赎
datetime: 2021/10/12 16:48:32
通讯录系统:
简介:是一个记录亲人、好友信息的工具
具体功能如下:
1、添加联系人:向通信录中添加新人,信息包括(姓名、性别、年龄、联系电话、家庭住址)
2、显示联系人:显示通讯录中所有的联系人信息
3、删除联系人:按照姓名进行删除指定联系人
4、查找联系人:按照姓名查看指定联系人信息
5、修改联系人:按照姓名查出信息然后进行修改保存
6、清空联系人:清空通讯录中所有信息
7、退出通讯录
*/
// 定义结构体
struct user {
string name; // 姓名
string sex; // 性别
int age; // 年龄
string phone; // 联系电话
string address; // 家庭住址
};
/* 以下部分为函数声明:方便main函数中调用 */
// 显示菜单
void showMenu();
// 整理通讯录,将没有数据的位置清除,有数据的往前移位
void arrange(struct user* userList, int len);
// 判断字符串是否为空,为空返回true
bool judStr(string val);
// 找到数组中第一个空位置
int getIndex(user* userList, int len);
// 添加联系人
bool addUser(user* userList, int len, user user);
// 显示所有联系人
void showUserList(user* userList, int len);
// 返回通讯录中联系人总数量
int getAdressListSize(user* userList, int len);
// 删除联系人
bool deleteUser(user* userList, int len, string name);
// 根据名字查找某个联系人
void findUser(user* userList, int len, string name);
// 根据名字获取某个联系人对象信息
user getUser(user* userList, int len, string name);
// 保存修改后的联系人信息
bool updateUser(user* userList, int len, user user, string name);
// 清空所有联系人
void clearUserList(user* userList, int len);
/*主函数入口*/
int main() {
struct user userList[1000]; // 定义通讯录
clog << "-----欢迎进入通讯录系统-----" << endl;
int flag = 0; // 初始化选项变量
do {
showMenu(); // 显示菜单
cin >> flag;
struct user u; // 联系人数据容器
bool res; // 结果容器
string name; // 名字容器
switch (flag) {
case 1:
clog << "-----添加联系人-----" << endl;
clog << "请输入姓名:";
cin >> u.name;
clog << "\n请输入性别:";
cin >> u.sex;
clog << "\n请输入年龄:";
cin >> u.age;
clog << "\n请输入联系电话:";
cin >> u.phone;
clog << "\n请输入家庭住址:";
cin >> u.address;
res = addUser(userList,1000,u);
if (res) {
cout << "添加联系人成功!!" << endl;
}
else {
cout << "添加联系人失败,通讯录已满或该名字已存在!" << endl;
}
break;
case 2:
clog << "-----显示联系人-----" << endl;
clog << "当前通讯录中一共有: " << getAdressListSize(userList, 1000) << "位联系人!" << endl;
showUserList(userList,1000);
break;
case 3:
clog << "-----删除联系人-----" << endl;
clog << "请输入要删除的联系人名称:";
cin >> name;
res = deleteUser(userList, 1000, name);
if (res) {
cout << "删除联系人成功!" << endl;
}
else {
cout << "删除联系人失败,该联系人不存在!" << endl;
}
break;
case 4:
clog << "-----查找联系人-----" << endl;
clog << "请输入要查找的联系人名称:";
cin >> name;
findUser(userList, 1000, name);
break;
case 5:
clog << "-----修改联系人-----" << endl;
clog << "请输入要修改的联系人名称:";
cin >> name;
u = getUser(userList, 1000, name);
if (judStr(u.name)) {
cout << "查询成功!请进行修改操作!" << endl;
for (; ;) {
cout << "\n1:修改名称\n2:修改年龄\n3:修改性别\n4:修改联系电话\n5:修改家庭地址\n6:保存修改\n输入0退出\n请输入:";
cin >> flag;
switch (flag) {
case 1:
cout << "\n原名称:" << u.name << endl;
cout << "请输入修改后的名称:";
cin >> u.name;
break;
case 2:
cout << "\n原年龄:" << u.age << endl;
cout << "请输入修改后的年龄:";
cin >> u.age;
break;
case 3:
cout << "\n原性别:" << u.sex << endl;
cout << "请输入修改后的性别:";
cin >> u.sex;
break;
case 4:
cout << "\n原联系电话:" << u.phone << endl;
cout << "请输入修改后的联系电话:";
cin >> u.phone;
break;
case 5:
cout << "\n原家庭地址:" << u.address << endl;
cout << "请输入修改后的家庭地址:";
cin >> u.address;
break;
case 6:
res = updateUser(userList, 1000, u, name);
if (res) {
flag = 0;
cout << "修改联系人信息成功!" << endl;
}
else {
cout << "修改联系人信息失败!" << endl;
}
break;
default :
cout << "没有该选项!" << endl;
break;
}
if (flag == 0) {
break;
}
}
}
break;
case 6:
clog << "-----清空联系人-----" << endl;
clog << "是否清空所有联系人信息?(1确定/0取消):";
cin >> flag;
if (flag == 1) {
clearUserList(userList, 1000);
cout << "已清除所有联系人信息资料!" << endl;
}
break;
case 7:
clog << "-----退出通讯录-----" << endl;
break;
default :
clog << "-----没有该选项-----" << endl;
break;
}
} while (flag != 7);
//system("pause");
return 0;
}
void showMenu() {
clog << "\n\n*****菜单选项*****" << endl;
clog << "1、添加联系人" << endl;
clog << "2、显示联系人" << endl;
clog << "3、删除联系人" << endl;
clog << "4、查找联系人" << endl;
clog << "5、修改联系人" << endl;
clog << "6、清空联系人" << endl;
clog << "7、退出通讯录" << endl;
clog << "请输入选项:";
}
void arrange(struct user* userList, int len) {
for (int i = 0; i < len; i++) {
if (!judStr(userList[i].name) && i != len - 1) {
userList[i] = userList[i + 1];
// 由于我们只判断名字是否存在,所以清空名字信息即可
userList[i + 1].name = "";
}
}
}
bool judStr(string val) {
if (val.empty()) {
return false;
}
else if (val.size() == 0) {
return false;
}
else if (val == "") {
return false;
}
else {
return true;
}
}
int getIndex(user* userList, int len) {
for (int i = 0; i < len; i++) {
if (!judStr(userList[i].name)) {
return i;
}
}
return -1;
}
bool addUser(user* userList, int len, user user) {
int index = getIndex(userList, len);
if (index >= 0) {
userList[index] = user;
return true;
}
return false;
}
void showUserList(user* userList, int len) {
for (int i = 0; i < len; i++) {
if (judStr(userList[i].name)) {
cout << "-----" << i + 1 << "-----" << endl;
cout << "姓名:" << userList[i].name
<< " 性别:" << userList[i].sex
<< " 年龄:" << userList[i].age
<< " 联系电话:" << userList[i].phone
<< " 家庭住址:" << userList[i].address << endl;
}
}
}
int getAdressListSize(user* userList, int len) {
int flag = 0;
for (int i = 0; i < len; i++) {
if (judStr(userList[i].name)) {
flag++;
}
else {
break;
}
}
return flag;
}
bool deleteUser(user* userList, int len, string name) {
for (int i = 0; i < len; i++) {
if (judStr(userList[i].name)) {
if (userList[i].name == name) {
userList[i].name = "";
arrange(userList, len);
return true;
}
}
}
return false;
}
void findUser(user* userList, int len, string name) {
int flag = 0;
for (int i = 0; i < len; i++) {
if (judStr(userList[i].name)) {
if (userList[i].name == name) {
flag++;
string sex = userList[i].sex == "男" ? "他" : "她";
cout << "找到了姓名为:" + name << "的联系人," << sex << "的个人信息如下:";
cout << "\n 姓名:" << userList[i].name << endl
<< " 性别:" << userList[i].sex << endl
<< " 年龄:" << userList[i].age << endl
<< " 联系电话:" << userList[i].phone << endl
<< " 家庭住址:" << userList[i].address << endl;
}
}
}
if (!flag) {
cout << "没有找到该联系人!" << endl;
}
}
user getUser(user* userList, int len, string name) {
int flag = 0;
user u;
for (int i = 0; i < len; i++) {
if (judStr(userList[i].name)) {
if (userList[i].name == name) {
flag++;
u = userList[i];
}
}
}
if (!flag) {
cout << "没有找到该联系人!" << endl;
}
return u;
}
bool updateUser(user* userList, int len, user user, string name) {
for (int i = 0; i < len; i++) {
if (judStr(userList[i].name)) {
if (userList[i].name == name) {
userList[i] = user;
return true;
}
}
}
return false;
}
void clearUserList(user* userList, int len) {
user u = {};
for (int i = 0; i < len; i++) {
if (judStr(userList[i].name)) {
userList[i] = u;
}
}
}
用时一个半小时。。
(O-O) 。。
|