标题:程序如下:在删除和修改函数中若重名,则指定具体手机号进行操作,请问这个 ...
只看楼主
小小陌
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2013-1-1
结帖率:0
已结贴  问题点数:20 回复次数:3 
程序如下:在删除和修改函数中若重名,则指定具体手机号进行操作,请问这个功能如何实现,求大神指教
#include <stdio.h>
#include <malloc.h>
#include <string.h>
#define MaxSize 100
typedef struct
{   char num[100];
    char name[100];
    char addr[100];
}ElemType;

typedef struct
{
    ElemType data[MaxSize];
       int length;
} TelNum;
//…………………………………………………………添加联系人…………………………………………………………
void NumAdd(TelNum *&L)                               //添加联系人信息
{   int a=0;
    printf("请输入联系人信息!\n");
    printf("手机号(限五位短号!)   姓名  家庭住址\n");
    scanf("%s %s %s",L->data[L->length].num,L->data[L->length].name,L->data[L->length].addr);
    printf("\n");
    for(int i=0;i<L->length;i++)
    {
        if(strcmp(L->data[i].num,L->data[L->length].num)==0)
        {
              printf("该联系人已经存在,请重新输入!");a=1;break;
        }
    }
    if(a==0)
    {L->length++;}
}
//……………………………………………………………………修改联系人信息………………………………………………………………
void ChangeNum(TelNum *&L)            //按号码
{     
     printf("请输入你要修改的联系人的号码:\n");
     char num[100];
     scanf("%s",&num);
     int m=0;
     while(m<L->length&&strcmp(L->data[m].num,num)!=0)
         m++;
     if(m>=L->length)
         printf("通讯录内没有此联系人!\n");
     else
     {
         printf("请输入联系人信息!\n");
         printf("手机号    姓名    家庭住址\n");
         scanf("%s %s %s",L->data[m].num,L->data[m].name,L->data[m].addr);
         printf("\n");
         printf("修改联系人信息成功!");
     }
     
}
void ChangeName(TelNum *&L)         //按姓名
{     
     printf("请输入你要修改的联系人的姓名:\n");
     char name[100];
     scanf("%s",&name);
     int n=0;
     while(n<L->length&&strcmp(L->data[n].name,name)!=0)
         n++;
     if(n>=L->length)
         printf("通讯录内没有此联系人!\n");
     else
     {
         printf("请输入要修改的联系人的姓名!\n");
         printf("手机号    姓名    家庭住址\n");
         scanf("%s %s %s",L->data[n].num,L->data[n].name,L->data[n].addr);
         printf("\n");
         printf("修改联系人信息成功!");
     }
     
}
void NumChange(TelNum *&L)                             //修改联系人信息
{    printf("1.按号码修改\n");
     printf("2.按姓名修改\n");
     int c;
     printf("请输入您的选择:\n");
     scanf("%d",&c);
     switch(c)
     {
          case 1:ChangeNum(L);break;
          case 2:ChangeName(L);break;
          default:{printf("错误!你只能输入1,2!请重新输入!\n");}   
     }
}
//………………………………………………删除联系人………………………………………………………………………………
void NumDelete(TelNum *&L)                //按号码
{
     printf("请输入你要删除的联系人的号码!\n");
     char num[100];
     scanf("%s",&num);
     int i=0;
     while(i<L->length&&strcmp(L->data[i].num,num)!=0)
         i++;
     printf("该联系人已被删除!\n");
     if(i>=L->length)
         printf("通讯录内没有此联系人!\n");
     else
     {
         int j;
     for (j=i;j<L->length-1;j++)
        L->data[j]=L->data[j+1];
       L->length--;
     }
}
void NameDelete(TelNum *&L)                //按姓名
{
     printf("请输入你要删除的联系人的姓名!\n");
     char name[100];
     scanf("%s",&name);
     int i=0;
     while(i<L->length&&strcmp(L->data[i].name,name)!=0)
         i++;
     printf("该联系人已被删除!\n");
     if(i>=L->length)
         printf("通讯录内没有此联系人!\n");

     else
     {
         int j;
     for (j=i;j<L->length-1;j++)
        L->data[j]=L->data[j+1];
       L->length--;
     }
}
void DeleteNum(TelNum *&L)                             //删除联系人
{    printf("1.按号码删除\n");
     printf("2.按姓名删除\n");
     int c;
     printf("请输入您的选择:\n");
     scanf("%d",&c);
     switch(c)
     {
          case 1:NumDelete(L);break;
          case 2:NameDelete(L);break;
          default:{printf("错误!你只能输入1,2!请重新输入!\n");}   
     }
}
//……………………………………………………查找联系人…………………………………………………………………………
void NumSearch(TelNum *&L)                              //按号码查找
{
    printf("请输入你想要查找联系人的号码!\n");
    char num[100];
    scanf("%s",&num);
    int i=0;
     while(i<L->length&&strcmp(L->data[i].num,num)!=0)
         i++;
     if(i>=L->length)
         printf("通讯录内没有此联系人!\n");
     else
     {
         printf("手机号    姓名    家庭住址\n");
         printf("%s  %s  %s",L->data[i].num,L->data[i].name,L->data[i].addr);
         printf("\n");
     }
}
void NameSearch(TelNum *&L)                              //按姓名查找
{
    printf("请输入你想要查找联系人的姓名!\n");
    char name[100];
    scanf("%s",&name);
    int i=0;
     while(i<L->length&&strcmp(L->data[i].name,name)!=0)
         i++;
     if(i>=L->length)
         printf("通讯录内没有此联系人!\n");
     else
     {
         printf("手机号    姓名    家庭住址\n");
         printf("%s  %s  %s",L->data[i].num,L->data[i].name,L->data[i].addr);
         printf("\n");
     }
}
void SearchNum(TelNum *&L)                             //查找联系人
{    printf("1.按号码查询\n");
     printf("2.按姓名查询\n");
     int c;
     printf("请输入您的选择:\n");
     scanf("%d",&c);
     switch(c)
     {
          case 1:NumSearch(L);break;
          case 2:NameSearch(L);break;
          default:{printf("错误!你只能输入1,2!请重新输入!\n");}   
     }
}
//……………………………………………………排序…………………………………………………………
void PaiXuNum(TelNum *&L)                       //按号码排序
{
    int i,j;
    ElemType t;
    for(i=0;i<L->length-1;i++)
    {
        for(j=L->length-1;j>i;j--)
        {
            if(strcmp(L->data[j].num,L->data[j-1].num)<0)
            {
                t=L->data[j];
                L->data[j]=L->data[j-1];
                L->data[j-1]=t;
            }
        }
    }
    for(i=0;i<L->length;i++)
    {
        printf("%s  %s  %s\n",L->data[i].num,L->data[i].name,L->data[i].addr);
    }
}
void PaiXuName(TelNum *&L)                       //按姓名排序
{
    int i,j;
    ElemType t;
    for(i=0;i<L->length-1;i++)
    {
        for(j=L->length-1;j>i;j--)
        {
            if(strcmp(L->data[j].name,L->data[j-1].name)<0)
            {
                t=L->data[j];
                L->data[j]=L->data[j-1];
                L->data[j-1]=t;
            }
            if(strcmp(L->data[j].name,L->data[j-1].name)==0)
            {
                if(strcmp(L->data[j].num,L->data[j-1].num)<0)
            {
                t=L->data[j];
                L->data[j]=L->data[j-1];
                L->data[j-1]=t;
            }
            }
        }
    }
       for(i=0;i<L->length;i++)
       {
          printf("%s  %s  %s\n",L->data[i].num,L->data[i].name,L->data[i].addr);
       }
}
void PaiXu(TelNum *&L)
{   
     printf("1.按号码排序\n");
     printf("2.按姓名排序\n");
     int c;
     printf("请输入您的选择:\n");
     scanf("%d",&c);
     switch(c)
     {
          case 1:PaiXuNum(L);break;
          case 2:PaiXuName(L);break;
          default:{printf("错误!你只能输入1,2!请重新输入!\n");}   
     }
}

