詳解C語言之實(shí)現(xiàn)通訊錄
基本思路和代碼實(shí)現(xiàn)
為了代碼清晰易讀,我們創(chuàng)建一個Main.c源文件用來實(shí)現(xiàn)代碼的基本邏輯。創(chuàng)建一個Contact.h源文件用于封裝實(shí)現(xiàn)功能的函數(shù),創(chuàng)建Contact.h頭文件用于函數(shù)的聲明。
首先就是構(gòu)架代碼基本框架,在主函數(shù)中實(shí)現(xiàn)打印菜單和循環(huán)的功能 (這里為了好截圖switch里的語句縮進(jìn)得比較緊湊)
基本邏輯實(shí)現(xiàn)后開始考慮創(chuàng)建通訊錄,通訊錄里會記錄人的信息。所以要先能夠描述人的信息: 創(chuàng)建表達(dá)人的信息的結(jié)構(gòu)體類型,在Contact.h
中定義:
而通訊錄里記錄的是多人的信息,所以創(chuàng)建通訊錄實(shí)際上就是創(chuàng)建上述結(jié)構(gòu)體的數(shù)組。這里需要思考一個問題,在之后實(shí)現(xiàn)函數(shù)的功能比如增刪時,怎么才能得知從哪里增加或者在什么范圍內(nèi)查找并刪除。這就需要用到一個能表達(dá)當(dāng)前通訊錄有多少個人的變量。而這個變量也能夠用來描述通訊錄,與其把他獨(dú)立定義在主函數(shù)里不如創(chuàng)建一個通訊錄的結(jié)構(gòu)體,將其定義在里面。這樣一來此變量的意義更加明確,也不用每次調(diào)用函數(shù)時都要額外傳遞他的參數(shù),只需傳結(jié)構(gòu)體就行了。創(chuàng)建通訊錄的結(jié)構(gòu)體類型,在Contact.h
中定義:
創(chuàng)建完了之后接著進(jìn)行通訊錄初始化,封裝一個初始化函數(shù)InitContact,再設(shè)計(jì)好其他函數(shù)名寫在相應(yīng)位置處:
然后開始具體實(shí)現(xiàn)函數(shù)的功能。
初始化函數(shù)InitContact
:
增加函數(shù)AddContact
:
刪除函數(shù)DelContact(這里封裝了一個FindName函數(shù),其功能是找到名字相同的結(jié)構(gòu)體數(shù)組元素則返回其下標(biāo),未找到則返回-1):
查找函數(shù)SeachContact
:
修改函數(shù)ModifyContact
:
打印函數(shù)ShowContact
:
FindName
函數(shù):
SortContact
排列函數(shù)可以有多種不同的排列方式,這可以由自己設(shè)計(jì)。還可用qsort函數(shù)加上自己的比較函數(shù)來實(shí)現(xiàn)更多類型的排列,這里就不實(shí)現(xiàn)此函數(shù)了。再做好函數(shù)聲明引好頭文件,到這里通訊錄的實(shí)現(xiàn)就完成了。
其他探討
在設(shè)計(jì)如名字和電話住址等數(shù)組的大小時,可以使用#define定義
當(dāng)之后需要修改這些數(shù)組的大小時,不用再去一個一個找到每個使用這些數(shù)組的地方進(jìn)行修改,直接修改全局變量的值即可,非常方便。
在判斷數(shù)字時,可以使用枚舉常量將數(shù)字替換成有實(shí)際意義的詞
有了枚舉常量,即使代碼過長,也不用在反復(fù)翻閱尋找數(shù)字所代表的意義,直接從詞語含義上就能得知。增加了代碼的可讀性。
總結(jié)
本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
opencv圖片的任意角度旋轉(zhuǎn)實(shí)現(xiàn)示例
這篇博客將介紹如何使用OpenCV旋轉(zhuǎn)圖像任意角度,實(shí)現(xiàn)各個角度的旋轉(zhuǎn),具有一定的參考價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-06-06如何查看進(jìn)程實(shí)際的內(nèi)存占用情況詳解
本篇文章是對如何查看進(jìn)程實(shí)際的內(nèi)存占用情況進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05OpenCV實(shí)現(xiàn)鼠標(biāo)在圖像上框選單目標(biāo)和多目標(biāo)
這篇文章主要為大家詳細(xì)介紹了OpenCV實(shí)現(xiàn)鼠標(biāo)在圖像上框選單目標(biāo)和多目標(biāo),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-08-08C語言函數(shù)之memcpy函數(shù)用法實(shí)例
memcpy函數(shù)用于把資源內(nèi)存(src所指向的內(nèi)存區(qū)域)拷貝到目標(biāo)內(nèi)存(dest所指向的內(nèi)存區(qū)域),下面這篇文章主要給大家介紹了關(guān)于C語言函數(shù)之memcpy函數(shù)用法的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-08-08C/C++實(shí)現(xiàn)獲取系統(tǒng)時間的示例代碼
C 標(biāo)準(zhǔn)庫提供了 time() 函數(shù)與 localtime() 函數(shù)可以獲取到當(dāng)前系統(tǒng)的日歷時間。本文將通過一些簡單的示例為大家講講C++獲取系統(tǒng)時間的具體方法,需要的可以參考一下2022-12-12