#include"contact11-6.h"
void menu(){
printf("***************************\n");
printf("****1.add 2.del *****\n");
printf("****3.search 4.modify*****\n");
printf("****5.show 6.empty *****\n");
printf("****7.sort 0.exit *****\n");
printf("***************************\n");
}
enum option{
EXIT,
ADD,
DEL,
SEARCH,
MODIFY,
SHOW,
EMPTY,
SORT
};
int main(){
int input = 0;
Contact con= { 0 };
do{
menu();
printf("请选择:");
scanf("%d", &input);
switch (input)
{
case ADD:
add_contact(&con);
break;
case DEL:
del_contact(&con);
break;
case SEARCH:
search_contact(&con);
break;
case MODIFY:
modify_contact(&con);
break;
case SHOW:
show_contact(&con);
break;
case EMPTY:
empty_contact(&con);
break;
case SORT:
sort_contact(&con);
break;
case EXIT:
printf("退出通讯录!\n");
break;
default:
printf("选择有误!");
break;
}
} while (input);
return 0;
}
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
#define MAX 100
#define MAX_NAME 20
#define MAX_SEX 5
#define MAX_AGE 5
#define MAX_TELE 20
#define MAX_ADDR 20
typedef struct PeoInfo{
char name[MAX_NAME];
char sex[MAX_SEX];
short age[MAX_AGE];
char tele[MAX_TELE];
char addr[MAX_ADDR];
}PeoInfo;
typedef struct Contact{
PeoInfo data[MAX];
int sz;
}Contact;
void add_contact(Contact* pc);
void del_contact(Contact* pc);
void search_contact(Contact* pc);
void modify_contact(Contact* pc);
void show_contact(Contact* pc);
void modify_contact(Contact* pc);
void sort_contact(Contact* pc);
#include"contact11-6.h"
void add_contact(Contact* pc){
if (pc->sz == MAX){
printf("通讯录已满!\n");
}
else{
printf("请输入添加人的姓名:");
scanf("%s", pc->data[pc->sz].name);
printf("请输入添加人的性别:");
scanf("%s", pc->data[pc->sz].sex);
printf("请输入添加人的年龄:");
scanf("%s", &pc->data[pc->sz].age);
printf("请输入添加人的电话:");
scanf("%s", pc->data[pc->sz].tele);
printf("请输入添加人的住址:");
scanf("%s", pc->data[pc->sz].addr);
pc->sz++;
printf("添加联系人成功!\n");
}
}
int find_peo_by_name(Contact*pc, char name){
for (int i = 0; i < pc->sz; i++){
if (strcmp(name, pc->data[i].name) == 0){
return i;
}
}
return -1;
}
void del_contact(Contact* pc){
if (pc->sz == 0){
printf("通讯录为空!");
}
else{
char name[MAX_NAME] = { 0 };
printf("输入要删除人的姓名:");
scanf("%s", name);
int ret=find_peo_by_name(pc, name);
if (ret == -1){
printf("未找到要删除人的信息!\n");
}
else{
for (int j = 0; j < pc->sz; j++){
pc->data[j] = pc->data[j + 1];
}
pc->sz--;
}
}
}
void show_contact(Contact* pc)
{
int i = 0;
printf("%10s %12s %5s %12s %15s\n", "姓名", "性别", "年龄", "电话", "住址");
for (i = 0; i < pc->sz; i++)
{
printf("%10s %12s %5s %12s %15s\n", pc->data[i].name,
pc->data[i].sex,
pc->data[i].age,
pc->data[i].tele,
pc->data[i].addr);
}
}
void search_contact(Contact* pc){
char name[MAX_NAME] = { 0 };
printf("输入要查找人的姓名:");
scanf("%s", name);
int ret = find_peo_by_name(pc, name);
if (ret == -1){
printf("未找到!\n");
}
else{
printf("%10s %12s %5s %12s %15s\n", "姓名", "性别", "年龄", "电话", "住址");
printf("%10s %12s %5s %12s %15s\n", pc->data[ret].name,
pc->data[ret].sex,
pc->data[ret].age,
pc->data[ret].tele,
pc->data[ret].addr);
}
}
void modify_contact(Contact* pc){
char name[MAX_NAME] = { 0 };
printf("输入要修改人的姓名:");
scanf("%s", name);
int ret = find_peo_by_name(pc, name);
if (ret == -1){
printf("未找到!\n");
}
else{
printf("请输入新的姓名:");
scanf("%s", pc->data[pc->sz].name);
printf("请输入新的性别:");
scanf("%s", pc->data[pc->sz].sex);
printf("请输入新的年龄:");
scanf("%s", &pc->data[pc->sz].age);
printf("请输入新的电话:");
scanf("%s", pc->data[pc->sz].tele);
printf("请输入新的住址:");
scanf("%s", pc->data[pc->sz].addr);
printf("修改成功!\n");
}
}
void empty_contact(Contact* pc){
char choice = 0;
printf("确定清空所有联系人信息:Y\N\n");
scanf("%s", &choice);
if (strcmp(choice,"Y")==0)
{
pc->sz = 0;
printf("删除成功!\n");
}
else{
printf("取消删除!\n");
}
}
void sort_contact(Contact* pc){
for (int i = 0; i < pc->sz - 1; i++){
int flag = 1;
for (int j = 0; j < pc->sz - 1 - j; j++){
if (strcmp(pc->data[j].name, pc->data[j + 1].name)>0){
PeoInfo tmp = pc->data[j];
pc->data[j] = pc->data[j + 1];
pc->data[j + 1] = tmp;
}
}
if (1 == flag){
break;
}
}
}