1. 程式人生 > 其它 >C++通訊錄系統(含完整程式碼和詳細註釋)

C++通訊錄系統(含完整程式碼和詳細註釋)

技術標籤:C++小製作c++程式語言

功能說明

含有以下幾個主要功能:

  • 新增聯絡人,包括聯絡人姓名、性別、年齡、電話和家庭住址,上限2000人
  • 顯示通訊錄中所有聯絡人的資訊
  • 按照姓名刪除指定聯絡人
  • 按照姓名查詢指定聯絡人資訊
  • 按照姓名修改指定聯絡人資訊
  • 清空通訊錄中所有資訊(邏輯清除)
  • 退出通訊錄

程式碼

/*
 * File name:main.cpp
 * Author:ORI
 * Versio:V1.0
 * Description:通訊錄管理系統。含有選單、退出、新增聯絡人、顯示聯絡人
 *              刪除聯絡人、查詢聯絡人、修改聯絡人和清空聯絡人的功能。
 * Others:
 * Log:初版 2021/1/30 ori建立
 */
#include <iostream> #include <string> using namespace std; #define MAX 2000 /* 通訊錄最大人數 */ /* 定義聯絡人結構體 */ struct Person{ string m_Name; /* 姓名 */ int m_Sex; /* 性別 1_男 2_女 */ int m_Age; /* 年齡 */ string m_Phone; /* 電話 */ string m_Addr; /* 地址 */ }; /* 定義通訊錄結構體 */ struct Addressbooks{
struct Person personArray[MAX]; /* 通訊錄中儲存聯絡人陣列 */ int m_size; /* 當前記錄聯絡人個數 */ }; /* * @Description : 實現選單頁面 * @param : 無 * @return : 無 */ void showMenu() { 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; } /* * @Description : 新增聯絡人 * @param - abe : 通訊錄結構體變數 * @return : 若通訊錄已滿,返回0 */ void addPerson(Addressbooks *abs) { /* 判斷人數是否已滿 */ if(abs->m_size == MAX){ cout << "通訊錄已滿,無法新增!" << endl; return; } else{ /* 新增聯絡人 */ /* 新增姓名 */ string name1; cout << "請輸入姓名:" << endl; cin >> name1; abs->personArray[abs->m_size].m_Name = name1; /* 新增性別 */ int sex = 0; cout << "請輸入性別:" << endl; cout << "1 --- 男" << endl; cout << "2 --- 女:" << endl; while (true) { /* 判斷輸入是否有誤,若有錯誤則重新輸入 */ cin >> sex; if (sex == 1 || sex == 2) { abs->personArray[abs->m_size].m_Sex = sex; break; } else { cout << "輸入格式不正確!" << endl; } } /* 新增年齡 */ int age = 0; cout << "請輸入年齡:" << endl; while (true) { /* 判斷輸入是否有誤,若有錯誤則重新輸入 */ cin >> age; if (age > 0 && age <= 120) { abs->personArray[abs->m_size].m_Age = age; break; } else { cout << "輸入數值不正確!" << endl; } } /* 新增電話 */ string phone; cout << "請輸入聯絡電話:" << endl; cin >> phone; abs->personArray[abs->m_size].m_Phone = phone; /* 新增住址 */ string address; cout << "請輸入住址:" << endl; cin >> address; abs->personArray[abs->m_size].m_Addr = address; /* 更新通訊錄人數 */ abs->m_size++; cout << "新增成功" << endl; system("pause"); /* 按任意鍵繼續 */ system("cls"); /* 清屏操作 */ } } /* * @Description : 顯示聯絡人 * @param - abs : 通訊錄結構體變數 * @return : 無 */ void showPerson(Addressbooks *abs) { /* 判斷通訊錄是否為空 */ if (abs->m_size == 0){ cout << "當前記錄為空" << endl; } else{ for (int i = 0; i < abs->m_size; i++) { cout << "姓名:" << abs->personArray[i].m_Name << endl; cout << "性別:" << (abs->personArray[i].m_Sex == 1 ? "男" : "女") << endl; cout << "年齡:" << abs->personArray[i].m_Age << endl; cout << "電話:" << abs->personArray[i].m_Phone << endl; cout << "住址:" << abs->personArray[i].m_Addr << endl; cout << endl; } } system("pause"); /* 按任意鍵繼續 */ system("cls"); /* 清屏操作 */ } /* * @Description : 檢測聯絡人是否存在 * @param - abs : 通訊錄 * @param - name : 對比名字 * @return : 如果存在,返回聯絡人所在陣列中的具體位置; * 如果不存在,返回 -1 */ int isExist(Addressbooks *abs, string name) { for (int i = 0; i < abs->m_size; i++){ /* 如果找到了一樣的使用者 */ if (abs->personArray[i].m_Name == name){ return i; } } return -1; } /* * @Description : 刪除指定聯絡人 * @param - abs : 通訊錄結構體變數 * @return : 無 */ void deletePerson(Addressbooks *abs) { cout << "請輸入您要刪除的聯絡人" << endl; string name; cin >> name; /* * ret == -1 未查到 * ret != -1 查到 */ int ret = isExist(abs, name); if (ret != -1){ /* 查詢到此人,進行刪除操作 */ for (int i = ret; i < abs->m_size; i++){ /* 從此人開始,將後一個數據覆蓋到前一個數據的位置上,從而實現刪除功能 */ abs->personArray[i] = abs->personArray[i+1]; } /* 更細通訊錄人數 */ abs->m_size--; cout << "刪除聯絡人成功" << endl; } else { cout << "查無此人" << endl; } system("pause"); /* 按任意鍵繼續 */ system("cls"); /* 清屏操作 */ } /* * @Description : 查詢指定聯絡人資訊 * @param - abs : 通訊錄結構體變數 * @return : 無 */ void findPerson(Addressbooks *abs) { cout << "請輸入您要查詢的聯絡人" << endl; string name; cin >> name; /* * 判斷指定的聯絡人是狗存在通訊錄中 * ret == -1 未查到 * ret != -1 查到 */ int ret = isExist(abs, name); if (ret != -1){ /* 查詢到此人,進行操作 */ cout << "姓名:" << abs->personArray[ret].m_Name << endl; cout << "性別:" << (abs->personArray[ret].m_Sex == 1 ? "男" : "女") << endl; cout << "年齡:" << abs->personArray[ret].m_Age << endl; cout << "電話:" << abs->personArray[ret].m_Phone << endl; cout << "住址:" << abs->personArray[ret].m_Addr << endl; cout << endl; } else { cout << "查無此人" << endl; } system("pause"); /* 按任意鍵繼續 */ system("cls"); /* 清屏操作 */ } /* * @Description : 修改指定聯絡人資訊 * @param - abs : 通訊錄結構體變數 * @return : 無 */ void modifyPerson(Addressbooks *abs) { cout << "請輸入您要修改的聯絡人" << endl; string name; cin >> name; /* * 判斷指定的聯絡人是狗存在通訊錄中 * ret == -1 未查到 * ret != -1 查到 */ int ret = isExist(abs, name); if (ret != -1){ /* 查詢到此人,進行操作 */ /* 修改姓名 */ string name1; cout << "請輸入姓名:" << endl; cin >> name1; abs->personArray[ret].m_Name = name1; /* 修改性別 */ int sex = 0; cout << "請輸入性別:" << endl; cout << "1 --- 男" << endl; cout << "2 --- 女:" << endl; while (true) { /* 判斷輸入是否有誤,若有錯誤則重新輸入 */ cin >> sex; if (sex == 1 || sex == 2) { abs->personArray[ret].m_Sex = sex; break; } else { cout << "輸入格式不正確!" << endl; } } /* 修改年齡 */ int age = 0; cout << "請輸入年齡:" << endl; while (true) { /* 判斷輸入是否有誤,若有錯誤則重新輸入 */ cin >> age; if (age > 0 && age <= 120) { abs->personArray[ret].m_Age = age; break; } else { cout << "輸入數值不正確!" << endl; } } /* 修改電話 */ string phone; cout << "請輸入練習電話:" << endl; cin >> phone; abs->personArray[ret].m_Phone = phone; /* 修改住址 */ string address; cout << "請輸入住址:" << endl; cin >> address; abs->personArray[ret].m_Addr = address; cout << "修改聯絡人成功" << endl; } else { cout << "查無此人" << endl; } system("pause"); /* 按任意鍵繼續 */ system("cls"); /* 清屏操作 */ } /* * @Description : 清空聯絡人 * @param - abs : 通訊錄結構體變數 * @return : 無 */ void cleanPerson(Addressbooks *abs) { abs->m_size = 0; cout << "通訊錄已清空" << endl; system("pause"); /* 按任意鍵繼續 */ system("cls"); /* 清屏操作 */ } /* * @Description: main函式 * @param : 無 * @return : 無 */ int main() { //system("chcp 65001 > nul"); /* 在不同編碼環境下得以正常顯示中文漢字 */ int select = 0; /* 使用者選擇變數 */ Addressbooks abs; /* 建立通訊錄結構體變數 */ abs.m_size = 0; /* 初始化通訊錄當前人員個數 */ while (true) { showMenu(); /* 選單呼叫 */ cout << "請輸入你要使用的功能序號:" << endl; 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; } } }

介面

在這裡插入圖片描述

最後

個人練習寫的,主要用來複習鞏固C++基礎語法知識,以及規範自己的程式碼結構和註釋。