利用C語言結構體實現(xiàn)通訊錄
本文實例為大家分享了C語言結構體實現(xiàn)通訊錄的具體代碼,供大家參考,具體內(nèi)容如下
用來存儲1000個人的信息的通訊錄,每個人的信息包括:
姓名、性別、年齡、電話、住址
程序如下:
#include<stdio.h> #include<string.h> #include<stdlib.h> struct People { char name[20]; char sex[5]; int age; char tel[15]; char addr[50]; }; //定義人的信息結構體(包含各種信息) struct Contact { struct People person[1000]; //定義通訊錄結構體 int n; //(包含人的信息的結構體和用戶個數(shù)n) }; typedef struct Contact * p; void menu(); int add(p q); //p是一個結構體指針類型,q是一個指向struct Contact的一個指針 int delete(p q); //例如:typedef int * int 即 int *p ==> int p int find(p q); int modify(p q); int show(p q); int clear(p q); //函數(shù)的聲明 void menu() //目錄格式 { printf("====================歡迎來到蘇嵌154通訊錄==================\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("----------------------0.謝謝使用---------------------------\n"); printf("====================歡迎來到蘇嵌154通訊錄==================\n"); } int add(p q) //添加聯(lián)系人 { if((*q).n >= 1000) { printf("contact is full!\n"); return -1; } else { printf("輸入姓名:\n"); scanf("%s",(*q).person[(*q).n].name); printf("輸入性別:\n"); scanf("%s",(*q).person[(*q).n].sex); printf("輸入年齡:\n"); scanf("%d",&(*q).person[(*q).n].age); printf("輸入電話:\n"); scanf("%s",(*q).person[(*q).n].tel); printf("輸入地址:\n"); scanf("%s",(*q).person[(*q).n].addr); ((*q).n)++; } return 0; } int delete(p q) //刪除聯(lián)系人 { int ret = find(q); //調(diào)用查找函數(shù)并保存其值 if(ret != -1) { int i = 0; i = ret; //這里要用另一個變量來保存輸入的姓名 for(i = 0;i < (*q).n-1;i++) { (*q).person[i] = (*q).person[i+1]; //用后一個覆蓋前邊的,如果要刪除的是最后一個不進行此步驟 } (*q).n --; //直接減去最后一個即count-- } return 0; } int find(p q) //查找聯(lián)系人 { int i = 0; char ret[20]; //用另一個數(shù)組來保存姓名 printf("輸入姓名:\n"); scanf("%s",ret); while(i <= (*q).n) { if(strcmp(ret,(*q).person[i].name)== 0) //比較輸入的姓名和通訊錄中已有的姓名 { printf("姓名\t性別\t年齡\t電話\t地址\4t\n"); //制表符來制作表頭 printf("%s\t",(*q).person[i].name); printf("%s\t",(*q).person[i].sex); printf("%d\t",(*q).person[i].age); printf("%s\t",(*q).person[i].tel); printf("%s\4t\n",(*q).person[i].addr); return i; } i++; } printf("你丫的我班沒這個人\n"); return -1; } int modify(p q) //修改函數(shù),首先找到如要修改的姓名,然后重新輸入 { int ret = find(q); if(ret != -1) { printf("輸入修改的姓名:\n"); scanf("%s",(*q).person[ret].name); printf("輸入修改的性別:\n"); scanf("%s",(*q).person[ret].sex); printf("輸入修改的年齡:\n"); scanf("%d",&((*q).person[ret].age)); printf("輸入修改的電話:\n"); scanf("%s",(*q).person[ret].tel); printf("輸入修改的地址:\n"); scanf("%s",(*q).person[ret].addr); } else { printf("你丫的我班沒這個人\n"); } return 0; } int show(p q) //顯示全部聯(lián)系人 { int i = 0; printf("姓名\t性別\t年齡\t電話\t地址\4t\n"); for(i = 0;i < (*q).n;i++) { printf("%s\t",(*q).person[i].name); printf("%s\t",(*q).person[i].sex); printf("%d\t",(*q).person[i].age); printf("%s\t",(*q).person[i].tel); printf("%s\4t\n",(*q).person[i].addr); } printf("\n"); return 0; } int clear(p q) //清除所有人,直接讓成員個數(shù)變?yōu)? { (*q).n = 0 ; return 0; } int main() { int n=1; struct Contact people; //調(diào)用通訊錄結構體 people.n = 0; //初始化n while(n) { menu(); printf("請選擇你的騷操作:\n"); scanf("%d",&n); switch(n) //switch case語句分支選擇不同函數(shù)實現(xiàn)不同作用 { case 1: { add(&people); break; } case 2: { delete(&people); break; } case 3: { find(&people); break; } case 4: { modify(&people); break; } case 5: { show(&people); break; } case 6: { clear(&people); break; } default: { return 0; break; } } } return 0; }
這樣就實現(xiàn)了一個簡單的通訊錄。
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持我們。
欄 目:C語言
下一篇:C++11/14 線程調(diào)用類對象和線程傳參的方法
本文標題:利用C語言結構體實現(xiàn)通訊錄
本文地址:http://mengdiqiu.com.cn/a1/Cyuyan/476.html
您可能感興趣的文章
- 04-02c語言函數(shù)調(diào)用后清空內(nèi)存 c語言調(diào)用函數(shù)刪除字符
- 04-02c語言的正則匹配函數(shù) c語言正則表達式函數(shù)庫
- 04-02func函數(shù)+在C語言 func函數(shù)在c語言中
- 04-02c語言中對數(shù)函數(shù)的表達式 c語言中對數(shù)怎么表達
- 04-02c語言用函數(shù)寫分段 用c語言表示分段函數(shù)
- 04-02c語言編寫函數(shù)冒泡排序 c語言冒泡排序法函數(shù)
- 04-02c語言沒有round函數(shù) round c語言
- 04-02c語言分段函數(shù)怎么求 用c語言求分段函數(shù)
- 04-02C語言中怎么打出三角函數(shù) c語言中怎么打出三角函數(shù)的值
- 04-02c語言調(diào)用函數(shù)求fibo C語言調(diào)用函數(shù)求階乘


閱讀排行
本欄相關
- 04-02c語言函數(shù)調(diào)用后清空內(nèi)存 c語言調(diào)用
- 04-02func函數(shù)+在C語言 func函數(shù)在c語言中
- 04-02c語言的正則匹配函數(shù) c語言正則表達
- 04-02c語言用函數(shù)寫分段 用c語言表示分段
- 04-02c語言中對數(shù)函數(shù)的表達式 c語言中對
- 04-02c語言編寫函數(shù)冒泡排序 c語言冒泡排
- 04-02c語言沒有round函數(shù) round c語言
- 04-02c語言分段函數(shù)怎么求 用c語言求分段
- 04-02C語言中怎么打出三角函數(shù) c語言中怎
- 04-02c語言調(diào)用函數(shù)求fibo C語言調(diào)用函數(shù)求
隨機閱讀
- 01-10delphi制作wav文件的方法
- 01-10C#中split用法實例總結
- 01-10SublimeText編譯C開發(fā)環(huán)境設置
- 01-11ajax實現(xiàn)頁面的局部加載
- 08-05織夢dedecms什么時候用欄目交叉功能?
- 01-10使用C語言求解撲克牌的順子及n個骰子
- 08-05DEDE織夢data目錄下的sessions文件夾有什
- 04-02jquery與jsp,用jquery
- 08-05dedecms(織夢)副欄目數(shù)量限制代碼修改
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文