C编程实践:简单的通讯录
生活随笔
收集整理的這篇文章主要介紹了
C编程实践:简单的通讯录
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
分享一個之前學C語言時練習寫的一個簡單的通訊錄程序。程序功能:
1、添加聯(lián)系人信息(姓名、電話號碼、城市、公司)。
2、保存聯(lián)系人信息至本地文件。
3、打印輸出聯(lián)系人列表。
4、刪除某個聯(lián)系人信息或刪除所有聯(lián)系人信息。
程序運行結果:
代碼如下,需要的朋友自己保存。
/*----------------------------------------------------------------------------------------Program Explain:簡單的通訊錄??杀4媛?lián)系人的名字、電話號碼、城市、公司至磁盤文件中。 Create Date:2016.2.4 by ZhengN----------------------------------------------------------------------------------------*/#include <stdio.h> #include <stdlib.h> #include <string.h>#define MaxCnt 100 #define CntFull -1// 菜單命令宏定義 #define CMD_Add 1 #define CMD_Save 2 #define CMD_List 3 #define CMD_Delete 4 #define CMD_Clear 5 #define CMD_Exit6// 定義聯(lián)系人基本信息結構體 typedef struct Message {char name[32];//姓名char PhoneNum[32]; //電話號碼char city[32]; //城市char company[32];//公司 }Message;Message LinkmanMes[MaxCnt];//可保存MaxCnt個聯(lián)系人// 函數(shù)聲明 void Init(void); void AddLinkman(void); int FindCapacity(void); void SaveToFile(void); void PrintfList(void); int MenuSelect(void); void Delete(void);/********************************************************************************* * Function Name :main主函數(shù) * Parameter :NULL * Return Value :0 * Function Explain : * Create Date :2016.2.4 by ZhengN **********************************************************************************/ int main(void) {int cmd;int num;Init();while(1){cmd = MenuSelect();switch(cmd){case CMD_Add:AddLinkman();break;case CMD_Save:SaveToFile();break;case CMD_List:PrintfList();break;case CMD_Delete:Delete();break;case CMD_Clear:system("cls");break;case CMD_Exit:exit(0);break;}}return 0; }/********************************************************************************* * Function Name :通訊錄初始化,初始化所有聯(lián)系人信息為空 * Parameter :NULL * Return Value :0 * Function Explain : * Create Date :2016.2.4 by ZhengN **********************************************************************************/ void Init(void) {for(int i; i<MaxCnt; i++){LinkmanMes[i].name[0] = '\0';} }/********************************************************************************* * Function Name :添加聯(lián)系人 * Parameter :NULL * Return Value :0 * Function Explain : * Create Date :2016.2.4 by ZhengN **********************************************************************************/ void AddLinkman(void) {int slot;slot = FindCapacity();printf("Linkman num=%d\n",slot+1);if(slot==CntFull){printf("\nList full\n");return;}printf("Input name:");gets(LinkmanMes[slot].name);printf("Input PhoneNum:");gets(LinkmanMes[slot].PhoneNum);printf("Input city:");gets(LinkmanMes[slot].city);printf("Input company:");gets(LinkmanMes[slot].company);printf("\n\n"); }/********************************************************************************* * Function Name :FindCapacity,查找可保存聯(lián)系人的容量,最大容量為MaxCnt * Parameter :NULL * Return Value :CntFull:已經(jīng)沒有余量了 slot:第slot+1個聯(lián)系人 * Function Explain : * Create Date :2016.2.4 by ZhengN **********************************************************************************/ int FindCapacity(void) {int slot;for(slot=0; LinkmanMes[slot].name[0]&&slot<MaxCnt; slot++);if(slot==MaxCnt){return CntFull;//已經(jīng)達到了最大容量,沒有余量了}return slot; }/********************************************************************************* * Function Name :SaveToFile,保存所有聯(lián)系人信息至本地文件Contact.txt * Parameter :NULL * Return Value :0 * Function Explain : * Create Date :2016.2.4 by ZhengN **********************************************************************************/ void SaveToFile(void) {FILE *fp;char num[100];if((fp=fopen("Contact.txt","wb"))==NULL){printf("Cannot open the file.\n");exit(0); /* 正常跳出程序 */}for(int i=0; i<MaxCnt; i++){if(*LinkmanMes[i].name){sprintf(num,"Num.%.2d",i+1);fwrite(num, 6, 1, fp);fwrite("\r\n", 2, 1, fp);fwrite(LinkmanMes[i].name, strlen(LinkmanMes[i].name), 1, fp);fwrite("\r\n", 2, 1, fp);fwrite(LinkmanMes[i].PhoneNum, strlen(LinkmanMes[i].PhoneNum), 1, fp);fwrite("\r\n", 2, 1, fp);fwrite(LinkmanMes[i].city, strlen(LinkmanMes[i].city), 1, fp);fwrite("\r\n", 2, 1, fp);fwrite(LinkmanMes[i].company, strlen(LinkmanMes[i].company), 1, fp);fwrite("\r\n", 2, 1, fp);}}fclose(fp); }/********************************************************************************* * Function Name :PrintfList,打印聯(lián)系人列表 * Parameter :NULL * Return Value :0 * Function Explain : * Create Date :2016.2.4 by ZhengN **********************************************************************************/ void PrintfList(void) {int i;for(i=0; i<MaxCnt; i++){if(LinkmanMes[i].name[0]){printf("Num.%d\n",i+1);printf("%s\n",LinkmanMes[i].name);printf("%s\n",LinkmanMes[i].PhoneNum);printf("%s\n",LinkmanMes[i].city);printf("%s\n",LinkmanMes[i].company);printf("\n");}} }/********************************************************************************* * Function Name :Delete,刪除聯(lián)系人 * Parameter :NULL * Return Value :0 * Function Explain : * Create Date :2016.2.4 by ZhengN **********************************************************************************/ void Delete(void) {int i;char str[80];int num;printf("Input the linkman num(1-100)to delete a linkman or input 0 to delete all linkman:");gets(str);num = atoi(str);/* 刪除第num個聯(lián)系人 */if( (num>0)&&(num<MaxCnt) ){LinkmanMes[num-1].name[0] = '\0';}/* 刪除所有聯(lián)系人 */else if(num==0){for(i=0; i<MaxCnt; i++){LinkmanMes[i].name[0] = '\0';}}printf("\n\n"); }/********************************************************************************* * Function Name :MenuSelect,菜單 * Parameter :NULL * Return Value :c:菜單命令 * Function Explain : * Create Date :2016.2.4 by ZhengN **********************************************************************************/ int MenuSelect(void) {char str[80];int c;printf("1. Add linkman\n");printf("2. Save linkman to file\n");printf("3. Printf all linkman\n");printf("4. Delete linkman\n");printf("5. Clear screen\n");printf("6. Exit\n");do{printf("\nEnter your choice: ");gets(str);c = atoi(str);} while(c<0 || c>6);return c; }-END-
﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
免責聲明:本文轉(zhuǎn)自網(wǎng)絡,版權歸原作者所有,如涉及作品版權問題,請及時與我們聯(lián)系,謝謝!
往期好文合集
做硬件,到底有沒有前途?<<戳這里
測試你C語言水平的十道題,挑戰(zhàn)一下?<<戳這里
基本電子元器件識別法<<戳這里
?最 后??
?若覺得文章不錯,轉(zhuǎn)發(fā)分享,也是我們繼續(xù)更新的動力。
5T資源大放送!包括但不限于:C/C++,Linux,Python,Java,PHP,人工智能,PCB、FPGA、DSP、labview、單片機、等等!
在公眾號內(nèi)回復「更多資源」,即可免費獲取,期待你的關注~
長按識別圖中二維碼關注
總結
以上是生活随笔為你收集整理的C编程实践:简单的通讯录的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 5999元起!iPhone 14黄色版正
- 下一篇: 早报:荣耀Magic5系列首销告捷 威马