一、功能的介紹
實現通訊錄中聯系人信息的增、刪、查、改。
二、程序模塊的介紹
1.測試文件test.c
初始化通訊錄—>聯系人的增、刪、查、改—>每次操作之后都打印通訊錄c語言簡單通訊錄c語言簡單通訊錄。
#include"contact.h"
int main()
{
int input = 0;
struct contact con;//通訊錄結構體變量
menu();//菜單
initcontact(&con);//初始化通訊錄
while (1)
{
printf("請選擇菜單:");
scanf("%d", &input);//選擇菜單
switch(input)
{
case add: ADDinf(&con);//增
break;
case del:DELinf(&con);//刪
break;
case check:Checkinf(&con);//查
break;
case change:Changeinf(&con);//改
break;
}
print(&con);//打印整個通訊錄
}
return 0;
}
2.頭文件.h
一些庫函數的頭文件、宏定義、枚舉、結構體類型的聲明和功能塊函數的聲明。
#pragma once
#include
#include
#define phone_num 11//電話號碼11位
#define max_peo_num 100//通訊錄容量100人
#define peo_name_num 10//姓名長度
enum star//增刪查改
{
add=1,
del,
check,
change,
};
struct peoinf//聯系人信息
{
char name[10];
char phone[phone_num+1];
};
struct contact//通訊錄
{
struct peoinf data[max_peo_num];
int size;
};
void menu();
void initcontact(struct contact*p);
void ADDinf(struct contact* p);
void DELinf(struct contact* p);
void Checkinf(struct contact* p);
void Changeinf(struct contact*p);
void print(struct contact* p);
?
3.功能函數的實現.c
#include"contact.h"
void menu()//菜單
{
printf("**********************************\n");
printf("********1.add 2.del********\n");
printf("********3.check 4.change*****\n");
printf("**********************************\n");
}
void initcontact(struct contact*p)//初始化通訊錄
{
memset(&p->data,0,sizeof(p->data));
p->size = 0;
}
void ADDinf(struct contact* p)//增加聯系人
{
printf("請輸入聯系人姓名和電話:");
scanf("%s",&(p->data[p->size].name));
scanf("%s",&(p->data[p->size].phone));
p->size++;
}
void DELinf(struct contact* p)//刪減聯系人
{
printf("請輸入被刪聯系人姓名:");
char del_name[peo_name_num] = {0};
scanf("%s",&del_name);
for (int i = 0; i < p->size; i++)
{
if (strcmp(del_name, p->data[i].name) == 0)//找到要刪聯系人
{
memset(&p->data[i], 0, sizeof(p->data[0]));
for (int j = i; j < p->size; j++)
p->data[j] = p->data[j + 1];
}
}
p->size--;
}
void Checkinf(struct contact* p)//查找聯系人
{
char check_name[peo_name_num] = {0};
printf("請輸入被查找人的姓名:");
scanf("%s",check_name);
for (int i=0; i < p->size; i++)
{
if (strcmp(check_name, &p->data[i]) == 0)//找到被找人的姓名
{
printf("%s %s\n", p->data[i].name, p->data[i].phone);
return 0;
}
}
printf("沒有這個聯系人");
}
void Changeinf(struct contact* p)//改聯系人信息
{
char change_peo[peo_name_num] = { 0 };
printf("請輸入被更改的對象:");
scanf("%s",&change_peo);
for (int i = 0; i < p->size; i++)
{
if (strcmp(change_peo, p->data[i].name) == 0)//找到被改聯系人信息
{
printf("%s %s\n", p->data[i].name, p->data[i].phone);
memset(&p->data[i],0,sizeof(&p->data[0]));//刪掉原有信息
printf("請重新輸入:\n");
scanf("%s",&p->data[i].name);//填寫更改后的信息
scanf("%s",&p->data[i].phone);
}
}
}
void print(struct contact* p)//打印通信錄
{
printf("\n通訊錄:\n");
for (int i = 0; i < p->size; i++)
{
printf("%d:", i + 1);
printf("%s ", p->data[i].name);
printf("%s\n", p->data[i].phone);
}
}