用结构体数组写的一个通讯录

来源:互联网 发布:sql去除查询结果重复行 编辑:程序博客网 时间:2024/06/01 10:24
   结构体数组是一个数组,其每个元素都是结构体数据类型,这就方便了我们在需要将不同的具有结构体数据类型的元素有机的结合在一起,上面是本人的一个小程序,谢谢浏览!  
#include <stdio.h>
#include <stdlib.h>
#include<string.h>
struct student
{
 int num;
 char name[30];
 char addr[30];
 char tel[30];
}  ;
   struct student stu[50];//(定义一个结构体数组。)


void f1()
{
 static int i;    //定义一个static类型变量i,是为了记住找到需要操作的的那个数组元素的下标,使得后面使用stu[i]时i的值是循环完后的值而不是初始值。
 for(i=0;i<50;i++)
 {
  if(stu[i].num == 0 )  //(寻找一个空的数组元素stu[i]方便于新通讯的写入。)
  {
   printf("请输入该同学的学号:\n");
   scanf("%d",&stu[i].num);
   printf("请输入该同学的姓名:\n");
     scanf("%s",stu[i].name);
   printf("请输入该同学的住址:\n");
   scanf("%s",stu[i].addr);
   printf("请输入该同学的电话:\n");
   scanf("%s",stu[i].tel);
   break;
  }
 }
}


void f2()
{
 static int j;
 char x[30];
 printf("请输入您想要删除的通讯录的同学姓名:");
 scanf("%s",x);
 for(j=0;j<50;j++)
  { 
   if(strcmp(stu[j].name,x)==0)  //(找到目标操作数组元素stu[j]。)
   break;
                }
 
 if(j==49)   //(当要删除的同学在最后一个元素就直接将最后元素内容清空。)
  {
   stu[j].num=0;
   strcpy(stu[j].name,'\0');
   strcpy(stu[j].addr,'\0');
   strcpy(stu[j].tel,'\0');
  }
 for(j;j<49;j++)    //用后一个元素覆盖前一个元素来实现删除。
  {
   stu[j].num=stu[j+1].num;
   strcpy(stu[j].name,stu[j+1].name);
   strcpy(stu[j].addr,stu[j+1].addr);
   strcpy(stu[j].tel,stu[j+1].tel);
  }
}


void f3()
{
 static int b;
 char z[30];
 printf("请输入您想更改的通讯录的同学姓名:\n");
 scanf("%s",z);
 for(b=0;b<50;b++)
  { 
   if(strcmp(stu[b].name,z)==0)
   break;
                }
 
 printf("您想将该同学的学号更改为:\n");
 scanf("%d",&stu[b].num);
 printf("您想将该同学的姓名更改为:\n");
   scanf("%s",stu[b].name);
 printf("您想将该同学的住址更改为:\n");
 scanf("%s",stu[b].addr);
 printf("您想将该同学的电话更改为:\n");
 scanf("%s",stu[b].tel);
}


void f4()
{
 static c;
 char y[30]; 
 printf("请您输入您想查看访问的通讯录的同学姓名:");
 scanf("%s",y);
 for(c=0;c<50;c++)
  { 
   if(strcmp(stu[c].name,y)==0)
   break;
                }
 printf("%d\t,%s\t,%s\t,%s\n",stu[c].num,stu[c].name,stu[c].addr,stu[c].tel);
}

void f5()
{
 int k;
 for(k=0;k<50;k++)
  {
   printf("%d\t,%s\t,%s\t,%s\n",stu[k].num,stu[k].name,stu[k].addr,stu[k].tel);
  }
}


int main()
{
 
 int a; 
 printf("************   欢迎来到本通讯录!  **************************   ");
 printf("\n");
 while(1)
  {
   printf("请输入您想要的操作:  1:添加新同学的通讯信息;2:删除某位同学的通讯信息;3:改正某位同学的通讯信息;4:查看访问某位同学的通讯信息 ;  5  :输出该通讯录所有同学的通讯信息; 6 : 退出\n");
   printf("\n");
   scanf("%d",&a);
 
  switch(a)
   {
    case 1:f1();
      break;
    case 2:f2();
      break;
    case 3:f3();
      break;
    case 4:f4();
      break;
    case 5:f5();
      break;
    case 6:exit(-1);
      break;
    default:
      printf("输入有误,请您重新输入!\n");
      break;
   }
  }
 
}




原创粉丝点击