c++小项目:通讯录管理系统
生活随笔
收集整理的這篇文章主要介紹了
c++小项目:通讯录管理系统
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
該項目非常適合新手c++的同學來做(當然也包括我),先看一個通訊錄管理系統需要寫什么東西。
學習于:https://www.bilibili.com/video/BV1et411b73Z?p=75(自我感覺講的超級棒)
其中值得注意的是調用函數需要傳值時,如果不需要改變實參 直接傳值就好了,如果需要改變實參,必須得傳指針(也就是傳址)
然后還有個注意的點就是結構體和結構體指針變量的使用,剩下的就敲代碼了!
?得達到上圖這些功能,成功之后菜單欄顯示如下所示
?
下面就是各個小塊的代碼:
主函數,頭文件和結構體的構造函數的代碼會放在最后面
菜單欄的代碼
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;
}
1.添加聯系人
void addPerson(Addressbooks* abs)
{if (abs->m_size == MAX){cout << "通訊錄已滿" << endl;return;}else{//姓名string name;cout << "請輸入姓名:" << endl;cin >> name;abs->personArray[abs->m_size].m_Name = name;//性別cout << "請輸入性別:" << endl;cout << "1---男" << endl;cout << "2---女" << endl;int sex = 0;while (true){cin >> sex;if (sex == 1 || sex == 2){abs->personArray[abs->m_size].m_Sex = sex;break;}cout << "輸入有誤 請重新輸入" << endl;}//年齡cout << "請輸入年齡 :" << endl;int age = 0;cin >> age;abs->personArray[abs->m_size].m_Age = age;//電話cout << "請輸入電話:" << endl;string phone;cin >> phone;abs->personArray[abs->m_size].m_Phone = phone;//地址cout << "請輸入地址:" << endl;string address;cin >> address;abs->personArray[abs->m_size].m_Adds = address;}//更新通訊錄人數abs->m_size++;cout << "添加成功!!!" << endl;system("pause"); //請按任意鍵繼續system("cls"); //清屏操作
}
2.顯示聯系人
void showPerson(Addressbooks* abs)
{assert(abs != NULL);if (abs->m_size == 0){cout << "當前記錄為空" << endl;}else{for (int i = 0; i < abs->m_size; i++){cout << "姓名:" << abs->personArray[i].m_Name << "\t";cout << "性別:" << abs->personArray[i].m_Sex << "\t";cout << "年齡:" << abs->personArray[i].m_Age << "\t";cout << "電話:" << abs->personArray[i].m_Phone << "\t";cout << "住址:" << abs->personArray[i].m_Adds << endl;}}system("pause"); //請按任意鍵繼續system("cls"); //清屏操作
}
下面有個判斷輸入名字是否在數組中的一個函數,在后面的函數中都會用到
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;
} //查找到的話 返回的是該名字在數組中的下標
3.刪除指定聯系人
void deletePerson(Addressbooks* abs)
{cout << "請輸入要刪除的聯系人姓名:" << endl;string name;cin >> name;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"); //清屏操作
}
4.查找指定聯系人信息
void findPerson(Addressbooks* abs)
{cout << "請輸入您要查找的聯系人:" << endl;string name;cin >> name;int ret = isExist(abs, name);if (ret != -1){cout << "姓名:" << abs->personArray[ret].m_Name << "\t";cout << "性別:" << abs->personArray[ret].m_Sex << "\t";cout << "年齡:" << abs->personArray[ret].m_Age << "\t";cout << "電話:" << abs->personArray[ret].m_Phone << "\t";cout << "住址:" << abs->personArray[ret].m_Adds << endl;}else{cout << "查無此人" << endl;}system("pause"); //請按任意鍵繼續system("cls"); //清屏操作
}
5.修改聯系人
void modifyPerson(Addressbooks* abs)
{cout << "請輸入要修改的聯系人:" << endl;string name;cin >> name;int ret = isExist(abs, name);if (ret != -1){//姓名string name;cout << "請輸入姓名:" << endl;cin >> name;abs->personArray[ret].m_Name = name;//性別cout << "請輸入性別:" << endl;cout << "1---男" << endl;cout << "2---女" << endl;int sex = 0;while (true){cin >> sex;if (sex == 1 || sex == 2){abs->personArray[ret].m_Sex = sex;break;}cout << "輸入有誤,請重新輸入" << endl;}//年齡cout << "請輸入年齡 :" << endl;int age = 0;cin >> age;abs->personArray[ret].m_Age = age;//電話cout << "請輸入電話:" << endl;string phone;cin >> phone;abs->personArray[ret].m_Phone = phone;//住址cout << "請輸入地址:" << endl;string address;cin >> address;abs->personArray[ret].m_Adds = address;cout << "修改成功" << endl;}else{cout << "查無此人" << endl;}system("pause"); //請按任意鍵繼續system("cls"); //清屏操作
}
6.清空通訊錄列表
void clearPerson(Addressbooks* abs)
{abs->m_size = 0;cout << "清除成功" << endl;system("pause"); //請按任意鍵繼續system("cls"); //清屏操作
}
??
主函數:
int main()
{int select = 0; //創建用戶輸入的選擇Addressbooks abs;abs.m_size = 0;//初始化聯系人個數while (true){//菜單調用ShowMenu();cin >> select;switch (select){case 1://showPerson(&abs);addPerson(&abs); //利用地址傳遞,達到修改實參break;case 2:showPerson(&abs);break;case 3:deletePerson(&abs);break;case 4:findPerson(&abs);break;case 5:modifyPerson(&abs);break;case 6:break;case 0:cout << "歡迎下次使用" << endl;system("pause");return 0;break;default:break;}}system("pause");return 0;
}
頭文件包含和結構體設計:
#include<iostream>
using namespace std;
#include<string>
#include<assert.h>
#define MAX 1000//設計聯系人結構體
struct Person
{string m_Name;int m_Sex;//1.男,2.女int m_Age;string m_Phone;string m_Adds;
};//設計通訊錄結構體
struct Addressbooks
{struct Person personArray[MAX]; //聯系人數組int m_size; //記錄通訊錄中聯系人個數
};
不要一天天的把自己菜當作理由,菜是你懶的結果,而不是自己逃避的理由!!!加油!!!
總結
以上是生活随笔為你收集整理的c++小项目:通讯录管理系统的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 丰田威驰16年二手车1.5手动标配多少钱
- 下一篇: C++在堆区创建数组