1,直接用变量
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
//姓名、性别、年龄、电话、住址
typedef struct Stu
{
char name[10];
char sex[5];
int age;
char tele[10];
char addr[20];
}S;
typedef struct contact
{
S human[1000];
int count;
}Stu;
enum OP
{
Exit,
add,
drop,
check,
modify,
show,
empty,
sort
};
void menu()
{
printf("
1.添加联系人信息
2.删除指定联系人信息\n
3.查找指定联系人信息
4.修改指定联系人信息\n
5.显示所有联系人信息
6.清空所有联系人\n
7.以名字排序所有联系人\n");
}
int _add(Stu stu1)
{
if (stu1.count == 1000)
{
printf("通讯录已满!");
return -1;
}
else
{
printf("请输入名字:");
scanf("%s", stu1.human[stu1.count].name);
printf("请输入性别:");
scanf("%s", stu1.human[stu1.count].sex);
printf("请输入年龄:");
scanf("%d", stu1.human[stu1.count].age);
printf("请输入电话:");
scanf("%s", stu1.human[stu1.count].tele);
printf("请输入地址:");
scanf("%s", stu1.human[stu1.count].addr);
stu1.count++;
}
return 0;
}
int _check(Stu stu1)
{
int i;
char name[10];
printf("请输入要查找的名字:");
scanf("%s", name);
for (i = 0; i<stu1.count; i++)
{
if (strcmp(stu1.human[i].name, name) == 0)
{
printf("\tname\tsex\tage\ttel\tadd\n");
printf("%10s", stu1.human[i].name);
printf("%5s", stu1.human[i].sex);
printf("%10d", stu1.human[i].age);
printf("%10s", stu1.human[i].tele);
printf("%10s\n", stu1.human[i].addr);
return 1;
}
}
return -1;
}
int _drop(Stu stu1)
{
int i = 0;
int rel = _check(stu1);
if (rel != -1)
{
for (i = rel; i<stu1.count - 1; i++)
{
stu1.human[i] = stu1.human[i + 1];
}
stu1.count--;
return 1;
}
else
{
printf("不存在!");
return -1;
}
}
int _modify(Stu stu1)
{
int rel = _check(stu1);
if (rel != -1)
{
printf("请输入姓名:");
scanf("%s", stu1.human[rel].name);
printf("请输入性别:");
scanf("%s", stu1.human[rel].sex);
printf("请输入年龄:");
scanf("%d", &stu1.human[rel].age);
printf("请输入电话:");
scanf("%s", stu1.human[rel].tele);
printf("请输入地址:");
scanf("%s", stu1.human[rel].addr);
return 1;
}
else
{
printf("输入错误!");
return -1;
}
}
int _show(Stu stu1)
{
int i;
printf("\tname\tsex\tage\ttel\tadd\n");
for (i = 0; i< stu1.count; i++)
{
printf("%10s", stu1.human[i].name);
printf("%5s", stu1.human[i].sex);
printf("%10d", stu1.human[i].age);
printf("%10s", stu1.human[i].tele);
printf("%10s\n", stu1.human[i].addr);
}
printf("\n");
return 0;
}
int _empty(Stu stu1)
{
stu1.count = 0;
return 1;
}
void _sort(Stu stu1)
{
int i = 0;
for (i = 0; i < stu1.count - 1; i++) //这里采用冒泡排序
{
for (int j = 0; j< stu1.count - 1 - i; j++)
{
int min = 0;
if (strcmp(stu1.human[j].name, stu1.human[j + 1].name)>0)
{
S temp = stu1.human[j];
stu1.human[j] = stu1.human[j + 1];
stu1.human[j + 1] = temp;
}
}
}
printf("排序完成\n");
_show(stu1);
}
int main()
{
int num = 0;
Stu stu1;
stu1.count = 0;
menu();
while (1)
{
scanf("%d", &num);
switch (num)
{
case add:
_add(stu1);
break;
case drop:
_drop(stu1);
break;
case check:
_check(stu1);
break;
case modify:
_modify(stu1);
break;
case show:
_show(stu1);
break;
case empty:
_empty(stu1);
break;
case sort:
_sort(stu1);
break;
case Exit:
exit(0);
}
}
system("pause");
return 0;
}