最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語言通訊錄管理系統(tǒng)完整代碼

 更新時間:2022年08月03日 14:55:22   作者:weixin_45859003  
這篇文章主要為大家詳細介紹了C語言通訊錄管理系統(tǒng)完整代碼,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了C語言實現(xiàn)通訊錄管理系統(tǒng)的具體代碼,供大家參考,具體內(nèi)容如下

設(shè)計內(nèi)容:

設(shè)計一個通訊錄管理系統(tǒng),以實現(xiàn)以下功能:信息添加、查詢、修改、刪除、排序等功能。

設(shè)計要求:

1) 每條信息至包含 :姓名、電話、工作單位等信息
2) 作為一個完整的系統(tǒng),應(yīng)具有友好的界面和較強的容錯能力

預(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;?? ??? ?//號碼
?? ?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)計聯(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 ? ? ? ? ?請選擇(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 ?輸入要刪除的聯(lián)系人的電話號碼:");
?? ?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;?? ?//標志找到該聯(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 ?請輸入要修改的聯(lián)系人的電話號碼:");
?? ?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 ?請輸入聯(lián)系人的電話號碼!:");
?? ?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 ?請輸入要插入哪個號碼的位置之后:");
?? ?scanf("%d", &nmb);
?? ?for (i = 0; i < m; i++)
?? ??? ?if (nmb == a[i].num)
?? ??? ??? ?break;
?? ?if (m == i)
?? ?{
?? ??? ?printf("\t\t ?沒有找到改電話號碼");
?? ??? ?fclose(fp);
?? ??? ?return;
?? ?}
?? ?for (j = m - 1; j > i; j--)
?? ??? ?a[j + 1] = a[j];
?? ?printf("\t\t ?請輸入要插入的通訊錄信息:\n");
?? ?printf("\t\t ?電話:");
?? ?scanf("%d", &nmb);
?? ?for (k = 0; k < m; k++)
?? ??? ?if (a[k].num == nmb)
?? ??? ?{
?? ??? ??? ?printf("\t\t ?電話已經(jī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 ?插入成功,請輸入任意鍵返回主界面!");
?? ?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);
}

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 一文帶你搞懂C語言動態(tài)內(nèi)存管理

    一文帶你搞懂C語言動態(tài)內(nèi)存管理

    動態(tài)內(nèi)存是指在堆上分配的內(nèi)存,而靜態(tài)內(nèi)存是指在棧上分配的內(nèi)存。本文將通過幾個示例帶大家深入了解一下C語言的動態(tài)內(nèi)存管理,需要的可以參考一下
    2022-11-11
  • C語言實現(xiàn)簡單電子通訊錄(2)

    C語言實現(xiàn)簡單電子通訊錄(2)

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)簡單電子通訊錄的第二部分,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-06-06
  • C++之談?wù)剺?gòu)造函數(shù)的初始化列表

    C++之談?wù)剺?gòu)造函數(shù)的初始化列表

    構(gòu)造函數(shù)主要作用在于創(chuàng)建對象時為對象的成員屬性賦值,構(gòu)造函數(shù)由編譯器自動調(diào)用,無須手動調(diào)用,這篇文章詳細介紹了構(gòu)造函數(shù)的初始化列表,文章中有詳細的示例代碼,感興趣的同學可以參考閱讀
    2023-04-04
  • gdb調(diào)試的簡單操作總結(jié)

    gdb調(diào)試的簡單操作總結(jié)

    gdb是一個命令行下的、功能強大的調(diào)試器,這篇文章主要為大家詳細介紹了gdb?調(diào)試的一些簡單操作,感興趣的小伙伴可以跟隨小編一起了解一下
    2023-08-08
  • C++使用鏈表實現(xiàn)圖書管理系統(tǒng)

    C++使用鏈表實現(xiàn)圖書管理系統(tǒng)

    這篇文章主要介紹了C++使用鏈表實現(xiàn)圖書管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • C++實現(xiàn)簡單貪吃蛇小游戲

    C++實現(xiàn)簡單貪吃蛇小游戲

    這篇文章主要為大家詳細介紹了C++實現(xiàn)簡單貪吃蛇小游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-05-05
  • C++通過類實現(xiàn)控制臺貪吃蛇

    C++通過類實現(xiàn)控制臺貪吃蛇

    這篇文章主要為大家詳細介紹了C++通過類實現(xiàn)控制臺貪吃蛇,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-04-04
  • C++在vscode中的多文件編程問題解讀

    C++在vscode中的多文件編程問題解讀

    這篇文章主要介紹了C++在vscode中的多文件編程問題解讀,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • C語言實現(xiàn)二叉樹的基本操作

    C語言實現(xiàn)二叉樹的基本操作

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)二叉樹的基本操作,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • 解決Devc++運行窗口中文亂碼的實現(xiàn)步驟

    解決Devc++運行窗口中文亂碼的實現(xiàn)步驟

    本文主要介紹了如何解決Devc++運行窗口中文亂碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-06-06

最新評論

迁西县| 犍为县| 望都县| 北川| 青川县| 庆元县| 无为县| 钟祥市| 清新县| 吴桥县| 长白| 白城市| 梧州市| 宽城| 高阳县| 华宁县| 盐津县| 大宁县| 澄迈县| 武陟县| 江北区| 昌乐县| 南部县| 芮城县| 无棣县| 抚顺市| 蓬溪县| 吉木萨尔县| 防城港市| 天祝| 长汀县| 黄龙县| 富锦市| 泰宁县| 罗源县| 茶陵县| 河间市| 泗阳县| 陈巴尔虎旗| 甘泉县| 天门市|