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

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

二、设计功能

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

三、功能展示


四、思维导图

五、程序源码

#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.0(在此先谢过各位了)

C语言课设手机电话簿管理系统(大作业)相关推荐

  1. C语言课设销售管理系统设计(大作业)

    一.设计功能(文章仅供参考) 试设计一个便条管理系统,使之能提供以下功能: 1.系统以菜单方式工作 2.便条信息录入功能(便条信息用文件保存)--输入 3.收集到了上个月的所有便条后,读取销售情况 1 ...

  2. C语言课设物资管理系统,C语言课设之物资管理系统.doc

    C语言课设之物资管理系统 C语言课程设计 目 录 1.需求分析: 2.系统总框图: 3.每个模块的设计分析: 4.列出所有定义的函数及说明: 5.举例说明1.2个比较有特点的算法: 6.数据分析.完备 ...

  3. 学生信息管理系统c语言课设,学生信息管理系统C语言课设.doc

    学生信息管理系统C语言课设 目录 一.需求分析2 二.概要设计2 三.详细设计4 四.调试分析9 五.用户手册9 六.测试数据9 七.附录10 一.需求分析学生学籍管理系统用数据文件存放学生的学籍,可 ...

  4. C语言课设:影片管理系统

    在接触并学习C语言之后,往往需要做一个简单的课设系统完成对C语言的学习.当然,这可能是我们接触代码以来写过的最长的代码,不排除对新手有一定难度.由于之前笔者划水了一段时间,导致一些知识遗忘了,所以只得 ...

  5. C语言课设——酒店预订管理系统

    课设要求: 客房信息管理. 客人预订及入住信息管理. 各种查询和统计功能. 本系统要有通用性.界面美观.操作方便.要考虑系统安全. 可增加其他有用的功能. 头文件function.h #pragma ...

  6. C语言课设图书信息管理系统(大作业)

    一.设计功能(文章仅供参考) 图书信息包括:登录号.书名.作者名.分类号.出版单位.出版时间.价格等.试设计一图书信息管理系统,使之能提供以下功能: (1)系统以菜单方式工作 (2)图书信息录入功能( ...

  7. C语言课设职工信息管理系统(大作业)

    一.设计功能(文章仅供参考) 职工信息包括:工号,姓名,性别,出生年月,婚姻状况,职称,家庭地址,电话,E-mail等. 设计一个职工信息管理系统,使之能提供以下功能: (1)职工信息录入功能(学生信 ...

  8. C语言课设——图书信息管理系统

    其实这个题目要实现的功能比较清晰,主要就是文件和链表的操作以及基于这两个基础上的填删改查等功能,当然也可以添加一些个性化的功能,比如按照图书的检索量来对库存的图书进行热度的排序. 以下是我的这个图书管 ...

  9. C语言课设--班级档案管理系统(设计文档+源码)

    文章目录 一.作业要求 1. 问题描述 2. 功能要求 二.问题分析 1.数据结构 (1)学生信息 (2)数据存放 ① 结构体数组 ② 链表 (3)储存结构设计 2.模块划分 3.模块功能分析 (1) ...

最新文章

  1. MySQL Server系统架构
  2. springmvc 将post转换为delete,put
  3. 为程序员量身定做的目标
  4. 二、【SAP-PM模块】PM模块(含服务采购)组织架构
  5. shell编程详解(一)
  6. hdp安装 不安装mysql_hdp安装及使用问题汇总(一)
  7. 用yacc编写的算术运算计算器_如何用纯机械实现乘除运算,这是个问题
  8. 实习程序员工资2.5K,公司团建还要自己掏钱:领导以为你爱吃泡面
  9. AutoIt:工具栏中没有其它工具,eg,Koda
  10. oracle查询时使用case,Oracle查询语句中Casewhen的使用
  11. STM32——时钟、HSE、旁路模式、有源晶振
  12. Ubuntu Apt 如何使用清华源
  13. opencv如何把一个矩阵不同列分离开_【opencv基础】OpenCV从Mat中提取某些行或列
  14. mysql 设置所有ip均可访问(windows版本设置)
  15. 两步实现安卓手机秒变网络摄像头
  16. 使用python爬取图书封面
  17. C++ 内存管理 - primitives - 侯捷
  18. 【蓝桥杯】python进制转换16进制转8进制。16进制转10进制。10进制转16进制。
  19. 如何返回正确与错误信息
  20. debian linux win7,win7debian双系统

热门文章

  1. PPT使用的一些技巧总结
  2. 51单片机模拟I2C读写M24LR04
  3. 【Py】隐藏warnings
  4. selenium实现模拟点击QQ一键登录
  5. 【教学类-30-04】10以内减法题不重复(一页两份)(包括6以内、7以内、8以内、9以内、10以内减法题 只抽取25个)
  6. wifi mesh组网
  7. 仅需三步完成微信小程序注册
  8. Flink滚动窗口函数的开窗起始时间计算规则
  9. 宋体查询1.mysql数据库复习加强 2.mysql事务触发器 3.mysql 索引外键加强 4.zendstudio 的安装使用 5.svn版本控制器的使用-java教程...
  10. java 个人通讯录_java web个人通讯录系统设计