成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

??C語言通訊錄管理系統(tǒng)(簡易版)??

justCoding / 1661人閱讀


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

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

實現(xiàn)一個通訊錄;

通訊錄可以用來存儲1000個人的信息,每個人的信息包括:姓名、性別、年齡、電話、住址

提供方法:

?一、通訊錄

??實現(xiàn)一個通訊錄;

通訊錄可以用來存儲1000個人的信息,每個人的信息包括:姓名、性別、年齡、電話、住址

提供方法:

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

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

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

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選項

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

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

????2.switch判斷

do	{		menu();		printf("請選擇:>");		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("選擇錯誤/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];};

??注意事項:

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

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

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

??注意事項:

  1. struct PeoInfo date[MAX]這個數(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));}

??注意事項:

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

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

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

??注意事項:

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

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

??注意事項:

  1. 我發(fā)現(xiàn)無論是刪除聯(lián)系人、修改聯(lián)系人、查看所有聯(lián)系人都需要一個查找所有聯(lián)系人的動作,因此我們寫出一個查找所有聯(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;}

??注意事項:

  1. strcmp庫函數(shù)來比較data數(shù)組中的名字與要查找的名字是否相同
  2. 相同則返回下標(biāo),不同則返回-1
void SearchContact(struct Contact* pc){	char name[NAME_MAX] = { 0 };	printf("請輸入要查找人的名字:>");	scanf("%s", name);	int pos= FindContactByName(pc, name);	if (-1 == pos)	{		printf("查無此人");	}	else	{		printf("%15s/t%5s/t%8s/t%15s/t%30s/n/n", "姓名", "年齡", "性別", "電話", "地址");		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("通訊錄為空,無法刪除/n");	}	char name[NAME_MAX] = { 0 };	printf("請輸入要刪除人的名字");	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("請輸入要修改人的名字:>");	scanf("%s", name);	int pos = FindContactByName(pc, name);	if (-1 == pos)	{		printf("要修改的人不存在/n");	}	else	{		printf("請輸入新的名字:>");		scanf("%s", pc->data[pos].name);//選擇放在下標(biāo)為sz的data里面		printf("請輸入新的年齡:>");		scanf("%d", &(pc->data[pos].age));		printf("請輸入新的性別:>");		scanf("%s", pc->data[pos].sex);		printf("請輸入新的電話:>");		scanf("%s", pc->data[pos].tele);		printf("請輸入新的地址:>");		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", "姓名", "年齡", "性別", "電話", "地址");//打印標(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));}

??注意事項:

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

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

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

??注意事項:

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

?十三、完整代碼

????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(" 請輸入您的選擇:");}enum Option{	EXIT,	ADD,	DEL,	SEARCH,	MODIFY,	SHOW,	EMPTY,	SORT,};//枚舉常量,里面對應(yīng)的值是從0~6,剛好和菜單匹配起來了int main(){	int input = 0;	struct Contact con;	InitContact(&con);	do	{		menu();		printf("請選擇:>");		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("選擇錯誤/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)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/121138.html

相關(guān)文章

  • C語言實現(xiàn)簡易動態(tài)電話簿&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é)尾語前言本文將實現(xiàn)一個簡易的電話簿管理。信息包括名字,性別,電話號碼,年齡,住址。 ...

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

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

    Drinkey 評論0 收藏0
  • ??整理2萬字帶你走進(jìn)C語言(詳細(xì)講解+代碼演示+圖解)??(強(qiáng)烈建議收藏?。。。?/b>

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

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

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

    idisfkj 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<