系统需求
- 添加联系人:向通讯录添加新人(姓名、性别、年龄、联系电话、家庭住址)最多记录500人
- 显示联系人:显示通讯录中所有联系人信息
- 删除联系人:按姓名索引删除指定联系人
- 查找联系人:按姓名索引查找指定联系人
- 修改联系人:按姓名索引修改指定联系人
- 清空联系人:清空通讯录中所有的联系人信息
- 退出通讯录:退出当前使用的通讯录系统
源代码
/* file_name: Main.cpp
** author: Wei Li
** date: 2020-06-16
** Copyright © 2020 Wei Li, All Rights Reserved.
** GitHub: https://github.com/2694048168/
** Gitee:https://gitee.com/weili_yzzcq/
** Blog:https://2694048168.github.io/
** Blog:https://weili_yzzcq.gitee.io/
** Blog:https://blog.csdn.net/weixin_46782218/
*/
// 头文件区
// the area of Header files
#include <iostream>
#include <string>
using namespace std;
// 全局变量区
// the area of Global variables
// 通讯录最大储存联系人
#define MAX 500
// 联系人结构体
struct Person
{
// 姓名
string m_Name;
// 性别
unsigned int m_Sex;
// 年龄
unsigned int m_Age;
// 电话
string m_Phone;
// 地址
string m_Addr;
};
// 通讯录结构体
struct Addressbooks
{
// 通讯录中保存联系人数组
struct Person personArray[MAX];
// 通讯录中当前记录的联系人个数
unsigned int m_Size;
};
// 全局函数声明区
// the area of Global function declaration
/* 功能:显示菜单命令
** 返回值:void
** 函数名:showMenu
** 参数列表:void
** 参数传递类型:void
** 函数调用:showMenu();
*/
void showMenu();
/* 功能:添加联系人
** 返回值:void
** 函数名:addPerson
** 参数列表:通讯录结构体abs
** 参数传递类型:地址传递
** 函数调用:addPerson(&abs);
*/
void addPerson(Addressbooks * abs);
/* 功能:显示联系人
** 返回值:void
** 函数名:showPerson
** 参数列表:通讯录结构体abs
** 参数传递类型:地址传递
** 函数调用:showPerson(&abs);
*/
void showPerson(Addressbooks * abs);
/* 功能:检测联系人是否在当前通讯录中
** 返回值:int
** 函数名:isExist
** 参数列表:通讯录结构体abs、检测联系人姓名name
** 参数传递类型:地址传递、值传递
** 函数调用:isExist(&abs);
*/
int isExist(Addressbooks * abs, string name);
/* 功能:删除联系人
** 返回值:void
** 返回值说明:i代表着该联系人在通讯录中的索引,-1代表着查无此联系人
** 函数名:deletePerson
** 参数列表:通讯录结构体abs
** 参数传递类型:地址传递
** 函数调用:deletePerson(abs, name);
*/
void deletePerson(Addressbooks * abs);
/* 功能:查找联系人
** 返回值:void
** 函数名:findPerson
** 参数列表:通讯录结构体abs
** 参数传递类型:地址传递
** 函数调用:findPerson(&abs);
*/
void findPerson(Addressbooks * abs);
/* 功能:修改联系人
** 返回值:void
** 函数名:modifyPerson
** 参数列表:通讯录结构体abs
** 参数传递类型:地址传递
** 函数调用:modifyPerson(&abs);
*/
void modifyPerson(Addressbooks * abs);
/* 功能:删除联系人
** 返回值:void
** 函数名:cleanPerson
** 参数列表:通讯录结构体abs
** 参数传递类型:地址传递
** 函数调用:cleanPerson(&abs);
*/
void cleanPerson(Addressbooks * abs);
/* 通讯录管理系统——the Contacts Management System
**
** 添加联系人:向通讯录添加新人(姓名、性别、年龄、联系电话、家庭住址)最多记录500人
** 显示联系人:显示通讯录中所有联系人信息
** 删除联系人:按姓名索引删除指定联系人
** 查找联系人:按姓名索引查找指定联系人
** 修改联系人:按姓名索引修改指定联系人
** 清空联系人:清空通讯录中所有的联系人信息
** 退出通讯录:退出当前使用的通讯录系统
**
*/
int main(int argc, char const *argv[])
{
// 创建通讯录结构体变量
Addressbooks abs;
// 初始化通讯录当前联系人个数
abs.m_Size = 0;
// 接受用户输入命令
unsigned int select = 0;
// 循环接受用户命令
while(true)
{
// 菜单函数
showMenu();
// 接受用户输入
cin >> select;
switch(select)
{
case 1: // 1、添加联系人
addPerson(&abs);
break;
case 2: // 2、显示联系人
showPerson(&abs);
break;
case 3: // 3、删除联系人
deletePerson(&abs);
break;
case 4: // 4、查找联系人
findPerson(&abs);
break;
case 5: // 5、修改联系人
modifyPerson(&abs);
break;
case 6: // 6、清空联系人
cleanPerson(&abs);
break;
case 0: // 0、退出通信录
cout << "欢迎下次使用系统!" << endl;
system("pause");
return 0;
break;
default:
break;
}
}
return 0;
}
// 全局函数实现区
// the area of Global function implementation
/* Function:show the user menu command
** Return:void
** Parameter:abs
** Parameter Passing Type:Address Passing or Pointer Passing
** Function Call:deletePerson();
**
** 源代码仓库地址:
** GitHub:git@github.com:2694048168/C-LanguageProjectCombat.git
** Gitee:git@gitee.com:weili_yzzcq/C-LanguageProjectCombat.git
*/
CMake
# #############################################################
# author: Wei Li
# date: 2020-06-16
# Copyright © 2020 Wei Li, All Rights Reserved.
# GitHub: https://github.com/2694048168/
# Gitee:https://gitee.com/weili_yzzcq/
# Blog:https://2694048168.github.io/
# Blog:https://weili_yzzcq.gitee.io/
# Blog:https://blog.csdn.net/weixin_46782218/
# #############################################################
# step1 CMakeLists.txt
# 1、工程配置部分
# 指定CMake最低版本号要求
cmake_minimum_required (VERSION 3.5)
# 项目信息
project (the_contact_managerment_system)
# 设置编译版本 如“-std=c++11”、“-std=c++14”、“-std=c++17”、“-std=c++20”
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Werror -std=c++11")
# 设置编译模式,如“Debug”、“Release”
set (CMake_BUILD_TYPE "Debug")
# 2、依赖执行部分
# 设置源代码路径
set (source_dir "${PROJECT_SOURCE_DIR}/src/")
# 设置需要编译的源文件
file (GLOB source_files "${source_dir}/*.cpp")
# 设置编译的输出目标文件
add_executable (the_contact_managerment_system ${source_files})
# step2 编译结构目录
# 创建项目工作空间
mkdir the_contact_managerment_system
# 进入项目工作空间
cd the_contact_managerment_system
# 创建 CMakelists.txt 文件
touch CMakelists.txt
# 编写 CMakelists.txt 内容
vim CMakelists.txt
# 创建外部编译目录
mkdir build
# 创建源代码文件
mkdir src
# 进入源代码目录
cd src
# 创建 Main.cpp 文件
touch Main.cpp
# step3 CodeLite
# 进入外部编译目录 build
cd build
# 为 CodeLite IDE 创建工作空间
cmake -G "CodeLite - Unix Makefiles" ..
# 查看生成的项目工作空间文件
ll
# 启动 CodeLite IDE 打开项目工作空间文件
codelite the_contact_managerment_system.workspace &
# step4 继续完成项目的内容,同时完善 CMakelists.txt 文件