国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

C語(yǔ)言實(shí)現(xiàn)通訊錄管理系統(tǒng)(結(jié)構(gòu)體、枚舉、聯(lián)合體應(yīng)用)

nicercode / 1840人閱讀

摘要:利用語(yǔ)言進(jìn)階知識(shí)中的結(jié)構(gòu)體枚舉聯(lián)合體來(lái)制作通訊錄管理系統(tǒng)工程。

利用C語(yǔ)言進(jìn)階知識(shí)中的結(jié)構(gòu)體、枚舉、聯(lián)合體來(lái)制作通訊錄管理系統(tǒng)工程。

相比于以往寫(xiě)三子棋游戲的籠統(tǒng),該文章更加詳細(xì)的解釋每一步、每個(gè)函數(shù)創(chuàng)建后的測(cè)試,逐層分析代碼。

日后,看懂的基礎(chǔ)上還需多加敲寫(xiě),不斷完善自己的邏輯!?????????????????????

????????????????

目錄

想要實(shí)現(xiàn)的功能描述:

Add函數(shù)功能實(shí)現(xiàn)以及代碼初步建立:

初始化通訊錄

Add函數(shù)初步測(cè)試:

Del函數(shù)功能實(shí)現(xiàn):

Del函數(shù)初步調(diào)試:

Search函數(shù)功能實(shí)現(xiàn):

Search函數(shù)初步調(diào)試:

Modify函數(shù)功能實(shí)現(xiàn):

Modify函數(shù)初步調(diào)試:

?排序函數(shù)就不再多帶帶編寫(xiě)了,利用qsort( )函數(shù)就可以解決,閑時(shí)可能會(huì)繼續(xù)在此寫(xiě)寫(xiě).........


想要實(shí)現(xiàn)的功能描述:

目前,先在contact.c文件中聲明了一個(gè)人的所包含的信息、多少個(gè)人? 以及當(dāng)前通訊錄有效信息(? 該通訊錄目前包含多少人? ?)

Add函數(shù)功能實(shí)現(xiàn)以及代碼初步建立:

contact.c文件

#pragma once#define NAME_MAX 30#define SEX_MAX 5#define TELE_MAX 12#define ADDR_MAX 30#define PEOPLE_MAX 1000//一個(gè)人的信息struct PeoInfo{	char name[NAME_MAX];	int age;	char sex[SEX_MAX];	char tele[TELE_MAX];	char addr[ADDR_MAX];};//1000個(gè)人的信息struct PeoInfo data[PEOPLE_MAX];int sz;//當(dāng)前通訊錄的有效信息(包含多少個(gè)人的信息)

有了通訊錄,我們需要清理,即:

初始化通訊錄

contact.c文件

#pragma once#include#include#define NAME_MAX 30#define SEX_MAX 5#define TELE_MAX 12#define ADDR_MAX 30#define PEOPLE_MAX 1000//一個(gè)人的信息struct PeoInfo{	char name[NAME_MAX];	int age;	char sex[SEX_MAX];	char tele[TELE_MAX];	char addr[ADDR_MAX];};//通訊錄struct Contact{	struct PeoInfo data[PEOPLE_MAX];//1000個(gè)人的數(shù)據(jù),存放在data數(shù)組中	int sz;//記錄當(dāng)前通訊錄的有效信息的個(gè)數(shù)(包含多少個(gè)人的信息)};//初始化通訊錄void InitContact(struct Contact* pc);

contact.c文件

#define _CRT_SECURE_NO_WARNINGS#include"contact.h"http://初始化通訊錄void InitContact(struct Contact* pc){	pc->sz = 0;//默認(rèn)沒(méi)有信息	//memset(pc->data, 0, PEOPLE_MAX * sizeof(struct PeoInfo));	memset(pc->data, 0, PEOPLE_MAX * sizeof(pc->data));}

test.c文件

