#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<windows.h>
#include<assert.h>
#include<stdlib.h>
struct stu
{
char name[5];
char sex[2];
int age;
char phone[15];
char add[20];
};
typedef struct info
{
struct stu *n;
int size;
}stu_info;
void init_info(stu_info *p)
{
assert(p);
int i = 0;
int j = 0;
p->n = (struct stu*)malloc(sizeof(struct stu) * 1000);
printf("请输入你要插入的联系人的个数:");
scanf("%d", &i);
if (i > 0 && i <= 1000)
{
for (;j < i;j++)
{
printf("请输入第%d个联系人的姓名:", j + 1);
scanf("%s", &p->n[j].name);
printf("请输入第%d个联系人的性别:", j + 1);
scanf("%s", &p->n[j].sex);
printf("请输入第%d个联系人的年龄:", j + 1);
scanf("%d", &p->n[j].age);
printf("请输入第%d个联系人的电话:", j + 1);
scanf("%s", &p->n[j].phone);
printf("请输入第%d个联系人的住址:", j + 1);
scanf("%s", &p->n[j].add);
p->size++;
}
}
}
void print_info(stu_info *p)
{
assert(p);
int i = 0;
int j = p->size;
printf("name\tsex\tage\tphone\tadd\n");
while (j--)
{
printf("%s\t", p->n[i].name);
printf("%s\t", p->n[i].sex);
printf("%d\t", p->n[i].age);
printf("%s\t", p->n[i].phone);
printf("%s\n", p->n[i].add);
i++;
}
}
void insert_info(stu_info *p)
{
assert(p);
int j = 0;
printf("请输入新添加的第%d个联系人的姓名:", j + 1);
scanf("%s", &(p->n[p->size].name));
printf("请输入新添加的第%d个联系人的性别:", j + 1);
scanf("%s", &(p->n[p->size].sex));
printf("请输入新添加的第%d个联系人的年龄:", j + 1);
scanf("%d", &(p->n[p->size].age));
printf("请输入新添加的第%d个联系人的电话:", j + 1);
scanf("%s", &(p->n[p->size].phone));
printf("请输入新添加的第%d个联系人的住址:", j + 1);
scanf("%s", &(p->n[p->size].add));
p->size++;
}
void delete_info(stu_info *p)
{
int i = 0;
int j = p->size;
char name[20] = { 0 };
assert(p);
printf("请输入你要删除的联系人的姓名:");
scanf("%s", &name);
for (;i < j;i++)
{
if (strcmp(p->n[i].name, name) == 0)
{
for (;i < j - 1;i++)
{
p->n[i] = p->n[i + 1];
}
p->size--;
return;
}
}
printf("你输入的联系人不存在\n");
}
void search_info(stu_info *p)
{
int i = 0;
int j = p->size;
char name[20] = { 0 };
printf("请输入你要查找的联系人的姓名:");
scanf("%s", &name);
for (;i < j;i++)
{
if (strcmp(p->n[i].name, name) == 0)
{
printf("该联系人的信息如下:\n");
printf("name\tsex\tage\tphone\tadd\n");
printf("%s\t%s\t%d\t%s\t%s\n", p->n[i].name, p->n[i].sex, p->n[i].age, p->n[i].phone, p->n[i].add);
return;
}
}
printf("你要查找的联系人不存在");
}
void modify_info(stu_info *p)
{
int i = 0;
int j = p->size;
char name[20] = { 0 };
printf("请输入你要修改的联系人的姓名:");
scanf("%s", &name);
for (;i < j;i++)
{
if (strcmp(p->n[i].name, name) == 0)
{
printf("请输入该名联系人的姓名:\n");
scanf("%s", &p->n[i].name);
printf("请输入该名联系人的性别:\n");
scanf("%s", &p->n[i].sex);
printf("请输入该名联系人的年龄:\n");
scanf("%d", &p->n[i].age);
printf("请输入该名联系人的电话:\n");
scanf("%s", &p->n[i].phone);
printf("请输入该名联系人的住址:\n");
scanf("%s", &p->n[i].add);
printf("修改成功!\n");
}
}
}
void clear_info(stu_info *p)
{
memset(p->n, '0', sizeof(struct stu) * 1000);
}
void sort_info(stu_info *p)
{
int i = 0;
int k = 0;
int j = p->size;
struct stu n = { 0 };
printf("对联系人信息进行排序:\n");
for (i=0;i < j - 1;i++)
{
for (k = 0;k < j - i - 1;k++)
{
if (p->n[k].name < p->n[k + 1].name)
{
n = p->n[k];
p->n[k] = p->n[k + 1];
p->n[k + 1] = n;
}
}
}
}
int main()
{
stu_info p;
p.size = 0;
init_info(&p); //初始化通讯录
print_info(&p);//输出
insert_info(&p);//增加联系人信息
print_info(&p);
delete_info(&p);//删除联系人信息
print_info(&p);
search_info(&p);//查询联系人信息
modify_info(&p);//修改联系人信息
print_info(&p);
sort_info(&p);//对联系人信息排序
print_info(&p);
clear_info(&p);//清空联系人信息
free(p.n);
system("pause");
return 0;
}
通讯录1 动态开辟内存
猜你喜欢
转载自blog.csdn.net/ferlan/article/details/79593777
今日推荐
周排行