溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C語言如何實現(xiàn)手機電話簿管理系統(tǒng)

發(fā)布時間:2022-06-02 13:44:34 來源:億速云 閱讀:132 作者:iii 欄目:開發(fā)技術

本篇內(nèi)容介紹了“C語言如何實現(xiàn)手機電話簿管理系統(tǒng)”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠?qū)W有所成!

一、任務概述

用c設計出模擬手機通訊錄管理系統(tǒng),實現(xiàn)對手機中的通訊錄進行管理

二、設計功能

查看功能:選擇此功能時,列出下列三類選擇。A辦公類,B個人類,C商務類,當選中某類時,顯示出此類中的所有數(shù)據(jù)。
增加功能:能錄入新數(shù)據(jù),一個結(jié)點包括:姓名、電話號碼、分類(可選項有:A 辦公類,B 個人類,C 商務類)、電子郵件。
撥號功能:能顯示出通訊錄中所有人的姓名,當選中某個姓名時,屏幕上模擬打字機的效果依次顯示出此人的電話號碼中的各個數(shù)字,并伴隨相應的撥號聲音。
修改功能:選中某個人的姓名時,可對此人的相應數(shù)據(jù)進行修改。
刪除功能:選中某個人的姓名時,可對此人的相應數(shù)據(jù)進行刪除,并自動調(diào)整后續(xù)條目的編號。

三、功能展示

C語言如何實現(xiàn)手機電話簿管理系統(tǒng)

C語言如何實現(xiàn)手機電話簿管理系統(tǒng)

C語言如何實現(xiàn)手機電話簿管理系統(tǒng)

四、思維導圖

五、程序源碼

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
#define N 15                                   //最大容量為15
typedef struct                                //定義一個結(jié)構
{
  char name[10];
  char haoma[15];
     char leibie[10];
     char dizhi[20];
}ren;
//菜單
void menu()                                           //目錄
{
  system("cls");                                      //清屏
    printf("\n\n\n ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓");
    printf("                    ┃                                                        ┃");
    printf("                    ┃                                                        ┃");
    printf("                    ┃                                                        ┃");
    printf("                    ┃                                                        ┃");
    printf("                    ┃                                                        ┃");
    printf("                    ┃                                                        ┃");
    printf("                    ┃                                                        ┃");
    printf("                    ┃              ┏━━━━━━━━━━┓                  ┃"); 
    printf("\n ┃              ┃ 歡迎使用手機通訊錄 ┃                  ┃ \n");
    printf(" ┃              ┗━━━━━━━━━━┛                  ┃");
    printf(" ┃              ┏━━━━━━━━━━┓                  ┃\n");
    printf(" ┃              ┃                    ┃                  ┃\n");
    printf(" ┃              ┃                    ┃                  ┃\n");
    printf(" ┃              ┃     1.添加聯(lián)系人   ┃                  ┃\n");
    printf(" ┃              ┃     2.查詢聯(lián)系人   ┃                  ┃\n");
    printf(" ┃              ┃     3.修改聯(lián)系人   ┃                  ┃\n");
    printf(" ┃              ┃     4.刪除聯(lián)系人   ┃                  ┃\n");
    printf(" ┃              ┃     5.撥號         ┃                  ┃\n");
    printf(" ┃              ┃     0.退出         ┃                  ┃\n");
    printf(" ┃              ┃                    ┃                  ┃\n");
    printf(" ┃              ┃                    ┃                  ┃\n");  
    printf(" ┃              ┗━━━━━━━━━━┛                  ┃\n");
    printf(" ┃                                                        ┃\n");
    printf(" ┃                                                        ┃\n");
    printf(" ┃                                                        ┃\n");
    printf(" ┃                                                        ┃\n");
    printf(" ┃                                                        ┃\n");
    printf(" ┃                                                        ┃\n");
    printf(" ┃                                                        ┃\n");
    printf(" ┃                                                        ┃\n");
    printf(" ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛         ");
    printf("\n");

   printf("請選擇相應的功能:");
} 
                                                 //號碼添加
void input()
{
     FILE *fp;                                         //定義文件指針
     ren ry,s;                                        // 定義兩個ren結(jié)構體的量
     if((fp=fopen("ren.dat","ab+"))==NULL)
  {printf("can't open file!\n");exit(0);}
     printf("\n錄入格式\n姓名:\n號碼:\n類別:\n郵箱:\n當輸入姓名為#結(jié)束錄入\n");
     while(1)
  {  printf("請輸入姓名:");
     scanf("%s",ry.name);
      if(strcmp(ry.name,"#")==0) break;               //如果輸入#則退出添加
           printf("請輸入電話號碼:");
         scanf("%s",ry.haoma);
         printf("請輸入類別(A辦公類B個人類C商務類):");
         scanf("%s",ry.leibie);
         printf("請輸入郵箱地址:");
         scanf("%s",ry.dizhi);
         fseek(fp,0,0);                                //指針定位到文件開始位置
       fread(&s,sizeof(ren),1,fp);
       while(!feof(fp))
    {       if(strcmp(s.haoma,ry.haoma)==0)
      {printf("號碼已經(jīng)存在,不能記錄.\n");break;}//遇到有相同的號碼
            fread(&s,sizeof(ren),1,fp);
  }
       if(feof(fp))                     //讀到自后也沒有相同的號碼
          fwrite(&ry,sizeof(ren),1,fp); //將信息寫入文件
  }
     fclose(fp);                         //關閉文件
     getchar();                          //接受一個輸入
}
                                         

