C語言通訊錄實(shí)例分享
本文實(shí)例為大家分享了C語言通訊錄實(shí)例的具體代碼,供大家參考,具體內(nèi)容如下
main.c文件:
// // main.c // c語言通訊錄 // // Created by stevenchang on 9/6/15. // Copyright (c) 2015 cz. All rights reserved. // /** 1.添加聯(lián)系人 2.刪除聯(lián)系人 3.更新聯(lián)系人 4.顯示所有聯(lián)系人 5.查找聯(lián)系人 6.退出系統(tǒng) */ #include <stdio.h> int main(int argc, const char * argv[]) { //程序的初始化 initContacts(); while(1) { int flag = 0; printf("*************C語言通訊錄*************\n"); printf("************1.添加用戶***************\n"); printf("************2.刪除用戶***************\n"); printf("************3.更新用戶***************\n"); printf("************4.查找用戶***************\n"); printf("************5.顯示所有用戶************\n"); printf("************6.退出系統(tǒng)***************\n"); printf("************************************\n"); printf("請(qǐng)輸入1-6的功能編號(hào) :\n"); scanf("%d",&flag); //判斷編號(hào)是否合法 validateNum(flag, 1, 6); switch (flag) { case 1: addContact(); //添加用戶 break; case 2: deleteContact(); //刪除用戶 break; case 3: updateContact(); //更新用戶 break; case 4: searchContact(); //查找用戶 break; case 5: listContact(); //顯示所有用戶 break; case 6: printf("系統(tǒng)正在退出!\n"); printf("成功退出系統(tǒng)!\n"); return 0; break; default: break; } } return 0; }
MyFile.c文件:
// // MyFile.c // c語言通訊錄 // // Created by stevenchang on 9/6/15. // Copyright (c) 2015 cz. All rights reserved. // #include "MyFile.h" //**************函數(shù)的實(shí)現(xiàn)**********************// /** * 添加聯(lián)系人 */ void addContact() { int flag = 0; printf("您選擇的是添加聯(lián)系人,請(qǐng)按操作進(jìn)行!\n"); printf("請(qǐng)輸入用戶姓名(*注意聯(lián)系人姓名中間不能有空格):\n"); scanf("%s",contacts[totalContactsCount].name); printf("請(qǐng)輸入電話(*注意聯(lián)系人電話中間不能有空格): \n"); scanf("%s",contacts[totalContactsCount].tel); printf("是否確認(rèn)添加!1:是 0:否\n"); scanf("%d",&flag); if (flag) { //聯(lián)系人個(gè)數(shù)加1 totalContactsCount++; //將聯(lián)系人信息保存到文件中 writeFile(); } printf("已經(jīng)放棄添加!\n"); return ; } /** * 刪除聯(lián)系人 */ void deleteContact() { int no; printf("您選擇的是刪除聯(lián)系人,請(qǐng)按操作進(jìn)行!\n"); printf("請(qǐng)輸入要?jiǎng)h除的編號(hào):\n"); scanf("%d",&no); //判斷輸入的編號(hào)是否合法 if (!validateNum(no, 1, totalContactsCount)) { printf("您輸入的編號(hào)不合法!\n"); return ; } //合法 //如果刪除的是最后一個(gè)元素 if (no == totalContactsCount) { totalContactsCount--; } else { //如果刪除的不是最后一個(gè)元素 for (int i = no; i < totalContactsCount; i++) { contacts[no-1] = contacts[no]; //元素的移動(dòng)和覆蓋 } totalContactsCount--; } //同步文件 writeFile(); } /** * 更新聯(lián)系人 */ void updateContact() { int no; char newName[NAMELENGTH]; char newTel[TELLENGTH]; printf("您選擇的是更新聯(lián)系人,請(qǐng)按操作進(jìn)行!\n"); printf("請(qǐng)輸入要修改的聯(lián)系人編號(hào):\n"); scanf("%d",&no); //判斷編號(hào)是否合法 if (!validateNum(no, 1, totalContactsCount)) { return ; } //合法 printf("請(qǐng)重新輸入用戶名:\n"); scanf("%s",newName); printf("請(qǐng)重新輸入電話號(hào)碼\n"); scanf("%s",newTel); strcpy(contacts[no-1].name, newName); strcpy(contacts[no-1].tel, newTel); //寫入文件 writeFile(); } /** * 顯示所有聯(lián)系人 */ void listContact() { printf("您選擇的是顯示所有聯(lián)系人,聯(lián)系人如下!\n"); if (totalContactsCount > 0) { printf("序號(hào)\t姓名\t電話\n"); for (int i = 0 ; i < totalContactsCount; i++) { printf("%d\t%s\t%s\n",i+1,contacts[i].name, contacts[i].tel); } } else { printf("聯(lián)系人為空,請(qǐng)?zhí)砑勇?lián)系人!\n"); return ; } } /** * 查找聯(lián)系人 */ void searchContact() { printf("您選擇的是查找聯(lián)系人,請(qǐng)按操作進(jìn)行!\n"); char searchName[NAMELENGTH]; printf("請(qǐng)輸入要查找的聯(lián)系人姓名:\n"); scanf("%s",searchName); for (int i = 0 ; i < totalContactsCount; i++) { if (strcmp(searchName, contacts[i].name)==0) { //說明相同 printf("聯(lián)系人姓名為:%s,電話號(hào)碼為:%s\n",contacts[i].name,contacts[i].tel); return ; } if (i == totalContactsCount-1) { printf("此聯(lián)系人不存在!\n"); } } } /** * 通訊錄的初始化 */ void initContacts() { printf("通訊錄正在初始化!\n"); FILE *fp = fopen(filePath, "r"); if (fp!=NULL) { //讀取文件成功 //讀取聯(lián)系人的個(gè)數(shù) fread(&totalContactsCount, sizeof(totalContactsCount), 1, fp); //讀取每個(gè)聯(lián)系人 for (int i = 0; i < totalContactsCount; i++) { //讀取聯(lián)系人數(shù)據(jù),到聯(lián)系人數(shù)組中 fread(&contacts[i], sizeof(Person), 1, fp); } } else { //讀取文件失敗 //創(chuàng)建文件 fp = fopen(filePath, "wb"); //寫入聯(lián)系人的個(gè)數(shù) fwrite(&totalContactsCount, sizeof(totalContactsCount), 1, fp); printf("通訊錄文件創(chuàng)建成功!\n"); } //關(guān)閉文件指針 fclose(fp); printf("通訊錄初始化成功!\n"); } /** * 判斷功能編號(hào)是否合法 1:合法 0:非法 */ int validateNum(int num, int min, int max) { if (num < min || num > max) { printf("輸入的功能編號(hào)不正確,請(qǐng)重新輸入!\n"); return 0; } return 1; } /** *將聯(lián)系人寫入文件 */ void writeFile() { //以二進(jìn)制文件打開文件 FILE *fp = fopen(filePath, "wb"); if (fp != NULL) { //寫入聯(lián)系人個(gè)數(shù) fwrite(&totalContactsCount, sizeof(totalContactsCount), 1, fp); //寫入每個(gè)聯(lián)系人個(gè)數(shù) for (int i = 0; i < totalContactsCount; i++) { fwrite(&contacts[i], sizeof(Person), 1, fp); } } fclose(fp); printf("文件更新成功\n"); }
MyFile.h文件:
// // MyFile.h // c語言通訊錄 // // Created by stevenchang on 9/6/15. // Copyright (c) 2015 cz. All rights reserved. // #ifndef __c_______MyFile__ #define __c_______MyFile__ #include <stdio.h> #include <string.h> #define N 100 //宏定義一個(gè)通訊錄的容量 #define NAMELENGTH 22 //宏定義一個(gè)名字的長(zhǎng)度 #define TELLENGTH 12 //宏定義一個(gè)電話號(hào)碼的長(zhǎng)度 //********************函數(shù)的聲明*********************// void addContact(); //添加聯(lián)系人 void deleteContact(); //刪除聯(lián)系人 void updateContact(); //更新聯(lián)系人 void listContact(); //顯示所有聯(lián)系人 void searchContact(); //查找聯(lián)系人 void initContacts(); //通訊錄的初始化 int validateNum(int num, int min, int max); //判斷功能編號(hào)是否合法 1:合法 0:非法 void writeFile(); //將聯(lián)系人寫入文件 typedef struct Person { //定義一個(gè)結(jié)構(gòu)體 char name[NAMELENGTH]; //定義姓名數(shù)組 char tel[TELLENGTH]; //定義結(jié)構(gòu)體數(shù)組 } Person; //定義文件路徑 char *filePath = "telData.data"; int totalContactsCount = 0; Person contacts[N]; //定義Person結(jié)構(gòu)體數(shù)組 #endif /* defined(__c_______MyFile__) */
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持我們。
上一篇:C++控制臺(tái)用定時(shí)器實(shí)例代碼
欄 目:C語言
下一篇:c語言同名標(biāo)靶點(diǎn)自動(dòng)匹配算法實(shí)現(xiàn)實(shí)例代碼
本文標(biāo)題:C語言通訊錄實(shí)例分享
本文地址:http://mengdiqiu.com.cn/a1/Cyuyan/884.html
您可能感興趣的文章
- 04-02c語言函數(shù)調(diào)用后清空內(nèi)存 c語言調(diào)用函數(shù)刪除字符
- 04-02c語言的正則匹配函數(shù) c語言正則表達(dá)式函數(shù)庫
- 04-02func函數(shù)+在C語言 func函數(shù)在c語言中
- 04-02c語言中對(duì)數(shù)函數(shù)的表達(dá)式 c語言中對(duì)數(shù)怎么表達(dá)
- 04-02c語言用函數(shù)寫分段 用c語言表示分段函數(shù)
- 04-02c語言編寫函數(shù)冒泡排序 c語言冒泡排序法函數(shù)
- 04-02c語言沒有round函數(shù) round c語言
- 04-02c語言分段函數(shù)怎么求 用c語言求分段函數(shù)
- 04-02C語言中怎么打出三角函數(shù) c語言中怎么打出三角函數(shù)的值
- 04-02c語言調(diào)用函數(shù)求fibo C語言調(diào)用函數(shù)求階乘


