C語言實現通訊錄管理系統(結構體、列舉、聯合體應用)

專注的阿熊發表於2021-09-24

#define _CRT_SECURE_NO_WARNINGS

#include"contact.h"

// 初始化通訊錄

void InitContact(struct Contact* pc)

{

pc->sz = 0;// 預設沒有資訊

//memset(pc->data, 0, PEOPLE_MAX * sizeof(struct PeoInfo));

memset(pc->data, 0, sizeof(pc->data));

}

// 增加聯絡人

void AddContact(struct Contact* pc)

{

if (pc->sz == PEOPLE_MAX)

{

printf(" 通訊錄滿了 \n");

}

else

{

printf(" 請輸入名字 :>");

scanf("%s", pc->data[pc->sz].name);

printf(" 請輸入年齡 :>");

scanf("%d", &(pc->data[pc->sz].age));

printf(" 請輸入性別 :>");

scanf("%s", pc->data[pc->sz].sex);

printf(" 請輸入電話 :>");

scanf("%s", pc->data[pc->sz].tele);

printf(" 請輸入地址 :>");

scanf("%s", pc->data[pc->sz].addr);

// 提示

printf(" 新增成功! \n");

pc->sz++;

}

}

// 顯示所有的聯絡人

void ShowContact(struct Contact* pc)

{

int i = 0;

// 列印標題  (美觀)

printf("%15s\t%5s\t%8s\t%15s\t%30s\n\n", "name", "age", "sex", "tele", "addr");

for (i = 0; i < pc->sz; i++)

{

// 列印每個資料

printf("%15s\t%5d\t%8s\t%15s\t%30s\n\n",

pc->data[i].name,

pc->data[i].age,

pc->data[i].sex,

pc->data[i].tele,

pc->data[i].addr );

}

}

// 刪除指定聯絡人

int FindContactByName(const struct Contact* pc, const char* name)

{

int i = 0;

for (i = 0; i < pc->sz; i++)

{

if (strcmp(pc->data[i].name, name) == 0)

{

return i;

}

}

// 找不到

return -1;

}

void DelContact(struct Contact* pc)

{

if (pc->sz == 0)

{

printf(" 通訊錄為空,無法刪除! \n");

return;

}

char name[NAME_MAX] = { 0 };

printf(" 請輸入要刪除聯絡人的名字: >");

scanf("%s", name);

// 查詢

int pos = FindContactByName(pc, name);

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 SearchContact(const struct Contact* pc)

{

char name[NAME_MAX] = { 0 };

printf(" 輸入要查詢的聯絡人的名字: >");

scanf("%s", name);

// 查詢

int pos = FindContactByName(pc, name);

if (pos == -1)

{

printf(" 查無此人! \n");

}

else

{

// 列印標題  (美觀)

printf("%15s\t%5s\t%8s\t%15s\t%30s\n\n", "name", "age", "sex", "tele", "addr");

// 列印每個資料

printf("%15s\t%5d\t%8s\t%15s\t%30s\n\n",

pc->data[pos].name,

pc->data[pos].age,

pc->data[pos].sex,

pc->data[pos].tele,

pc->data[pos].addr);

}

}

// 修改指定聯絡人

void ModifyContact(struct Contact* pc)

{

char name[NAME_MAX] = { 0 };

printf(" 輸入要修改的聯絡人的名字: >");

scanf("%s", 外匯跟單gendan5.comname);

// 查詢

int pos = FindContactByName(pc, name);

if (pos == -1)

{

printf(" 要修改的聯絡人資料不存在! \n");

}

else

{

printf(" 請輸入新的名字 :>");

scanf("%s", pc->data[pos].name);

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);

// 提示

printf(" 修改成功! \n");

}

}


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69946337/viewspace-2793596/,如需轉載,請註明出處,否則將追究法律責任。

相關文章