文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2023-06-30 18:43

关注

本篇内容介绍了“C语言如何实现手机电话簿管理系统”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

一、任务概述

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

二、设计功能

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

三、功能展示

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

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

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

四、思维导图

五、程序源码

#include <stdio.h>#include <stdlib.h>#include <conio.h>#include <string.h>#define N 15                                   //最大容量为15typedef 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);   }   elseprintf("\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");}//主函数main(){choice();//调用菜单选择}

“C语言如何实现手机电话簿管理系统”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