//……………………………………………………统计联系人………………………………………………
int ListTotal(TelNum *L)             //统计联系人个数
{
    printf("联系人总数为:%d\n",L->length);
    return 0;
}

void InitList(TelNum *&L)
{
    L=(TelNum *)malloc(sizeof(TelNum));
    L->length=0;
}
void DestroyList(TelNum *L)
{
    free(L);
}

int ListLength(TelNum *L)
{
    return(L->length);
}
int GetElem(TelNum *L,int i,ElemType &e)
{
    if (i<1 || i>L->length)
        return 0;
    e=L->data[i-1];
    return 1;
}
int LocateElem(TelNum *L, ElemType e)
{
    int i=0;
    while (i<L->length && L->data[i].num!=e.num) i++;
    if (i>=L->length)
        return 0;
    else
        return i+1;
}
int ListInsert(TelNum *&L,int i,ElemType e)
{
    int j;
    if (i<1 || i>L->length+1)
        return 0;
    i--;                        
    for (j=L->length;j>i;j--)        
        L->data[j]=L->data[j-1];
    L->data[i]=e;
    L->length++;            
    return 1;
}

int ListDelete(TelNum *&L,int i,ElemType &e)
{
    int j;
    if (i<1 || i>L->length)
        return 0;
    i--;                           
    e=L->data[i];
    for (j=i;j<L->length-1;j++)
        L->data[j]=L->data[j+1];
    L->length--;
    return 1;
}
void DispList(TelNum *&L)                             //输出联系人信息
{
   
      int i;
      if(ListTotal(L)) return;
      for (i=0;i<L->length;i++)
     printf("%s  %s  %s\n",L->data[i].num,L->data[i].name,L->data[i].addr);
      printf("\n");
}