#include"contact.h"void menu(){	printf("************************************/n");	printf("************************************/n");	printf("******    1.add      2.del     *****/n");	printf("******    3.search   4.modify  *****/n");	printf("*****     5.show     6.sort    *****/n");	printf("*****     0.exit              ******/n");	printf("************************************/n");	printf("************************************/n");}enum Option{	EXIT,//0	ADD,	DEL,	SEARCH,	MODIFY,	SHOW,	SORT};int main(){	int input = 0;	//創(chuàng)建一個(gè)通訊錄	struct Contact con;	//初始化通訊錄	InitContact(&con);	do	{		menu();		printf("請(qǐng)選擇:>/n");		scanf("%d", &input);		switch (input)		{		case ADD:			break;		case DEL:			break;		case SHOW:			break;		case EXIT:			printf("退出通訊錄/n");			break;		default:			printf("選擇錯(cuò)誤!/n");			break;		}	} while (input);	return 0;}

Add函數(shù)初步測(cè)試:

——————>查看添加聯(lián)系人的工程是否制作完成,利用Show來(lái)打印:

test.c文件

#include"contact.h"void menu(){	printf("************************************/n");	printf("************************************/n");	printf("******    1.add      2.del     *****/n");	printf("******    3.search   4.modify  *****/n");	printf("*****     5.show     6.sort    *****/n");	printf("*****     0.exit              ******/n");	printf("************************************/n");	printf("************************************/n");}enum Option{	EXIT,//0	ADD,	DEL,	SEARCH,	MODIFY,	SHOW,	SORT};int main(){	int input = 0;	//創(chuàng)建一個(gè)通訊錄	struct Contact con;	//初始化通訊錄	InitContact(&con);	do	{		menu();		printf("請(qǐng)選擇:>/n");		scanf("%d", &input);		switch (input)		{		case ADD:			AddContact(&con);			break;		case DEL:			break;		case SHOW:			ShowContact(&con);			break;		case EXIT:			printf("退出通訊錄/n");			break;		default:			printf("選擇錯(cuò)誤!/n");			break;		}	} while (input);	return 0;}

contact.h文件

#pragma once#include#include#define NAME_MAX 30#define SEX_MAX 5#define TELE_MAX 12#define ADDR_MAX 30#define PEOPLE_MAX 1000//一個(gè)人的信息struct PeoInfo{	char name[NAME_MAX];	int age;	char sex[SEX_MAX];	char tele[TELE_MAX];	char addr[ADDR_MAX];};//通訊錄struct Contact{	struct PeoInfo data[PEOPLE_MAX];//1000個(gè)人的數(shù)據(jù),存放在data數(shù)組中	int sz;//記錄當(dāng)前通訊錄的有效信息的個(gè)數(shù)(包含多少個(gè)人的信息)};//初始化通訊錄void InitContact(struct Contact* pc);//增加聯(lián)系人void AddContact(struct Contact* pc);//顯示所有的聯(lián)系人void ShowContact(struct Contact* pc);

contact.c文件

#define _CRT_SECURE_NO_WARNINGS#include"contact.h"http://初始化通訊錄void InitContact(struct Contact* pc){	pc->sz = 0;//默認(rèn)沒(méi)有信息	//memset(pc->data, 0, PEOPLE_MAX * sizeof(struct PeoInfo));	memset(pc->data, 0, PEOPLE_MAX * sizeof(pc->data));}//增加聯(lián)系人void AddContact(struct Contact* pc){	if (pc->sz == PEOPLE_MAX)	{		printf("通訊錄滿了/n");	}	else	{		printf("請(qǐng)輸入名字:>");		scanf("%s", pc->data[pc->sz].name);		printf("請(qǐng)輸入年齡:>");		scanf("%d", &(pc->data[pc->sz].age));		printf("請(qǐng)輸入性別:>");		scanf("%s", pc->data[pc->sz].sex);		printf("請(qǐng)輸入電話:>");		scanf("%s", pc->data[pc->sz].tele);		printf("請(qǐng)輸入地址:>");		scanf("%s", pc->data[pc->sz].addr);		//提示		printf("添加成功!/n");		pc->sz++;	}}//顯示所有的聯(lián)系人void ShowContact(struct Contact* pc){	int i = 0;	//打印標(biāo)題  (美觀)	printf("%15s/t%5s/t%8s/t%15s/t%30s/n/n", "name", "age", "sex", "tele", "addr");	for (i = 0; i < pc->sz; i++)	{		//打印每個(gè)數(shù)據(jù)		printf("%15s/t%5d/t%8s/t%15s/t%30s/n/n",			pc->data[i].name,			pc->data[i].age, 			pc->data[i].sex, 			pc->data[i].tele,			pc->data[i].addr );	}}

