通讯录项目 — 结构体数组
1.使用结构体来存放数据,使用数组来存放结构体
2.struct Data{
int id;
char name[10];
int phone; //注意11位数的整型范围用int能不能放
}
3.知识点
数据类型
数组
结构体
语句 for switch if break return
函数 尽可能的都用函数去写,可以先都在main函数里实现,最后改写为函数
字符串函数 strcpy strcmp等
随机数函数
等等
4.功能
增加联系人
删除联系人 --- 按电话、姓名删除
查找联系人 --- 按电话、姓名查找
修改联系人 --- 可以修改姓名、电话
显示联系人 --- 界面优美的打印出所有联系人
ID使用随机数生成,并且作为唯一的标识,
例如生成5位数作为ID,每一次生成,都去数组中查看,该ID有没有被使用,确保唯一性。
按ID从小到大排序
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
struct DATE
{
long telephone;
int id;
char name[20];
};
int myrand(int Rand_Max)//产生随机数
{
int test[100000]={0};
int i=0;
srand(time(NULL));
int rnum=rand()%Rand_Max;
test[rnum] += 1;
for(i=10000;i<100000;i++)
{
if(test[i]>1)
{
rnum=(rand()%Rand_Max)+10000;
}
}
return rnum;
}
void add_data(struct DATE num[],int *length)//输入信息
{
int p1 = *length;
while(1)
{
int ran = myrand(100000);
printf("输入tel : \n");
scanf("%ld",&num[p1].telephone);
printf("输入姓名: \n");
scanf("%s",num[p1].name);
num[p1].id = ran;
p1++;
*length = p1;
break;
}
}
void show_data(struct DATE num[],int *length)//显示信息
{
int i;
int len = *length;
for(i=0;i<len;i++)
{
printf("ID : %d\n",num[i].id);
printf("tel :