通訊錄

2021-01-17 C語言函數與案例




#include <stdio.h> #include <stdlib.h> #include <string.h> #include <conio.h>
struct person { char name[15]; char celephone[22]; char QQ[20]; }per[500];
int num = 0; FILE* fp; void mainmenu();
void newrecord(); void readfromfile();
void searchmenu(); void searchbyname(); void searchbycelephone(); void searchbyqq();
void xiugaimenu(); void xiugaibyname(); void xiugaibycelephone(); void xiugaixiangmu(int a);
void deletemenu(); void deleteall(); void deleteone(); void deletebycelephone(); void deletebyname();
void showall();
void main(){ while (1) { mainmenu(); }}

void mainmenu(){ int a; printf("**********歡迎來到【通信錄】**********"); printf("\n\n"); printf(" 選擇1:導入信息\n"); printf(" 選擇2:新建信息\n"); printf(" 選擇3:查詢信息\n"); printf(" 選擇4:修改信息\n"); printf(" 選擇5:刪除個人\n"); printf(" 選擇6:刪除所有\n"); printf(" 選擇7:輸出信息\n"); printf(" 選擇0:退出系統\n\n"); printf("***************************************\n");
printf("【請選擇數字0-7,其他鍵暫時不起作用】\n");
loop1: scanf("%d", &a); switch (a) { case 1: { readfromfile(); break; } case 2: { newrecord(); break; } case 3: { searchmenu(); break; } case 4: { xiugaimenu(); break; } case 5: { deletemenu(); break; } case 6: { deleteall(); break; } case 7: { showall(); break; } case 0: { exit(0); } default: { printf("對不起!您的輸入有誤!請重新輸入: "); getchar(); goto loop1; } }}
void readfromfile(){ int i, j, k;
if ((fp = fopen("string.txt", "rb")) == NULL) { printf("\n\t\t****************************"); printf("\n\t\t* *"); printf("\n\t\t* *"); printf("\n\t\t* 通訊錄文件不存在! *"); if ((fp = fopen("per.bin", "wb")) == NULL) { printf("\n* 建立失敗! *"); printf("\n* *"); printf("\n* *"); printf("\n****************************"); exit(0); } else { printf("\n\t\t* 通訊錄文件已建立! *"); printf("\n\t\t* *"); printf("\n\t\t* *"); printf("\n\t\t****************************"); printf("\n\t\t 按任意鍵進入主菜單 "); printf("\n\t\t 請輸入您的數字選擇: "); scanf("%d", &k); return; } exit(0); }
fseek(fp, 0, 2); if (ftell(fp) > 0) { rewind(fp); for (num = 0; !feof(fp) && fread(&per[num], sizeof(struct person), 1, fp); num++); printf("\n\t\t****************************"); printf("\n\t\t* *"); printf("\n\t\t* *"); printf("\n\t\t* 文件導入成功! *"); printf("\n\t\t* *"); printf("\n\t\t* *"); printf("\n\t\t****************************"); printf("\n\t\t 按1顯示所有信息,按2回主菜單! "); printf("\t\t 請輸入您的數字選擇: "); scanf("%d", &j); if (j == 1) showall(); } else { printf("\n\t\t****************************"); printf("\n\t\t* *"); printf("\n\t\t* *"); printf("\n\t\t* 文件導入成功! *"); printf("\n\t\t* 通訊錄文件中無任何紀錄! *"); printf("\n\t\t* *"); printf("\n\t\t* *"); printf("\n\t\t****************************"); printf("\n\t\t請按任意數字鍵返回主菜單"); scanf("%d", &i); return; }}
void newrecord(){ char s[81];
int a;loop: printf("\n\n\n\n\t\t 請輸入您要添加的聯繫人的信息: \n"); printf("\n請輸入姓名:\n");name: scanf("%s", &per[num].name); if (strlen(per[num].name) > 15) { printf("對不起!您的輸入有誤!請重新輸入"); goto name; } if ((fp = fopen("string.txt", "a")) == NULL) { printf("無法打開文件\n"); exit(1); }
fprintf(fp, " 姓名\t\t 電話\t\t\t QQ\n"); fprintf(fp, "%-15s", per[num].name); fclose(fp);
printf("\n請輸入手機號碼:\n");celephone: scanf("%s", &per[num].celephone); if (strlen(per[num].celephone) != 11) { printf("對不起!您的輸入有誤!請重新輸入\n"); goto celephone; }
if ((fp = fopen("string.txt", "a")) == NULL) { printf("無法打開文件\n"); exit(1); }
fprintf(fp, "%-24s", per[num].celephone); fclose(fp); printf("\n輸入QQ號碼:");QQ: scanf("%s", &per[num].QQ); if (strlen(per[num].QQ) != 10) { printf("對不起!您的輸入有誤!請重新輸入"); goto QQ; }
if ((fp = fopen("string.txt", "a")) == NULL) { printf("無法打開文件\n"); exit(1); }
fprintf(fp, "%-20s\n", per[num].QQ); fclose(fp); num++; printf("\n是否繼續添加?\n"); printf("\n請按1和2(1代表繼續;2代表不繼續)\n"); printf("請輸入您的選擇 "); scanf("%d", &a); if (a == 1) { goto loop; } else { return; }}
void searchmenu(){ int a; printf("\n\t\t 歡 迎 使 用 查 詢 菜 單"); printf("\n\t\t 1-按姓名查詢"); printf("\n\t\t 2-按手機號碼查詢"); printf("\n\t\t 3-按QQ查詢"); printf("\n\t\t 其他鍵-返回主菜單"); printf("\n\t\t"); printf("請輸入您的選擇 "); scanf("%d", &a); switch (a) { case 1:searchbyname(); break; case 2:searchbycelephone(); break; case 3:searchbyqq(); break; default:mainmenu(); break; }}
void searchbyname(){ int mark = 0; int i, j, findmark = 0; int a = 0; char name[15]; printf("\n 按姓名查找 "); printf("\n請輸入姓名:"); scanf("%s", name); for (i = a; i < num; i++) { if (strcmp(per[i].name, name) == 0) { findmark++; printf("\n\t\t 以下是您查找的聯繫人的信息 "); printf("\n\t\t________________________________"); printf("\n\t\t名字: %s", per[i].name); printf("\n\t\t手機號碼: %s", per[i].celephone); printf("\n\t\tQQ號碼:%s", per[i].QQ); printf("\n\t\t________________________________"); if ((i + 1) < num) { printf("\n是否繼續查找相同名字的聯繫人的信息?(1代表繼續;2代表不繼續)"); scanf("%d", &j); if (j == 1) { a = i; mark++; continue; } else break; } else { printf("\n請按任意數字鍵返回主菜單"); scanf("%d", &j); return; } } } if (mark != 0) { printf("\n對不起! 沒有相同名字的該聯繫人的信息!!"); printf("\n請按任意數字鍵返回主菜單"); scanf("%d", &j); return; } else if (findmark == 0) { printf("\n對不起!沒有該聯繫人的信息!"); printf("\n請按任意數字鍵返回主菜單"); scanf("%d", &j); return; }}
void searchbycelephone(){ int mark = 0; int i, j; int a = 0; char celephone[11]; printf("\n 按手機號碼查找 \n"); printf("\n請輸入手機號碼:\n"); scanf("%s", celephone); for (i = 0; i < num; i++) { if (strcmp(per[i].celephone, celephone) == 0) { printf("\n 以下是您查找的聯繫人的信息 "); printf("\n________________________________"); printf("\n名字: %s", per[i].name); printf("\n手機號碼: %s", per[i].celephone); printf("\nQQ號碼:%s", per[i].QQ); printf("\n________________________________"); printf("\n請按任意數字鍵返回主菜單"); mark++; scanf("%d", &j); return; } } if (mark == 0) { printf("\n對不起!沒有該聯繫人的信息!"); printf("\n請按任意數字鍵返回主菜單"); scanf("%d", &j); return; }}
void searchbyqq(){ int mark = 0; int i, j; char QQ[20]; printf("\n\t\t 按QQ號碼查找 \n"); printf("\n請輸入QQ號碼:"); scanf("%s", QQ); for (i = 0; i < num; i++) { if (!strcmp(per[i].QQ, QQ)) { printf("\n\t\t 以下是您查找的聯繫人的信息 "); printf("\n\t\t________________________________"); printf("\n\t\t名字: %s", per[i].name); printf("\n\t\t手機號碼: %s", per[i].celephone); printf("\n\t\tQQ號碼:%s", per[i].QQ); printf("\n\t\t________________________________"); printf("\n\t\t請按任意數字鍵返回主菜單"); mark++; scanf("%d", &j); return; } } if (mark == 0) { printf("\n\t\t對不起!沒有該聯繫人的信息!"); printf("\n\t\t請按任意數字鍵返回主菜單"); scanf("%d", &j); return; }}
void xiugaimenu(){ int i, j; if (num == 0) { printf("\n\t\t對不起!文件中無任何紀錄!"); printf("\n\t\t請按任意數字鍵返回主菜單"); scanf("%d", &j); return; } else { printf("\n\t\t 1-按姓名修改 2-按手機號碼修改\n"); printf(" 請輸入您的數字選擇: "); loop6:scanf("%d", &i); switch (i) { case 1:xiugaibyname(); break; case 2:xiugaibycelephone(); break; default:printf("對不起!您的輸入有誤!請重新輸入: "); goto loop6; } }}
void xiugaibyname(){ int a = 0; int findmark = 0; int xiugaimark = 0; int i, j; char name[15]; printf("\n\t\t請輸入要修改聯繫人的姓名:"); scanf("%s", name); for (i = a; i < num; i++) { if (strcmp(per[i].name, name) == 0) { printf("\n\t\t以下是您要修改的聯繫人的紀錄:"); findmark++; printf("\n\t\t________________________________"); printf("\n\t\t名字: %s", per[i].name); printf("\n\t\t手機號碼: %s", per[i].celephone); printf("\n\t\tQQ號碼:%s", per[i].QQ); printf("\n\t\t________________________________"); printf("\n\t\t是否修改?(1代表修改;2代表不修改)"); printf(" 請輸入您的數字選擇: "); scanf("%d", &j); if (j == 1) { xiugaixiangmu(i); xiugaimark++; printf("\n\t\t修改成功"); if ((i + 1) < num) { printf("\n\t\t是否繼續修改相同姓名的聯繫人的信息?(1代表繼續;2代表不繼續)"); printf(" 請輸入您的數字選擇: "); scanf("%d", &j); if (j == 1) { a = i; findmark++; continue; } } printf("\n\t\t是否繼續修改?(1代表繼續;2代表不繼續)"); printf(" 請輸入您的數字選擇: "); scanf("%d", &j); if (j == 1) xiugaibyname(); return; } } } if ((xiugaimark == 0) && (findmark == 0)) { printf("\n\t\t沒有該聯繫人的紀錄"); printf("\n\t\t是否繼續修改?(1代表繼續;2代表不繼續)"); printf(" 請輸入您的數字選擇: "); scanf("%d", &j); if (j == 1) xiugaibyname(); return; } else if (findmark != 0) { printf("\n\t\t沒有重名信息"); printf("\n\t\t是否繼續修改?(1代表繼續;2代表不繼續)"); printf(" 請輸入您的數字選擇: "); scanf("%d", &j); if (j == 1) xiugaibyname(); return; }}
void xiugaibycelephone(){ int findmark = 0; int i, j; char celephone[11]; printf("\n\t\t請輸入要修改聯繫人的手機號碼:"); scanf("%s", celephone); for (i = 0; i < num; i++) { if (strcmp(per[i].celephone, celephone) == 0) { printf("\n\t\t以下是您要修改的聯繫人的紀錄:"); findmark++; printf("\n\t\t________________________________"); printf("\n\t\t名字: %s", per[i].name); printf("\n\t\t手機號碼: %s", per[i].celephone); printf("\n\t\tQQ號碼:%s", per[i].QQ); printf("\n\t\t________________________________"); printf("\n\t\t是否修改?(1代表修改;2代表不修改)"); printf(" 請輸入您的數字選擇: "); scanf("%d", &j); if (j == 1) { xiugaixiangmu(i); printf("\n\t\t修改成功"); printf("\n\t\t是否繼續修改?(1代表繼續;2代表不繼續)"); printf(" 請輸入您的數字選擇: "); scanf("%d", &j); printf(" 請輸入您的數字選擇: "); if (j == 1) xiugaixiangmu(i); break; } } } if (findmark == 0) { printf("\n\t\t對不起!沒有該聯繫人的紀錄!"); printf("\n\t\t是否繼續修改?(1代表繼續;2代表不繼續)"); printf(" 請輸入您的數字選擇: "); scanf("%d", &j); if (j == 1) xiugaibycelephone(); return; }}
void xiugaixiangmu(int a){ int i; printf("\n\t\t 請輸入您要修改的項目 "); printf("\n\t\t\n"); printf("\n\t\t1-手機號碼\n"); printf("\n\t\t2-姓名\n"); printf("\n\t\t4-QQ號碼\n"); printf("\n\t\t8-回主菜單\n"); printf("\n\t\t\n"); printf(" 請輸入您的數字選擇: "); scanf("%d", &i);loop9: switch (i){
case 1:printf("請輸入手機號碼:"); scanf("%s", &per[a].celephone); break;case 2:printf("請輸入姓名:"); scanf("%s", &per[a].name); break; ;case 4:printf("請輸入QQ號碼:"); scanf("%s", &per[a].QQ); break;
case 8:mainmenu(); break;default: printf("對不起!您的輸入有誤!請重新輸入: "); goto loop9;}}
void deletemenu(){ int i, j; if (num == 0) { printf("\n\t\t對不起!文件中無任何紀錄!"); printf("\n\t\t請先添加個人信息!"); printf("\n\t\t請按任意數字鍵返回主菜單"); scanf("%d", &j); return; } else { printf("\n\t\t 刪 除 菜 單 "); printf("\n\t\t 1-刪除單個 "); printf("\n\t\t 2-返回主菜單 "); printf("\n\t\t "); printf("\n\t\t請輸入您的數字選擇: "); loop4: scanf("%d", &i); switch (i) { case 1:deleteone(); break; case 2:mainmenu(); break; default:printf("對不起!您的輸入有誤!請重新輸入: "); goto loop4; } }}
void deleteall(){ int i, j; printf("\n\t\t確認刪除?\n"); printf("請按1和2(1代表確認;2代表不刪除)\n "); scanf("%d", &i); if (i == 1) { fclose(fp); if ((fp = fopen("per.bin", "wb")) == NULL) { printf("\n\t\t不能打開文件,刪除失敗"); readfromfile(); } num = 0; printf("\n\t\t紀錄已刪除!"); printf("\n\t\t請按任意數字鍵返回主菜單"); scanf("%d", &j); return; }
}
void deleteone(){ int i; printf("\n\t\t1-按手機號碼刪除 2-按姓名刪除"); printf("\n\t\t請輸入您的選擇:");loop5:scanf("%d", &i);; switch (i) { case 1:deletebycelephone(); break; case 2:deletebyname(); break; default:printf("對不起!您的輸入有誤!請重新輸入: "); goto loop5; }}
void deletebyname(){ int a = 0; int findmark = 0; int i, j, k; int deletemark = 0; char name[15]; printf("\n\t\t請輸入您要刪除的聯繫人的姓名:"); scanf("%s", name); for (i = a; i < num; i++) { if (strcmp(per[i].name, name) == 0) { printf("\n\t\t以下是您要刪除的聯繫人的紀錄:"); findmark++; printf("\n\t\t________________________________"); printf("\n\t\t名字: %s", per[i].name); printf("\n\t\t手機號碼: %s", per[i].celephone); printf("\n\t\tQQ號碼:%s", per[i].QQ); printf("\n\t\t________________________________"); printf("\n\t\t是否刪除?(1代表刪除;2代表不刪除)\n"); printf("\n\t\t請輸入您的數字選擇: "); scanf("%d", &k); if (k == 1) { for (j = i; j < num - 1; j++) per[j] = per[j + 1]; num--; deletemark++; printf("\n\t\t刪除成功"); if ((i + 1) < num) { printf("\n\t\t是否繼續刪除相同姓名的聯繫人的信息?(1代表刪除;2代表不刪除)"); printf("\n\t\t請輸入您的數字選擇: "); scanf("%d", &k); if (k = 1) { a = i; findmark++; continue; } } printf("\n\t\t是否繼續刪除?(1代表繼續;2代表不繼續)"); printf("\n\t\t請輸入您的數字選擇: "); scanf("%d", &k); if (k == 1) deleteone(); else break; } } else continue; } if ((deletemark == 0) && (findmark == 0)) { printf("\n\t\t對不起!沒有該聯繫人的紀錄!"); printf("\n\t\t是否繼續刪除?(1代表繼續;2代表不繼續)"); printf(" 請輸入您的數字選擇: "); scanf("%d", &k); if (k == 1) deleteone(); } else if (findmark != 0) { printf("\n\t\t對不起!沒有重名信息!"); printf("\n\t\t是否繼續刪除?(1代表繼續;2代表不繼續)"); printf(" 請輸入您的數字選擇: "); scanf("%d", &k); if (k == 1) deleteone(); }}
void deletebycelephone(){ int i, j, h, m; int deletemark = 0; char celephone[11]; printf("\n\t\t請輸入要刪除的聯繫人的手機號碼:"); scanf("%s", celephone); for (i = 0; i < num; i++) { if (strcmp(per[i].celephone, celephone) == 0) { deletemark++; printf("\n\t\t以下是您要刪除的聯繫人的紀錄:"); printf("\n\t\t________________________________"); printf("\n\t\t名字: %s", per[i].name); printf("\n\t\t手機號碼: %s", per[i].celephone); printf("\n\t\tQQ號碼:%s", per[i].QQ); printf("\n\t\t________________________________"); printf("\n\t\t是否刪除?(1代表刪除;2代表不刪除)\n"); printf(" 請輸入您的數字選擇: "); scanf("%d", &h); if (h == 1) { for (j = i; j < num - 1; j++) per[j] = per[j + 1]; num--; printf("\n\t\t刪除成功"); printf("\n是否繼續刪除?(1代表繼續;2代表不繼續)\n"); printf(" 請輸入您的數字選擇: "); scanf("%d", &h); if (h == 1) deletebycelephone(); } } } if (deletemark == 0) { printf("\n\t\t對不起!沒有該聯繫人的紀錄!"); printf("\n\t\t是否繼續刪除?(1代表繼續;2代表不繼續)\n"); printf(" 請輸入您的數字選擇: "); scanf("%d", &m); if (m == 1) deletebycelephone(); }}
void showall(){ int i, j; if (num != 0) { printf("\n\t\t*************** 以下為通訊錄所有信息************"); for (i = 0; i < num; i++) { printf("\n\t\t_______________________________________________"); printf("\n%s", per[i].name); printf("\n%s",per[i].celephone); printf("\n%s",per[i].QQ); printf("\n\t\t_______________________________________________"); printf("\t\t"); if (i + 1 < num) { printf("\n\t\t__________________________"); system("pause"); } } printf("\n\t\t************************************************"); } else printf("\n\t\t對不起!通訊錄中無任何紀錄!");
printf("\n\t\t請按任意數字鍵返回主菜單"); scanf("%d", &j); return;}

