日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

通讯录动态版

發布時間:2025/3/11 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 通讯录动态版 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
#include<stdio.h> #include<stdlib.h> #include<string.h>enum operation {EXIT, //退出ADD, //添加SEARCH, //查找DELETD, //刪除AMEND, //修改SHOW //顯示 };enum object {X_NAME, //名字X_AGE, //年齡X_TELNUMBER,//電話號碼X_ADDRESS //住址 };#define max_name 10 #define max_telnumber 15 #define max_address 20 #define init_capacity 2typedef struct PeopleDate {char name[max_name]; //名字short int age; //年齡char telnumber[max_telnumber]; //號碼char address[max_address]; //住址 }PeopleDate;typedef struct person {PeopleDate* data; //定義聯系人相關信息的PeopleDate結構體指針int sz; //當前存儲的個數int capacity; //當前容量 }person;void menu_operation(); //操作對象菜單 void menu_object(); //信息對象菜單 void init(person* con); //初始化 void f_add(person* con); //添加成員 void f_search(person* con); //查找成員 void f_delete(person* con); //刪除成員 void f_amend(person* con); //修改成員 void f_show(person* con); //顯示所有成員 int dilatation(person *pcon); //擴充容量 void f_empty(person *pcon); //清空所有成員void menu_operation() {printf("*****************************************\n");printf("*******0、退出 1、添加 *******\n");printf("*******2、查找 3、刪除 *******\n");printf("*******4、修改 5、顯示 *******\n");printf("*****************************************\n"); }void menu_object() {printf("*****************************************\n");printf("*******0、姓名 1、年齡 *******\n");printf("*******2、號碼 3、地址 *******\n");printf("*****************************************\n");printf("請輸入需要修改的選項:"); }void init(person *pcon) {pcon->sz = 0;pcon->capacity = init_capacity;pcon->data = (PeopleDate*)malloc(pcon->capacity*sizeof(PeopleDate)); //實例化指針,給pcon->data分配內存memset(pcon->data, 0, pcon->capacity*sizeof(PeopleDate)); //將pcon->data所指向的空間初始化為0 }int dilatation(person *pcon) {PeopleDate* ptr = (PeopleDate*)realloc(pcon->data, (pcon->capacity + init_capacity)*sizeof(PeopleDate));//改變pcon->data所指向的空間大小if (ptr != NULL)//判斷擴容是否成功,成功返回1,反之為0{pcon->data = ptr;pcon->capacity += init_capacity;//更新當前實際容量大小return 1;}elsereturn 0; }void f_empty(person *pcon) {//釋放掉pcon->data所指向的空間free(pcon->data);pcon->data = NULL;pcon->sz = 0;pcon->capacity = 0;printf("內容已銷毀\n"); }void f_add(person *pcon) {if (pcon->sz == pcon->capacity)//判斷當前聯系人個數是否滿了{int a = dilatation(pcon);switch (a){case 0: {printf("嘗試擴容失敗\n");return;}break;case 1:{printf("嘗試擴容成功\n");}break;default: printf("錯誤\n"); break;}}//給新增加的聯系人添加信息printf("姓名:");scanf("%s", pcon->data[pcon->sz].name);printf("年齡:");scanf("%d", &(pcon->data[pcon->sz].age));printf("號碼:");scanf("%s", pcon->data[pcon->sz].telnumber);printf("地址:");scanf("%s", pcon->data[pcon->sz].address);printf("添加成功\n");pcon->sz++;//當前聯系人個數+1 }void f_search(person *pcon) {char nowname[max_name];int i = 0;printf("請輸入需要查找的姓名:");scanf("%s", nowname);for (i = 0; i < pcon->sz; i++){if (strcmp(pcon->data[i].name, nowname) == 0)//判斷當前對象是否與要查找的人的姓名相同{printf("姓名:%s\n", pcon->data[i].name);printf("年齡:%d\n", pcon->data[i].age);printf("號碼:%s\n", pcon->data[i].telnumber);printf("地址:%s\n", pcon->data[i].address);break;}if (i == pcon->sz - 1) //如果查到最后一個人則說明沒有該聯系人printf("無該聯系人\n");} }void f_delete(person *pcon) {char nowname[max_name];int i = 0, j = 0;printf("請輸入需要刪除人的姓名:");scanf("%s", nowname);for (i = 0; i < pcon->sz; i++){if (strcmp(pcon->data[i].name, nowname) == 0)//判斷當前對象是否與要刪除的人的姓名相同{j = i;break;}}for (j = i; j < pcon->sz; j++) //依次向前覆蓋,把目標聯系人刪除{pcon->data[j] = pcon->data[j + 1];}pcon->sz--; //聯系人個數-1printf("已刪除\n"); }void f_amend(person *pcon) {char nowname[max_name];int i = 0, j = 0;printf("請輸入需要修改人的姓名:");scanf("%s", nowname);for (i = 0; i < pcon->sz; i++){if (strcmp(pcon->data[i].name, nowname) == 0){j = i;break;}}//按照菜單做出相應的信息修改menu_object();scanf("%d", &i);switch (i){case X_NAME:{printf("請輸入姓名:");scanf("%s", pcon->data[j].name);printf("修改完成\n");}break;case X_AGE:{printf("請輸入年齡:");scanf("%d", &(pcon->data[j].age));printf("修改完成\n");}break;case X_TELNUMBER:{printf("請輸入號碼:");scanf("%s", pcon->data[j].telnumber);printf("修改完成\n");}break;case X_ADDRESS:{printf("請輸入地址:");scanf("%s", pcon->data[j].address);printf("修改完成\n");}break;default: printf("命令錯誤\n"); break;} }void f_show(person *pcon) {int i = 0;printf("當前有%d個聯系人\n", pcon->sz);for (i = 0; i < pcon->sz; i++){printf("\n");printf("姓名:%s\n", pcon->data[i].name);printf("年齡:%d\n", pcon->data[i].age);printf("號碼:%s\n", pcon->data[i].telnumber);printf("地址:%s\n", pcon->data[i].address);printf("\n");} }int main() {int input = 0;struct person con;init(&con);do{menu_operation();printf("請輸入指令:");scanf("%d", &input);switch (input){case EXIT: f_empty(&con); break;case ADD: f_add(&con); break;case SEARCH: f_search(&con); break;case DELETD: f_delete(&con); break;case AMEND: f_amend(&con); break;case SHOW: f_show(&con); break;default: printf("命令無效\n"); break;}} while (input);system("pause");return 0; }

總結

以上是生活随笔為你收集整理的通讯录动态版的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。