打印效果演示:

Del函數(shù)功能實(shí)現(xiàn):

刪除功能:

我們想要實(shí)現(xiàn)指定刪除聯(lián)系人的功能,就需要先確定要?jiǎng)h除的名字是什么,那么必然需要判斷該名字在不在此通訊錄中,就想到了需要pos記錄下標(biāo)

test.c文件

#include"contact.h"void menu(){	printf("************************************/n");	printf("************************************/n");	printf("******    1.add      2.del     *****/n");	printf("******    3.search   4.modify  *****/n");	printf("*****     5.show     6.sort    *****/n");	printf("*****     0.exit              ******/n");	printf("************************************/n");	printf("************************************/n");}enum Option{	EXIT,//0	ADD,	DEL,	SEARCH,	MODIFY,	SHOW,	SORT};int main(){	int input = 0;	//創(chuàng)建一個(gè)通訊錄	struct Contact con;	//初始化通訊錄	InitContact(&con);	do	{		menu();		printf("請(qǐng)選擇:>/n");		scanf("%d", &input);		switch (input)		{		case ADD:			AddContact(&con);			break;		case DEL:			DelContact(&con);			break;		case SHOW:			ShowContact(&con);			break;		case EXIT:			printf("退出通訊錄/n");			break;		default:			printf("選擇錯(cuò)誤!/n");			break;		}	} while (input);	return 0;}

contact.h文件

#pragma once#include#include#define NAME_MAX 30#define SEX_MAX 5#define TELE_MAX 12#define ADDR_MAX 30#define PEOPLE_MAX 1000//一個(gè)人的信息struct PeoInfo{	char name[NAME_MAX];	int age;	char sex[SEX_MAX];	char tele[TELE_MAX];	char addr[ADDR_MAX];};//通訊錄struct Contact{	struct PeoInfo data[PEOPLE_MAX];//1000個(gè)人的數(shù)據(jù),存放在data數(shù)組中	int sz;//記錄當(dāng)前通訊錄的有效信息的個(gè)數(shù)(包含多少個(gè)人的信息)};//初始化通訊錄void InitContact(struct Contact* pc);//增加聯(lián)系人void AddContact(struct Contact* pc);//顯示所有的聯(lián)系人void ShowContact(struct Contact* pc);//刪除指定聯(lián)系人void DelContact(struct Contact* pc);

contact.c文件

strcmp函數(shù)來(lái)確認(rèn)是否通訊錄中含有該名字的信息

如果存在改名字信息,就需要完成指定刪除,而刪除就要把該指定聯(lián)系人該行信息刪除后,后面聯(lián)系人的信息依次順移

for (j = pos; j < pc->sz - 1; j++)中的 pc->sz - 1需要多加思考,因?yàn)樽詈笠粋€(gè)信息后面就沒(méi)有信息了,data[j+1]繼續(xù)將后面? “? 莫須有 ”? 的信息往前順移就不合理了。

