欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

本文實(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í)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • C指針原理教程之C指針基礎(chǔ)

    C指針原理教程之C指針基礎(chǔ)

    指針是一個(gè)特殊的變量,它里面存儲(chǔ)的數(shù)值被解釋成為內(nèi)存里的一個(gè)地址。要搞清一個(gè)指針需要搞清指針的四方面的內(nèi)容:指針的類型、指針?biāo)赶虻念愋汀⒅羔樀闹祷蛘呓兄羔標(biāo)赶虻膬?nèi)存區(qū)、指針本身所占據(jù)的內(nèi)存區(qū)。
    2019-02-02
  • C++之默認(rèn)參數(shù)詳解

    C++之默認(rèn)參數(shù)詳解

    這篇文章主要介紹了C++的默認(rèn)參數(shù),是C++入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下,希望能夠給你帶來幫助
    2021-11-11
  • Qt掃盲篇之QRegExp正則匹配類總結(jié)

    Qt掃盲篇之QRegExp正則匹配類總結(jié)

    這篇文章主要給大家介紹了關(guān)于Qt掃盲篇之QRegExp正則匹配類總結(jié)的相關(guān)資料,QRegExp是Qt框架中的一個(gè)類,用于進(jìn)行正則表達(dá)式的匹配和處理,它提供了多種模式來匹配不同的字符串,需要的朋友可以參考下
    2023-12-12
  • 詳解基于C++實(shí)現(xiàn)約瑟夫環(huán)問題的三種解法

    詳解基于C++實(shí)現(xiàn)約瑟夫環(huán)問題的三種解法

    約瑟夫環(huán)問題是算法中相當(dāng)經(jīng)典的一個(gè)問題,其問題理解是相當(dāng)容易的,并且問題描述有非常多的版本,并且約瑟夫環(huán)問題還有很多變形,通過這篇約瑟夫問題的講解,一定可以帶你理解透徹
    2021-06-06
  • QT實(shí)現(xiàn)貪吃蛇游戲

    QT實(shí)現(xiàn)貪吃蛇游戲

    這篇文章主要為大家詳細(xì)介紹了QT實(shí)現(xiàn)貪吃蛇游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-05-05
  • C語言從零探索函數(shù)的知識(shí)

    C語言從零探索函數(shù)的知識(shí)

    函數(shù)是一組一起執(zhí)行一個(gè)任務(wù)的語句。每個(gè) C 程序都至少有一個(gè)函數(shù),即主函數(shù) main() ,所有簡(jiǎn)單的程序都可以定義其他額外的函數(shù),讓我們一起來了解它
    2022-04-04
  • QT?UDP網(wǎng)絡(luò)編程實(shí)現(xiàn)簡(jiǎn)單消息傳輸

    QT?UDP網(wǎng)絡(luò)編程實(shí)現(xiàn)簡(jiǎn)單消息傳輸

    這篇文章主要為大家詳細(xì)介紹了QT?UDP網(wǎng)絡(luò)編程實(shí)現(xiàn)簡(jiǎn)單消息傳輸,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • C/C++?單元自動(dòng)化測(cè)試解決方案總結(jié)

    C/C++?單元自動(dòng)化測(cè)試解決方案總結(jié)

    這篇文章主要介紹了C/C++?單元自動(dòng)化測(cè)試解決方案總結(jié),通過利用GCC插件來實(shí)現(xiàn)提升C/C++開發(fā)者的單元效率工具解決方案,希望對(duì)大家在提升單元測(cè)試效率上有所啟發(fā)
    2022-06-06
  • C++20中的span容器及用法小結(jié)

    C++20中的span容器及用法小結(jié)

    std::span 是一個(gè)非常實(shí)用的工具,可以方便地對(duì)數(shù)據(jù)進(jìn)行訪問和處理,同時(shí)也可以提高代碼的可讀性、可維護(hù)性和安全性,這篇文章主要介紹了C++20中的span容器,需要的朋友可以參考下
    2023-03-03
  • C語言算法練習(xí)之折半查找的實(shí)現(xiàn)

    C語言算法練習(xí)之折半查找的實(shí)現(xiàn)

    二分查找法(也叫折半查找)其本質(zhì)是分治算法的一種。這篇文章主要介紹了如何利用C語言實(shí)現(xiàn)折半查找,感興趣的小伙伴可以學(xué)習(xí)一下
    2022-05-05

最新評(píng)論