C语言实现手机电话簿管理系统

发布时间:2023-06-01 10:00

本文实例为大家分享了C语言实现手机电话簿管理系统的具体代码,供大家参考,具体内容如下

一、任务概述(文章仅供参考)

用c设计出模拟手机通讯录管理系统,实现对手机中的通讯录进行管理

二、设计功能

查看功能:选择此功能时,列出下列三类选择。A办公类,B个人类,C商务类,当选中某类时,显示出此类中的所有数据。
增加功能:能录入新数据,一个结点包括:姓名、电话号码、分类(可选项有:A 办公类,B 个人类,C 商务类)、电子邮件。
拨号功能:能显示出通讯录中所有人的姓名,当选中某个姓名时,屏幕上模拟打字机的效果依次显示出此人的电话号码中的各个数字,并伴随相应的拨号声音。
修改功能:选中某个人的姓名时,可对此人的相应数据进行修改。
删除功能:选中某个人的姓名时,可对此人的相应数据进行删除,并自动调整后续条目的编号。

三、功能展示

\"C语言实现手机电话簿管理系统_第1张图片\"

\"C语言实现手机电话簿管理系统_第2张图片\"

\"C语言实现手机电话簿管理系统_第3张图片\"

四、思维导图

五、程序源码

#include 
#include 
#include 
#include 
#define N 15                                   //最大容量为15
typedef struct                                //定义一个结构
{
  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.添加联系人   ┃                  ┃\\n\");
    printf(\" ┃              ┃     2.查询联系人   ┃                  ┃\\n\");
    printf(\" ┃              ┃     3.修改联系人   ┃                  ┃\\n\");
    printf(\" ┃              ┃     4.删除联系人   ┃                  ┃\\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结构体的量
     if((fp=fopen(\"ren.dat\",\"ab+\"))==NULL)
  {printf(\"can\'t open file!\\n\");exit(0);}
     printf(\"\\n录入格式\\n姓名:\\n号码:\\n类别:\\n邮箱:\\n当输入姓名为#结束录入\\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(\"号码已经存在,不能记录.\\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();
}


      //修改:输入人员的姓名,查找该人员,若找到则修改该人员的信息,并显示修改前后的结果;
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 
 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

ItVuer - 免责声明 - 关于我们 - 联系我们

本网站信息来源于互联网,如有侵权请联系:561261067@qq.com

桂ICP备16001015号