用c语言顺序表创建电话薄

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

#define MAXSIZE 100

#define KeyType ElemType

typedef struct

{

    char name[20];//姓名

    char Number[20];//号码

    char QQ[20];//qq

    char Email[20];//邮件

    char gender[20];

}ElemType;

typedef struct

{

    ElemType *R; //表基址

    int length; //表长

} SSTable;

int Search_Seq(SSTable ST,KeyType key)//若成功返回其位置信息,否则返回 0

{

   int i;

   i=ST.length;

   ST.R[0]=key;

   while(strcmp(ST.R[i].name,key.name)&&i>=1)//strcmp()比较字符串相等返回0

   {

       i--;

   }

   return i;

}

SSTable Creat_Seq(SSTable ST) //创建空电话簿

{

    ST.R=(ElemType *)malloc(sizeof(ElemType)*(MAXSIZE+1));

    ST.length=0;

    printf("//电话薄创建成功\n");

    return ST;

}

SSTable Insert_Seq(SSTable ST,KeyType key) //向表中插入一个新朋友的电话

{

   int i;

   ST.length++;

   ST.R[ST.length]=key;

   printf("//联系人插入成功\n");

   return ST;

}

 SSTable Delete_Seq(SSTable ST,KeyType key)//从表中删除一个人的电话

{

    int j;

    int i=Search_Seq(ST,key);//if(i<1||i>ST.length)printf("删除失败\n");

    if(i==0){printf("删除失败,电话薄中无此人\n");return ST;}

    for(j=i;j<=ST.length;j++)

    {

        ST.R[j]=ST.R[j+1];

    }

    ST.length--;

    printf("//联系人已删除\n");

    return ST;

}

 SSTable Modify_Seq(SSTable ST,KeyType key) //修改表中某个朋友的信息

{

    int select;

    int i=Search_Seq(ST,key);

    if(i==0){printf("修改失败,电话薄中无此人\n");return ST;}

    while(select!=0)

    {

    printf("请输入所要修改的信息:\n");

    printf("****修改姓名 输入1****\n");

    printf("****修改电话 输入2****\n");

    printf("****修改qq 输入3****\n");

    printf("****修改邮箱 输入4****\n");

    printf("****修改性别 输入5****\n");

    printf("****结束修改 输入0****\n");

    printf("****请选择;");

    scanf("%d",&select);

    switch(select)

    {

    case 1:

        getchar();

        printf("请输入修改后的姓名;\n");

        scanf("%s",&ST.R[i].name);

        break;

    case 2:

        getchar();

        printf("请输入修改后的电话号码;\n");

        scanf("%s",&ST.R[i].Number);

        break;

    case 3:

        getchar();

        printf("请输入修改后的qq\n");

        scanf("%s",&ST.R[i].QQ);

        break;

    case 4:

        getchar();

        printf("请输入修改后的邮箱;\n");

        scanf("%s",&ST.R[i].Email);

        break;

    case 5:

        getchar();

        printf("请输入修改后的性别;\n");

        scanf("%s",&ST.R[i].gender);

        break;

    default:

     break;

    }

    }

    printf("//信息已修改\n");

    return ST;

}

SSTable Print_Seq(SSTable ST) //打印表中每个朋友的信息

{

int i=0;

printf("电话薄:\n");

for(i=1;i<=ST.length;i++)

{

    printf("姓名: %s 性别: %s 号码: %s QQ: %s 邮箱: %s\n",ST.R[i].name,ST.R[i].gender,ST.R[i].Number,ST.R[i].QQ,ST.R[i].Email);

    fflush(stdin);

}

printf("\n");

}

void chaxun(SSTable ST,KeyType key)

{

int i=Search_Seq(ST,key);

if(i==0)printf("查询失败,电话薄中无此人\n");

else printf("姓名: %s 性别: %s 号码: %s QQ: %s 邮箱: %s\n",ST.R[i].name,ST.R[i].gender,ST.R[i].Number,ST.R[i].QQ,ST.R[i].Email);

}

SSTable Sort_Seq(SSTable ST)

{

    int i=0,max=0,j=0;

    ElemType t;

    for(i=1;i<ST.length;i++)

    {

        max=i;

        for(j=i+1;j<=ST.length;j++)

      // {

         if(strcmp(ST.R[j].name,ST.R[max].name)==-1)max=j;

       // }

          if(max!=i)

          {

              t=ST.R[max];

              ST.R[max]=ST.R[i];

              ST.R[i]=t;

          }

        }

    printf("//电话薄排序已完成\n");

    return ST;

}

void OperateMenu()

{

    printf("***输入1 插入新朋友的信息***\n");

    printf("***输入2 删除某人的信息*****\n");

    printf("***输入3 修改某人的信息*****\n");

    printf("***输入4 打印电话簿*********\n");

    printf("***输入5 查询某人信息*******\n");

    printf("***输入6 对电话簿进行排序***\n");

 

}

 

int main()

{

    KeyType key;

    SSTable ST;ElemType e;

    ST=Creat_Seq(ST);

   int select1;

   int select;

   printf("是否要批量输入信息?\n");

   printf("是 请输入1\n");

   printf("否 请输入2\n");

   scanf("%d",&select1);

   if(select1==1)

   {

       printf("请输入所要记录的联系人数量\n");

       scanf("%d",&ST.length);

       for(int i=1;i<=ST.length;i++)

       {

           getchar();

           printf("请输入第%d条联系人的信息\n",i);

           printf("姓名:\n");

           scanf("%s",&ST.R[i].name);

           printf("性别:\n");

           getchar();

           scanf("%s",&ST.R[i].gender);

           printf("电话号码:\n");

           getchar();

           scanf("%s",&ST.R[i].Number);

           printf("QQ:\n");

           getchar();

           scanf("%s",&ST.R[i].QQ);

           printf("邮箱:\n");

           getchar();

           scanf("%s",&ST.R[i].Email);

       }

       printf("//批量信息输入完成\n");

   }

        while(1)

   {

       OperateMenu();

       printf("请选择:\n");

       scanf("%d",&select);

       switch(select)

       {

       case 1:

           getchar();

           printf("请输入要插入的联系人信息\n");

           printf("姓名:\n");

           scanf("%s",&key.name);

           getchar();

           printf("电话号码:\n");

           scanf("%s",&key.Number);

           getchar();

           printf("性别:\n");

           scanf("%s",&key.gender);

           getchar();

           printf("QQ:\n");

           scanf("%s",&key.QQ);

          getchar();

           printf("邮箱:\n");

           scanf("%s",&key.Email);

          getchar();

        ST=Insert_Seq(ST,key);

      

  • 8
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值