C語言通訊錄管理系統(tǒng)完整代碼
本文實(shí)例為大家分享了C語言實(shí)現(xiàn)通訊錄管理系統(tǒng)的具體代碼,供大家參考,具體內(nèi)容如下
設(shè)計(jì)內(nèi)容:
設(shè)計(jì)一個(gè)通訊錄管理系統(tǒng),以實(shí)現(xiàn)以下功能:信息添加、查詢、修改、刪除、排序等功能。
設(shè)計(jì)要求:
1) 每條信息至包含 :姓名、電話、工作單位等信息
2) 作為一個(gè)完整的系統(tǒng),應(yīng)具有友好的界面和較強(qiáng)的容錯(cuò)能力
預(yù)覽:
代碼:
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <windows.h>? #define LEN sizeof(struct list) #define DATA a[i].num,a[i].name,a[i].job,a[i].address #define FORMAT "\t\t ?|| ? ?%-12d %-12s %-19s %-20s ||\n" void in(); void menu(); void search(); void del(); void show(); void modify(); void insert(); void order(); void total(); struct list { ?? ?int num;?? ??? ?//號(hào)碼 ?? ?char name[15];?? ?//姓名 ?? ?char job[30];?? ?//工作單位 ?? ?char address[30];?? ?//地址?? ??? ??? ? }; struct list a[50]; void main() { ?? ?system("color 5e\n"); ?? ?menu(); ?? ?int n; ?? ?scanf("%d", &n); ?? ?while (n) ?? ?{ ?? ??? ?switch (n) ?? ??? ?{ ?? ??? ?case 1:in(); ?? ??? ?break; ?? ??? ?case 2:search(); ?? ?break; ?? ??? ?case 3:del();?? ??? ?break; ?? ??? ?case 4:modify();?? ?break; ?? ??? ?case 5:insert();?? ?break; ?? ??? ?case 6:order();?? ??? ?break; ?? ??? ?case 7:total();?? ??? ?break; ?? ??? ?case 8:show();?? ??? ?break; ?? ??? ?default:break; ?? ??? ?} ?? ??? ?getch(); ?? ??? ?menu();//執(zhí)行完后顯示菜單? ?? ??? ?scanf("%d", &n); ?? ?} } void menu()?? ? { ?? ?system("cls"); ?? ?printf("\n\n\n"); ?? ?printf("\t\t\t\t\t**************************************\n"); ?? ?printf("\t\t\t\t\t************通訊錄管理系統(tǒng)************\n"); ?? ?printf("\t\t\t\t\t======================================\n"); ?? ?printf("\t\t\t\t\t* ? ? ? ? ?1.錄入聯(lián)系人信息 ? ? ? ? ?*\n"); ?? ?printf("\t\t\t\t\t* ? ? ? ? ?2.查找聯(lián)系人信息 ? ? ? ? ?*\n"); ?? ?printf("\t\t\t\t\t* ? ? ? ? ?3.刪除聯(lián)系人信息 ? ? ? ? ?*\n"); ?? ?printf("\t\t\t\t\t* ? ? ? ? ?4.修改聯(lián)系人信息 ? ? ? ? ?*\n"); ?? ?printf("\t\t\t\t\t* ? ? ? ? ?5.插入聯(lián)系人信息 ? ? ? ? ?*\n"); ?? ?printf("\t\t\t\t\t* ? ? ? ? ?6.排序 ? ? ? ? ? ? ? ? ? ?*\n"); ?? ?printf("\t\t\t\t\t* ? ? ? ? ?7.統(tǒng)計(jì)聯(lián)系人總數(shù) ? ? ? ? ?*\n"); ?? ?printf("\t\t\t\t\t* ? ? ? ? ?8.顯示所有聯(lián)系人 ? ? ? ? ?*\n"); ?? ?printf("\t\t\t\t\t* ? ? ? ? ?0.退出系統(tǒng) ? ? ? ? ? ? ? ?*\n"); ?? ?printf("\t\t\t\t\t======================================\n"); ?? ?printf("\t\t\t\t\t**************************************\n"); ?? ?printf("\t\t\t\t\t ? ? ? ? ?請(qǐng)選擇(0-8):"); } void in() { ?? ?int i, m = 0; ?? ?char ch[2]; ?? ?FILE* fp; ?? ?if ((fp = fopen("data.txt", "a+")) == NULL) ?? ?{ ?? ??? ?printf("\t\t ?文件不存在! \n"); ?? ??? ?return; ?? ?} ?? ?while (!feof(fp)) ?? ?{ ?? ??? ?if (fread(&a[m], LEN, 1, fp) == 1) ?? ??? ??? ?m++; ?? ?} ?? ?fclose(fp); ?? ?if (m == 0) ?? ?{ ?? ??? ?printf("\t\t ?文件中沒有記錄!\n"); ?? ?} ?? ?else ?? ?{ ?? ??? ?show(); ?? ?} ?? ?if ((fp = fopen("data.txt", "a+")) == NULL) ?? ?{ ?? ??? ?printf("\t\t ?文件不存在!\n"); ?? ??? ?return; ?? ?} ?? ?printf("\t\t ?是否輸入聯(lián)系人信息(y/n):"); ?? ?scanf("%s", ch); ?? ?while (strcmp(ch, "Y") == 0 || strcmp(ch, "y") == 0) ?? ?{ ?? ??? ?printf("\t\t ?電話:"); ?? ??? ?scanf("%d", &a[m].num); ?? ??? ?for (i = 0; i < m; i++) ?? ??? ?{ ?? ??? ??? ?if (a[i].num == a[m].num) ?? ??? ??? ?{ ?? ??? ??? ??? ?printf("\t\t ?此用戶已經(jīng)存在了,按任意鍵繼續(xù)!"); ?? ??? ??? ??? ?getch(); ?? ??? ??? ??? ?fclose(fp); ?? ??? ??? ??? ?return; ?? ??? ??? ?} ?? ??? ?} ?? ??? ?printf("\t\t ?姓名:"); ?? ??? ?scanf("%s", &a[m].name); ?? ??? ?printf("\t\t ?工作單位:"); ?? ??? ?scanf("%s", &a[m].job); ?? ??? ?printf("\t\t ?地址:"); ?? ??? ?scanf("%s", &a[m].address); ?? ??? ?if (fwrite(&a[m], LEN, 1, fp) != 1) ?? ??? ?{ ?? ??? ??? ?printf("\t\t ?不能保存"); ?? ??? ??? ?getch(); ?? ??? ?} ?? ??? ?else ?? ??? ?{ ?? ??? ??? ?printf("\t\t ?%s 已被保存!\n", a[m].name); ?? ??? ??? ?m++; ?? ??? ?} ?? ??? ?printf("\t\t ?繼續(xù)?(y/n):"); ?? ??? ?scanf("%s", ch); ?? ?} ?? ?fclose(fp); ?? ?printf("\t\t ?結(jié)束錄入!\n"); } void del() { ?? ?show(); ?? ?FILE* fp; ?? ?int nmb, i, j, m = 0; ?? ?int t = 1;?? ??? ?//判斷是否正常結(jié)束? ?? ?char ch[2]; ?? ?if ((fp = fopen("data.txt", "r+")) == NULL) ?? ?{ ?? ??? ?printf("\t\t ?\n文件不存在\n"); ?? ??? ?return; ?? ?} ?? ?while (!feof(fp)) ?? ?{ ?? ??? ?if (fread(&a[m], LEN, 1, fp) == 1) ?? ??? ??? ?m++; ?? ?} ?? ?fclose(fp); ?? ?if (m == 0) ?? ?{ ?? ??? ?printf("\t\t ?\n文件沒有記錄!\n"); ?? ??? ?return; ?? ?} ?? ?printf("\t\t ?輸入要?jiǎng)h除的聯(lián)系人的電話號(hào)碼:"); ?? ?scanf("%d", &nmb); ?? ?for (i = 0; i < m; i++) ?? ??? ?if (nmb == a[i].num) ?? ??? ?{ ?? ??? ??? ?printf("\t\t ?找到這條記錄是否刪除(y/n):"); ?? ??? ??? ?scanf("%s", &ch); ?? ??? ??? ?if (strcmp(ch, "Y") == 0 || strcmp(ch, "y") == 0) ?? ??? ??? ?{ ?? ??? ??? ??? ?for (j = i + 1; j < m; j++) ?? ??? ??? ??? ??? ?a[j - 1] = a[j]; ?? ??? ??? ??? ?m--; ?? ??? ??? ??? ?if ((fp = fopen("data.txt", "w+")) == NULL) ?? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ?printf("\t\t ?文件不存在\n"); ?? ??? ??? ??? ??? ?return; ?? ??? ??? ??? ?} ?? ??? ??? ??? ?for (j = 0; j < m; j++) ?? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ?if (fwrite(&a[j], LEN, 1, fp) != 1) ?? ??? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ??? ?printf("\t\t ?無法寫入文件!刪除失敗!"); ?? ??? ??? ??? ??? ??? ?getch(); ?? ??? ??? ??? ??? ?} ?? ??? ??? ??? ?} ?? ??? ??? ??? ?fclose(fp); ?? ??? ??? ??? ?printf("\t\t ?刪除成功"); ?? ??? ??? ?} ?? ??? ??? ?else ?? ??? ??? ?{ ?? ??? ??? ??? ?fclose(fp); ?? ??? ??? ??? ?printf("\t\t ?找到了記錄選擇不刪除"); ?? ??? ??? ?} ?? ??? ??? ?t = 0;?? ?//標(biāo)志找到該聯(lián)系人? ?? ??? ??? ?break; ?? ??? ?} ?? ?if (t) ?? ??? ?printf("\t\t ?沒有找到該聯(lián)系人!\n"); } void modify() { ?? ?show(); ?? ?FILE* fp; ?? ?int i = 0, j = 0, m = 0, nmb; ?? ?if ((fp = fopen("data.txt", "r+")) == NULL) ?? ?{ ?? ??? ?printf("\t\t ?文件不存在\n"); ?? ??? ?return; ?? ?} ?? ?while (!feof(fp)) ?? ??? ?if (fread(&a[m], LEN, 1, fp) == 1) ?? ??? ??? ?m++; ?? ?if (m == 0) ?? ?{ ?? ??? ?printf("\t\t ?文件中沒有記錄"); ?? ??? ?fclose(fp); ?? ??? ?return; ?? ?} ?? ?printf("\t\t ?請(qǐng)輸入要修改的聯(lián)系人的電話號(hào)碼:"); ?? ?scanf("%d", &nmb); ?? ?for (i = 0; i < m; i++) ?? ??? ?if (nmb == a[i].num)?? ?//檢索是否有要相應(yīng)的聯(lián)系人 ?? ??? ?{ ?? ??? ??? ?printf("\t\t ?找到該名聯(lián)系人,將修改他的信息!\n"); ?? ??? ??? ?printf("\t\t ?電話:"); ?? ??? ??? ?scanf("%d", &a[i].num); ?? ??? ??? ?printf("\t\t ?姓名:"); ?? ??? ??? ?scanf("%s", &a[i].name); ?? ??? ??? ?printf("\t\t ?工作單位:"); ?? ??? ??? ?scanf("%s", &a[i].job); ?? ??? ??? ?printf("\t\t ?住址:"); ?? ??? ??? ?scanf("%s", &a[i].address); ?? ??? ??? ?printf("\t\t ?修改成功!"); ?? ??? ??? ?if ((fp = fopen("data.txt", "w+")) == NULL) ?? ??? ??? ?{ ?? ??? ??? ??? ?printf("\t\t ?不能打開"); ?? ??? ??? ??? ?return; ?? ??? ??? ?} ?? ??? ??? ?for (j = 0; j < m; j++)?? ??? ?//寫入新的信息 ?? ??? ??? ??? ?if (fwrite(&a[j], LEN, 1, fp) != 1) ?? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ?printf("\t\t ?不能打開"); ?? ??? ??? ??? ??? ?getch(); ?? ??? ??? ??? ?} ?? ??? ??? ?fclose(fp); ?? ??? ??? ?break; ?? ??? ?} ?? ?if (i == m) ?? ??? ?printf("\t\t ?沒有找到該名聯(lián)系人"); } void search() { ?? ?show(); ?? ?FILE* fp; ?? ?int nmb, i, m = 0; ?? ?if ((fp = fopen("data.txt", "r+")) == NULL) ?? ?{ ?? ??? ?fclose(fp); ?? ??? ?printf("\n\t\t ?文件不存在!\n"); ?? ??? ?return; ?? ?} ?? ?while (!feof(fp)) ?? ?{ ?? ??? ?if (fread(&a[m], LEN, 1, fp) == 1) ?? ??? ??? ?m++; ?? ?} ?? ?if (m == 0) ?? ?{ ?? ??? ?fclose(fp); ?? ??? ?printf("\n\t\t ?文件沒有記錄!\n"); ?? ??? ?return; ?? ?} ?? ?printf("\n\t\t ?請(qǐng)輸入聯(lián)系人的電話號(hào)碼!:"); ?? ?scanf("%d", &nmb); ?? ?for (i = 0; i < m; i++) ?? ??? ?if (nmb == a[i].num) ?? ??? ?{ ?? ??? ??? ?printf("\t\t ? ? ? ?電話 ? ? ? ? 姓名 ? ? ? ? 工作單位 ? ? ? ? ? ?住址 ? ? ? ? ? ? ? ? ? \n"); ?? ??? ??? ?printf(FORMAT, DATA); ?? ??? ??? ?break; ?? ??? ?} ?? ?if (i == m) ?? ??? ?printf("\t\t ?沒有找到記錄!\n"); ?? ?fclose(fp); } void show() { ?? ?FILE* fp; ?? ?int i, m = 0; ?? ?if ((fp = fopen("data.txt", "r+")) == NULL) ?? ?{ ?? ??? ?printf("\n\t\t ?文件不存在\n"); ?? ??? ?return; ?? ?} ?? ?while (!feof(fp)) ?? ?{ ?? ??? ?if (fread(&a[m], LEN, 1, fp) == 1) ?? ??? ??? ?m++; ?? ?} ?? ?fclose(fp); ?? ?printf("\t\t ?---------------------------------------------------------------------------\n"); ?? ?printf("\t\t ?|| ? ?電話 ? ? ? ? 姓名 ? ? ? ? 工作單位 ? ? ? ? ? ?住址 ? ? ? ? ? ? ? ? ||\n"); ?? ?for (i = 0; i < m; i++) ?? ?{ ?? ??? ?printf(FORMAT, DATA); ?? ?} ?? ?printf("\t\t ?---------------------------------------------------------------------------\n"); } void insert() { ?? ?show(); ?? ?FILE* fp; ?? ?int i, j, k, m = 0, nmb; ?? ?if ((fp = fopen("data.txt", "r+")) == NULL) ?? ?{ ?? ??? ?printf("\t\t ?文件不存在! \n"); ?? ??? ?return; ?? ?} ?? ?while (!feof(fp)) ?? ??? ?if (fread(&a[m], LEN, 1, fp) == 1) ?? ??? ??? ?m++; ?? ?if (m == 0) ?? ?{ ?? ??? ?printf("\t\t ?文件中沒有記錄!\n"); ?? ??? ?fclose(fp); ?? ??? ?return; ?? ?} ?? ?printf("\t\t ?請(qǐng)輸入要插入哪個(gè)號(hào)碼的位置之后:"); ?? ?scanf("%d", &nmb); ?? ?for (i = 0; i < m; i++) ?? ??? ?if (nmb == a[i].num) ?? ??? ??? ?break; ?? ?if (m == i) ?? ?{ ?? ??? ?printf("\t\t ?沒有找到改電話號(hào)碼"); ?? ??? ?fclose(fp); ?? ??? ?return; ?? ?} ?? ?for (j = m - 1; j > i; j--) ?? ??? ?a[j + 1] = a[j]; ?? ?printf("\t\t ?請(qǐng)輸入要插入的通訊錄信息:\n"); ?? ?printf("\t\t ?電話:"); ?? ?scanf("%d", &nmb); ?? ?for (k = 0; k < m; k++) ?? ??? ?if (a[k].num == nmb) ?? ??? ?{ ?? ??? ??? ?printf("\t\t ?電話已經(jīng)存在,請(qǐng)按任意鍵繼續(xù)!"); ?? ??? ??? ?getch(); ?? ??? ??? ?fclose(fp); ?? ??? ??? ?return; ?? ??? ?} ?? ?a[i + 1].num = nmb; ?? ?printf("\t\t ?姓名:"); ?? ?scanf("%s", &a[i + 1].name); ?? ?printf("\t\t ?工作:"); ?? ?scanf("%s", &a[i + 1].job); ?? ?printf("\t\t ?地址:"); ?? ?scanf("%s", &a[i + 1].address); ?? ?printf("\t\t ?插入成功,請(qǐng)輸入任意鍵返回主界面!"); ?? ?if ((fp = fopen("data.txt", "w+")) == NULL) ?? ?{ ?? ??? ?printf("\t\t ?不能打開!"); ?? ??? ?return; ?? ?} ?? ?for (k = 0; k <= m; k++) ?? ??? ?if (fwrite(&a[k], LEN, 1, fp) != 1) ?? ??? ?{ ?? ??? ??? ?printf("\t\t ?不能保存!"); ?? ??? ??? ?getch(); ?? ??? ?} ?? ?fclose(fp); } void order() { ?? ?FILE* fp; ?? ?struct list b; ?? ?int i = 0, j = 0, m = 0; ?? ?printf("\n"); ?? ?if ((fp = fopen("data.txt", "r+")) == NULL) ?? ?{ ?? ??? ?printf("\t\t ?文件不存在\n"); ?? ??? ?return; ?? ?} ?? ?while (!feof(fp)) ?? ??? ?if (fread(&a[m], LEN, 1, fp) == 1) ?? ??? ??? ?m++; ?? ?fclose(fp); ?? ?if (m == 0) ?? ?{ ?? ??? ?printf("\t\t ?文件中沒有記錄\n"); ?? ??? ?return; ?? ?} ?? ?for (i = 0; i < m - 1; i++) ?? ??? ?for (j = i + 1; j < m; j++) ?? ??? ??? ?if (a[i].num < a[j].num) ?? ??? ??? ?{ ?? ??? ??? ??? ?b = a[i]; a[i] = a[j]; a[j] = b; ?? ??? ??? ?} ?? ?if ((fp = fopen("data.txt", "w+")) == NULL) ?? ?{ ?? ??? ?printf("\t\t ?文件不存在!\n"); ?? ??? ?return; ?? ?} ?? ?for (i = 0; i < m; i++) ?? ??? ?if (fwrite(&a[i], LEN, 1, fp) != 1) ?? ??? ?{ ?? ??? ??? ?printf("\t\t ?不能保存文件!\n"); ?? ??? ??? ?getch(); ?? ??? ?} ?? ?fclose(fp); ?? ?show(); ?? ?printf("\t\t ?保存成功\n"); } void total() { ?? ?FILE* fp; ?? ?int m = 0; ?? ?if ((fp = fopen("data.txt", "r+")) == NULL) ?? ?{ ?? ??? ?printf("\t\t ?文件不存在!\n"); ?? ??? ?return; ?? ?} ?? ?while (!feof(fp)) ?? ??? ?if (fread(&a[m], LEN, 1, fp) == 1) ?? ??? ??? ?m++; ?? ?if (m == 0) ?? ?{ ?? ??? ?printf("\n\t\t ?沒有聯(lián)系人!\n"); ?? ??? ?fclose(fp); ?? ??? ?return; ?? ?} ?? ?fclose(fp); ?? ?show(); ?? ?printf("\t\t ?您一共擁有 %d 位聯(lián)系人", m); }
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- C語言通訊錄管理系統(tǒng)完整版
- C語言通訊錄管理系統(tǒng)課程設(shè)計(jì)
- C語言實(shí)現(xiàn)個(gè)人通訊錄管理系統(tǒng)
- C語言實(shí)現(xiàn)通訊錄管理系統(tǒng)
- 基于C語言實(shí)現(xiàn)個(gè)人通訊錄管理系統(tǒng)
- C語言單鏈表實(shí)現(xiàn)通訊錄管理系統(tǒng)
- C語言實(shí)現(xiàn)簡(jiǎn)單的通訊錄管理系統(tǒng)
- C語言代碼實(shí)現(xiàn)通訊錄管理系統(tǒng)
- C語言實(shí)現(xiàn)簡(jiǎn)單通訊錄管理系統(tǒng)
- c語言實(shí)現(xiàn)通訊錄管理系統(tǒng)詳細(xì)實(shí)例
相關(guān)文章
詳解基于C++實(shí)現(xiàn)約瑟夫環(huán)問題的三種解法
約瑟夫環(huán)問題是算法中相當(dāng)經(jīng)典的一個(gè)問題,其問題理解是相當(dāng)容易的,并且問題描述有非常多的版本,并且約瑟夫環(huán)問題還有很多變形,通過這篇約瑟夫問題的講解,一定可以帶你理解透徹2021-06-06QT?UDP網(wǎng)絡(luò)編程實(shí)現(xiàn)簡(jiǎn)單消息傳輸
這篇文章主要為大家詳細(xì)介紹了QT?UDP網(wǎng)絡(luò)編程實(shí)現(xiàn)簡(jiǎn)單消息傳輸,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-08-08C/C++?單元自動(dòng)化測(cè)試解決方案總結(jié)
這篇文章主要介紹了C/C++?單元自動(dòng)化測(cè)試解決方案總結(jié),通過利用GCC插件來實(shí)現(xiàn)提升C/C++開發(fā)者的單元效率工具解決方案,希望對(duì)大家在提升單元測(cè)試效率上有所啟發(fā)2022-06-06C語言算法練習(xí)之折半查找的實(shí)現(xiàn)
二分查找法(也叫折半查找)其本質(zhì)是分治算法的一種。這篇文章主要介紹了如何利用C語言實(shí)現(xiàn)折半查找,感興趣的小伙伴可以學(xué)習(xí)一下2022-05-05