#define _CRT_SECURE_NO_WARNINGS#include"contact.h"http://初始化通訊錄void InitContact(struct Contact* pc){	pc->sz = 0;//默認(rèn)沒(méi)有信息	//memset(pc->data, 0, PEOPLE_MAX * sizeof(struct PeoInfo));	memset(pc->data, 0, sizeof(pc->data));}//增加聯(lián)系人void AddContact(struct Contact* pc){	if (pc->sz == PEOPLE_MAX)	{		printf("通訊錄滿了/n");	}	else	{		printf("請(qǐng)輸入名字:>");		scanf("%s", pc->data[pc->sz].name);		printf("請(qǐng)輸入年齡:>");		scanf("%d", &(pc->data[pc->sz].age));		printf("請(qǐng)輸入性別:>");		scanf("%s", pc->data[pc->sz].sex);		printf("請(qǐng)輸入電話:>");		scanf("%s", pc->data[pc->sz].tele);		printf("請(qǐng)輸入地址:>");		scanf("%s", pc->data[pc->sz].addr);		//提示		printf("添加成功!/n");		pc->sz++;	}}//顯示所有的聯(lián)系人void ShowContact(struct Contact* pc){	int i = 0;	//打印標(biāo)題  (美觀)	printf("%15s/t%5s/t%8s/t%15s/t%30s/n/n", "name", "age", "sex", "tele", "addr");	for (i = 0; i < pc->sz; i++)	{		//打印每個(gè)數(shù)據(jù)		printf("%15s/t%5d/t%8s/t%15s/t%30s/n/n",			pc->data[i].name,			pc->data[i].age, 			pc->data[i].sex, 			pc->data[i].tele,			pc->data[i].addr );	}}//刪除指定聯(lián)系人int FindContactByName(struct Contact* pc, const char* name){	int i = 0;	for (i = 0; i < pc->sz; i++)	{		if (strcmp(pc->data[i].name, name) == 0)		{			return i;		}	}	//找不到	return -1;}void DelContact(struct Contact* pc){	char name[NAME_MAX] = { 0 };	printf("請(qǐng)輸入要?jiǎng)h除聯(lián)系人的名字:>");	scanf("%s", name);	//查找	int pos = FindContactByName(pc, name);	if (pos == -1)	{		printf("指定的聯(lián)系人不存在!/n");	}	//刪除	else	{		int j = 0;		for (j = pos; j < pc->sz - 1; j++)		{			pc->data[j] = pc->data[j + 1];		}		pc->sz--;		//提示		printf("刪除成功!/n");	}}

Del函數(shù)初步調(diào)試:

我們發(fā)現(xiàn)程序執(zhí)行到最后有個(gè)小Bug,那就是通訊錄已經(jīng)為空了,繼續(xù)刪是執(zhí)行不了的,所以我們代碼中應(yīng)該再完善一下;

刪除之前,先判斷一下該通訊錄是否還有信息可以刪除,如果沒(méi)有信息可以刪除,那么就直接return,表示刪除結(jié)束就可以了。

完善的contact.c文件:

//省略內(nèi)容,見(jiàn)上void DelContact(struct Contact* pc){	if (pc->sz == 0)	{		printf("通訊錄為空,無(wú)法刪除!/n");		return;	}	char name[NAME_MAX] = { 0 };	printf("請(qǐng)輸入要?jiǎng)h除聯(lián)系人的名字:>");	scanf("%s", name);	//查找	int pos = FindContactByName(pc, name);	if (pos == -1)	{		printf("指定的聯(lián)系人不存在!/n");	}	//刪除	else	{		int j = 0;		for (j = pos; j < pc->sz - 1; j++)		{			pc->data[j] = pc->data[j + 1];		}		pc->sz--;		//提示		printf("刪除成功!/n");	}}

Search函數(shù)功能實(shí)現(xiàn):

想要實(shí)現(xiàn)查找,就需要用FindContactByName先確定pos,看是否查找的聯(lián)系人在通訊錄里。

如果在通訊錄里,就用類似于顯示功能函數(shù)將 “ 遍歷 ”步驟換成僅打印pos位置的數(shù)據(jù)即可

test.c文件

