C++實現(xiàn)簡單版通訊錄管理系統(tǒng)
這個通訊錄管理系統(tǒng)是我聽課后做的筆記,都是很基礎(chǔ)的邏輯實現(xiàn),第一次動手寫了一個小案例感覺找到了一點方向,也希望能幫到一點忙!
1、系統(tǒng)需求
通訊錄是一個可以記錄親人、好友信息的工具。 本教程主要利用C++來實現(xiàn)一個通訊錄管理系統(tǒng) 系統(tǒng)中需要實現(xiàn)的功能如下:
添加聯(lián)系人:向通訊錄中添加新人,信息包括(姓名、性別、年齡、聯(lián)系電話、家庭住址)最多記錄1000人 顯示聯(lián)系人:顯示通訊錄所有聯(lián)系人信息
刪除聯(lián)系人:按照姓名進行刪除指定聯(lián)系人 查找聯(lián)系人:按照姓名查看指定聯(lián)系人信息 修改聯(lián)系人:按照姓名重新修改指定聯(lián)系人
清空聯(lián)系人:清空通訊錄中所有信息 退出通訊錄:退出當(dāng)前使用的通訊錄
2、創(chuàng)建項目
3、菜單功能
功能描述:用戶選擇功能的界面
步驟:
封裝函數(shù)顯示該界面,如:void showMenu() 在main函數(shù)中調(diào)用封裝好的函數(shù)
void mean() { ? ? cout << "1、創(chuàng)建聯(lián)系人" << endl; ? ? cout << "2、顯示練習(xí)人" << endl; ? ? cout << "3、刪除練習(xí)人" << endl; ? ? cout << "4、查找聯(lián)系人" << endl; ? ? cout << "5、修改聯(lián)系人" << endl; ? ? cout << "6、清空聯(lián)系人" << endl; ? ? cout << "0、退出通訊錄" << endl; }
4、退出功能
功能描述:退出通訊錄系統(tǒng)
思路:根據(jù)用戶不同的選擇,進入不同的功能,可以選擇switch分支結(jié)構(gòu),將整個架構(gòu)進行搭建
當(dāng)用戶選擇0的時候,執(zhí)行退出,選擇其他先不做操作,也不會退出程序
cout << "歡迎下次使用系統(tǒng)" << endl; ? ? ? ? ? ? ? ? system("pause"); ? ? ? ? ? ? ? ? return 0;
5、添加聯(lián)系人
功能描述:
實現(xiàn)添加聯(lián)系人功能,聯(lián)系人上限為1000人,聯(lián)系人信息包括(姓名、性別、年齡、聯(lián)系電話、家庭住址)
添加聯(lián)系人實現(xiàn)步驟:
設(shè)計聯(lián)系人結(jié)構(gòu)體
設(shè)計通訊錄結(jié)構(gòu)體
main函數(shù)中創(chuàng)建通訊錄
封裝添加聯(lián)系人函數(shù)
測試添加聯(lián)系人功能
5.1 設(shè)計聯(lián)系人結(jié)構(gòu)體
聯(lián)系人信息包括:姓名、性別、年齡、聯(lián)系電話、家庭住址
void addPerson(Arraybooks *abs) { ? ? if(abs -> Size == MAX){ ? ? ? ? cout <<"通訊錄已滿" << endl; ? ? ? ? return; ? ? } ? ? else{ ? ? ? ? string name; ? ? ? ? cout << "輸入姓名" << endl; ? ? ? ? cin >> name; ? ? ? ? abs->ArrayList[abs->Size].name = name; ? ? ? ? cout << "輸入性別" << endl; ? ? ? ? cout <<"1---男" << endl; ? ? ? ? cout <<"2---女" <<endl; ? ? ? ? int sex; ? ? ? ? while(-1){ ? ? ? ? ? ? cin >> sex; ? ? ? ? ? ? if(sex == 1 || sex == 2) { ? ? ? ? ? ? ? ? abs->ArrayList[abs->Size].Sex = sex; ? ? ? ? ? ? ? ? break; ? ? ? ? ? ? } ? ? ? ? ? ? cout << "輸入有誤,請重新輸入"; ? ? ? ? } ? ? ? ? cout << "請輸入年齡" << endl; ? ? ? ? int age = 0; ? ? ? ? cin >> age; ? ? ? ? abs->ArrayList[abs->Size].old = age; ? ? ? ? cout << "請輸入電話:" << endl; ? ? ? ? string phone = " "; ? ? ? ? cin >> phone; ? ? ? ? abs->ArrayList[abs->Size].phone = phone; ? ? ? ? cout << "請輸入地址" << endl; ? ? ? ? string address; ? ? ? ? cin >> address; ? ? ? ? abs->ArrayList[abs->Size].address = address; ? ? ? ? abs->Size++; ? ? ? ? cout << "添加成功" << endl; ? ? ? ? system("pause"); ? ? ? ? system("cls"); ? ? } }
6、顯示聯(lián)系人
功能描述:顯示通訊錄中已有的聯(lián)系人信息
顯示聯(lián)系人實現(xiàn)步驟:
封裝顯示聯(lián)系人函數(shù)
測試顯示聯(lián)系人功能
void showPerson(Arraybooks *abs) { ? ? if(abs->Size == 0){ ? ? ? ? cout << "記錄為空" << endl; ? ? } ? ? else{ ? ? ? ? for(int i = 0;i < abs->Size;i++){ ? ? ? ? ? ? cout << "姓名:" << abs->ArrayList[i].name << "\t"; ? ? ? ? ? ? cout << "性別:" << (abs->ArrayList[i].Sex == 1?"男":"女") ?<< "\t"; ? ? ? ? ? ? cout << "年齡: " << abs->ArrayList[i].old << "\t"; ? ? ? ? ? ? cout << "電話:" <<abs->ArrayList[i].phone << "\t"; ? ? ? ? ? ? cout << "地址: " << abs->ArrayList[i].address << endl; ? ? ? ? } ? ? } ? ? system("pause"); ? ? system("cls"); }
7、刪除聯(lián)系人
實現(xiàn)步驟:
1、封裝檢測聯(lián)系人是否存在
2、封裝刪除聯(lián)系人函數(shù)
3、測試刪除聯(lián)系人功能
7.1 封裝檢測聯(lián)系人是否存在
設(shè)計思路:
刪除聯(lián)系人前,我們需要先判斷用戶的聯(lián)系人是否存在,如果存在刪除,不存在提示用戶沒有要刪除的聯(lián)系人,因此我們可以把檢測聯(lián)系人是否存在封裝成一個函數(shù)中,如果存在,返回聯(lián)系人在通訊錄中的位置,不存在返回-1。
int isExist(Arraybooks * abs , string name) { ? ? for (int i = 0; i < abs->Size; ++i) { ? ? ? ? if(abs->ArrayList[i].name == name){ ? ? ? ? ? ? return i; ? ? ? ? } ? ? ? ? } ? ? return -1; ? ? }
7.2 封裝刪除聯(lián)系人函數(shù)
根據(jù)用戶輸入的聯(lián)系人判斷該通訊錄中是否有此人
查找到進行刪除,并提示刪除成功
查不到提示查無此人
void DalatePerson(Arraybooks *abs ) { ? ? cout << "輸入你要刪除的聯(lián)系人" << endl; ? ? string name; ? ? cin >> name; ? ? int ret = isExist(abs, name); ? ? if(ret != -1){ ? ? ? ? for (int i = 0; i < abs->Size; ++i) { ? ? ? ? ? ? abs->ArrayList[i].name = abs->ArrayList[i+1].name; ? ? ? ? ? ? abs->Size--; ? ? ? ? } ? ? ? ? cout << "刪除成功" << endl; ? ? } ? ? else{ ? ? ? ? cout << "查無此人" << endl; ? ? } ? ? system("pause"); ? ? system("cls"); }
8、查找聯(lián)系人
功能描述:按照姓名查看指定聯(lián)系人信息
查找聯(lián)系人實現(xiàn)步驟
1、封裝查找聯(lián)系人函數(shù)
2、測試查找指定聯(lián)系人
8.1 封裝查找聯(lián)系人函數(shù)
實現(xiàn)思路:判斷用戶指定的聯(lián)系人是否存在,如果存在顯示信息,不存在則提示查無此人。
void findPerson(Arraybooks * abs) { ? ? cout << "請輸入要查找的人:" << endl; ? ? string name; ? ? cin >> name; ? ? int ret = isExist(abs , name); ? ? if(ret != -1){ ? ? ? ? cout << "姓名 : " << abs->ArrayList[ret].name<<endl; ? ? ? ? cout << "性別 : " ?<< abs->ArrayList[ret].Sex<< endl; ? ? ? ? cout << "年齡 : " << abs->ArrayList[ret].old <<endl; ? ? ? ? cout << "電話 : " << abs->ArrayList[ret].phone<<endl; ? ? ? ? cout << "地址 :" << abs->ArrayList[ret].address<<endl; ? ? } ? ? else{ ? ? ? ? cout << "查無此人" <<endl; ? ? } ? ? system("pause"); ? ? system("cls"); }
9、修改聯(lián)系人
功能描述:按照姓名重新修改指定聯(lián)系人
修改聯(lián)系人實現(xiàn)步驟
1、封裝修改聯(lián)系人函數(shù)
2、測試修改聯(lián)系人功能
9.1 封裝修改聯(lián)系人函數(shù)
實現(xiàn)思路:查找用戶輸入的聯(lián)系人,如果查找成功進行修改操作,查找失敗提示查無此人。
void modifyPerson(Arraybooks * abs) { ? ? cout << "輸入你要修改的聯(lián)系人" << endl; ? ? string name; ? ? cin >> name; ? ? int ret = isExist(abs, name); ? ? if (ret != -1) { ? ? ? ? cout << "請輸入姓名:" << endl; ? ? ? ? string name; ? ? ? ? cin >> name; ? ? ? ? abs->ArrayList[ret].name = name; ? ? ? ? cout << "請輸入性別:" << endl; ? ? ? ? cout << "1---男" << endl; ? ? ? ? cout << "2---女" << endl; ? ? ? ? int sex; ? ? ? ? cin >> sex; ? ? ? ? while (true) { ? ? ? ? ? ? if (sex == 1 || sex == 2) { ? ? ? ? ? ? ? ? abs->ArrayList[ret].Sex = sex; ? ? ? ? ? ? ? ? break; ? ? ? ? ? ? } else { ? ? ? ? ? ? ? ? cout << "輸入錯誤" << endl; ? ? ? ? ? ? } ? ? ? ? } ? ? ? ? cout << "輸入年齡:" << endl; ? ? ? ? int old = 0; ? ? ? ? cin >> old; ? ? ? ? abs->ArrayList[ret].old = old; ? ? ? ? cout << "輸入電話" << endl; ? ? ? ? string phone; ? ? ? ? cin >> phone; ? ? ? ? abs->ArrayList[ret].phone = phone; ? ? ? ? cout << "輸入地址" << endl; ? ? ? ? string address; ? ? ? ? cin >> address; ? ? ? ? abs->ArrayList[ret].address = address; ? ? ? ? cout << "修改成功" << endl; ? ? } ? ? else{ ? ? ? ? cout << "查無此人" <<endl; ? ? } ? ? system("pause"); ? ? system("cls"); }
10、清空聯(lián)系人
功能描述:清空通訊錄中所有信息
清空聯(lián)系人實現(xiàn)步驟
1、封裝清空聯(lián)系人函數(shù)
2、測試清空聯(lián)系人10.1封裝清空聯(lián)系人函數(shù)
實現(xiàn)思路:將通訊錄所有聯(lián)系人信息清楚掉,只要將通訊錄記錄的聯(lián)系人數(shù)量置為0,做邏輯清空即可。
void cleanPerson(Arraybooks * abs){ ? ? abs->Size = 0; ? ? cout << "清空完成" << endl; ? ? system("pause"); ? ? system("cls"); }
整段代碼:
#include <iostream> using namespace std; #include <string> #define MAX 100 struct Person { ? ? string name; ? ? int Sex; ? ? int old; ? ? string phone; ? ? string address; }; struct Arraybooks { ? ? struct Person ArrayList[MAX]; ? ? int Size; }; void addPerson(Arraybooks *abs) { ? ? if(abs -> Size == MAX){ ? ? ? ? cout <<"通訊錄已滿" << endl; ? ? ? ? return; ? ? } ? ? else{ ? ? ? ? string name; ? ? ? ? cout << "輸入姓名" << endl; ? ? ? ? cin >> name; ? ? ? ? abs->ArrayList[abs->Size].name = name; ? ? ? ? cout << "輸入性別" << endl; ? ? ? ? cout <<"1---男" << endl; ? ? ? ? cout <<"2---女" <<endl; ? ? ? ? int sex; ? ? ? ? while(-1){ ? ? ? ? ? ? cin >> sex; ? ? ? ? ? ? if(sex == 1 || sex == 2) { ? ? ? ? ? ? ? ? abs->ArrayList[abs->Size].Sex = sex; ? ? ? ? ? ? ? ? break; ? ? ? ? ? ? } ? ? ? ? ? ? cout << "輸入有誤,請重新輸入"; ? ? ? ? } ? ? ? ? cout << "請輸入年齡" << endl; ? ? ? ? int age = 0; ? ? ? ? cin >> age; ? ? ? ? abs->ArrayList[abs->Size].old = age; ? ? ? ? cout << "請輸入電話:" << endl; ? ? ? ? string phone = " "; ? ? ? ? cin >> phone; ? ? ? ? abs->ArrayList[abs->Size].phone = phone; ? ? ? ? cout << "請輸入地址" << endl; ? ? ? ? string address; ? ? ? ? cin >> address; ? ? ? ? abs->ArrayList[abs->Size].address = address; ? ? ? ? abs->Size++; ? ? ? ? cout << "添加成功" << endl; ? ? ? ? system("pause"); ? ? ? ? system("cls"); ? ? } } void showPerson(Arraybooks *abs) { ? ? if(abs->Size == 0){ ? ? ? ? cout << "記錄為空" << endl; ? ? } ? ? else{ ? ? ? ? for(int i = 0;i < abs->Size;i++){ ? ? ? ? ? ? cout << "姓名:" << abs->ArrayList[i].name << "\t"; ? ? ? ? ? ? cout << "性別:" << (abs->ArrayList[i].Sex == 1?"男":"女") ?<< "\t"; ? ? ? ? ? ? cout << "年齡: " << abs->ArrayList[i].old << "\t"; ? ? ? ? ? ? cout << "電話:" <<abs->ArrayList[i].phone << "\t"; ? ? ? ? ? ? cout << "地址: " << abs->ArrayList[i].address << endl; ? ? ? ? } ? ? } ? ? system("pause"); ? ? system("cls"); } int isExist(Arraybooks * abs , string name) { ? ? for (int i = 0; i < abs->Size; ++i) { ? ? ? ? if(abs->ArrayList[i].name == name){ ? ? ? ? ? ? return i; ? ? ? ? } ? ? } ? ? return -1; } void DalatePerson(Arraybooks *abs ) { ? ? cout << "輸入你要刪除的聯(lián)系人" << endl; ? ? string name; ? ? cin >> name; ? ? int ret = isExist(abs, name); ? ? if(ret != -1){ ? ? ? ? for (int i = 0; i < abs->Size; ++i) { ? ? ? ? ? ? abs->ArrayList[i].name = abs->ArrayList[i+1].name; ? ? ? ? ? ? abs->Size--; ? ? ? ? } ? ? ? ? cout << "刪除成功" << endl; ? ? } ? ? else{ ? ? ? ? cout << "查無此人" << endl; ? ? } ? ? system("pause"); ? ? system("cls"); } void findPerson(Arraybooks * abs) { ? ? cout << "請輸入要查找的人:" << endl; ? ? string name; ? ? cin >> name; ? ? int ret = isExist(abs , name); ? ? if(ret != -1){ ? ? ? ? cout << "姓名 : " << abs->ArrayList[ret].name<<endl; ? ? ? ? cout << "性別 : " ?<< abs->ArrayList[ret].Sex<< endl; ? ? ? ? cout << "年齡 : " << abs->ArrayList[ret].old <<endl; ? ? ? ? cout << "電話 : " << abs->ArrayList[ret].phone<<endl; ? ? ? ? cout << "地址 :" << abs->ArrayList[ret].address<<endl; ? ? } ? ? else{ ? ? ? ? cout << "查無此人" <<endl; ? ? } ? ? system("pause"); ? ? system("cls"); } void modifyPerson(Arraybooks * abs) { ? ? cout << "輸入你要修改的聯(lián)系人" << endl; ? ? string name; ? ? cin >> name; ? ? int ret = isExist(abs, name); ? ? if (ret != -1) { ? ? ? ? cout << "請輸入姓名:" << endl; ? ? ? ? string name; ? ? ? ? cin >> name; ? ? ? ? abs->ArrayList[ret].name = name; ? ? ? ? cout << "請輸入性別:" << endl; ? ? ? ? cout << "1---男" << endl; ? ? ? ? cout << "2---女" << endl; ? ? ? ? int sex; ? ? ? ? cin >> sex; ? ? ? ? while (true) { ? ? ? ? ? ? if (sex == 1 || sex == 2) { ? ? ? ? ? ? ? ? abs->ArrayList[ret].Sex = sex; ? ? ? ? ? ? ? ? break; ? ? ? ? ? ? } else { ? ? ? ? ? ? ? ? cout << "輸入錯誤" << endl; ? ? ? ? ? ? } ? ? ? ? } ? ? ? ? cout << "輸入年齡:" << endl; ? ? ? ? int old = 0; ? ? ? ? cin >> old; ? ? ? ? abs->ArrayList[ret].old = old; ? ? ? ? cout << "輸入電話" << endl; ? ? ? ? string phone; ? ? ? ? cin >> phone; ? ? ? ? abs->ArrayList[ret].phone = phone; ? ? ? ? cout << "輸入地址" << endl; ? ? ? ? string address; ? ? ? ? cin >> address; ? ? ? ? abs->ArrayList[ret].address = address; ? ? ? ? cout << "修改成功" << endl; ? ? } ? ? else{ ? ? ? ? cout << "查無此人" <<endl; ? ? } ? ? system("pause"); ? ? system("cls"); } void cleanPerson(Arraybooks * abs){ ? ? abs->Size = 0; ? ? cout << "清空完成" << endl; ? ? system("pause"); ? ? system("cls"); } void mean() { ? ? cout << "1、創(chuàng)建聯(lián)系人" << endl; ? ? cout << "2、顯示練習(xí)人" << endl; ? ? cout << "3、刪除練習(xí)人" << endl; ? ? cout << "4、查找聯(lián)系人" << endl; ? ? cout << "5、修改聯(lián)系人" << endl; ? ? cout << "6、清空聯(lián)系人" << endl; ? ? cout << "0、退出通訊錄" << endl; } int main() { ? ? Arraybooks abs; ? ? abs.Size = 0; ? ? int istream = 0; ? ? while(true){ ? ? ? ? mean(); ? ? ? ? cin >> istream; ? ? ? ? switch(istream){ ? ? ? ? ? ? case 1: ? ? ? ? ? ? ? ? addPerson(&abs); ? ? ? ? ? ? ? ? break; ? ? ? ? ? ? case 2: ? ? ? ? ? ? ? ? showPerson(&abs); ? ? ? ? ? ? ? ? break; ? ? ? ? ? ? case 3: ? ? ? ? ? ? ? ? DalatePerson(&abs); ? ? ? ? ? ? ? ? break; ? ? ? ? ? ? case 4: ? ? ? ? ? ? ? ? findPerson(&abs); ? ? ? ? ? ? ? ? break; ? ? ? ? ? ? case 5: ? ? ? ? ? ? ? ? modifyPerson(&abs); ? ? ? ? ? ? ? ? break; ? ? ? ? ? ? case 6: ? ? ? ? ? ? ? ? cleanPerson(&abs); ? ? ? ? ? ? ? ? break; ? ? ? ? ? ? case 0: ? ? ? ? ? ? ? ? cout << "歡迎下次使用系統(tǒng)" << endl; ? ? ? ? ? ? ? ? system("pause"); ? ? ? ? ? ? ? ? return 0; ? ? ? ? } ? ? } ? ? return 0; }
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
C語言SetConsoleCursorInfo函數(shù)使用方法
這篇文章介紹了C語言SetConsoleCursorInfo函數(shù)的使用方法,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-12-12C++高級數(shù)據(jù)結(jié)構(gòu)之二叉查找樹
這篇文章主要介紹了C++高級數(shù)據(jù)結(jié)構(gòu)之二叉查找樹,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下2022-05-05