思路:写一个.c文件和一个.h文件,c文件中调用h文件,实现函数功能。
参考了部分别人写的,自己改了点。
首先,创建一个tongxulun.h文件。在这个文件中:
#pragma once
#include<stdio.h>
#include<string.h>
#define _CRT_SECURE_NO_WARNINGS 1
#define MAX_SIZE 1000
typedef struct person
{
char name[20]; 姓名
char sex[2]; 性别
char tel[20]; 电话
char address[20]; 地址
int age;
}person;
typedef struct book
{
person data[MAX_SIZE]; //存储每个人信息的结构体数组
size_t size; //当前已存储的人数
}book;
void insert(book* pbook );
void delete(book* pbook);
int search(const book* pbook );
void change(book* pbook);
void show(const book* pbook);
void clear(book* pbook);
void sortbyname(book* pbook);
创建一个tongxunlu.c文件,在这个文件中:
#include “tongxunlu2.h”
void insert(book* pbook)
{
if(pbook->size > MAX_SIZE)
{
printf(“book is fulled!\n”);
return;
}
printf(“please enter name:\n”);
scanf("%s",pbook->data[pbook->size].name);
printf(“please enter sex:\n”);
scanf("%s",pbook->data[pbook->size].sex);
printf(“please enter age:\n”);
scanf("%d",&pbook->data[pbook->size].age);
printf(“please enter telephone:\n”);
scanf("%s",pbook->data[pbook->size].tel);
printf(“please enter address:\n”);
scanf("%s",pbook->data[pbook->size].address);
pbook->size++;
}
void delete(book* pbook)
{
int ret=0;
if(pbook->size == 0)
{
printf(“book is NULL”);
return;
}
ret =search(pbook);
if(ret !=-1)
{
int del = 0;
printf(“确定删除此人吗?删除请按1,取消按0\n”);
scanf("%d",&del);
if(del == 1)
{
int i = 0;
for(i=ret;i< pbook->size-1;i++)
{
pbook->data[i] = pbook->data[i+1];
}
pbook->size--;
printf("已删除\n");
}
}
}
int search(const book* pbook)
{
char name[20];
int i=0;
printf(“请输入姓名:\n”);
scanf("%s",name);
for(i=0;isize;i++)
{
if(strcmp(name,pbook->data[i].name) ==0)
{
printf(“name:%s sex:%s age:%d tel:%s address:%s\n”,pbook->data[i].name,
pbook->data[i].sex,pbook->data[i].age,pbook->data[i].tel,
pbook->data[i].address);
return i;
}
}
printf(" No find!\n");
return -1;
}
void change(book* pbook)
{
int change = search(pbook);
if(change !=-1)
{
printf(“please input name:\n”);
scanf("%s",pbook->data[change].name);
printf(“please input sex:\n”);
scanf("%s",pbook->data[change].sex);
printf(“please input age:\n”);
scanf("%d",&pbook->data[change].age);
printf(“please input tel:\n”);
scanf("%s",pbook->data[change].tel);
printf(“please input address:\n”);
scanf("%s",pbook->data[change].address);
printf(“已修改\n”);
}
}
void show(const book* pbook)
{
int i=0;
if(pbook->size ==0)
{
printf(“book is NULL\n”);
return;
}
for(i=0;isize;i++)
{
printf(“name:%s sex:%s age:%d tel:%s address:%s\n”,pbook->data[i].name,
pbook->data[i].sex,pbook->data[i].age,pbook->data[i].tel,
pbook->data[i].address);
}
}
void clear(book* pbook)
{
pbook->size =0;
}
void sortbyname(book* pbook)
{
int i=0;
for(i=0;isize -1;i++)
{
if(strcmp(pbook->data[i].name,pbook->data[i+1].name) > 0)
{
person tmp;
strcpy(tmp.name,pbook->data[i].name);
strcpy(tmp.sex,pbook->data[i].sex);
tmp.age =pbook->data[i].age;
strcpy(tmp.tel,pbook->data[i].tel);
strcpy(tmp.address,pbook->data[i].address);
strcpy(pbook->data[i].name,pbook->data[i+1].name);
strcpy(pbook->data[i].sex,pbook->data[i+1].sex);
pbook->data[i].age =pbook->data[i+1].age;
strcpy(pbook->data[i].tel,pbook->data[i+1].tel);
strcpy(pbook->data[i].address,pbook->data[i+1].address);
strcpy(pbook->data[i+1].name,tmp.name);
strcpy(pbook->data[i+1].sex,tmp.sex);
pbook->data[i+1].age =tmp.age;
strcpy(pbook->data[i+1].tel,tmp.tel);
strcpy(pbook->data[i+1].address,tmp.address);
}
}
show(pbook);
}
创建一个test.c的文件,在这个文件中:
#include<stdio.h>
#include<stdlib.h>
#include “tongxunlu2.h”
void face()
{
printf(“通讯录***”);
printf("***1. 添加联系人信息\n");
printf("***2. 删除联系人信息\n");
printf("***3. 查找联系人信息\n");
printf("***4. 修改联系人信息\n");
printf("***5. 显示联系人信息\n");
printf("***6. 清空联系人信息\n");
printf("***7. 以名字排序联系人信息\n");
printf("***8. 退出通讯录\n");
printf("\n");
printf(“输入操作的序号:\n”);
}
int main()
{
book book;
int ch;
book.size =0;
while(1)
{
AAA: face();
scanf("%d",&ch);
system(“cls”);
switch(ch)
{
case 1:
insert(&book);
break;
case 2:
delete(&book);
break;
case 3:
search(&book);
break;
case 4:
change(&book);
break;
case 5:
show(&book);
break;
case 6:
clear(&book);
break;
case 7:
sortbyname(&book);
break;
case 8:
exit(0);
default:
printf("输入有误,请重新输入:\n");
goto AAA;
break;
}
printf("\n");
}
system(“pause”);
return 0;
}