目錄
一、專案結構和專案說明
二、具體實現
int main()
//初始化通訊錄void initcontact(struct contact* ps);
//查詢函式static int findbyname(const struct contact* ps, char name[max_name])
//新增資訊void addcontact(struct contact* ps);
//刪除指定的聯絡人void delcontact(struct contact* ps);
//查詢指定的聯絡人void searchcontact(struct contact* ps);
//更新指定的聯絡人void modifycontact(struct contact* ps);
//排序通訊錄void sortcontact(struct contact* ps);
//展示通訊錄void showcontact(struct contact* ps);
三、個人總結及github位址
專案結構依然是標準三段式:
本程式需要完成以下功能:
1、初始化通訊錄首先展示主函式:2、新增友人資訊
3、刪除指定聯絡人
4、查詢指定聯絡人
5、更新指定聯絡人資訊
6、對通訊錄按姓氏名字排序
7、展示通訊錄
int main()
} while (input);
return 0;
}
這裡使用了列舉變數,來一一對應0~6這7個數字,
增強了**的可讀性。
然後我們來看一下頭檔案:
struct peoinfo
;//通訊錄型別
struct contact
;
我們用peoinfo來表示個人,
然後用contact這個結構體儲存個人資訊,將其用陣列儲存,
再新增乙個計數器,用來計數已存放的人數。
接下來看函式實現:
void initcontact(struct contact* ps)
首先傳結構體的位址,這樣才能實際操作結構體。
然後使用記憶體設定函式,將這個結構體的資料域和大小域初始化。
//查詢函式
//找到返回名字所在元素的下標
//找不到返回 -1
//static修飾函式,使函式只能在該contact.cpp原始檔中使用,不暴露給外面。
static int findbyname(const struct contact* ps, char name[max_name])
} return -1;//找不到的情況
}
我們先寫乙個查詢函式,引數型別有兩個,乙個是結構體位址,乙個是字串。
通過for迴圈,如果找到了,就返回其下標;
如果沒找到,就返回-1.
這樣封裝起來減少了**的冗餘,
並且不需要在標頭檔案裡宣告,
寫成static即可,在本函式下方便使用。
void addcontact(struct contact* ps)
else
}
void delcontact(struct contact* ps)
else
ps->size--;
}}
這裡的刪除,我們用的方法是,先刪除該元素,然後依次將後面的元素往前挪。
注意陣列下標!
建議畫個草圖算一下。
void searchcontact(struct contact* ps)
else
}
這裡\t 的意思是 橫向跳到下一製表符位置。
void modifycontact(struct contact* ps)
else
}
void sortcontact(struct contact* ps)
; temp.data[0] = ps->data[j + 1];
ps->data[j + 1] = ps->data[j];
ps->data[j] = temp.data[0];
}} }
printf("已按姓名排序\n");
}
void showcontact(struct contact* ps)
else }
}
這個小專案實現了對資料的增刪改查,還有排序功能,已經是運算元據庫的雛形了。但是還有很多需要完善的地方,比如遇到同名怎麼辦?是否可以節約記憶體?是否可以實現用檔案的方式來處理通訊錄?我會再接下來的學習中改進這份通訊錄。
github:
C語言通訊錄小專案
include include include include 定義節點 struct node 建立頭節點 int init struct node pheader return 0 bzero pnode,sizeof struct node 清理堆空間 pnode name 20 對於字元陣列...
C語言小專案 通訊錄
通訊錄全部採用c語言實現,用鍊錶實現增加 刪除 修改 查詢等功能,還有命令解析函式 將輸入分解成主命令 姓名 聯絡人資訊是儲存在檔案中,每次程式執行和結束時都會讀取檔案中的資訊。節點裡定義的都是指標,增加新節點時要開闢新的記憶體,刪除節點時要記得及時釋放記憶體,防止記憶體溢位。標頭檔案 標頭檔案中是...
C語言小專案 通訊錄系統
專案要求 實現乙個通訊錄 通訊錄可以用來儲存1000個人的資訊,每個人的資訊包括 姓名 性別 年齡 住址 提供方法 新增聯絡人資訊 刪除指定聯絡人資訊 查詢指定聯絡人資訊 修改指定聯絡人資訊 顯示所有聯絡人資訊 清空所有聯絡人 以名字排序所有聯絡人 這個系統我們分為三個部分來實現 contact.h...