相關焦點

  • S60V5QQ通訊錄3.1:支持一鍵通話錄音
    但是QQ通訊錄仍然堅持不斷在Symbian平臺更新版本,最近相繼發布了S60V3版QQ通訊錄3.7,增加2套新皮膚設計更上流。最新發布的QQ通訊錄3.1forS60V5就讓用戶眼前一亮。該版本重新設計了UI,同時支持一鍵通話錄音,該功能在S60V3版QQ通訊錄上也已經支持,此外,還支持桌面看簡訊和通話記錄等貼心功能。
  • 通知:2019北鬥衛星導航企業通訊錄徵集
    2019北鬥衛星導航企業通訊錄徵集通知
  • PPM v1.0 發布,企業通訊錄 Android APP
    PPM 企訊通 v1.0 第 1 個版本發布,雲端+Android 端快速構建企業雲通訊錄,歡迎大家免費下載使用~PPM Contact v1.0 是 PPM 企訊通於2013年
  • 講解蘋果手機iPhone怎麼去除通訊錄重複聯繫人
    關於蘋果手機iPhone怎麼去除通訊錄重複聯繫人用戶想要了解清楚,經過雪兒深入研究後得出一些蘋果手機iPhone怎麼去除通訊錄重複聯繫人從官方的建議中整理了下面的方法、相關資料希望可以幫到大家。1、如果你的設備開啟了iCloud的話,需要前往「設置」 > 「iCloud」,關閉通訊錄同步功能。2、關閉之後連接電腦,打開已安裝好的愛思助手,連接之後點擊下方的資料,可以看到右上角有個「聯繫人去重」,點擊進入。3、進入之後可以看到你所有的重複聯繫人,選擇需要合併的聯繫人,再點擊下方的「合併聯繫人」。
  • 京東方11名員工進入中國電子通訊錄 中電熊貓併購案形勢漸明
    隨著上周五控股中電熊貓的中國電子信息產業集團有限公司(簡稱中國電子)企業微信通訊錄中新添一個BOE(京東方)通訊錄的消息被業界曝光,中電熊貓併購案的形勢逐漸變得明朗。京東方(000725.SZ)在競購者中勝出,很有可能將接手南京中電熊貓6代線、8.5代線和成都中電熊貓8.6代線三個項目。
  • 工信部通報下架26款侵權APP包括通訊錄同步助手、小蟻攝像機等
    其中包括通訊錄同步助手、寶寶學拼音、小蟻攝像機等。此前,12月3日,工信部通報2020年第六批存在侵害用戶權益行為的App,共計60款,要求在12月10日前完成整改落實工作。據工信部最新通報,截至目前,經第三方檢測機構核查復檢,尚有19款App未按照要求完成整改。
  • 網信辦擬規定貸款等金融類APP必要信息收集範圍不涉通訊錄、位置信息
    從徵求意見稿內容來看,金融類APP必要個人信息的收集範圍均未包括通訊錄、位置信息、相機、麥克風等。此前,借貸APP用戶曾因通訊錄信息暴露,被暴力催收所擾。該文件顯示,必要個人信息包括位置信息的僅有地圖導航類、網絡約車類等。
  • 一張地圖、一支隊伍和一個特殊的通訊錄 「天路」上的駐村第一書記
    沒事的時候,雷憲斌喜歡翻手機裡的通訊錄,裡面存了86戶貧困戶的電話,而且存的電話聯繫人很有特點。 「柳德福_因學1416李世明」「方德美_因病1418李世明」… …記者看到,雷憲斌的手機通訊錄存的86戶貧困戶的電話號碼不僅有姓名,姓名後還有一連串信息。
  • 聊天記錄、通訊錄都有洩露風險,還可能...
    數字經濟智庫高級研究員 胡麒牧:第一,如果你授權給「清粉」服務提供者,相當於這個人接管了你的帳戶,他就可以調取你的個人資料,包括微信的通訊錄、聊天記錄以及手機的通訊錄、聊天資料等,都有可能洩露出去。第二,「清粉」服務提供者可以通過佔有你的帳戶,去註冊其他的帳戶,做一些事情,如果這些事情是違法的,就會對你的個人徵信帶來影響。第三,「清粉」服務提供者可能會通過你的帳戶發布詐騙之類的信息。
  • 石油行業最新公開招標公告,免費物資通訊錄(2月6日)
    原標題:石油行業最新公開招標公告,免費物資通訊錄(2月6日) 各位石油圈內朋友,有需要招標的,掛需求的,宣傳自己的看這裡,只需分享朋友圈一下,就可以免費公告,成就別人