?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à)、住址
提供方法:
??注:這是一個(gè)簡(jiǎn)單的通訊錄,實(shí)現(xiàn)方案是初級(jí)版。
只能在程序運(yùn)行期間存在(沒(méi)有寫(xiě)入文件)。
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");}
enum Option{ EXIT, ADD, DEL, SEARCH, MODIFY, SHOW, EMPTY, SORT,};
enum
枚舉常量,里面默認(rèn)對(duì)應(yīng)的值是從0~7,剛好和菜單中的選項(xiàng)匹配起來(lái)了
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);
#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):
define
定義的常量,這樣要修改最大值的時(shí)候更方便struct
結(jié)構(gòu)體可以存放:姓名、性別、年齡、電話(huà)、住址#define MAX 1000struct Contact{ struct PeoInfo date[MAX]; int sz;};
??注意事項(xiàng):
struct PeoInfo date[MAX]
這個(gè)數(shù)組可以存放1000
人的信息sz
表示當(dāng)前通訊錄里面的人數(shù)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):
struct
里面都是隨機(jī)值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)為sz
的data
數(shù)組里面
??注意事項(xiàng):
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):
strcmp
庫(kù)函數(shù)來(lái)比較data
數(shù)組中的名字與要查找的名字是否相同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); }}
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"); }}
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); }}
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); }}
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ù)清零的
void SortContact(struct Contact* pc){ qsort(pc->data, pc->sz, sizeof(struct PeoInfo), CmpByname);}
??注意事項(xiàng):
有關(guān)qsort相關(guān)的知識(shí),請(qǐng)參考此篇博客
#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);
#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;}
#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
摘要:導(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)碼,年齡,住址。 ...
??蘇州程序大白一文從基礎(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...
目錄 一、什么是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ǔ)句 ?...
目錄 第一章:?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...
閱讀 2749·2021-10-11 10:57
閱讀 1577·2021-09-26 09:55
閱讀 1315·2021-09-06 15:11
閱讀 3456·2021-08-26 14:16
閱讀 674·2019-08-30 15:54
閱讀 543·2019-08-30 12:43
閱讀 3300·2019-08-29 16:18
閱讀 2576·2019-08-23 16:14