C語言實現通訊錄管理系統(結構體、列舉、聯合體應用)
#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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 實驗6 C語言結構體、列舉應用程式設計C語言結構體程式設計
- 實驗6_C語言結構體、列舉應用程式設計C語言結構體程式設計
- 如何系統學習C 語言(中)之 聯合體、列舉篇
- 結構體,列舉,聯合結構體
- “c語言+結構體+連結串列”實現名片系統C語言結構體
- 通訊錄管理系統(C++實現)C++
- c語言基礎筆記DAY7_結構體共用體列舉C語言筆記結構體
- c語言圖書館管理系統----學會使用結構體C語言結構體
- c++結構體、共用體(聯合體)C++結構體
- C語言結構聯合位欄位知識體系總結大學霸IT達人C語言
- C語言實現TCP通訊C語言TCP
- 如何系統學習C 語言(中)之 結構體篇結構體
- c++—通訊錄管理系統C++
- C語言結構體專題C語言結構體
- C語言結構體大小分析C語言結構體
- 乾貨分享 | C語言的聯合體C語言
- 【資料結構】迴圈佇列 C語言實現資料結構佇列C語言
- 教你C語言實現通訊錄的詳細程式碼C語言
- Partial類、列舉、結構體結構體
- 用c語言實現資料結構——單連結串列C語言資料結構
- C語言結構體作為形參C語言結構體
- C語言-->(十四)結構體、巨集、編譯C語言結構體編譯
- C 語言結構體記憶體佈局問題結構體記憶體
- C語言結構體記憶體佈局問題C語言結構體記憶體
- 通訊錄管理系統
- Go 語言 結構體Go結構體
- C 語言宏 + 內聯彙編實現 MIPS 系統呼叫
- 通訊錄的c語言程式編輯C語言
- C語言實用演算法系列之學生管理系統_對整個結構體操作_氣泡排序_提取排序規則C語言演算法結構體排序
- C語言之結構體C語言結構體
- c語言結構體中的一個char陣列怎麼賦值?C語言結構體陣列賦值
- 資料結構 課程設計 員工管理系統(C語言)資料結構C語言
- 教你如何用python實現學生通訊錄管理系統Python
- C語言騷操作:結構體初始化方法C語言結構體
- 補充:C語言列舉型別C語言型別
- C語言 列舉資料型別C語言資料型別
- C語言-超市倉庫管理系統的設計與實現C語言
- 基於“結構體”實現簡易版學生管理系統(Golang)結構體Golang