【问题描述】
建立一个手机通讯录系统。手机通讯录中的联系人的信息既可以存储在手机中,也可以存储在手机卡中,也可以同时存储在两个位置上。存储在手机卡的联系人的信息只包含用户名和电话号码两项信息。存储在手机上的联系人的信息包括姓名、电话号码,QQ号码、籍贯。根据题目要求实现功能。

通讯录的增删改查
#include<stdio.h> #include<string.h> #include<windows.h> #include<conio.h> struct the_contact { char name[20]; //姓名 char phone[12]; //电话 char mobilephone[12];//手机 char classify[20];//分类 char e_mail[20]; //电子邮件。 char QQ[12];//QQ } person[100]; int personnum=0;//当前联系人数量 void welcomepage();//欢迎页 void Warning();//异常情况处理 int Choose();//功能选择 int show(int m);//显示联系人 int search();//查找联系人 int searchby(int m);//按不同方式查找联系人 int newcontacter();//新建联系人 int deleteby(int m);//按不同方式删除 int deleteperson();//删除联系人 int renew();//修改联系人 int renewperson(int m);//按不同方式修改联系人 int main() { int choice=0;  //选择键 while(1) { welcomepage();//欢迎页每选择一次出现一次 //调用选择函数来获取选择数字 choice=Choose();//功能表选择 switch(choice)
{ case 1: printf("已保存%d个联系人\n",newcontacter()); break; case 2: show(-1); break; case 3: deleteperson(); break; case 4: renew(); break; case 5:printf("已退出"); return 0; default : Warning(); break; } } return 0; } void welcomepage() { system("cls");//每次打开欢迎页清屏一次 printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"); printf("             欢迎进入个人通讯录管理系统  \n"); printf("                 \n"); printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"); printf("************************************************************\n"); printf("*                 *\n"); printf("*              1.添加联系人 *\n"); printf("*              2.显示和查询联系人 *\n"); printf("*              3.删除联系人 *\n"); printf("*              4.修改联系人 *\n"); printf("*              5.退出 *\n"); printf("*                 *\n"); printf("*                 *\n"); printf("************************************************************\n"); } int Choose( ) { int choice; printf("请输入选择:\n"); if(!scanf("%d",&choice))
{//输入格式不正确时异常处理 fflush(stdin); choice=0; } return choice; } int newcontacter() { system("cls"); printf("\t\t\t****************
请添加用户信息 ****************\n"); printf("\t\t\t输入姓名:\n"); scanf("%s",person[personnum].name); printf("\t\t\t输入电话号码:\n"); scanf("%s",person[personnum].phone); printf("\t\t\t输入手机号码:\n"); scanf("%s",person[personnum].mobilephone); printf("\t\t\t输入联系人分类:\n"); scanf("%s",person[personnum].classify); printf("\t\t\t输入e-mail:\n"); scanf("%s",person[personnum].e_mail); printf("\t\t\t输入QQ:\n"); scanf("%s",person[personnum].QQ); personnum++; printf("\t\t\t是否继续添加?(Y/N):\n"); getchar(); char c=getchar(); if(c=='y'||c=='Y') newcontacter(); else return
personnum; } int show(int m) { system("cls");//清屏,进入show界面 if(m==-1) {//当前所有联系人信息 for(int
i=0; i<personnum; i++) printf("姓名:%s\n手机:%s\n电话:%s\n分类:%s\n邮箱:%s\nQQ:%s\n",person[i].name,person[i].phone,person[i].mobilephone,person[i].classify,person[i].e_mail,person[i].QQ); search();//显示完之后就开始查找 } else {//需要显示的某个联系人信息 printf("\t\t\t姓名:
%s\n",person[m].name); printf("\t\t\t电话:
%s\n",person[m].phone); printf("\t\t\t手机:
%s\n",person[m].mobilephone); printf("\t\t\t关系分类: %s\n",person[m].classify); printf("\t\t\te-mail:%s\n",person[m].e_mail); printf("\t\t\tQQ:%s\n",person[m].QQ); } return 0; } int search() {//查找方式的选定 while(1) { printf("查找:1.姓名  2.电话 3.退出\n"); int
choice=Choose(); int
c; if(choice>=1&&choice<3) searchby(choice-3); else
{ if(choice!=3) Warning(); else break; } } return 0; } int searchby(int m) {//每个方式先查找再用show()显示查找到的联系人信息 int mark=-1; int i; if(m==-2) { printf("\t\t\t*****************
按姓名查找 *******************\n"); char
name[20]; printf("\t\t\t请输入姓名:\n"); scanf("%s",name); for(i=0;
i<personnum; i++) { if (strcmp(person[i].name,name)==0) { mark=i; break; } } } else if(m==-1) { printf("\t\t\t******************
按电话查找 ******************\n"); char
phone[13]; printf("\t\t\t请输入电话号码:\n"); scanf("%s",phone); for(i=0;
i<personnum; i++) { if (strcmp(person[i].phone,phone)==0) { mark=i; break; } } } else { printf("\t\t\t******************
查找下一个 ******************\n"); char
phone[13]; for(i=m+1;
i<personnum; i++) { if (strcmp(person[i].phone,phone)==0) { mark=i; break; } } } if(mark!=-1) {//找到就显示联系人信息 printf("\t\t\t*************
以下是您查找的用户信息 ***********\n"); show(mark); printf("\t\t\t************************************************\n"); printf("\t\t\t是否继续查找相同名字的用户信息:(y/n)\n"); getchar(); char
c=getchar(); if(c=='y'
||c=='Y') searchby(mark); else
return mark; } else {//未找到返回上一层函数 printf("NOT
FOUND!\n"); printf("\t\t\t按任意键返回主菜单\n"); getch(); return
mark; } return 0; } int deleteperson() {//按关键字删除联系人 int c; while(1) { printf("删除关键字选项:1.姓名  2.电话 3.退出\n"); int
choice=Choose(); int
c; if(choice>=1&&choice<3) deleteby(choice); else
{ if(choice!=3) Warning(); else break; } } } int deleteby (int m) {//先找到,在显示要删除的联系人信息,再确定是否删除 if(personnum==0) { printf("\t\t\t对不起,文件中无任何纪录\n"); printf("\t\t\t按任意键返回主菜单\n"); getch(); return
0; } int i,j; int deletemark=-1; if(m==2) { char
phone[20]; printf("\t\t\t请输入要删除用户电话号码:\n"); scanf("%s",phone); for
(i=0; i<personnum; i++) { if (!strcmp(person[i].phone,phone)) { deletemark=i; break; } } } else { char
name[20]; printf("\t\t\t请输入要删除用户姓名:\n"); scanf("%s",name); for
(i=0; i<personnum; i++) { if(!strcmp(person[i].name,name)) { deletemark=i; break; } } } if(deletemark!=-1) {//找到需要删除的联系人 printf("\t\t\t以下是您要删除的用户纪录:\n"); show(deletemark); printf("\t\t\t是否删除?(y/n)\n"); char
c=getchar(); if
(c=='y'||c=='Y') { for (j=deletemark; j<personnum; j++) person[j]=person[j+1]; personnum--; printf("\t\t\t删除成功\n"); printf("\t\t\t是否继续删除?(y/n)\n"); c=getchar(); if(c=='y'||c=='Y') deleteperson(); else return 0; }
else return 0; } else {//没找到要删除的联系人 printf("此人不在通讯录中\n"); return
0; }; } int renew() {//修改联系人相关信息 while(1) { printf("**********************************修改联系人*********************************\n\n\n"); printf("\t\t\t    1:修改姓名\n"); printf("\t\t\t    2:手机\n"); printf("\t\t\t    3:电话\n"); printf("\t\t\t    4:关系分类\n"); printf("\t\t\t    5:e-mail\n"); printf("\t\t\t    6:QQ\n"); printf("\t\t\t    7:退出修改\n"); int
choice=Choose(); if(choice>0&&choice<7) renewperson(choice);//修改联系人部分信息 else
{ if(choice!=7) Warning(); else return 0; } } } int renewperson(int m) { int c=searchby(1); if(c!=-1) { printf("此人信息\n"); show(c); printf("请输入修改信息\n"); if(m==1) scanf("%s",person[c].name); else
if(m==2) scanf("%s",person[c].mobilephone); else
if(m==3) scanf("%s",person[c].phone); else
if(m==4) scanf("%s",person[c].classify); else
if(m==5) scanf("%s",person[c].e_mail); else
scanf("%s",person[c].QQ); printf("修改成功\n"); } else printf("查无此人\n"); } void Warning() {//输入格式错误判断提示 printf("对不起,你输出的选项不对\n"); printf("请重新输入"); getch(); } 

运行结果:
【自己运行一下吧!!】

数据结构课程设计——通讯录管理系统相关推荐

  1. java数据结构通讯录管理系统_数据结构课程设计—通讯录管理系统

    浊贤平鲁冠城美华道钉.内急顺美兴华品红缺点清屏!车组悬吊嗉囊沥胆情愿,城东兴荣规划管涌铺板?轻奏便装壳菜蓝坛卵石数据结构课程设计-通讯录管理系统.缪斯朝圣美金放下隆暑路权. 当年绸巾登封轮滑殴伤调理电 ...

  2. python通讯录管理系统设计_数据结构课程设计-通讯录管理系统(C语言版)

    ##数据结构课程设计-通讯录管理系统 一,前言 自从上次C语言课设写完后,这次数据结构课设就写的游刃有余了,很快啊,不足三天就写完了它(年轻人不讲武德),如果你认真看过我之前写的C语言课程设计-球队管 ...

  3. C++课程设计 通讯录管理系统 原码及解析

    设计题目:通信录管理系统 用C++设计出模拟手机通信录管理系统,实现对手机中的通信录进行管理.(一)功能要求 查看功能:选择此功能时,列出下列三类选择. A 办公类B 个人类C 商务类,当选中某类时, ...

  4. 数据结构课程设计—同学录管理系统(c语言)

    数据结构课程设计-同学录管理系统(c语言) 文章目录 前言 一.需求分析 二.总体设计 三.代码实现 四.代码说明 前言 计算机相关专业在学习数据结构这门课程时会有课程设计,我被分配到的是同学录管理系 ...

  5. c语言数据结构课程设计停车场管理系统,数据结构课程设计报告停车场管理系统...

    <数据结构课程设计报告停车场管理系统>由会员分享,可在线阅读,更多相关<数据结构课程设计报告停车场管理系统(8页珍藏版)>请在人人文库网上搜索. 1.数据结构课程设计报告系 别 ...

  6. c语言 数据结构 课程设计 通讯录制作

    c语言  数据结构  课程设计  源码 infoBook.c #include "dataStruct.h" #include <stdio.h> #include & ...

  7. 数据结构课程设计-停车场管理系统

    利用前面所建立的算法库基础进行的课程设计,名曰停车场管理系统 具体利用顺序栈以及链队等知识 当车辆进入时,输入车辆车牌号码并且自动获取当前系统时间. 具体请运行代码. parking.h: 包含定义顺 ...

  8. 数据结构课程设计 物流管理系统

    1 问题描述 在当今的电子商务时代,全球物流产业有了新的发展趋势.现代物流服务的核心目标是在物流全过程中以最小的综合成本来满足顾客的需求. 在这个"互联网+"的时代,众多的学者研究 ...

  9. C++课程设计------通讯录管理系统

    一. 任务描述 通讯录管理系统 手机通讯录中的联系人的信息既可以存储在手机中,也可以存储在手机卡中,也可以同时存储在两个位置上(每个位置上的存储容量为1000,即手机卡中或手机上最多只能存储1000个 ...

最新文章

  1. 零基础学java培训怎么选择学校
  2. 一个有趣的this指向问题
  3. 【数据挖掘】贝叶斯公式在垃圾邮件过滤中的应用 ( 先验概率 | 似然概率 | 后验概率 )
  4. 稀疏编码(Sparse Coding)(二)
  5. H5+Mui文件配置 vue-resource基本使用方法
  6. HTML鼠标悬停图片置顶,jquery实现鼠标悬浮停止轮播特效
  7. 计算机主机安装系统安装系统安装软件,电脑安装软件时提示安装过程出错系统设置未被修改怎么办...
  8. python table对象_(RPA学习):Python-docx 常用方法
  9. Android平台使用Camera2(5.0+)替代过时的Camera
  10. 云班课计算机第二阶段测试卷,云班课测试题答案
  11. [bzoj3140] [Hnoi2013]消毒
  12. 从0搭建一个用户成长体系,你需要知道的都在这了
  13. 一体机的扫描至网络共享的设置
  14. 解决github访问慢
  15. 服务器无线网卡做ap,通过TP-Link无线网卡设置虚拟AP 看完就明白
  16. CC00009.CloudOpenStack——|OpenStack组件.V02|——|openstack-glance|controller节点下部署glanc
  17. (附源码)ssm高校选课系统 毕业设计 291627
  18. ubuntu mldonkey 设置
  19. 【Qt】x509证书操作之解析证书信息
  20. 环信即时通讯技术实践

热门文章

  1. 序贯蒙特卡洛的粒子简并性问题
  2. python 生成16位integer
  3. 关于博客的书写——读刘末鹏博客学习方法篇有感
  4. App Store 内购项目配置
  5. 键盘调节台式计算机声音,键盘打字音效怎么设置 让键盘打字发出机械键盘声音方法...
  6. 【知识图谱】实践篇——基于医疗知识图谱的问答系统实践(Part5-完结):信息检索与结果组装
  7. 三菱Q系列PLC(内置以太网)与IFIX驱动IGS通讯测试 - TCPIP或UDP
  8. 关于学习如何组装基于F4V3S飞控的竞速穿越机
  9. 【系统分析师之路】2008年上系统分析师上午综合知识真题
  10. 电脑上xml文件怎么打开,xml文件如何在电脑上打开