欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C/C++實現(xiàn)通訊錄管理系統(tǒng)(附源碼)

 更新時間:2022年12月15日 10:37:31   作者:我想當程序y  
這篇文章主要為大家詳細介紹了如何利用C++實現(xiàn)通訊錄管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

首先是程序的功能,該程序主要可以實現(xiàn)以下功能:一)添加聯(lián)系人 二)顯示聯(lián)系人 三)刪除聯(lián)系人 四)查找聯(lián)系人 五)修改聯(lián)系人 六)清空聯(lián)系人 七)退出通訊錄。

程序中用到的知識點主要有:結(jié)構(gòu)體、結(jié)構(gòu)體數(shù)組、指針、函數(shù)等。

程序部分功能展示

以下是部分程序功能演示:

各個功能的代碼實現(xiàn)

菜單

我們首先制作一個程序的菜單,為后續(xù)功能的實現(xiàn)做鋪墊。

我們先編寫一個顯示菜單的函數(shù):

void showMenu(){
  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<<"0.退出通訊錄"<<endl;
}

大家也可以在菜單顯示時改變行距或者加入一些符號讓它變的更美觀~~~ 

然后,在主函數(shù)中定義一個int型的變量select,從鍵盤中輸入select的值完成對于不同功能的選擇,這里用switch case語句來實現(xiàn)。

    int select=0;//創(chuàng)建用戶選擇輸入的變量
    while(1){
        showMenu();
        cin>>select;
 
    switch(select)
    {
case 1://添加聯(lián)系人
    break;
case 2:
    break;//顯示聯(lián)系人
case 3:
    break;
    
case 4: 
        break;//查找聯(lián)系人
case 5:
    break;//修改聯(lián)系人 按照姓名重新修改指定聯(lián)系人
case 6: 
    break;//清空聯(lián)系人 
case 0: //退出通訊錄
        break;
default: break;
    }}

主函數(shù)的主要框架就完成啦~!后續(xù)的功能我們慢慢添加補充。

添加聯(lián)系人

實現(xiàn)該部分功能的步驟如下:

1.定義聯(lián)系人結(jié)構(gòu)體以及通訊錄結(jié)構(gòu)體

2.在主函數(shù)中創(chuàng)建通訊錄

3.封裝添加聯(lián)系人函數(shù)

首先是定義聯(lián)系人結(jié)構(gòu)體和通訊錄結(jié)構(gòu)體 

//設計聯(lián)系人結(jié)構(gòu)體(添加聯(lián)系人)
struct Person{
    string m_Name;//姓名
    int m_Sex;//性別 男1  女2
    int m_Age;//年齡
    string m_Phone;//電話
    string m_Addr;//住址
};
//設計通訊錄結(jié)構(gòu)體(添加聯(lián)系人)
struct Addressbooks{
struct Person personArray[MAX];//通訊錄中保存聯(lián)系人數(shù)組
int m_Size;//記錄當前聯(lián)系人個數(shù)
};

聯(lián)系人結(jié)構(gòu)體中包含聯(lián)系人的姓名、性別、年齡、電話和地址,這里不過多贅述。

通訊錄結(jié)構(gòu)體中包含了一個存儲聯(lián)系人信息的數(shù)組,以及記錄當前聯(lián)系人個數(shù)的變量。注意,數(shù)組的最大限度MAX也就是該通訊錄能存儲的聯(lián)系人個數(shù)的最大值。這里為了方便,我們在程序前面加上 #define MAX 1000 ,方便修改MAX的值。

創(chuàng)建好結(jié)構(gòu)體之后,我們需要在主函數(shù)中創(chuàng)建一個通訊錄。即

Addressbooks abs;

好了,做完準備工作之后,我們就要開始編寫添加聯(lián)系人的函數(shù)了。注意,因為我們需要改變實參的 值,所以函數(shù)的參數(shù)需要為指針,進行地址傳遞。

該函數(shù)主要實現(xiàn)以下功能:判斷通訊錄是否已滿,如果未滿,添加聯(lián)系人信息,如果已滿,提醒用戶,通訊錄已滿,無法添加!

以下是代碼實現(xiàn):

//1.添加聯(lián)系人
void addPerson(Addressbooks * abs)
{ 
    //判斷通訊錄是否已滿
    if(abs->m_Size==MAX){//參數(shù)中的一個項使用.,地址中的一個項使用->,這里的abs是一個地址,所以用->
        //指針要用->
        cout<<"通訊錄已滿,無法添加!"<<endl;
        return;}
    else{
        //添加具體聯(lián)系人
        //姓名
        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(1){
            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<<"請輸入聯(lián)系電話: "<<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_Addr =address ;
        //信息錄入成功,通訊錄人數(shù)加一
        abs->m_Size ++;
        cout<<"添加成功!"<<endl;
        system("pause");//按任意鍵繼續(xù)
        system ("cls");//清屏
    }}

 為了使程序更加的美觀易讀,在完成添加之后,執(zhí)行清屏操作,這里調(diào)用了c++中的系統(tǒng)函數(shù)即system(”cls“)

顯示聯(lián)系人

顯示聯(lián)系人的函數(shù)

完整源碼

以下是完整的源碼

#include<iostream>
using namespace std;
#include<string>
 
#define MAX 1000
//顯示菜單界面
 
//設計聯(lián)系人結(jié)構(gòu)體(添加聯(lián)系人)
struct Person{
	string m_Name;//姓名
	int m_Sex;//性別 男1  女2
	int m_Age;//年齡
	string m_Phone;//電話
	string m_Addr;//住址
};
//設計通訊錄結(jié)構(gòu)體(添加聯(lián)系人)
struct Addressbooks{
struct Person personArray[MAX];//通訊錄中保存聯(lián)系人數(shù)組
int m_Size;//記錄當前聯(lián)系人個數(shù)
};
 
 
//1.添加聯(lián)系人
void addPerson(Addressbooks * abs)
{ 
	//判斷通訊錄是否已滿
	if(abs->m_Size==MAX){//參數(shù)中的一個項使用.,地址中的一個項使用->,這里的abs是一個地址,所以用->
		//指針要用->
		cout<<"通訊錄已滿,無法添加!"<<endl;
		return;}
	else{
		//添加具體聯(lián)系人
		//姓名
		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(1){
			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<<"請輸入聯(lián)系電話: "<<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_Addr =address ;
		//信息錄入成功,通訊錄人數(shù)加一
		abs->m_Size ++;
		cout<<"添加成功!"<<endl;
		system("pause");//按任意鍵繼續(xù)
		system ("cls");//清屏
	}}
//2.顯示所有聯(lián)系人
void showPerson(Addressbooks * abs){
//判斷通訊錄中人數(shù)是否為0,如果為0,提示記錄為空
	//如果不為0,顯示記錄的聯(lián)系人信息
	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 ==1?"男":"女")<<"\t";
			cout<<"年齡:"<<abs->personArray [i].m_Age <<"\t";
			cout<<"電話:"<<abs->personArray [i].m_Phone <<"\t";
			cout<<"住址:"<<abs->personArray [i].m_Addr <<endl;
		}
	}
	system("pause");//按任意鍵繼續(xù)
	system ("cls");//清屏
}
//顯示菜單
void showMenu(){
  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<<"0.退出通訊錄"<<endl;
}
 
//3.檢測聯(lián)系人是否存在,如果存在,返回聯(lián)系人在數(shù)組中的具體位置,不存在返回-1
//參數(shù)1 通訊錄 參數(shù)2 姓名
int isExist(Addressbooks *abs, string name){
for(int i=0;i<abs->m_Size ;i++){
	if(abs->personArray [i].m_Name ==name)
	{return i;}
}//尋找聯(lián)系人
return -1;//遍歷結(jié)束仍然沒有找到
}
 
