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

資訊專欄INFORMATION COLUMN

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

justCoding / 1568人閱讀


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

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

實現一個通訊錄;

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

提供方法:

?一、通訊錄

??實現一個通訊錄;

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

提供方法:

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

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

?二、菜單實現和用戶交互

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

?三、主函數

????1.enum選項

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

enum枚舉常量,里面默認對應的值是從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);

?四、定義聯系人和通訊錄

????1.定義聯系人結構體

#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結構體可以存放:姓名、性別、年齡、電話、住址

????2.定義通訊錄結構體

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

??注意事項:

  1. struct PeoInfo date[MAX]這個數組可以存放1000人的信息
  2. sz表示當前通訊錄里面的人數

????3.定義結構體變量

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里面都是隨機值
  2. memset開辟了一塊動態內存空間,相關知識請查閱我寫的博客:關于memset用法

?六、新增聯系人

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++;	}}

??注意事項:

每次添加選擇放在下標為szdata數組里面

?七、查找聯系人

??注意事項:

  1. 我發現無論是刪除聯系人、修改聯系人、查看所有聯系人都需要一個查找所有聯系人的動作,因此我們寫出一個查找所有聯系人的函數
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庫函數來比較data數組中的名字與要查找的名字是否相同
  2. 相同則返回下標,不同則返回-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);	}}

?八、刪除聯系人

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);//按照名字去查找,找到了就返回下標,未找到就返回-1	if (pos == -1)	{		printf("指定聯系人不存在/n");	}	else	{		int j = 0;		for (j = pos; j < pc->sz-1; j++)		{			pc->data[j] = pc->data[j + 1];		}		pc->sz--;		printf("刪除成功!/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);//選擇放在下標為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);	}}

?十、查看所有聯系人

void ShowContact(struct Contact* pc){	int i = 0;	printf("%15s/t%5s/t%8s/t%15s/t%30s/n/n", "姓名", "年齡", "性別", "電話", "地址");//打印標題	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);	}}

?十一、清空所有聯系人

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

??注意事項:

memset不是開辟內存的 是將內存空間中的數據清零的

?十二、以名字排序所有聯系人

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

??注意事項:

有關qsort相關的知識,請參考此篇博客

?十三、完整代碼

????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);//清空所有聯系人void EmptyContact(struct Contact* pc);//增加聯系人void AddContact(struct Contact* pc);//顯示所有的聯系人void ShowContact(struct Contact* pc);//刪除指定聯系人void DelContact(struct Contact* pc);//查找指定聯系人void SearchContact(const struct Contact* pc);//修改指定聯系人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. 新增聯系人/n");	printf(" 2. 刪除聯系人/n");	printf(" 3. 查找聯系人/n");	printf(" 4. 修改聯系人/n");	printf(" 5. 查看所有聯系人/n");	printf(" 6. 清空所有聯系人/n");	printf(" 7. 以名字排序所有聯系人/n");	printf(" 0. 退出/n");	printf("=====================/n");	printf(" 請輸入您的選擇:");}enum Option{	EXIT,	ADD,	DEL,	SEARCH,	MODIFY,	SHOW,	EMPTY,	SORT,};//枚舉常量,里面對應的值是從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
                 
               
              

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/121138.html

相關文章

  • C語言實現簡易動態電話簿&amp;&amp;文末提供源代碼下載

    摘要:導航前言功能函數結構設定菜單交互主函數通訊錄初始化新增聯系人查找聯系人刪除聯系人修改聯系人查看所有聯系人清空所有聯系人以名字排序所有聯系人結尾語前言本文將實現一個簡易的電話簿管理。信息包括名字,性別,電話號碼,年齡,住址。 ...

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

    ??蘇州程序大白一文從基礎手把手教你Python數據可視化大佬??《??記得收藏??》 目錄 ????開講啦!!!!????蘇州程序大白?????博主介紹前言數據關系可視化散點圖 Scatter plots折線圖強調連續性 Emphasizing continuity with line plots同時顯示多了圖表 數據種類的可視化 Plotting with categorical da...

    Drinkey 評論0 收藏0
  • ??整理2萬字帶你走進C語言(詳細講解+代碼演示+圖解)??(強烈建議收藏!!!)

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

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

    目錄 第一章:單片機概述 單片機的應用領域: STC89C52單片機: 單片機命名規則: ?單片機內部結構圖: ?單片機管腳圖: ?單片機最小系統: 進制表: 新建一個工程:? 檢查單片機驅動是否安裝完成: 打開Keil uVision集成開發環境 選擇Atmel下的AT89C52 創建源文件? ?第二章:LED LED介紹: ?點亮LED:?? 第一章:單片機概述 單片機(Micro Contr...

    idisfkj 評論0 收藏0

發表評論

0條評論

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