?Hi~ o( ̄▽ ̄)ブ這里是豬豬程序員
? 很高興見到你O(∩_∩)O! ? 現在正在發芽中…
?歡迎關注?點贊?收藏??留言?
?本文由豬豬原創,CSDN首發!?首發時間:?2021年9月25日?
?? 博主水平有限,如果發現錯誤,一定要及時告知作者哦 o( ̄︶ ̄)o!感謝感謝!
?博主的碼云 gitee,平常博主寫的程序代碼都在里面。
實現一個通訊錄;
通訊錄可以用來存儲1000個人的信息,每個人的信息包括:姓名、性別、年齡、電話、住址
提供方法:
??實現一個通訊錄;
通訊錄可以用來存儲1000個人的信息,每個人的信息包括:姓名、性別、年齡、電話、住址
提供方法:
??注:這是一個簡單的通訊錄,實現方案是初級版。
只能在程序運行期間存在(沒有寫入文件)。
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");}
enum Option{ EXIT, ADD, DEL, SEARCH, MODIFY, SHOW, EMPTY, SORT,};
enum
枚舉常量,里面默認對應的值是從0~7,剛好和菜單中的選項匹配起來了
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);
#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];};
??注意事項:
define
定義的常量,這樣要修改最大值的時候更方便struct
結構體可以存放:姓名、性別、年齡、電話、住址#define MAX 1000struct Contact{ struct PeoInfo date[MAX]; int sz;};
??注意事項:
struct PeoInfo date[MAX]
這個數組可以存放1000
人的信息sz
表示當前通訊錄里面的人數struct PeoInfo con;
#include #include"contact.h"void Initcontact(struct Contact* pc){ pc->sz = 0; memset(pc->date, 0, MAX * sizeof(struct PeoInfo));}
??注意事項:
struct
里面都是隨機值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++; }}
??注意事項:
每次添加選擇放在下標為sz
的data
數組里面
??注意事項:
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;}
??注意事項:
strcmp
庫函數來比較data
數組中的名字與要查找的名字是否相同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相關的知識,請參考此篇博客
#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);
#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;}
#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
摘要:導航前言功能函數結構設定菜單交互主函數通訊錄初始化新增聯系人查找聯系人刪除聯系人修改聯系人查看所有聯系人清空所有聯系人以名字排序所有聯系人結尾語前言本文將實現一個簡易的電話簿管理。信息包括名字,性別,電話號碼,年齡,住址。 ...
??蘇州程序大白一文從基礎手把手教你Python數據可視化大佬??《??記得收藏??》 目錄 ????開講啦!!!!????蘇州程序大白?????博主介紹前言數據關系可視化散點圖 Scatter plots折線圖強調連續性 Emphasizing continuity with line plots同時顯示多了圖表 數據種類的可視化 Plotting with categorical da...
目錄 一、什么是C語言? 二、第一個C語言程序 代碼 程序分析 ?程序運行 一個工程中出現兩個及以上的main函數 代碼 運行結果 分析 三、數據類型 數據各種類型 為什么會有這么多的數據類型? 計算機單位 ?各個數據類型的大小 ?注意事項 數據類型的使用 四、變量和常量 變量的分類 變量的使用 變量的作用域和生命周期 ?常量 五、字符串+轉義字符+注釋 字符串 ?轉義字符 注釋 六、選擇語句 ?...
目錄 第一章:單片機概述 單片機的應用領域: STC89C52單片機: 單片機命名規則: ?單片機內部結構圖: ?單片機管腳圖: ?單片機最小系統: 進制表: 新建一個工程:? 檢查單片機驅動是否安裝完成: 打開Keil uVision集成開發環境 選擇Atmel下的AT89C52 創建源文件? ?第二章:LED LED介紹: ?點亮LED:?? 第一章:單片機概述 單片機(Micro Contr...
閱讀 2738·2021-10-11 10:57
閱讀 1569·2021-09-26 09:55
閱讀 1310·2021-09-06 15:11
閱讀 3447·2021-08-26 14:16
閱讀 662·2019-08-30 15:54
閱讀 535·2019-08-30 12:43
閱讀 3290·2019-08-29 16:18
閱讀 2564·2019-08-23 16:14