#include"contact.h"void menu(){	printf("************************************/n");	printf("************************************/n");	printf("******    1.add      2.del     *****/n");	printf("******    3.search   4.modify  *****/n");	printf("*****     5.show     6.sort    *****/n");	printf("*****     0.exit              ******/n");	printf("************************************/n");	printf("************************************/n");}enum Option{	EXIT,//0	ADD,	DEL,	SEARCH,	MODIFY,	SHOW,	SORT};int main(){	int input = 0;	//創(chuàng)建一個(gè)通訊錄	struct Contact con;	//初始化通訊錄	InitContact(&con);	do	{		menu();		printf("請(qǐng)選擇:>/n");		scanf("%d", &input);		switch (input)		{		case ADD:			AddContact(&con);			break;		case DEL:			DelContact(&con);			break;		case SEARCH:			SearchContact(&con);			break;		case SHOW:			ShowContact(&con);			break;		case EXIT:			printf("退出通訊錄/n");			break;		default:			printf("選擇錯(cuò)誤!/n");			break;		}	} while (input);	return 0;}

contact.h文件

#pragma once#include#include#define NAME_MAX 30#define SEX_MAX 5#define TELE_MAX 12#define ADDR_MAX 30#define PEOPLE_MAX 1000//一個(gè)人的信息struct PeoInfo{	char name[NAME_MAX];	int age;	char sex[SEX_MAX];	char tele[TELE_MAX];	char addr[ADDR_MAX];};//通訊錄struct Contact{	struct PeoInfo data[PEOPLE_MAX];//1000個(gè)人的數(shù)據(jù),存放在data數(shù)組中	int sz;//記錄當(dāng)前通訊錄的有效信息的個(gè)數(shù)(包含多少個(gè)人的信息)};//初始化通訊錄void InitContact(struct Contact* pc);//增加聯(lián)系人void AddContact(struct Contact* pc);//顯示所有的聯(lián)系人void ShowContact(struct Contact* pc);//刪除指定聯(lián)系人void DelContact(struct Contact* pc);//查找指定聯(lián)系人void SearchContact(const struct Contact* pc);

contact.c文件

#define _CRT_SECURE_NO_WARNINGS#include"contact.h"http://初始化通訊錄void InitContact(struct Contact* pc){	pc->sz = 0;//默認(rèn)沒(méi)有信息	//memset(pc->data, 0, PEOPLE_MAX * sizeof(struct PeoInfo));	memset(pc->data, 0, sizeof(pc->data));}//增加聯(lián)系人void AddContact(struct Contact* pc){	if (pc->sz == PEOPLE_MAX)	{		printf("通訊錄滿了/n");	}	else	{		printf("請(qǐng)輸入名字:>");		scanf("%s", pc->data[pc->sz].name);		printf("請(qǐng)輸入年齡:>");		scanf("%d", &(pc->data[pc->sz].age));		printf("請(qǐng)輸入性別:>");		scanf("%s", pc->data[pc->sz].sex);		printf("請(qǐng)輸入電話:>");		scanf("%s", pc->data[pc->sz].tele);		printf("請(qǐng)輸入地址:>");		scanf("%s", pc->data[pc->sz].addr);		//提示		printf("添加成功!/n");		pc->sz++;	}}//顯示所有的聯(lián)系人void ShowContact(struct Contact* pc){	int i = 0;	//打印標(biāo)題  (美觀)	printf("%15s/t%5s/t%8s/t%15s/t%30s/n/n", "name", "age", "sex", "tele", "addr");	for (i = 0; i < pc->sz; i++)	{		//打印每個(gè)數(shù)據(jù)		printf("%15s/t%5d/t%8s/t%15s/t%30s/n/n",			pc->data[i].name,			pc->data[i].age, 			pc->data[i].sex, 			pc->data[i].tele,			pc->data[i].addr );	}}//刪除指定聯(lián)系人int FindContactByName(const struct Contact* pc, const char* name){	int i = 0;	for (i = 0; i < pc->sz; i++)	{		if (strcmp(pc->data[i].name, name) == 0)		{			return i;		}	}	//找不到	return -1;}void DelContact(struct Contact* pc){	if (pc->sz == 0)	{		printf("通訊錄為空,無(wú)法刪除!/n");		return;	}	char name[NAME_MAX] = { 0 };	printf("請(qǐng)輸入要?jiǎng)h除聯(lián)系人的名字:>");	scanf("%s", name);	//查找	int pos = FindContactByName(pc, name);	if (pos == -1)	{		printf("指定的聯(lián)系人不存在!/n");	}	//刪除	else	{		int j = 0;		for (j = pos; j < pc->sz - 1; j++)		{			pc->data[j] = pc->data[j + 1];		}		pc->sz--;		//提示		printf("刪除成功!/n");	}}//查找指定聯(lián)系人void SearchContact(const struct Contact* pc){	char name[NAME_MAX] = { 0 };	printf("輸入要查找的聯(lián)系人的名字:>");	scanf("%s", name);	//查找	int pos = FindContactByName(pc, name);	if (pos == -1)	{		printf("查無(wú)此人!/n");	}	else	{		//打印標(biāo)題  (美觀)		printf("%15s/t%5s/t%8s/t%15s/t%30s/n/n", "name", "age", "sex", "tele", "addr");		//打印每個(gè)數(shù)據(jù)		printf("%15s/t%5d/t%8s/t%15s/t%30s/n/n",			pc->data[pos].name,			pc->data[pos].age,			pc->data[pos].sex,			pc->data[pos].tele,			pc->data[pos].addr);	}}

