/*设一个通信录由以下几项数据信息构成: 
          数据项              类型
          姓名                  字符串
          地址                  字符串
                        字符串
          电话号码              字符串
试为通信录数据定义类型和定义通信录变量,实现功能:存取、显示、删除记录、查询记录等功能*/
#include<stdio.h>
#include<string.h>
#define N 100
struct Person{
    char name[10];
    char address[15];
    char post[7];
    char phnum[15];
    Person *next;
}Per[N];
static int M=0;
void Input(){
    if(M==N){
        printf("容量已满!\n\n");
        return;
    }
    int i;
    char ch='y';
    for(i=M;i<N;i++){
        printf("第 %d 个联系人的姓名: ",M+1);
        scanf("%s",&Per[i].name);
        printf("\t地址: ");
        scanf("%s",&Per[i].address);
        printf("\t: ");
        scanf("%s",&Per[i].post);
        printf("\t电话号码: ");
        scanf("%s",&Per[i].phnum);
字符串长度17模式串长度8        M++;
        do{
            printf("是否继续(y/n): ");
            scanf("%c",&ch);
        }while(ch!='y'&&ch!='Y'&&ch!='n'&&ch!='N');
        if(ch!='y'&&ch!='Y')
            return;
    }
    printf("\t容量已满!\n");
    return;
}
void scan(){
    if(M==0){
        printf("记录为空,请先存取!\n\n");
        return;
    }
    int i,j;
    Person temp;
    for(i=0;i<M-1;i++){
        for(j=i+1;j<M;j++){
            if(strcmp(Per[i].name,Per[j].name)>0){
                strcpy(temp.name,Per[i].name);
                strcpy(Per[i].name,Per[j].name);
                strcpy(Per[j].name,temp.name);
                strcpy(temp.address,Per[i].address);
                strcpy(Per[i].address,Per[j].address);
                strcpy(Per[j].address,temp.address);
                strcpy(temp.post,Per[i].post);
                strcpy(Per[i].post,Per[j].post);
                strcpy(Per[j].post,temp.post);
                strcpy(temp.phnum,Per[i].phnum);
                strcpy(Per[i].phnum,Per[j].phnum);
                strcpy(Per[j].phnum,temp.phnum);
            }
        }
    }
    printf("\t姓名\t地址\t\t电话号码\n");
    for(i=0;i<M;i++)
        printf("\t%s\t%s\t%s\t\t%s\n",Per[i].name,Per[i].address,Per[i].post,Per[i].phnum);
    printf("\n\n");
    return;
}
void search(){
    if(M==0){
        printf("记录为空,请先存取!\n\n");
        return;
    }
    char name[10],address[15],post[7],phnum[15],ch;int n,i,j;
    do{
        do{
            printf("1.按姓名查  2.按地址查  3.按查  4.按电话号码查\n");
            scanf("%d",&n);
        }while(n!=1&&n!=2&&n!=3&&n!=4);
        if(n==1){
            printf("要查的姓名: ");
            scanf("%s",&name);
            for(i=0;i<M;i++){
                if(strcmp(name,Per[i].name)==0){
                    printf("\t姓名\t地址\t\t电话号码\n");
                    printf("\t%s\t%s\t%s\t\t%s\n",Per[i].name,Per[i].address,Per[i].post,Per[i].phnum);
                    break;
                }
            }
            if(i==M)
                printf("没有你要的联系人的信息!\n");
        }
        if(n==2){
            printf("要查的地址: ");
            scanf("%s",&address);
            for(i=0;i<M;i++){
                if(strcmp(address,Per[i].address)==0){
                    printf("\t姓名\t地址\t\t电话号码\n");
                    for(j=i;j<M;j++){
                        if(strcmp(address,Per[j].address)==0)
                            printf("\t%s\t%s\t%s\t\t%s\n",Per[j].name,Per[j].address,Per[j].post,Per[j].phnum);
                    }
                    break;
                }
            }
            if(i==M)
                printf("没有你要的联系人信息!\n");
        }
        if(n==3){
            printf("要查的: ");
            scanf("%s",&post);
            for(i=0;i<M;i++){
                if(strcmp(post,Per[i].post)==0){
                    printf("\t姓名\t地址\t\t电话号码\n");
                    for(j=i;j<M;j++){
                        if(strcmp(post,Per[j].post)==0)
                            printf("\t%s\t%s\t%s\t\t%s\n",Per[j].name,Per[j].address,Per[j].post,Per[j].phnum);
                    }
                    break;
                }
            }
            if(i==M)
                printf("没有你要的联系人信息!\n");
        }
        if(n==4){
            printf("要查的电话号码: ");
            scanf("%s",&phnum);
            for(i=0;i<M;i++){
                if(strcmp(phnum,Per[i].phnum)==0){
                    printf("\t姓名\t地址\t\t电话号码\n");
                    for(j=i;j<M;j++){
                        if(strcmp(phnum,Per[j].phnum)==0)
                            printf("\t%s\t%s\t%s\t\t%s\n",Per[j].name,Per[j].address,Per[j].post,Per[j].phnum);
                    }
                    break;
                }
            }
            if(i==M)
                printf("没有你要的联系人信息!\n");
        }
        do{
            printf("是否继续(y/n)");
            scanf("%c",&ch);
        }while(ch!='y'&&ch!='Y'&&ch!='n'&&ch!='N');
    }while(ch=='y'||ch=='Y');
    return;
}
void Delete(){
    char name[10],ch;int i,j;
    do{
        if(M==0){
            printf("记录为空,请先存取!\n\n");
            return;;
        }
        printf("输入要删除的联系人姓名: ");
        scanf("%s",name);
        for(i=0;i<M;i++){
            if(strcmp(name,Per[i].name)==0){
                printf("\t姓名\t地址\t\t电话号码\n");
                printf("\t%s\t%s\t%s\t\t%s\n",Per[i].name,Per[i].address,Per[i].post,Per[i].phnum);
                do{
                    printf("确定删除?(y/n)");
                    scanf("%c",&ch);
                }while(ch!='y'&&ch!='Y'&&ch!='n'&&ch!='N');
                if(ch=='y'||ch=='Y'){
                    for(j=i;j<M-1;j++){
                        strcpy(Per[j].name,Per[j+1].name);
                        strcpy(Per[j].address,Per[j+1].address);
                        strcpy(Per[j].post,Per[j+1].post);
                        strcpy(Per[j].phnum,Per[j+1].phnum);
                    }
                    M--;
                }
                break;
            }
        }
        if(i==M)
            printf("没有要删除的联系人!\n");
        do{
            printf("是否继续(y/n): ");
            scanf("%c",&ch);
        }while(ch!='y'&&ch!='Y'&&ch!='n'&&ch!='N');
    }while(ch=='y'||ch=='Y');
    return;
}
void main(){
    int choose;
    while(1){
        do{
            printf("\t1.存取;\n\t2.显示;\n\t3.删除记录;\n\t4.查询记录;\n\t5.退出;\n\t请选择功能: \n");
            scanf("%d",&choose);
        }while(choose!=1&&choose!=2&&choose!=3&&choose!=4&&choose!=5);
        if(choose==1)
            Input();
        else if(choose==2)
            scan();
        else if(choose==3)
            Delete();
        else if(choose==4)
            search();

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。