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

C語言實現(xiàn)簡易通訊錄實例

 更新時間:2022年02月16日 09:32:10   作者:K媾?  
大家好,本篇文章主要講的是C語言實現(xiàn)簡易通訊錄實例,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下

一、問題描述

用C語言來寫一個簡易的通訊錄

二、功能介紹

通訊錄
1.通訊錄中能夠存放1000個人的信息
每個人的信息:
名字,年齡,性別,電話,地址
2.增加人的信息
3.刪除人的信息
4.修改指定人的信息
5.查找指定人的信息
6.排序

二、實現(xiàn)流程

1.創(chuàng)建通訊錄

1.創(chuàng)建頭文件contact.h

頭文件contact.h用來實現(xiàn)類型的定義和函數(shù)的聲明。

2.定義結構體類型(struct peoInfo)

一個人的信息包含名字,年齡,性別,電話,地址,所以我們要定義一個結構體類型才能完整的表述。

寫一個結構體類型struct peoInfo存放一個人的信息

代碼如下:

/類型的定義
typedef struct peoInfo
{
	char name[MAX_NAME];//名字
	char sex[MAX_SEX];//性別
	int age;//年齡
	char tele[MAX_TELE];//電話
	char addr[MAX_ADDR];//地址
}peoInfo;

typedef(類型重命名),struct peoInfo重命名為peoInfo。

3.定義通訊錄結構體類型(struct contact)

因為要存放1000個這樣的人的信息,所以我們創(chuàng)建一個結構體類型的數(shù)組data。再創(chuàng)建一個變量sz來表示這個數(shù)組的下標,data數(shù)組中存第一個人信息的時候,我們放在下標為sz的位置,這個時候讓我們的sz等于0,存第二個人的信息的時候,讓我們的sz等于1,這樣后續(xù)就方便我們通過下標的方式找到存入的每一個人的信息。

代碼如下:

peoInfo data[MAX];//存放添加進來的人的信息
	int sz;//記錄的是通訊錄中有效信息的個數(shù)

上述代碼加起來就構成了我們的通訊錄,很明顯這也是一個結構體。

代碼如下:

//通訊錄
typedef struct contact
{
	peoInfo data[MAX];//存放添加進來的人的信息
	int sz;//記錄的是通訊錄中有效信息的個數(shù)
}contact;

4.#define定義標識符常量

為了后續(xù)我們方便隨時調整通訊錄的大小所以我們把數(shù)組的數(shù)字挨個用#define定義標識符常量

代碼如下:

#define MAX_NAME 20
#define MAX_SEX 10
#define MAX_TELE 12
#define MAX_ADDR 30
#define MAX 1000

5.功能實現(xiàn)函數(shù)的聲明

/初始化通訊錄
void Initcontact(contact* cp);
 
//增加聯(lián)系人信息
void AddContact(contact* cp);
 
//打印聯(lián)系人信息
void PintContact(const contact* cp);
 
//刪除聯(lián)系人信息
void DelContact(contact* cp);
 
//查找聯(lián)系人信息
void SearchContact(contact* cp);
 
//修改聯(lián)系人信息
void ModifyContact(contact* cp);

2.創(chuàng)建源文件test.c

源文件test.c測試通訊錄的模塊

通訊錄有了之后,我們要寫出通訊錄的基本操作邏輯,選擇增加聯(lián)系人,選擇刪除聯(lián)系人,選擇修改聯(lián)系人......選擇錯誤,重新選擇,選擇重新開始等等。

1.打印菜單

代碼如下:

 
void menu()
{
	printf("******************************\n");
	printf("*****1.add     2.del *********\n");
	printf("*****3.search  4.modify*******\n");
	printf("*****5.sort    6.print *******\n");
	printf("*****0.exit    ***************\n");
	printf("******************************\n");
}

2.枚舉方法定義編號

代碼如下:

enum Option
{
	EXIT,
	ADD,
	DEL,
	SEARCH,
	MODIFY,
	SORT,
	PRINT
};

3.主文件的實現(xiàn)

代碼如下

int main()
{
	int input = 0;
	//創(chuàng)建通訊錄
	contact con;//通訊錄
	//初始化通訊錄
	Initcontact(&con);
	do
	{
		menu();
		printf("請選擇:>");
		scanf("%d", &input);
		switch (input)
		{
		case ADD:
			//增加人的信息
			AddContact(&con);
			break;
		case DEL:
			//刪除人的信息
			DelContact(&con);
			break;
		case SEARCH:
			//查找聯(lián)系人的信息
			SearchContact(&con);
			break;
		case MODIFY:
			//修改聯(lián)系人信息
			ModifyContact(&con);
			break;
		case SORT:
			break;
		case PRINT:
			//打印人的信息
			PintContact(&con);
			break;
		case EXIT:
			printf("退出登錄\n");
			break;
		default:
			printf("選擇錯誤,請重新選擇\n");
			break;
		}
 
	} while (input);
	return 0;
}