閱讀排行
- 1C語言 while語句的用法詳解
- 2java 實(shí)現(xiàn)簡(jiǎn)單圣誕樹的示例代碼(圣誕
- 3利用C語言實(shí)現(xiàn)“百馬百擔(dān)”問題方法
- 4C語言中計(jì)算正弦的相關(guān)函數(shù)總結(jié)
- 5c語言計(jì)算三角形面積代碼
- 6什么是 WSH(腳本宿主)的詳細(xì)解釋
- 7C++ 中隨機(jī)函數(shù)random函數(shù)的使用方法
- 8正則表達(dá)式匹配各種特殊字符
- 9C語言十進(jìn)制轉(zhuǎn)二進(jìn)制代碼實(shí)例
- 10C語言查找數(shù)組里數(shù)字重復(fù)次數(shù)的方法
本欄相關(guān)
- 04-02c語言函數(shù)調(diào)用后清空內(nèi)存 c語言調(diào)用
- 04-02func函數(shù)+在C語言 func函數(shù)在c語言中
- 04-02c語言的正則匹配函數(shù) c語言正則表達(dá)
- 04-02c語言用函數(shù)寫分段 用c語言表示分段
- 04-02c語言中對(duì)數(shù)函數(shù)的表達(dá)式 c語言中對(duì)
- 04-02c語言編寫函數(shù)冒泡排序 c語言冒泡排
- 04-02c語言沒有round函數(shù) round c語言
- 04-02c語言分段函數(shù)怎么求 用c語言求分段
- 04-02C語言中怎么打出三角函數(shù) c語言中怎
- 04-02c語言調(diào)用函數(shù)求fibo C語言調(diào)用函數(shù)求
隨機(jī)閱讀
- 04-02jquery與jsp,用jquery
- 01-10delphi制作wav文件的方法
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
- 01-10使用C語言求解撲克牌的順子及n個(gè)骰子
- 01-11ajax實(shí)現(xiàn)頁面的局部加載
- 08-05織夢(mèng)dedecms什么時(shí)候用欄目交叉功能?
- 08-05dedecms(織夢(mèng))副欄目數(shù)量限制代碼修改
- 01-10SublimeText編譯C開發(fā)環(huán)境設(shè)置
- 08-05DEDE織夢(mèng)data目錄下的sessions文件夾有什
- 01-10C#中split用法實(shí)例總結(jié)