Search函數(shù)初步調(diào)試:

?Modify函數(shù)功能實(shí)現(xiàn):

和查找函數(shù)一樣,甚至可以直接copy下來(lái)代碼,來(lái)判斷要修改的聯(lián)系人是否存在。

如果pos存在,那么就需要用類似于Add函數(shù)的代碼,只不過(guò)把 “ 遍歷 ”換成pos位置處的數(shù)據(jù)來(lái)進(jìn)行修改即可:

test.c文件

#include"contact.h"void menu(){	printf("************************************/n");	printf("************************************/n");	printf("******    1.add      2.del     *****/n");	printf("******    3.search   4.modify  *****/n");	printf("*****     5.show     6.sort    *****/n");	printf("*****     0.exit              ******/n");	printf("************************************/n");	printf("************************************/n");}enum Option{	EXIT,//0	ADD,	DEL,	SEARCH,	MODIFY,	SHOW,	SORT};int main(){	int input = 0;	//創(chuàng)建一個(gè)通訊錄	struct Contact con;	//初始化通訊錄	InitContact(&con);	do	{		menu();		printf("請(qǐng)選擇:>/n");		scanf("%d", &input);		switch (input)		{		case ADD:			AddContact(&con);			break;		case DEL:			DelContact(&con);			break;		case SEARCH:			SearchContact(&con);			break;		case MODIFY:			ModifyContact(&con);			break;		case SHOW:			ShowContact(&con);			break;		case EXIT:			printf("退出通訊錄/n");			break;		default:			printf("選擇錯(cuò)誤!/n");			break;		}	} while (input);	return 0;}

contact.h文件

#pragma once#include#include#define NAME_MAX 30#define SEX_MAX 5#define TELE_MAX 12#define ADDR_MAX 30#define PEOPLE_MAX 1000//一個(gè)人的信息struct PeoInfo{	char name[NAME_MAX];	int age;	char sex[SEX_MAX];	char tele[TELE_MAX];	char addr[ADDR_MAX];};//通訊錄struct Contact{	struct PeoInfo data[PEOPLE_MAX];//1000個(gè)人的數(shù)據(jù),存放在data數(shù)組中	int sz;//記錄當(dāng)前通訊錄的有效信息的個(gè)數(shù)(包含多少個(gè)人的信息)};//初始化通訊錄void InitContact(struct Contact* pc);//增加聯(lián)系人void AddContact(struct Contact* pc);//顯示所有的聯(lián)系人void ShowContact(struct Contact* pc);//刪除指定聯(lián)系人void DelContact(struct Contact* pc);//查找指定聯(lián)系人void SearchContact(const struct Contact* pc);//修改指定聯(lián)系人void ModifyContact(struct Contact* pc);

