C語言實現通訊錄(轉移表的應用)

2021-09-12 06:17:07 字數 2891 閱讀 8882

增加、刪除、查詢、修改聯絡人,列印所有聯絡人,清空所有聯絡人

#define _crt_secure_no_warnings 1

#ifndef _addresslist_h_

#define _addresslist_h_

#include

#include

#include

#include

//存放聯絡人姓名號碼的結構體,如果還想加其他的資訊可以自行新增

typedef

struct addresslist addresslist;

//充當**簿的結構體

typedef

struct book book;

intmenu()

;//選單列印函式

void

initlist

(book* plist)

;//初始化通訊錄

void

add(book* plist)

;//新增聯絡人

void

printall

(book* plist)

;//列印所有聯絡人

void

delete

(book* plist)

;//刪除聯絡人

void

find

(book* plist)

;//查詢聯絡人

void

amend

(book* plist)

;//修改聯絡人

void

cleanall

(book* plist)

;//清除所有聯絡人

#endif

// !_addresslist_h_

#define _crt_secure_no_warnings 1

#include

"addresslist.h"

//功能選單

intmenu()

//初始化聯絡人列表

void

initlist

(book* plist)

}//新增聯絡人

void

add(book* plist)

else

}//查詢函式

static

intfindname

(char

* pname, book* plist)

}return-1

;}//刪除聯絡人

void

delete

(book* plist)

;int choice =0;

printf

("輸入要刪除的聯絡人姓名:\n");

scanf

("%s"

, name)

;printf

("確定要刪除聯絡人嗎?\n");

printf

("1.是 0.否\n");

scanf

("%d"

,&choice);if

(choice)

plist->count--

;printf

("刪除成功\n");

}else

printf

("找不到聯絡人\n");

}else

printf

("返回主選單\n");

}//查詢聯絡人

void

find

( book* plist)

;printf

("待查詢聯絡人姓名:\n");

scanf

("%s"

, name)

;int num =

findname

(name, plist);if

(num !=-1

)else

printf

("找不到聯絡人。\n");

}//修改聯絡人

void

amend

(book* plist)

;printf

("待修改聯絡人姓名:\n");

scanf

("%s"

, name)

;int num =

findname

(name, plist);if

(num !=-1

)else

printf

("找不到聯絡人\n");

}//清除通訊錄

void

cleanall

(book* plist)

}}

#include

"addresslist.h"

intmain()

;initlist

(&list)

;int ret =0;

doelse

}while

(ret)

;system

("pause");

return0;

}

轉移表
void

(*pfun[7]

)(book* p2)

=;

這裡建立了乙個存放函式指標的陣列,函式名即函式指標,為了對應menu的順序,將函式指標陣列的首元素初始化為0,後面依次對應相應的功能。

需要注意,轉移表中所有函式的返回值型別引數型別都要完全一致。

轉移表的優勢

如果需要增加或者減少一些功能,在實現相應的函式後,只需在轉移表中加入函式名即可新增功能。而不用像使用switch語句一樣新增幾個功能就要新增幾個case,從而簡化了**的結構。

c語言實現通訊錄

通訊錄可以用來儲存1000個人的資訊,每個人的資訊包括 姓名 性別 年齡 住址 提供功能 1.新增聯絡人資訊 2.刪除指定聯絡人資訊 3.查詢指定聯絡人資訊 4.修改指定聯絡人資訊 5.顯示所有聯絡人資訊 6.清空所有聯絡人 7.以名字排序所有聯絡人 ifndef contact h define ...

C語言實現通訊錄

今天寫乙個簡單的c語言小專案,簡易的通訊錄 編譯環境 win10 vs2013 通訊錄可以用來儲存1000個人的資訊,每個人的資訊包括 姓名 性別 年齡 住址 通訊錄包含的功能 1.新增聯絡人資訊 2.刪除指定聯絡人資訊 3.查詢指定聯絡人資訊 4.修改指定聯絡人資訊 5.顯示所有聯絡人資訊 6.清...

C語言實現通訊錄

實現乙個通訊錄 通訊錄可以用來儲存1000個人的資訊,每個人的資訊包括 姓名 性別 年齡 住址 提供方法 1.新增聯絡人資訊 2.刪除指定聯絡人資訊 3.查詢指定聯絡人資訊 4.修改指定聯絡人資訊 5.顯示所有聯絡人資訊 6.清空所有聯絡人 7.以名字排序所有聯絡人 下面是 在字尾為.c檔案前提下 ...