void main()
{
   TelNum *L;
   InitList(L);
   printf("初始化通讯录成功!\n");
   int num;
    while(1)
    {
    printf("\n");
    printf("               欢迎进入手机通讯录管理系统!                      \n");
    printf("        1.添加:将联系人的基本信息添加到通讯录中。             \n");
    printf("        2.修改:对联系人信息进行修改。                 \n");
    printf("        3.删除:删除符合条件的联系人。             \n");
    printf("        4.查询:输出符合条件的联系人。                   \n");
    printf("        5.排序:对联系人排序。   \n");
    printf("        6.统计:统计联系人总数。   \n");
    printf("        7.退出系统。   \n");
    printf("\n");
    printf("请选择你要进行的操作:");
    scanf("%d",&num);
    switch(num)
    {
        case 1:NumAdd(L);break;
        case 2:NumChange(L);break;                    
        case 3:DeleteNum(L);break;                        
        case 4:SearchNum(L);break;
        case 5:PaiXu(L);break;   
        case 6:ListTotal(L);break;
        case 7:;return;   
        default:{printf("错误!你只能输入1,2,3,4,5或6!请重新输入!\n");}   
    }
    }

}
搜索更多相关主题的帖子: 手机号 信息 include 联系人 如何 
2013-01-01 18:52
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:7 
分模块调试

DO IT YOURSELF !
2013-01-01 21:58
神龙赖了
Rank: 10Rank: 10Rank: 10
来 自:萨塔星
等 级:青峰侠
威 望:2
帖 子:711
专家分:1788
注 册:2012-10-13
得分:7 
意见只能同上...

I have not failed completely
2013-01-08 19:56
a4811
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:100
专家分:107
注 册:2012-12-20
得分:7 
是原创吗?怎么好多错误。
2013-01-08 20:21



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-394757-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017728 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved