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

資訊專(zhuān)欄INFORMATION COLUMN

??C語(yǔ)言通訊錄管理系統(tǒng)(簡(jiǎn)易版)??

justCoding / 1576人閱讀


本篇博客是關(guān)于C語(yǔ)言通訊錄的介紹,來(lái)看看這你是否能寫(xiě)出一個(gè)這樣的系統(tǒng)呢?

?Hi~ o( ̄▽?zhuān)?/em>)ブ這里是豬豬程序員
? 很高興見(jiàn)到你O(∩_∩)O! ? 現(xiàn)在正在發(fā)芽中…
?歡迎關(guān)注?點(diǎn)贊?收藏??留言?
?本文由豬豬原創(chuàng),CSDN首發(fā)!?首發(fā)時(shí)間:?2021年9月25日?
?? 博主水平有限,如果發(fā)現(xiàn)錯(cuò)誤,一定要及時(shí)告知作者哦 o( ̄︶ ̄)o!感謝感謝!
?博主的碼云 gitee,平常博主寫(xiě)的程序代碼都在里面。

實(shí)現(xiàn)一個(gè)通訊錄;

通訊錄可以用來(lái)存儲(chǔ)1000個(gè)人的信息,每個(gè)人的信息包括:姓名、性別、年齡、電話(huà)、住址

提供方法:

?一、通訊錄

??實(shí)現(xiàn)一個(gè)通訊錄;

通訊錄可以用來(lái)存儲(chǔ)1000個(gè)人的信息,每個(gè)人的信息包括:姓名、性別、年齡、電話(huà)、住址

提供方法:

  1. 添加聯(lián)系人信息
  2. 刪除指定聯(lián)系人信息
  3. 查找指定聯(lián)系人信息
  4. 修改指定聯(lián)系人信息
  5. 顯示所有聯(lián)系人信息
  6. 清空所有聯(lián)系人
  7. 以名字排序所有聯(lián)系人

??注:這是一個(gè)簡(jiǎn)單的通訊錄,實(shí)現(xiàn)方案是初級(jí)版。
只能在程序運(yùn)行期間存在(沒(méi)有寫(xiě)入文件)。

?二、菜單實(shí)現(xiàn)和用戶(hù)交互

void menu(){		printf("=====================/n");		printf(" 1. 新增聯(lián)系人/n");		printf(" 2. 刪除聯(lián)系人/n");		printf(" 3. 查找聯(lián)系人/n");		printf(" 4. 修改聯(lián)系人/n");		printf(" 5. 查看所有聯(lián)系人/n");		printf(" 6. 清空所有聯(lián)系人/n");		printf(" 7. 以名字排序所有聯(lián)系人/n");		printf(" 0. 退出/n");		printf("=====================/n");}

?三、主函數(shù)

????1.enum選項(xiàng)

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

enum枚舉常量,里面默認(rèn)對(duì)應(yīng)的值是從0~7,剛好和菜單中的選項(xiàng)匹配起來(lái)了

????2.switch判斷

do	{		menu();		printf("請(qǐng)選擇:>");		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 EMPTY:				EmptyContact(&con);				break;			case EXIT:				printf("退出通訊錄/n");				break;			default:				printf("選擇錯(cuò)誤/n");				break;		}	} while (input);

?四、定義聯(lián)系人和通訊錄

????1.定義聯(lián)系人結(jié)構(gòu)體

#define NAME_MAX 20#define SEX_MAX 5#define TELE_MAX 20#define ADDR_MAX 30struct PeoInfo{	char name[NAME_MAX];	int age;	char sex[SEX_MAX];	char tele[TELE_MAX];	char addr[ADDR_MAX];};

??注意事項(xiàng):

  1. 我使用了四個(gè)define定義的常量,這樣要修改最大值的時(shí)候更方便
  2. 定義的struct結(jié)構(gòu)體可以存放:姓名、性別、年齡、電話(huà)、住址

????2.定義通訊錄結(jié)構(gòu)體

#define MAX 1000struct Contact{	struct PeoInfo date[MAX];	int sz;};

??注意事項(xiàng):

  1. struct PeoInfo date[MAX]這個(gè)數(shù)組可以存放1000人的信息
  2. sz表示當(dāng)前通訊錄里面的人數(shù)

????3.定義結(jié)構(gòu)體變量

struct PeoInfo con;

?五、通訊錄初始化

#include#include"contact.h"void Initcontact(struct Contact* pc){	pc->sz = 0;	memset(pc->date, 0, MAX * sizeof(struct PeoInfo));}

??注意事項(xiàng):

  1. 將信息都賦值為0,否則 struct里面都是隨機(jī)值
  2. memset開(kāi)辟了一塊動(dòng)態(tài)內(nèi)存空間,相關(guān)知識(shí)請(qǐng)查閱我寫(xiě)的博客:關(guān)于memset用法

?六、新增聯(lián)系人

void AddContact(struct Contact* pc){	struct PeoInfo tmp = { 0 };	if (pc->sz == MAX)	{		printf("通訊錄已滿(mǎn)1000人");	}	else	{		printf("請(qǐng)輸入名字:>");		scanf("%s", tmp.name);		printf("請(qǐng)輸入年齡:>");		scanf("%d", tmp.age));		printf("請(qǐng)輸入性別:>");		scanf("%s", tmp.sex);		printf("請(qǐng)輸入電話(huà):>");		scanf("%s", tmp.tele);		printf("請(qǐng)輸入地址:>");		scanf("%s", tmp.addr);		pc->data[pc->sz] = tmp;		printf("添加成功!");		pc->sz++;	}}

??注意事項(xiàng):

每次添加選擇放在下標(biāo)為szdata數(shù)組里面

?七、查找聯(lián)系人

??注意事項(xiàng):

  1. 我發(fā)現(xiàn)無(wú)論是刪除聯(lián)系人、修改聯(lián)系人、查看所有聯(lián)系人都需要一個(gè)查找所有聯(lián)系人的動(dòng)作,因此我們寫(xiě)出一個(gè)查找所有聯(lián)系人的函數(shù)
int FindContactByName(struct Contact* pc, char name[]){	int i = 0;	for (i = 0; i < pc->sz; i++)	{		if (strcmp(pc->data[i].name, name) == 0)		{			return i;		}	}	return -1;}

??注意事項(xiàng):

  1. strcmp庫(kù)函數(shù)來(lái)比較data數(shù)組中的名字與要查找的名字是否相同
  2. 相同則返回下標(biāo),不同則返回-1
void SearchContact(struct Contact* pc){	char name[NAME_MAX] = { 0 };	printf("請(qǐng)輸入要查找人的名字:>");	scanf("%s", name);	int pos= FindContactByName(pc, name);	if (-1 == pos)	{		printf("查無(wú)此人");	}	else	{		printf("%15s/t%5s/t%8s/t%15s/t%30s/n/n", "姓名", "年齡", "性別", "電話(huà)", "地址");		printf("%15s/t%5s/t%8s/t%15s/t%30s/n",			pc->data[pos].name,			pc->data[pos].age,			pc->data[pos].sex,			pc->data[pos].tele,			pc->data[pos].addr);	}}

?八、刪除聯(lián)系人

void DelContact(struct Contact* pc){	if (pc->sz == 0)	{		printf("通訊錄為空,無(wú)法刪除/n");	}	char name[NAME_MAX] = { 0 };	printf("請(qǐng)輸入要?jiǎng)h除人的名字");	scanf_s("%s", name);	int pos=FindContactByName(pc,name);//按照名字去查找,找到了就返回下標(biāo),未找到就返回-1	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 ModifyContact(struct Contact* pc){	char name[NAME_MAX] = { 0 };	printf("請(qǐng)輸入要修改人的名字:>");	scanf("%s", name);	int pos = FindContactByName(pc, name);	if (-1 == pos)	{		printf("要修改的人不存在/n");	}	else	{		printf("請(qǐng)輸入新的名字:>");		scanf("%s", pc->data[pos].name);//選擇放在下標(biāo)為sz的data里面		printf("請(qǐng)輸入新的年齡:>");		scanf("%d", &(pc->data[pos].age));		printf("請(qǐng)輸入新的性別:>");		scanf("%s", pc->data[pos].sex);		printf("請(qǐng)輸入新的電話(huà):>");		scanf("%s", pc->data[pos].tele);		printf("請(qǐng)輸入新的地址:>");		scanf("%s", pc->data[pos].addr);	}}

?十、查看所有聯(lián)系人

void ShowContact(struct Contact* pc){	int i = 0;	printf("%15s/t%5s/t%8s/t%15s/t%30s/n/n", "姓名", "年齡", "性別", "電話(huà)", "地址");//打印標(biāo)題	for (i = 0; i < pc->sz; i++)	{		printf("%15s/t%5s/t%8s/t%15s/t%30s/n",			pc->data[i].name, 			pc->data[i].age, 			pc->data[i].sex, 			pc->data[i].tele, 			pc->data[i].addr);	}}

?十一、清空所有聯(lián)系人

void EmptyContact(struct Contact* pc){	pc->sz = 0;	memset(pc->data, 0, MAX * sizeof(struct PeoInfo));}

??注意事項(xiàng):

memset不是開(kāi)辟內(nèi)存的 是將內(nèi)存空間中的數(shù)據(jù)清零的

?十二、以名字排序所有聯(lián)系人

void SortContact(struct Contact* pc){	qsort(pc->data, pc->sz, sizeof(struct PeoInfo), CmpByname);}

??注意事項(xiàng):

有關(guān)qsort相關(guān)的知識(shí),請(qǐng)參考此篇博客

?十三、完整代碼

????contact.h

#define _CRT_SECURE_NO_WARNINGS 1#define _CRT_SECURE_NO_WARNINGS 1#include#define NAME_MAX 20#define SEX_MAX 5#define TELE_MAX 20#define ADDR_MAX 30#define MAX 100#include #include #include 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[MAX];	int sz;};//初始化通訊錄void InitContact(struct Contact* pc);//清空所有聯(lián)系人void EmptyContact(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);

????test.c

#define _CRT_SECURE_NO_WARNINGS 1#define _CRT_SECURE_NO_WARNINGS 1#include#include "contact.h"void menu(){	printf("=====================/n");	printf(" 1. 新增聯(lián)系人/n");	printf(" 2. 刪除聯(lián)系人/n");	printf(" 3. 查找聯(lián)系人/n");	printf(" 4. 修改聯(lián)系人/n");	printf(" 5. 查看所有聯(lián)系人/n");	printf(" 6. 清空所有聯(lián)系人/n");	printf(" 7. 以名字排序所有聯(lián)系人/n");	printf(" 0. 退出/n");	printf("=====================/n");	printf(" 請(qǐng)輸入您的選擇:");}enum Option{	EXIT,	ADD,	DEL,	SEARCH,	MODIFY,	SHOW,	EMPTY,	SORT,};//枚舉常量,里面對(duì)應(yīng)的值是從0~6,剛好和菜單匹配起來(lái)了int main(){	int input = 0;	struct Contact con;	InitContact(&con);	do	{		menu();		printf("請(qǐng)選擇:>");		scanf_s("%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 EMPTY:			EmptyContact(&con);			break;		case EXIT:			printf("退出通訊錄/n");			break;		default:			printf("選擇錯(cuò)誤/n");			break;		}	} while (input);		return 0;}

????contact.c

#define _CRT_SECURE_NO_WARNINGS 1#include#include "contact.h"void InitContact(struct Contact* pc){	pc->sz = 0;	memset(pc->data, 0, MAX * sizeof(struct PeoInfo));}void AddContact(struct Contact* pc){	struct PeoInfo tmp = { 0 };	if (pc->sz == MAX)	{		printf
                 
               
              

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

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

相關(guān)文章

  • C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)易動(dòng)態(tài)電話(huà)簿&amp;&amp;文末提供源代碼下載

    摘要:導(dǎo)航前言功能函數(shù)結(jié)構(gòu)設(shè)定菜單交互主函數(shù)通訊錄初始化新增聯(lián)系人查找聯(lián)系人刪除聯(lián)系人修改聯(lián)系人查看所有聯(lián)系人清空所有聯(lián)系人以名字排序所有聯(lián)系人結(jié)尾語(yǔ)前言本文將實(shí)現(xiàn)一個(gè)簡(jiǎn)易的電話(huà)簿管理。信息包括名字,性別,電話(huà)號(hào)碼,年齡,住址。 ...

    蘇丹 評(píng)論0 收藏0
  • ??蘇州程序大白一文從基礎(chǔ)手把手教你Python數(shù)據(jù)可視化大佬??《??記得收藏??

    ??蘇州程序大白一文從基礎(chǔ)手把手教你Python數(shù)據(jù)可視化大佬??《??記得收藏??》 目錄 ????開(kāi)講啦!!!!????蘇州程序大白?????博主介紹前言數(shù)據(jù)關(guān)系可視化散點(diǎn)圖 Scatter plots折線(xiàn)圖強(qiáng)調(diào)連續(xù)性 Emphasizing continuity with line plots同時(shí)顯示多了圖表 數(shù)據(jù)種類(lèi)的可視化 Plotting with categorical da...

    Drinkey 評(píng)論0 收藏0
  • ??整理2萬(wàn)字帶你走進(jìn)C語(yǔ)言(詳細(xì)講解+代碼演示+圖解)??(強(qiáng)烈建議收藏!!!)

    目錄 一、什么是C語(yǔ)言? 二、第一個(gè)C語(yǔ)言程序 代碼 程序分析 ?程序運(yùn)行 一個(gè)工程中出現(xiàn)兩個(gè)及以上的main函數(shù) 代碼 運(yùn)行結(jié)果 分析 三、數(shù)據(jù)類(lèi)型 數(shù)據(jù)各種類(lèi)型 為什么會(huì)有這么多的數(shù)據(jù)類(lèi)型? 計(jì)算機(jī)單位 ?各個(gè)數(shù)據(jù)類(lèi)型的大小 ?注意事項(xiàng) 數(shù)據(jù)類(lèi)型的使用 四、變量和常量 變量的分類(lèi) 變量的使用 變量的作用域和生命周期 ?常量 五、字符串+轉(zhuǎn)義字符+注釋 字符串 ?轉(zhuǎn)義字符 注釋 六、選擇語(yǔ)句 ?...

    邱勇 評(píng)論0 收藏0
  • 【51單片機(jī)】??萬(wàn)物互聯(lián)??一招搞定單片機(jī)(持續(xù)更新中......)

    目錄 第一章:?jiǎn)纹瑱C(jī)概述 單片機(jī)的應(yīng)用領(lǐng)域: STC89C52單片機(jī): 單片機(jī)命名規(guī)則: ?單片機(jī)內(nèi)部結(jié)構(gòu)圖: ?單片機(jī)管腳圖: ?單片機(jī)最小系統(tǒng): 進(jìn)制表: 新建一個(gè)工程:? 檢查單片機(jī)驅(qū)動(dòng)是否安裝完成: 打開(kāi)Keil uVision集成開(kāi)發(fā)環(huán)境 選擇Atmel下的AT89C52 創(chuàng)建源文件? ?第二章:LED LED介紹: ?點(diǎn)亮LED:?? 第一章:?jiǎn)纹瑱C(jī)概述 單片機(jī)(Micro Contr...

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

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

0條評(píng)論

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