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

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

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

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

二、设计功能

查看功能:选择此功能时,列出下列三类选择。A办公类,B个人类,C商务类,当选中某类时,显示出此类中的所有数据。
增加功能:能录入新数据,一个结点包括:姓名、电话号码、分类(可选项有:A 办公类,B 个人类,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();//调用菜单选择

}

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

(0)

相关推荐

  • C语言设计简易电话簿

    本文实例为大家分享了C语言实现电话簿的具体代码,供大家参考,具体内容如下 #include <stdio.h> #include <stdbool.h> #include <string.h> #include <stdlib.h> #include <getch.h> typedef struct Contact{ //定义联系人结构体 char name[20]; //姓名 char sex; //性别 char tel[12]; //电话

  • C语言用函数实现电话簿管理系统

    本文实例为大家分享了C语言用电话簿管理系统的具体代码,供大家参考,具体内容如下 c语言上机课程 纠结了很久用函数还是链表,顺序表 感觉函数比较简单 实现: 最后显示对齐还可以使用"%3d%20s%20s%20s\n"使字节对齐 我用的\t 不够灵活 输入位数不一样的数时就不能对齐了 #include<stdio.h> #include<string.h> typedef struct Contact { char name[21]; char phone[21]

  • C语言实现电话簿项目

    本文实例为大家分享了C语言实现电话簿项目的具体代码,供大家参考,具体内容如下 实现思路 这个程序的整体思路和实现还是很简单的,我们利用了动态分配内存的方式首先创建了电话簿联系人类型,然后创建电话簿类,其实事联系人类型构成的全局数组,然后分别实现,界面函数,增删改查打印等功能,在主函数离实现总体思路,利用while循环让用户选择具体功能调用函数的方式进行总体实现. ------------------------ 2019.3.12更新: 利用文件操作使得系统可以进行数据的保存. 实现代码 #in

  • C语言实现电话簿项目管理

    本文实例为大家分享了C语言实现电话簿项目管理的具体代码,供大家参考,具体内容如下 1.前言 在C语言的学习,经常有一个需要完成的项目就是电话簿的管理,在刚学习玩C语言基本内容后,面对这么多的项目需求往往无从下手,本文将一步一步完成电话簿的创建.本文提供一种思路,如有更好的实现欢迎讨论. 2.实现功能 本电话簿需要实现的功能有 实现电话簿的初始创建 实现电话簿的后添加 实现电话簿的删除 实现电话簿的查看(按链表的排序) 实现电话簿的查找(名字以及号码) 实现电话簿的排序(名字以及号码) 3.思路解

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

    本文实例为大家分享了C语言电话簿管理系统的具体代码,供大家参考,具体内容如下 /*大二实践周所作, 时间:2017.9,11 电话簿管理系统 */ #include<string.h> #include<stdio.h> #include<stdlib.h> #include<malloc.h> #define NULL 0 typedef struct lianxiren{ char job[30]; char number[20]; char name[

  • C语言实现电话簿管理系统课程设计

    本文实例为大家分享了C语言课程设计:电话簿管理系统,供大家参考,具体内容如下 文件目录: 初始界面 现在显示一部分代码: //添加联系人 void add() { int i; FILE *fp1;//定义文件指针fp1,使其指向电话簿文本文件 fp1=fopen("电话簿.txt","a+"); printf("请输入要增加的联系人的个数:"); scanf("%d",&n); for(i=num;i<num+

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

    本文实例为大家分享了C语言实现手机电话簿管理系统的具体代码,供大家参考,具体内容如下 一.任务概述(文章仅供参考) 用c设计出模拟手机通讯录管理系统,实现对手机中的通讯录进行管理 二.设计功能 查看功能:选择此功能时,列出下列三类选择.A办公类,B个人类,C商务类,当选中某类时,显示出此类中的所有数据.增加功能:能录入新数据,一个结点包括:姓名.电话号码.分类(可选项有:A 办公类,B 个人类,C 商务类).电子邮件.拨号功能:能显示出通讯录中所有人的姓名,当选中某个姓名时,屏幕上模拟打字机的效

  • C语言实现企业员工管理系统开发

    本文实例为大家分享了C语言实现企业员工管理系统的具体代码,供大家参考,具体内容如下 程序介绍 系统介绍 企业员工信息管理系统主要是对企业员工的基本信息进行增.删.改.查的相关操作,以便用户可以快速地对这些信息进行管理.本系统对管理者的控制更加严格,只设置一个管理账号. 操作流程 用户在编译完成后会产生一个系统的可执行文件,用户只要双击可执行文件就可以进入系统,如果是第一次进入系统,首先要对系统进行初始化,如图所示,初始化完成后,再次双击系统执行文件,进入如图的界面. 用户在输入正确密码后,进入系

  • C语言实现学生成绩管理系统

    设计一个学生成绩管理系统,实现对学生成绩的动态管理,实现对学生成绩的输入,显示,删除,查找,插入,最佳,保存,计算,排序等主要功能. 功能要求 1.每一条记录包括一个学生的学号.姓名.3门课成绩.平均成绩. 2.输入功能:可以一次完成若干条记录的输入. 3.显示功能:完成全部学生记录的显示. 4.查找功能:完成按姓名查找学生记录,并显示. 5.排序功能:按学生平均成绩进行排序. 6.插入功能:按平均成绩高低插入一条学生记录 7.删除功能:如果输入错误,可以删除学生记录: 8.退出. 代码: #i

  • C语言实现学生信息管理系统(单链表)

    本文实例为大家分享了C语言实现学生信息管理系统的具体代码,供大家参考,具体内容如下 /*copyright(c)2016.烟台大学计算机学院 * All rights reserved, * 文件名称:text.Cpp * 作者:吴敬超 * 完成日期:2016年7月1日 * 版本号:codeblock * * 问题描述: 学生信息管理系统 * 输入描述: * 程序输出: 输出结果 */ #include <stdio.h> #include <stdlib.h> #include

  • C语言版学生成绩管理系统

    本文实例为大家分享了C语言版学生成绩管理系统的具体代码,供大家参考,具体内容如下 #include<stdio.h> #include<stdlib.h> #include<time.h> #include<conio.h> #include<string.h> #include<algorithm> char buf[255]; char c=14; char path[]="D:\\data"; char tm

  • 基于C语言实现学生成绩管理系统

    本文实例为大家分享了C语言实现学生成绩管理系统的具体代码,供大家参考,具体内容如下 这里只贴代码,具体介绍省略. #include <stdio.h> #include <io.h> #include <conio.h> #include <stdlib.h> #include <string.h> #define MAX 200 struct student { char no[10]; // 学号 char name[50]; // 姓名 f

  • C语言实现学生学籍管理系统

    本文实例为大家分享了C语言实现学生学籍管理系统的具体代码,供大家参考,具体内容如下 #include<stdio.h> #include<conio.h> #include<stdlib.h> #include<string.h> #include<windows.h> //**********************************结构体************************************* struct score

  • C语言实现歌曲信息管理系统

    本文实例为大家分享了C语言实现歌曲信息管理系统的具体代码,供大家参考,具体内容如下 系统功能:该系统以菜单方式工作,歌曲信息包括:歌名.演唱者.作词.作曲.所属专辑.出版时间.出版公司.试设计一歌厅歌曲管理系统,使之能提供以下功能:歌曲信息录入.修改.插入.删除功能:歌曲排序浏览功能:按歌名查询.按演唱者查询等功能. 完整的实现代码如下: #include "stdio.h" #include "stdlib.h" #include "string.h&q

随机推荐