contact.c文件

#define _CRT_SECURE_NO_WARNINGS#include"contact.h"http://初始化通訊錄void InitContact(struct Contact* pc){	pc->sz = 0;//默認(rèn)沒(méi)有信息	//memset(pc->data, 0, PEOPLE_MAX * sizeof(struct PeoInfo));	memset(pc->data, 0, sizeof(pc->data));}//增加聯(lián)系人void AddContact(struct Contact* pc){	if (pc->sz == PEOPLE_MAX)	{		printf("通訊錄滿了/n");	}	else	{		printf("請(qǐng)輸入名字:>");		scanf("%s", pc->data[pc->sz].name);		printf("請(qǐng)輸入年齡:>");		scanf("%d", &(pc->data[pc->sz].age));		printf("請(qǐng)輸入性別:>");		scanf("%s", pc->data[pc->sz].sex);		printf("請(qǐng)輸入電話:>");		scanf("%s", pc->data[pc->sz].tele);		printf("請(qǐng)輸入地址:>");		scanf("%s", pc->data[pc->sz].addr);		//提示		printf("添加成功!/n");		pc->sz++;	}}//顯示所有的聯(lián)系人void ShowContact(struct Contact* pc){	int i = 0;	//打印標(biāo)題  (美觀)	printf("%15s/t%5s/t%8s/t%15s/t%30s/n/n", "name", "age", "sex", "tele", "addr");	for (i = 0; i < pc->sz; i++)	{		//打印每個(gè)數(shù)據(jù)		printf("%15s/t%5d/t%8s/t%15s/t%30s/n/n",			pc->data[i].name,			pc->data[i].age, 			pc->data[i].sex, 			pc->data[i].tele,			pc->data[i].addr );	}}//刪除指定聯(lián)系人int FindContactByName(const struct Contact* pc, const char* name){	int i = 0;	for (i = 0; i < pc->sz; i++)	{		if (strcmp(pc->data[i].name, name) == 0)		{			return i;		}	}	//找不到	return -1;}void DelContact(struct Contact* pc){	if (pc->sz == 0)	{		printf("通訊錄為空,無(wú)法刪除!/n");		return;	}	char name[NAME_MAX] = { 0 };	printf("請(qǐng)輸入要?jiǎng)h除聯(lián)系人的名字:>");	scanf("%s", name);	//查找	int pos = FindContactByName(pc, name);	if (pos == -1)	{		printf("指定的聯(lián)系人不存在!/n");	}	//刪除	else	{		int j = 0;		for (j = pos; j < pc->sz - 1; j++)		{			pc->data[j] = pc->data[j + 1];		}		pc->sz--;		//提示		printf("刪除成功!/n");	}}//查找指定聯(lián)系人void SearchContact(const struct Contact* pc){	char name[NAME_MAX] = { 0 };	printf("輸入要查找的聯(lián)系人的名字:>");	scanf("%s", name);	//查找	int pos = FindContactByName(pc, name);	if (pos == -1)	{		printf("查無(wú)此人!/n");	}	else	{		//打印標(biāo)題  (美觀)		printf("%15s/t%5s/t%8s/t%15s/t%30s/n/n", "name", "age", "sex", "tele", "addr");		//打印每個(gè)數(shù)據(jù)		printf("%15s/t%5d/t%8s/t%15s/t%30s/n/n",			pc->data[pos].name,			pc->data[pos].age,			pc->data[pos].sex,			pc->data[pos].tele,			pc->data[pos].addr);	}}//修改指定聯(lián)系人void ModifyContact(struct Contact* pc){	char name[NAME_MAX] = { 0 };	printf("輸入要修改的聯(lián)系人的名字:>");	scanf("%s", name);	//查找	int pos = FindContactByName(pc, name);	if (pos == -1)	{		printf("要修改的聯(lián)系人數(shù)據(jù)不存在!/n");	}	else	{		printf("請(qǐng)輸入新的名字:>");		scanf("%s", pc->data[pos].name);		printf("請(qǐng)輸入新的年齡:>");		scanf("%d", &(pc->data[pos].age));		printf("請(qǐng)輸入新的性別:>");		scanf("%s", pc->data[pos].sex);		printf("請(qǐng)輸入新的電話:>");		scanf("%s", pc->data[pos].tele);		printf("請(qǐng)輸入新的地址:>");		scanf("%s", pc->data[pos].addr);		//提示		printf("修改成功!/n");	}}