void search()                             //查詢
{
ren ry;
FILE *fp;
char leibie[10];
system("cls");
printf("\n輸入要查人員的類別: ");scanf("%s",leibie);//要查詢的類別

    if((fp=fopen("ren.dat","rb"))==NULL) {printf("can't open file!\n");exit(0);}
        fread(&ry,sizeof(ren),1,fp);
   if(!feof(fp))
   {   printf("    人員的信息如下:\n");
       printf("說明:(A辦公類B個人類C商務類)");
    printf("\n%10s %15s %10s %20s \n","姓名","號碼","類別","郵箱");
while(!feof(fp))
{
      if(strcmp(ry.leibie,leibie)==0)                //若為該類別則輸出
   { 
      printf("%10s %15s %10s %20s \n",ry.name,ry.haoma,ry.leibie,ry.dizhi);
   }
   fread(&ry,sizeof(ren),1,fp);
}
   }
   else printf("查找失敗!!!");
   fclose(fp);
   getch();
}


      //修改:輸入人員的姓名,查找該人員,若找到則修改該人員的信息,并顯示修改前后的結(jié)果;
void modi()
{   ren ry;
FILE *fp;
char name[10];
system("cls");
if((fp=fopen("ren.dat","rb+"))==NULL) {printf("can't open file!\n");exit(0);}
   if(!feof(fp))
   {printf("   修改前全部人員的信息如下:\n");
  printf("\n%10s %15s %10s %20s \n","姓名","號碼","類別","郵箱"); 
  fread(&ry,sizeof(ren),1,fp);   
while(!feof(fp))
   { 
            
       printf("%10s %15s %10s %20s \n",ry.name,ry.haoma,ry.leibie,ry.dizhi);
        fread(&ry,sizeof(ren),1,fp);
     }
   }
printf("\n輸入要修改人員的姓名: ");scanf("%s",name);
    if((fp=fopen("ren.dat","rb+"))==NULL) {printf("can't open file!\n");exit(0);}
   while(!feof(fp))
   {  fread(&ry,sizeof(ren),1,fp);
      if(strcmp(ry.name,name)==0)            
   {  printf("   修改前人員的信息如下:\n");
      printf("\n%10s %15s %10s %20s \n","姓名","號碼","類別","郵箱");
         printf("%10s %15s %10s %20s \n",ry.name,ry.haoma,ry.leibie,ry.dizhi);
         printf("\n請輸入該人的號碼:");scanf("%s",ry.haoma);
         printf("\n類別:");scanf("%s",ry.leibie);               //新信息輸入
         printf("\n郵箱:");scanf("%s",ry.dizhi);
      break;                                               //修改完畢退出
   }
   }
   if(!feof(fp))
   {  
      printf("  \n 修改后的人的信息如下:\n");
   printf("\n%10s %15s %10s %20s \n","姓名","號碼","類別","郵箱");
      printf("%10s %15s %10s %20s \n",ry.name,ry.haoma,ry.leibie,ry.dizhi);
      fseek(fp,-sizeof(ren),1);                                //指針向前一位定位
      fwrite(&ry,sizeof(ren),1,fp);
   }
   else
printf("\n此人不存在,修改失敗!!");
   fclose(fp);
   getch();
}
     //刪除:輸入人員姓名,若該人員存在,則刪除,并顯示刪除后余下的人員的信息

void dele()
{   ren  ry[N];
    FILE *fp;
    char name[10];
    int i,len,k=-1;
    system("cls");
    printf("\n輸入要刪除的人員姓名: ");scanf("%s",name);
    i=0;
    if((fp=fopen("ren.dat","rb+"))==NULL) {printf("can't open file!\n");exit(0);}
    while(!feof(fp))
{     fread(&ry[i],sizeof(ren),1,fp);
          if(feof(fp)) break;
          if(strcmp(ry[i].name,name)==0) k=i;
          i++;
}
    fclose(fp);
                          //以下是刪除后重新寫文件
   len=i;
   if(k>=0)
   {    if((fp=fopen("ren.dat","wb+"))==NULL) {printf("can't open file!\n");exit(0);}
        for(i=0;i<len;i++)
  {   if(i==k) continue;
            fwrite(&ry[i],sizeof(ren),1,fp);
  }
        fclose(fp);printf("刪除成功!!!\n");
   }
   
   else printf("刪除失敗!!!\n");
   getch();
}

void bohao() //撥號
{    ren ry;
     FILE *fp;
     char name[10];
  system("cls");
  printf("\n輸入要撥人員的姓名: ");scanf("%s",name);
     if((fp=fopen("ren.dat","rb"))==NULL) {printf("can't open file!\n");exit(0);}
     while(!feof(fp))
  {     fread(&ry,sizeof(ren),1,fp);
           if(strcmp(ry.name,name)==0)
     {  printf("\n\a\a\a\a\a\a %15s\a\a\a\a\a\n",ry.haoma);   //輸出號碼和聲音
            break;
     }
  }
  if(feof(fp)) printf("撥號失敗!!!");
     fclose(fp);
     getch();
}
//菜單選擇

void choice()
{ 
char ch;
while(1)
{
  menu();// 顯示菜單
  ch=getch();//選擇菜單
if(ch=='0') break;
  switch(ch)//判斷功能項
  {
  case '1': input();break;
  case '2':search();break;
  case '3':modi();break;
  case '4':dele();break;
  case '5':bohao();break;
  }
}
printf("\n歡迎使用!!!\n");
}

//主函數(shù)
main()
{
choice();//調(diào)用菜單選擇

}

“C語言如何實現(xiàn)手機電話簿管理系統(tǒng)”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關的知識可以關注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI