C++實(shí)現(xiàn)簡(jiǎn)單通訊錄系統(tǒng)
本文實(shí)例為大家分享了C++實(shí)現(xiàn)簡(jiǎn)單通訊錄系統(tǒng)的具體代碼,供大家參考,具體內(nèi)容如下
需求分析:
1.通訊錄可以添加聯(lián)系人。
2.通訊錄可以顯示所有聯(lián)系人。
3.通訊錄可以查找聯(lián)系人。
4.通訊錄可以刪除聯(lián)系人。
5.通訊錄可以修改聯(lián)系人。
6.可以清空通訊錄。
7.退出通訊錄。
項(xiàng)目代碼:
#include<iostream>
#include<string>
#include<stdlib.h>
using namespace std;
#define MAX 1000
typedef struct person { ? ? ? ? ? ? ? ? ? ? //定義一個(gè)聯(lián)系人的結(jié)構(gòu)體
? ? string name;
? ? string sex;
? ? int age;
? ? int telnumber;
? ? string addr;
}person;
typedef struct Addressbooks { ? ? ? ? ? ? ? ? //定義一個(gè)通訊錄,自帶一個(gè)聯(lián)系人數(shù)組,里面可以存放MAX個(gè)聯(lián)系人
? ? struct person personArray[MAX];
? ? int m_size=0;
}Addressbooks;
void Menu() { ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//菜單函數(shù)
? ? cout << " ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?通訊錄管理系統(tǒng)" << endl;
? ? cout << "" << endl;
? ? cout << "" << endl;
? ? cout << " ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?1--添加聯(lián)系人" << endl;
? ? cout << " ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?2--顯示聯(lián)系人" << endl;
? ? cout << " ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?3--刪除聯(lián)系人" << endl;
? ? cout << " ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?4--查找聯(lián)系人" << endl;
? ? cout << " ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?5--修改聯(lián)系人" << endl;
? ? cout << " ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?6--清空聯(lián)系人" << endl;
? ? cout << " ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?7--退出聯(lián)系人" << endl;
}
void addPerson(Addressbooks* abs) { ? ? ? ? ? ? ? ? //添加聯(lián)系人的函數(shù)實(shí)現(xiàn)
? ? if (abs->m_size == MAX) {
? ? ? ? cout << "此通訊錄已滿,不能添加\n" << endl;
? ? }
? ? else {
? ? ? ? string name;
? ? ? ? string sex;
? ? ? ? int age;
? ? ? ? int telnumber;
? ? ? ? string addr;
? ? ? ? cout << "請(qǐng)輸入聯(lián)系人姓名:" << endl;
? ? ? ? cin >> name;
? ? ? ? abs->personArray[abs->m_size].name = name;
? ? ? ? cout << "請(qǐng)輸入聯(lián)系人性別:" << endl;
? ? ? ? cin >> sex;
? ? ? ? abs->personArray[abs->m_size].sex = sex;
? ? ? ? cout << "請(qǐng)輸入聯(lián)系人年齡:" << endl;
? ? ? ? cin >> age;
? ? ? ? abs->personArray[abs->m_size].age = age;
? ? ? ? cout << "請(qǐng)輸入聯(lián)系人電話號(hào)碼:" << endl;
? ? ? ? cin >> telnumber;
? ? ? ? abs->personArray[abs->m_size].telnumber = telnumber;
? ? ? ? cout << "請(qǐng)輸入聯(lián)系人家庭住址:" << endl;
? ? ? ? cin >> addr;
? ? ? ? abs->personArray[abs->m_size].addr = addr;
? ? ? ? abs->m_size++;
? ? ? ? cout << "添加成功!!!" << endl;
? ? ? ? system("pause"); ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//利用這行語(yǔ)句達(dá)到一個(gè)顯示按任意鍵繼續(xù)的效果
? ? ? ? system("cls"); ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//清空整個(gè)屏幕,刷新屏幕
? ? }
}
void showPerson(Addressbooks* abs) { ? ? ? ? ? ? ? ? ? ?//顯示整個(gè)通訊錄中聯(lián)系人的函數(shù)實(shí)現(xiàn)
? ? for (int i = 0; i < abs->m_size; i++) {
? ? ? ? cout << abs->personArray[i].name << " " << abs->personArray[i].sex << " " << abs->personArray[i].age << " " << abs->personArray[i].telnumber << " " << abs->personArray[i].addr << endl;
? ? }
? ? system("pause");
? ? system("cls");
}
int selectPerson(Addressbooks* abs,string name) { ? ? ? ? ? ? ? ? ? //查詢輸入的聯(lián)系人是否存在,存在返回聯(lián)系人坐在的下標(biāo)值,不存在則返回-1
? ? for (int i = 0; i < abs->m_size; i++) {
? ? ? ? if (abs->personArray[i].name == name) {
? ? ? ? ? ? return i;
? ? ? ? }
? ? }
? ? return -1;
}
void deletePerson(Addressbooks* abs) { ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//刪除聯(lián)系人的函數(shù)實(shí)現(xiàn)
? ? string name;
? ? cout << "請(qǐng)輸入刪除聯(lián)系人的名字:" << endl;
? ? cin >> name;
? ? if (selectPerson(abs, name) != -1) {
? ? ? ? for (int i = selectPerson(abs, name); i < abs->m_size;i++) {
? ? ? ? ? ? abs->personArray[i] = abs->personArray[i + 1];
? ? ? ? }
? ? ? ? abs->m_size--;
? ? ? ? cout << "刪除成功" << endl;
? ? }
? ? else {
? ? ? ? cout << "查無(wú)此人" << endl;
? ? }
? ? system("pause");
? ? system("cls");
}
void searchPerson(Addressbooks* abs) { ? ? ? ? ? ? ? ? ? ? ?//查詢聯(lián)系人并輸出相關(guān)信息的函數(shù)實(shí)現(xiàn)
? ? string name;
? ? cout << "請(qǐng)輸入聯(lián)系人姓名:" << endl;
? ? cin >> name;
? ? int ret = selectPerson(abs, name);
? ? if (ret != -1) {
? ? ? ? cout << abs->personArray[ret].name << " " << abs->personArray[ret].sex << " " << abs->personArray[ret].age << " " << abs->personArray[ret].telnumber << " " << abs->personArray[ret].addr << endl;
? ? }
? ? else {
? ? ? ? cout << "查無(wú)此人" << endl;
? ? }
? ? system("pause");
? ? system("cls");
}
void revisePerson(Addressbooks* abs) { ? ? ? ? ? ? ? ? ? ? ?//修改聯(lián)系人的函數(shù)實(shí)現(xiàn)
? ? string name;
? ? cout << "請(qǐng)選擇聯(lián)系人 :" << endl;
? ? cin >> name;
? ? int ret;
? ? ret = selectPerson(abs, name);
? ? if (ret != -1) {
? ? ? ? cout << " ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 1--修改姓名" << endl;
? ? ? ? cout << " ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 2--修改性別" << endl;
? ? ? ? cout << " ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 3--修改年齡" << endl;
? ? ? ? cout << " ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 4--修改電話號(hào)碼" << endl;
? ? ? ? cout << " ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 5--修改家庭住址" << endl;
? ? ? ? cout << " ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 0--退出" << endl;
? ? ? ? int chosen;
? ? ? ? while (1) {?
? ? ? ? cout << "選擇:"<<endl;
? ? ? ? cin >> chosen;
? ? ? ? ? ? switch (chosen)
? ? ? ? ? ? {
? ? ? ? ? ? case 1:
? ? ? ? ? ? {
? ? ? ? ? ? ? ? string name2;
? ? ? ? ? ? ? ? cout << "修改名字:" << endl;
? ? ? ? ? ? ? ? cin >> name2;
? ? ? ? ? ? ? ? abs->personArray[ret].name = name2;
? ? ? ? ? ? ? ? break;
? ? ? ? ? ? }
? ? ? ? ? ? case 2:
? ? ? ? ? ? {
? ? ? ? ? ? ? ? string sex;
? ? ? ? ? ? ? ? cout << "修改性別:" << endl;
? ? ? ? ? ? ? ? cin >> sex;
? ? ? ? ? ? ? ? abs->personArray[ret].sex = sex;
? ? ? ? ? ? ? ? break;
? ? ? ? ? ? }
? ? ? ? ? ? case 3:
? ? ? ? ? ? {
? ? ? ? ? ? ? ? int age;
? ? ? ? ? ? ? ? cout << "修改年齡:" << endl;
? ? ? ? ? ? ? ? cin >> age;
? ? ? ? ? ? ? ? abs->personArray[ret].age = age;
? ? ? ? ? ? ? ? break;
? ? ? ? ? ? }
? ? ? ? ? ? case 4:
? ? ? ? ? ? {
? ? ? ? ? ? ? ? int tel;
? ? ? ? ? ? ? ? cout << "修改電話號(hào)碼:" << endl;
? ? ? ? ? ? ? ? cin >> tel;
? ? ? ? ? ? ? ? abs->personArray[ret].telnumber = tel;
? ? ? ? ? ? ? ? break;
? ? ? ? ? ? }
? ? ? ? ? ? case 5:
? ? ? ? ? ? {
? ? ? ? ? ? ? ? string addr;
? ? ? ? ? ? ? ? cout << "修改住址:" << endl;
? ? ? ? ? ? ? ? cin >> addr;
? ? ? ? ? ? ? ? abs->personArray[ret].addr = addr;
? ? ? ? ? ? ? ? break;
? ? ? ? ? ? }
? ? ? ? ? ? case 0:
? ? ? ? ? ? goto FLAG1;
? ? ? ? ? ? default:
? ? ? ? ? ? ? ? break;
? ? ? ? ? ? }
? ? ? ? }
? ? }
? ? else {
? ? ? ? cout << "查無(wú)此人!!!" << endl;
? ? }
? ? FLAG1:
? ? system("pause");
? ? system("cls");
}
void clear(Addressbooks* abs) {
? ? abs->m_size = 0;
? ? cout << "此通訊錄已清空!!!" << endl;
? ? system("pause");
? ? system("cls");
}
int main() {
? ? Addressbooks book1; ? ? ? ? ? ? ? ? ? ? ? ? ? ? //先定義一個(gè)通訊錄,并添加一個(gè)聯(lián)系人hyp
? ? book1.personArray[0].name = "hyp"; ? ? ? ? ? ? ?
? ? book1.personArray[0].sex = "man";
? ? book1.personArray[0].age = 21;
? ? book1.personArray[0].telnumber = 76766767;
? ? book1.personArray[0].addr = "重慶";
? ? book1.m_size = 1;
? ? int chosen; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? while (1) {
? ? ? ? Menu();
? ? ? ? cout << "選擇:" ;
? ? ? ? cin >> chosen;
? ? ? ? switch (chosen)
? ? ? ? {
? ? ? ? case 1: ? ? ? ? ? ? ? ? ? ? ? ? ? ? //添加聯(lián)系人
? ? ? ? ? ? addPerson(&book1);
? ? ? ? ? ? break;
? ? ? ? case 2: ? ? ? ? ? ? ? ? ? ? ? ? ? ? //顯示聯(lián)系人
? ? ? ? ? ? showPerson(&book1);
? ? ? ? ? ? break;
? ? ? ? case 3: ? ? ? ? ? ? ? ? ? ? ? ? ? ? //刪除聯(lián)系人
? ? ? ? ? ? deletePerson(&book1);
? ? ? ? ? ? break;
? ? ? ? case 4: ? ? ? ? ? ? ? ? ? ? ? ? ? ? //查找聯(lián)系人
? ? ? ? ? ? searchPerson(&book1);
? ? ? ? ? ? break;
? ? ? ? case 5: ? ? ? ? ? ? ? ? ? ? ? ? ? ? //修改聯(lián)系人
? ? ? ? ? ? revisePerson(&book1);
? ? ? ? ? ? break;
? ? ? ? case 6: ? ? ? ? ? ? ? ? ? ? ? ? ? ? //清空聯(lián)系人
? ? ? ? ? ? clear(&book1);
? ? ? ? ? ? break;
? ? ? ? case 7: ? ? ? ? ? ? ? ? ? ? ? ? ? ? //退出通訊錄
? ? ? ? ? ? return 0;
? ? ? ? ? ? break;
? ? ? ? default:
? ? ? ? ? ? break;
? ? ? ? }
?
? ? }
? ? return 0;
}效果:
顯示聯(lián)系人

添加聯(lián)系人

后面效果就不一一顯示了
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
C語(yǔ)言判斷一個(gè)數(shù)是否為素?cái)?shù)方法解析
這篇文章主要介紹了C語(yǔ)言判斷一個(gè)數(shù)是否為素?cái)?shù)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07
C++使用遞歸方法求n階勒讓德多項(xiàng)式完整實(shí)例
這篇文章主要介紹了C++使用遞歸方法求n階勒讓德多項(xiàng)式,涉及C++遞歸算法與浮點(diǎn)數(shù)運(yùn)算的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2016-05-05
詳解桶排序算法的思路及C++編程中的代碼實(shí)現(xiàn)
桶排序即是先把每個(gè)桶中的元素進(jìn)行排序然后遍歷桶依次列出元素的算法,桶排序在元素較少的情況下很高效,以下我們就來(lái)詳解桶排序算法的思路及C++編程中的代碼實(shí)現(xiàn):2016-07-07