Modify函數(shù)初步調(diào)試:

?排序函數(shù)就不再多帶帶編寫(xiě)了,利用qsort( )函數(shù)就可以解決,閑時(shí)可能會(huì)繼續(xù)在此寫(xiě)寫(xiě).........

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/120978.html

相關(guān)文章

  • C語(yǔ)言中還有這些類型,別再說(shuō)你不知道了!手把手帶你解鎖C語(yǔ)言中的自定義類型,讓你寫(xiě)你所想。

    摘要:結(jié)構(gòu)體類型的特殊聲明在初階結(jié)構(gòu)體中,我們已經(jīng)將了結(jié)構(gòu)體類型是如何進(jìn)行聲明的,那么在這里,我們將講一些特殊的結(jié)構(gòu)體聲明不完全的聲明。所以我們應(yīng)該這樣寫(xiě)通過(guò)指針來(lái)找到下一個(gè)同類型結(jié)構(gòu)體的寫(xiě)法,我們就稱之為結(jié)構(gòu)體的自引用。 ...

    hizengzeng 評(píng)論0 收藏0
  • 詳解C語(yǔ)言結(jié)構(gòu)枚舉聯(lián)合

    摘要:如下面的結(jié)構(gòu)體包含三個(gè)成員,分別是。聯(lián)合體是一種結(jié)構(gòu)。其對(duì)其方式適合其中所有成員。 結(jié)構(gòu)體、枚舉、聯(lián)合體 1.什么是結(jié)構(gòu)體、枚舉、聯(lián)合體2.定義結(jié)構(gòu)體2.1 包含...

    fou7 評(píng)論0 收藏0
  • C語(yǔ)言實(shí)現(xiàn)通訊管理系統(tǒng)結(jié)構(gòu)+枚舉+動(dòng)態(tài)內(nèi)存開(kāi)辟+文件操作+線性表存放數(shù)據(jù))

    摘要:本篇文章將用語(yǔ)言代碼實(shí)現(xiàn)一個(gè)通訊錄管理系統(tǒng),本片文章博主將會(huì)運(yùn)用到架構(gòu)提,枚舉,動(dòng)態(tài)內(nèi)存開(kāi)辟和文件操作等。這里存放數(shù)據(jù)的結(jié)構(gòu)是線性表。這個(gè)指針就可以通過(guò)動(dòng)態(tài)開(kāi)辟內(nèi)存來(lái)調(diào)整存放信息的大小。擴(kuò)容成功這樣就實(shí)現(xiàn)了檢查通訊錄是否需要擴(kuò)容的函數(shù)。 ...

    PingCAP 評(píng)論0 收藏0
  • C語(yǔ)言----實(shí)現(xiàn)動(dòng)態(tài)通訊

    摘要:文章目錄前言前言一建立文件二編寫(xiě)函數(shù)三調(diào)試運(yùn)行四成果展示五代碼匯總總結(jié)前言通訊錄是我們?nèi)粘J謾C(jī)中常見(jiàn)的功能之一,綜合語(yǔ)言中結(jié)構(gòu)體,循環(huán),條件語(yǔ)句,動(dòng)態(tài)內(nèi)存分配等等知識(shí)點(diǎn),我們對(duì)手機(jī)通訊錄進(jìn)行一個(gè)簡(jiǎn)單的實(shí)現(xiàn),下面我們開(kāi)始講解準(zhǔn)備工作利用語(yǔ) 文章目錄 前言一、建立文件二、編寫(xiě)函數(shù)三、調(diào)試運(yùn)...

    whlong 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<