日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

C语言通讯录实例

發(fā)布時間:2023/12/31 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C语言通讯录实例 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

利用C語言簡單寫的一個通訊錄實例,因為要交的原因,所以在編寫的時候也是寥寥收場。主要實現的就是添加、刪除、修改聯系人,然后把數據寫入存儲文件。編寫環(huán)境VS2013,測試環(huán)境DEVC++。在VC++中是不能編譯的,VC會報錯的原因是在編寫的時候在循環(huán)中添加局部變量,正好VC不支持這樣的局部變量,如果有需要的同學可以把變量的聲明提到函數主體前,這樣VC是可以正常編譯的。

代碼:

/* **通訊錄 **ASorb time:201807 */ #include<stdio.h> #include<stdlib.h> #include<string.h> #define max_list 99 //聯系人最高條目 #define max_notes 45 //記事本條目 #define data_file "addresslist.dat" //數據文件 #define notes_file "notes_data.txt" //記事本數據 #define address_n address_num() //統計函數 //定義全局結構體變量 typedef struct address{char name[20];char phone[12];char birthday[9]; }address; //定義記事本結構體 typedef struct notes{char title[40];char content[200]; }notes; //歡迎頁面 void welcome(){system("color 4F");printf("歡迎使用通訊錄!\n\n\n\n");printf("\t\t\t╭────────────────────────────────────────────╮\n");printf("\t\t\t│名稱:通訊錄實例 ┃\n");printf("\t\t\t│數信學院 計科2班 王/// 201742010// ┃\n");printf("\t\t\t╰━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╯\n");printf("\n\n回車鍵進入......");fflush(stdin); //強制清除緩存流getchar(); } //主界面 char interphase(){int address_num(); //聲明統計函數char home;system("color 9F");printf("通訊錄(數據文件:%s)\t容量:%d條\t已用:%d條\n\n\n",data_file, max_list, address_n);printf("\t\t\tA.查看聯系人\t\tB.修改聯系人\n\n");printf("\t\t\tC.刪除聯系人\t\tD.新建聯系人\n\n");printf("\t\t\tQ.退出通訊錄\n\n\t\t附加功能:\n\t\t\tT.備忘錄\n\n\n");printf("--------------\n鍵入序號:");fflush(stdin);home = getchar();if ((home<'A' || home>'D') && home != 'Q'&&home != 'T') {system("cls");printf("提示:選擇有誤,重新選擇!\n");interphase();}elsereturn home; } //檢查文件 void file_true(){address arr[2] = { { "test1", "18212296321", "19980202" }, { "test2", "18212296320", "19980302" }}; //定義兩條測試數據FILE *data = fopen(data_file, "rb");if (data == NULL){data = fopen(data_file, "wb");fwrite(arr, sizeof(address),2, data); //寫入測試數據}fclose(data); //關閉文件 } //讀取文件 void file_read(address *p){FILE *data = fopen(data_file, "rb");fread(p, sizeof(address), max_list, data);fclose(data); } //寫入文件 void file_write(address *p){int count = 0;while (((p + count)->name[0]) != NULL){count++;}FILE *data = fopen(data_file, "wb");fwrite(p, sizeof(address), count, data);fclose(data); } //查看聯系人 void address_list(){int address_num();address list[max_list] = {0};static int num = 0;char h_1;file_read(list);printf("查看聯系人:\n\n\n");int i = 0;printf("\t\t\t┌────────────────────┬─────────────┬──────────┐\n");printf("\t\t\t│ 姓 名 │ 手 機 號 碼 │ 出生日期│\n");for (int i = 0; (i < max_list) && (list[i].name[0] != NULL); i++){printf("\t\t\t├────────────────────┼─────────────┼──────────┤\n");printf("\t\t\t│%-20s│%13s│%10s│\n", list[i].name, list[i].phone, list[i].birthday);}printf("\t\t\t└────────────────────┴─────────────┴──────────┘\n");printf("\t\t\t$$$共有%d位聯系人\n", address_num());printf("\n\n-----------\nR.刷新聯系人\t其它鍵返回主菜單\n");fflush(stdin);h_1 = getchar();if (h_1 == 'R'){system("cls");printf("第%d次刷新!", ++num);address_list();} } //修改聯系人 void address_edit(){address user;address list[max_list] = { 0 };char h_1 = NULL;file_read(list);printf("\n-------------\n輸入姓名:");fflush(stdin);gets(user.name);for (int i = 0; (i < max_list) && list[i].name[0] != NULL; i++){if (strcmp(list[i].name, user.name) == 0){printf("輸入新名字(為空不做修改):");fflush(stdin);gets(user.name);printf("輸入新號碼(為空不做修改):");fflush(stdin);gets(user.phone);printf("輸入出生日期(為空不做修改):");fflush(stdin);gets(user.birthday);if (strlen(user.name) > 0){strcpy(list[i].name, user.name);h_1 = 'Y';}if (strlen(user.phone) > 0){strcpy(list[i].phone, user.phone);h_1 = 'Y';}if (strlen(user.birthday) > 0){strcpy(list[i].birthday, user.birthday);h_1 = 'Y';}break;}}if (h_1 == 'Y'){file_write(list);system("cls");printf("聯系人修改成功!");address_list();}else{printf("修改失敗,任意鍵返回!\n");fflush(stdin);getchar();} } //刪除聯系人 void address_del(){int address_num();address user;address list[max_list] = { NULL };char h_1 = NULL;file_read(list);printf("\n-----------------\n輸入姓名:");fflush(stdin);gets(user.name);for (int i = 0; (i < max_list) && list[i].name[0] != NULL; i++){if (strcmp(list[i].name, user.name) == 0) {for (i; (i < max_list - 1) && list[i + 1].name[0] != NULL; i++){list[i] = list[i + 1];}list[i].name[0] = NULL;h_1 = 'Y';break;}}if (h_1 == 'Y'){file_write(list);system("cls");printf("聯系人刪除成功!");address_list();}else{printf("刪除失敗,任意鍵返回!\n");fflush(stdin);getchar();} } //新建聯系人 void address_new(){int address_num();int address_num_1 = address_num();address user;address list[max_list] = { NULL };char h_1 = NULL;printf("\n----------------\n輸入姓名(20字符內):");fflush(stdin);gets(user.name);printf("輸入手機號碼(11位):");fflush(stdin);gets(user.phone);printf("輸入出生日期(如:19980202):");fflush(stdin);gets(user.birthday);if (strlen(user.name) <= 0 || strlen(user.name) > 20)printf("錯誤1:姓名不符合規(guī)定!");else if (strlen(user.phone) != 11)printf("錯誤2:手機號不正確!");else if (strlen(user.birthday) != 8)printf("錯誤3:出生日期格式錯誤!");else{file_read(list);//重排聯系人for (int i = 0; i < address_num_1; i++){if (strcmp(user.name, list[i].name)<0){for (int ii = address_num_1; ii > i; ii--)list[ii] = list[ii - 1];list[i] = user;h_1 = 'Y';break;}else if (i == address_num_1 - 1){list[address_num_1] = user;h_1 = 'Y';}}}if (h_1 == 'Y'){file_write(list);system("cls");printf("新建聯系人成功!");address_list();}else{printf("新建失敗,任意鍵返回!\n");fflush(stdin);getchar();} } //統計條目 int address_num(){int num = 0;address list[max_list] = { NULL };file_read(list);for (num; (num < max_list) && list[num].name[0] != NULL; num++);return num; } //附加記事本功能&界面 void notes_interphase(){int notes_num();void add_notes();void view_notes();char h_1;while (1){printf("記事本(數據文件%s)\t容量:%d\t已用:%d\n",notes_file, max_notes, notes_num());printf("\n\n\t\t\tA.記事\t\tB.查看\n\n\t\t\tQ.返回上一級\n\n");printf("\n----------------\n鍵入序號:");fflush(stdin);h_1 = getchar();if (h_1 == 'A')add_notes();else if (h_1 == 'B')view_notes();else if (h_1 == 'Q')break;else{system("cls");printf("提示:選擇有誤,重新選擇!\n");notes_interphase();}} } //記事文件讀取 void notes_read(notes *p){FILE *data = fopen(notes_file,"rb");if (data == NULL) //文件不存在data = fopen(notes_file, "wb+");fread(p, sizeof(notes), max_notes, data);fclose(data); } //記事本文件存儲 void notes_save(notes *p){int count = 0;FILE *data = fopen(notes_file, "wb");while ((p + count)->title[0] != NULL)count++;fwrite(p, sizeof(notes), count, data);fclose(data); } //記事 void add_notes(){int notes_num();notes new_notes;notes list[max_notes] = { NULL };printf("\n--------------\n題目:");fflush(stdin);gets(new_notes.title);printf("正文:");fflush(stdin);gets(new_notes.content);if ((strlen(new_notes.title) > 0) && (strlen(new_notes.content) > 0)){notes_read(list);list[notes_num()] = new_notes;notes_save(list);system("cls");printf("提示:保存成功!\n");}else{system("cls");printf("提示:內容有誤,保存失敗!\n");} } //查看記事本 void view_notes(){int notes_num(),i,link;char view, h_1 = NULL;notes list[max_notes] = { NULL };notes_read(list);system("cls");printf("查看記事本\n\n");printf("\t\t\t\t%5s\t%-40s", "序號", "題目\n");for (int i = notes_num(), ii = 0; i > 0; i--, ii++)printf("%d \t% -40s\n", ii, list[ii].title);printf("\n總數目:%d\tD.刪除\tR.閱讀\n",notes_num());printf("\n--------------\n鍵入操作:");fflush(stdin);view = getchar();printf("輸入序號:");scanf("%d", &link);if (view == 'D'){if (link >= 0 && link < notes_num()){for (i = link; (i < max_list - 1) && list[i + 1].title[0] != NULL; i++){list[i] = list[i + 1];}list[i].title[0] = NULL;h_1 = 'Y';}if (h_1 == 'Y'){notes_save(list);system("cls");printf("提示:刪除成功!\n");}else{system("cls");printf("提示:操作有誤,返回上級!\n");}}else if (view == 'R'){printf("------------\n正在閱讀《%s》\n", list[link].title);printf("正文:%s", list[link].content);printf("\n\n$$2018 任意鍵返回!");fflush(stdin);getchar();system("cls");}else{system("cls");printf("提示:操作有誤,返回上級!\n");} } //記事本統計函數 int notes_num(){int num = 0;notes list[max_notes] = { NULL };notes_read(list);for (num; (num < max_notes) && list[num].title[0] != NULL; num++);return num; } int main(){system("mode con cols=93 lines=28"); //初始化窗口大小file_true();char h_1;welcome();while (1){system("cls");h_1 = interphase();if (h_1 == 'Q')break;else{switch (h_1){case 'A':system("cls"); address_list(); break;case 'B':address_edit(); break;case 'C':address_del(); break;case 'D':address_new(); break;case 'T':system("cls"); notes_interphase(); break;}}} return 0; }