//3.刪除指定聯(lián)系人
void deletePerson(Addressbooks *abs ){
	cout<<"請輸入您要刪除的聯(lián)系人"<<endl;
	string name;
	cin>>name;
	int ret=isExist(abs,name);//if ret=-1.未查到該人 else 查到了
	if(ret!=-1){
		//查到此人,要進行刪除操作
		for(int i=ret;i<abs->m_Size;i++){
			// 使數(shù)據(jù)前移,實現(xiàn)邏輯上的刪除功能
			abs->personArray [i]=abs->personArray [i+1];
	}
		abs->m_Size --;
		cout<<"刪除成功!"<<endl;
	}
	else{
		cout<<"未查到此人!"<<endl;
	}
	system ("pause");
	system ("cls");
	}
 
//4.查找指定聯(lián)系人信息
void findPerson(Addressbooks  *abs)
{
	cout<<"請輸入您要查找的聯(lián)系人"<<endl;
	string name;
	cin>>name;//判斷指定的聯(lián)系人是否存在于通訊錄中
	int ret= isExist(abs,name);
	if(ret!=-1){//找到聯(lián)系人
		cout<<"姓名:"<<abs->personArray [ret ].m_Name <<"\t";
	cout<<"性別:"<<(abs->personArray [ret ].m_Sex ==1?"男":"女")<<"\t";
			cout<<"年齡:"<<abs->personArray [ret ].m_Age <<"\t";
			cout<<"電話:"<<abs->personArray [ret ].m_Phone <<"\t";
			cout<<"住址:"<<abs->personArray [ret ].m_Addr <<endl;
 
}
else{//未找到聯(lián)系人
	cout<<"查無此人!"<<endl;
}
system ("pause");//按任意鍵繼續(xù)
	system ("cls");//清屏
}
 