寫出一個菜單來供用戶們選擇自己想要的功能,采用枚舉的方式讓程序員看代碼的時候能一目了然,一眼就也可以看出來這里要實現(xiàn)的是什么功能。

3.創(chuàng)建源文件contact.c

源文件contact.c來實現(xiàn)我們想要的功能(函數(shù)的實現(xiàn))

1.初始化通訊錄為0(Initcontact函數(shù)實現(xiàn))

//初始化通訊錄為0
void Initcontact(contact* cp)
{
	cp->sz = 0;//通訊錄中人的數(shù)量先初始化為0
	memset(cp->data, 0, sizeof(cp->data));//數(shù)組內存中每個字節(jié)初始化為0

 2.增加通訊錄聯(lián)系人信息(AddContact函數(shù)實現(xiàn))

先判斷通訊錄人數(shù)是不是滿了,滿了就無法添加,沒滿就添加聯(lián)系人信息。

代碼如下:

//增加聯(lián)系人的信息
void AddContact(contact* cp)
{
	if (cp->sz == MAX)
	{
		printf("通訊錄已滿,無法添加\n");
		return;
	}
	//增加一個人的信息
	printf("請輸入名字:>");
	scanf("%s", cp->data[cp->sz].name);
	printf("請輸入年齡:>");
	scanf("%d", &(cp->data[cp->sz].age));
	printf("請輸入性別:>");
	scanf("%s", cp->data[cp->sz].sex);
	printf("請輸入電話:>");
	scanf("%s", cp->data[cp->sz].tele);
	printf("請輸入地址:>");
	scanf("%s", cp->data[cp->sz].addr);
	cp->sz++;
	printf("增加成功\n");
 
}

3.打印通訊錄聯(lián)系人信息( PintContact函數(shù)實現(xiàn))

代碼如下:

//打印聯(lián)系人的信息
void PintContact(const contact* cp)
{
	//打印標題
	int i = 0;
	printf("%-5s\t %-5s\t %-5s\t %-12s\t %-20s\n", "名字", "年齡", "性別", "電話", "地址");
	for (i = 0; i < cp->sz; i++)
	{
		printf("%-5s\t %-5d\t %-5s\t %-12s\t %-20s\n", 
			cp ->data[i].name,
			cp -> data[i].age,
			cp -> data[i].sex,
			cp -> data[i].tele,
			cp -> data[i].addr);
	}
}

增加完聯(lián)系人信息之后我們可以打印出來看一看。

4.刪除通訊錄聯(lián)系人信息 (DelContact函數(shù)實現(xiàn))

首先判斷通訊錄里有沒有聯(lián)系人,沒有就無需刪除,有的話就根據查找函數(shù)查找通訊錄成員名字來刪除所對應的信息。

代碼如下:

static int  FindByName(contact* cp, char name[])
{
	int i = 0;
	for (i = 0; i < cp->sz; i++)
	{
		if (strcmp(cp->data[i].name, name) == 0)
		{
			return i;
		}
	}
	return -1;
}
 
//刪除聯(lián)系人信息
void DelContact(contact* cp)
{
	char name[MAX_NAME] = { 0 };
	if (cp->sz == 0)
	{
		printf("通訊錄為空,無需刪除\n");
		return;
	}
	//1.查找要刪除的人
	//有沒有
	printf("請輸入要刪除人的名字\n");
	scanf("%s", name);
	
	int pos = FindByName(cp, name);
	
		if (pos == -1)
		{
			printf("要刪除的人不存在\n");
			return;
		}
		//2.刪除
		int i = 0;
		for (i = pos; i < cp -> sz - 1; i++)
		{
			cp->data[i] = cp->data[i + 1];
		}
		cp->sz--;
		printf("刪除成功\n");
		
}

5.查找通訊錄聯(lián)系人信息( SearchContact函數(shù)實現(xiàn))

根據查找函數(shù)查找通訊錄成員名字來刪除所對應的信息。

代碼如下

/查找聯(lián)系人信息
void SearchContact(contact* cp)
{
	char name[MAX_NAME] = { 0 };
	printf("請輸入要查找人的名字\n");
	scanf("%s", name);
	int pos = FindByName(cp, name);
 
	if (pos == -1)
	{
		printf("要查找的人不存在\n");
		return;
	}
	else 
	{
		printf("%-5s\t %-5s\t %-5s\t %-12s\t %-20s\n", "名字", "年齡", "性別", "電話", "地址");
		printf("%-5s\t %-5d\t %-5s\t %-12s\t %-20s\n",
			cp->data[pos].name,
			cp->data[pos].age,
			cp->data[pos].sex,
			cp->data[pos].tele,
			cp->data[pos].addr);
 
	}
}

6.修改聯(lián)系人信息(ModifyContact函數(shù)實現(xiàn))

根據查找函數(shù)查找通訊錄成員名字來修改所對應的信息。

代碼如下:

//修改聯(lián)系人的信息
void ModifyContact(contact* cp)
{
	char name[MAX_NAME] = { 0 };
	printf("請輸入要修改人的名字\n");
	scanf("%s", name);
	int pos = FindByName(cp, name);
 
	if (pos == -1)
	{
		printf("要修改的人不存在\n");
		return;
	}
	else 
	{
		printf("請輸入名字:>");
		scanf("%s", cp->data[pos].name);
		printf("請輸入年齡:>");
		scanf("%d", &(cp->data[pos].age));
		printf("請輸入性別:>");
		scanf("%s", cp->data[pos].sex);
		printf("請輸入電話:>");
		scanf("%s", cp->data[pos].tele);
		printf("請輸入地址:>");
		scanf("%s", cp->data[pos].addr);
		printf("修改成功\n");
		
	}
}

部分功能結果圖:

 總結:

上述簡單實現(xiàn)了通訊錄的增刪改查功能,寫出了一個簡易通訊錄

到此這篇關于C語言實現(xiàn)簡易通訊錄實例的文章就介紹到這了,更多相關C語言通訊錄內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • C語言實現(xiàn)實驗設備管理系統(tǒng)

    C語言實現(xiàn)實驗設備管理系統(tǒng)

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)實驗設備管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • C++異常處理入門(try和catch)

    C++異常處理入門(try和catch)

    C++ 提供了異常機制,讓我們能夠捕獲運行時錯誤,本文就詳細的介紹了C++異常處理入門,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • C++ 設置和獲取當前工作路徑的實現(xiàn)代碼

    C++ 設置和獲取當前工作路徑的實現(xiàn)代碼

    這篇文章主要介紹了C++ 設置和獲取當前工作路徑的實現(xiàn)代碼,防止DLL加載不到配置和文件,需要的朋友可以參考下
    2017-09-09
  • C語言實現(xiàn)天氣信息管理系統(tǒng)

    C語言實現(xiàn)天氣信息管理系統(tǒng)

    這篇文章主要介紹了C語言實現(xiàn)天氣信息管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-06-06
  • c++作用域運算符用法(全局變量和局部變量)

    c++作用域運算符用法(全局變量和局部變量)

    這篇文章主要介紹了c++作用域運算符用法,需要的朋友可以參考下
    2014-04-04
  • c++素數(shù)篩選法

    c++素數(shù)篩選法

    本文講的是篩選法的C++實現(xiàn), 篩選法又稱篩法,是求不超過自然數(shù)N(N&gt;1)的所有質數(shù)的一種方法。據說是古希臘的埃拉托斯特尼(Eratosthenes,約公元前274~194年)發(fā)明的,又稱埃拉托斯特尼篩子。
    2017-05-05
  • 基于matlab MFCC+GMM的安全事件聲學檢測系統(tǒng)

    基于matlab MFCC+GMM的安全事件聲學檢測系統(tǒng)

    這篇文章主要為大家介紹了基于matlab MFCC+GMM的安全事件聲學檢測系統(tǒng)實現(xiàn)及源碼示例分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2022-02-02
  • 利用C++如何覆蓋或刪除指定位置的文件內容

    利用C++如何覆蓋或刪除指定位置的文件內容

    這篇文章主要給大家介紹了關于利用C++如何覆蓋或刪除指定位置的文件內容,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面跟著小編來一起學習學習吧。
    2017-08-08
  • 老程序員教你一天時間完成C++俄羅斯方塊游戲

    老程序員教你一天時間完成C++俄羅斯方塊游戲

    俄羅斯方塊游戲大家應該非常熟悉,非常經典的一款游戲,本文來詳細講解下俄羅斯方塊游戲的制作過程,趕緊來看下吧!希望能給你帶來幫助
    2021-08-08
  • C++中套接字庫sockpp的使用詳解

    C++中套接字庫sockpp的使用詳解

    sockpp是一個開源、簡單、現(xiàn)代的C++套接字庫,這篇文章主要為大家詳細介紹一下套接字庫sockpp的使用,文中的示例代碼講解詳細,感興趣的小伙伴可以學習一下
    2023-11-11

最新評論