今天我写了一个简易的通讯录。
代码
#include <stdio.h>
#include <string.h>
struct Data
{
int id;
char name[10];
long phone;
char a[100];
char b[50];
};
int my_rand(struct Data te[] )//产生随机数
{
int sum1;
srand(time(NULL));
int i;
for (i = 0; i < 5; i++)
{
te[i].id= rand()%10;
}
sum1=te[0].id;
for(i = 1 ;i < 5; i++)
{
if(te[i].id!=te[i+1].id)
{
sum1=sum1*10+te[i].id;//将数组转为整形
//printf("%d\n",sum1);
}
else
{
break;
}
}
return sum1;
}
void my_add(struct Data te[],int *length)//添加联系人函数
{
int i;
int hg=my_rand(te);//调用随机数
int p1=*length;
printf("1.请添加联系人\n");
printf("2.输入ID:%d\n",hg);
printf("3.请输入号码: \n");
scanf("%lu",&te[p1].phone);
printf("4.请输入姓名: \n");
scanf("%s",te[p1].name);
p1 ++;
for(i=0;i<p1;i++)
{
te[i].id=hg;//将随机数存储到te数组中
}
*length=p1;
}
void my_show(struct Data te[],int *length)//显示联系人
{
int p2=*length;
int i;
for(i=0;i<p2;i++)
{
printf("%d\t",te[i].id);
printf("%s\t",te[i].name);
printf("%lu\n",te[i].phone);
printf("------------------\n");
printf("联系人数:%d\n",p2);
printf("------------------\n");
*length=p2;
}
}
void my_delete(struct Data te[],int *length)//删除联系人函数
{
int i;
int p3=*length;
int cd=0;
printf("进入选项\n");
printf("请输入1或0\n");
scanf("%d",&cd);
if(cd == 1 )//输入1时进行下面的操作
{
printf("请输入你要删除的姓名:\n");
scanf("%s",te[i].name);
for(i=0;i<p3;i++)
{
strcpy(te[i].a,te[i].name);//将name数组的内容复制到a数组
}
p3 --;
}
else if(cd == 0)
{
printf("请输入你要删除的号码:\n");
scanf("%lu",&te[i].phone);
for(i=0;i<p3;i++)
{
sprintf(te[i].b,"%lu",te[i].phone);//将长整型转换成字符串数组
strcpy(te[i].a,te[i].b);//将b数组的内容复制到a数组
}
p3 --;
}
*length=p3;
}
int my_find(struct Data te[],int *length)//查找函数
{
int i;
int p4=*length;
int fd=0;
char ret[20];
long gp;
printf("进入选项\n");
printf("请输入1或0\n");
scanf("%d",&fd);
if(fd == 1)
{
printf("请输入你要查找的姓名\n");
scanf("%s",ret);
for(i=0;i<p4;i++)
{
if(strcmp(ret,te[i].name)==0)//比交数组ret与数组name的内容,如果是0则相等,如果是小于0则数组ret小于数组name,如果是大于0则数组ret大于数组name
{
printf("%d\t",te[i].id);
printf("%s\t",te[i].name);
printf("%lu\n",te[i].phone);
return i;
}
}
}
else if(fd == 0)
{
printf("请输入你要查找的号码\n");
scanf("%lu",&gp);
for(i=0;i<p4;i++)
{
if(gp==te[i].phone)
{
printf("%d\t",te[i].id);
printf("%s\t",te[i].name);
printf("%lu\n",te[i].phone);
return i;
}
}
}
*length=p4;
return -1;
}
int my_change(struct Data te[],int *length)//修改函数
{
int p5=*length;
int ret=my_find(te,&p5);
if(ret !=-1)
{
printf("%d\t",te[ret].id);
printf("请修改姓名\n");
scanf("%s",te[ret].name);
printf("%s\t",te[ret].name);//修改后的名字
printf("请修改号码\n");
scanf("%lu",&te[ret].phone);
printf("%lu\n",te[ret].phone);//修改后的号码
}
else
{
printf("error\n");
}
*length=p5;
return 0;
}
int main()
{
int i;
struct Data te[10]={0};
int count=0;
int length=0;
while(1)
{
printf("1.请输入\n");
printf("2.请显示\n");
printf("3.请删除\n");
printf("4.请查找\n");
printf("5.请修改\n");
scanf("%d",&count);
switch(count)
{
case 1:
my_add(te,&length); //调用输入函数
break;
case 2:
my_show(te,&length);//调用显示函数
break;
case 3:
my_delete(te,&length);//调用删除函数
break;
case 4:
my_find(te,&length);//调用查找函数
break;
case 5:
my_change(te,&length);//调用修改函数
break;
default:
printf("error\n");
break;
}
}
return 0;
}