//5.修改指定聯(lián)系人信息
void  modifyPerson(Addressbooks *abs){
	cout<<"請輸入您要修改的聯(lián)系人"<<endl;
	string name;
	cin>>name;
	int ret=isExist (abs,name);
	if(ret!=-1){//找到了指定的聯(lián)系人
		//姓名
		string name;
		cout<<"請輸入修改后的姓名: "<<endl;
		cin>>name;
		abs->personArray [ret].m_Name =name;
		//性別
		int sex=0; 
			cout<<"請輸入性別:"<<endl;
		cout<<"1---男"<<endl<<"2---女"<<endl;
		while(1){
			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<<"請輸入聯(lián)系電話:"<<endl;
		string phone;
		cin>>phone;
		abs->personArray [ret].m_Phone =phone;
 
		//住址
		cout<<"請輸入住址:"<<endl;
		string address;
		cin>>address;
		abs->personArray [ret].m_Addr =address;
		cout<<"修改成功!"<<endl;
	}
	else{//未找到指定的聯(lián)系人
		cout<<"查無此人!"<<endl;
	}
	system("pause");
		system("cls");//按任意鍵后清屏
}
 
//6.清空聯(lián)系人 //實現(xiàn)思路:只要將記錄的聯(lián)系人數(shù)重置為0,就可以實現(xiàn)邏輯情空
void cleanPerson(Addressbooks *abs){
	abs->m_Size =0;
	cout<<"通訊錄已清空"<<endl;
	system("pause");
	system("cls");
}
//主函數(shù)
int main(){
	char qingkong;
	system ("color F1");
	//創(chuàng)建通訊錄結(jié)構(gòu)體變量
	Addressbooks abs;
	//初始化通訊錄當中當前人員個數(shù)
 
	//調(diào)用菜單
	abs.m_Size=0;
	int select=0;//創(chuàng)建用戶選擇輸入的變量
	while(1){
		showMenu();
	    cin>>select;
 
	switch(select)
	{
case 1://添加聯(lián)系人
	addPerson(& abs);
	break;//添加聯(lián)系人//功能:設置上限1000人 
	//步驟:設置聯(lián)系人結(jié)構(gòu)體和通訊錄結(jié)構(gòu)體 main函數(shù)中創(chuàng)建通訊錄 封裝添加聯(lián)系人函數(shù) 測試添加聯(lián)系人功能
case 2:
	showPerson (& abs);//地址傳遞,可以改變實參的值
	break;//顯示聯(lián)系人
case 3://case語句如果很長的話最好用括號括起來形成一個代碼段
	/*{
	cout<<"請輸入刪除聯(lián)系人的姓名:"<<endl;
	string name;
	cin>>name;
	if(isExist ==-1)cout<<"查無此人"<<endl;
	else cout<<"找到此人"<<endl;}*/ //檢測練習人是否存在
	deletePerson(&abs);
	break;//刪除聯(lián)系人 1.判斷聯(lián)系人是否存在 2.刪除聯(lián)系人函數(shù)
	
case 4: 
	findPerson (&abs);
		break;//查找聯(lián)系人
case 5:
	modifyPerson (&abs);
	break;//修改聯(lián)系人 按照姓名重新修改指定聯(lián)系人
case 6: 
    cout<<"你確定要清空通訊錄嗎?(Y or N)" <<endl; 
    cin>>qingkong;
    if(qingkong=='Y'||qingkong=='y'){
	cleanPerson (&abs);}
	else system("pause");//按任意鍵繼續(xù)
	system ("cls");//清屏
	break;//清空聯(lián)系人 
case 0: //退出通訊錄
		cout<<"歡迎下次使用"<<endl;
		system ("pause");//暫停,等待用戶輸入
		return 0;
		break;
default: break;
	}}}

到此這篇關(guān)于C/C++實現(xiàn)通訊錄管理系統(tǒng)(附源碼)的文章就介紹到這了,更多相關(guān)C++通訊錄管理系內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C語言靜態(tài)與動態(tài)通訊錄的實現(xiàn)流程詳解

    C語言靜態(tài)與動態(tài)通訊錄的實現(xiàn)流程詳解

    這篇文章主要為大家介紹了C語言分別實現(xiàn)靜態(tài)與動態(tài)的通訊錄示例代碼教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2021-11-11
  • C語言對CSV文件從最后往前一行一行讀取的實現(xiàn)方法

    C語言對CSV文件從最后往前一行一行讀取的實現(xiàn)方法

    今天小編就為大家分享一篇關(guān)于C語言對CSV文件從最后往前一行一行讀取的實現(xiàn)方法,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-12-12
  • 有關(guān)C++頭文件的包含順序研究

    有關(guān)C++頭文件的包含順序研究

    下面小編就為大家?guī)硪黄嘘P(guān)C++頭文件的包含順序研究。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-01-01
  • C++ OpenCV學習之圖像像素值統(tǒng)計

    C++ OpenCV學習之圖像像素值統(tǒng)計

    在圖像分析的時候,我們經(jīng)常需要對單通道圖像的像素進行統(tǒng)計。本文將主要介紹利用C++ OpenCV實現(xiàn)的圖像像素值統(tǒng)計的幾種方法,需要的可以參考一下
    2022-01-01
  • C語言實現(xiàn)學生學籍管理系統(tǒng)

    C語言實現(xiàn)學生學籍管理系統(tǒng)

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)學生學籍管理系統(tǒng),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • C語言全面細致講解文件操作

    C語言全面細致講解文件操作

    這篇文章主要為大家詳細介紹了C語言的文件操作,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-05-05
  • C++程序中啟動線程的方法

    C++程序中啟動線程的方法

    這篇文章主要介紹了C++程序中啟動線程的方法,作者針對C++11版本中的一些新特性進行了解說,需要的朋友可以參考下
    2015-07-07
  • static全局變量與普通的全局變量的區(qū)別詳細解析

    static全局變量與普通的全局變量的區(qū)別詳細解析

    以下是對static全局變量與普通的全局變量的區(qū)別進行了詳細的分析介紹,需要的朋友可以過來參考下,希望對大家有所幫助
    2013-09-09
  • 基于make命令與makefile文件詳解

    基于make命令與makefile文件詳解

    下面小編就為大家分享一篇基于make命令與makefile文件詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-01-01
  • Vscode自定義注釋模板的實現(xiàn)示例

    Vscode自定義注釋模板的實現(xiàn)示例

    本文主要介紹了Vscode自定義注釋模板的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-07-07

最新評論