当前位置:首页 > 开发教程 > C语言 >

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

时间:2022-06-02 13:33 来源:未知 作者:不要迷恋爸 收藏

这篇文章主要为大家详细介绍了C语言实现手机电话簿管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了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                  //最大容量为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<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语言阅读排行

最新文章