下面提供一些效果圖:

?

?DEVC++運行源代碼下載:

https://download.csdn.net/download/qq_42304721/10592956

總結

以上是生活随笔為你收集整理的C语言通讯录实例的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 中文字幕无码毛片免费看 | 日韩欧美三级在线 | 亚洲人无码成www久久 | 蜜桃色999 | 岛国午夜视频 | 国产伦精品一区二区三区四区视频 | 色综合激情 | 久久免费视频3 | 国产欧美日韩三级 | 人妻人人澡人人添人人爽 | 色偷偷影院 | 亚洲av熟女国产一区二区性色 | 国产无遮挡又黄又爽免费网站 | 免费无遮挡无码永久视频 | 人妻精品久久久久中文字幕69 | 五月婷婷激情视频 | 污污网站在线 | 国产艳情片| 亚洲综合久久久 | 亚洲免费一级 | 色五婷婷 | 欧美日韩一区二区在线观看 | 国产97在线 | 亚洲 | 中年夫妇啪啪高潮 | 亚洲高清视频在线播放 | ts人妖在线 | 亚洲精品国产免费 | 爆操网站 | 国产一区导航 | 男操女视频网站 | 国产不卡精品 | 久草福利网 | 久久大香焦 | 亚洲av无码专区首页 | 三级全黄做爰在线观看 | 激情小说视频在线 | 污污网站在线观看 | a级在线视频 | 少女忠诚电影高清免费 | 非洲黄色片 | 国产一二三视频 | 国产91久久久| 日本www在线观看 | 国产aⅴ精品一区二区果冻 台湾性生生活1 | 国产人妖网站 | 九九九视频在线观看 | 一级片少妇 | 久久99国产精品视频 | 亚洲成人mv | 欧美怡红院视频一区二区三区 | 另类图片亚洲色图 | 好色先生tv官网 | 成人免费高清在线观看 | 国产欧美一区二区三区另类精品 | 亚洲国产精品久久精品怡红院 | 无遮挡裸光屁屁打屁股男男 | 亚洲精品一卡二卡 | 国产高清在线免费观看 | 韩国美女一区二区 | 丁香激情小说 | 九色免费视频 | 日本毛片视频 | 久久短视频| 中文精品无码中文字幕无码专区 | 偷拍一区二区三区四区 | 一级空姐毛片 | 国产在线精品一区 | 日韩精品第一区 | 亚洲福利一区二区 | 亚洲日本护士毛茸茸 | 伊人狼人综合 | 日韩视频福利 | 日本午夜电影网站 | 日本免费黄色网址 | www.com久久 | 日本免费一区二区三区视频 | 蜜桃做爰免费网站 | 91久久精 | 成年人免费看的视频 | 波多野结衣福利视频 | 日韩精品字幕 | 五月网婷婷 | www.亚洲天堂 | www.午夜视频 | 麻豆视频免费版 | 中文字幕a√ | 在线观看欧美精品 | 日本a一级片 | 色六月婷婷 | 日韩av中文在线观看 | 秋霞成人午夜鲁丝一区二区三区 | 久久久社区 | www.99av| 淫妹妹影院 | 亚洲爆乳无码精品aaa片蜜桃 | 色黄大色黄女片免费中国 | 五月天精品在线 | aaaa毛片| www夜插内射视频网站 |