概述
包括三个文件。
- test.c——用于测试功能
- Contact.c——用于写各种功能函数实现代码
- Contact.h——用于声明函数或者结构的
代码如下:
1、Contact.h
#define _CRT_SECURE_NO_WARNINGS 1
#define MAX 1000
#define MAX_NAME 20
#define MAX_SEX 5
#define MAX_TEL 12
#define MAX_ADDR 30
#include <stdio.h>
#include <Windows.h>
#include <string.h>
//通讯录存放的信息
struct PeoInfo{
char name[MAX_NAME];
int age;
char Sex[MAX_SEX];
int tel[MAX_TEL];
char addr[MAX_ADDR];
};
//枚举函数类型
enum Option{
EXIT,//0
ADD,
DEL,
RESEARCH,
MODIFY,
SHOW,
SORT
};
//通讯录类型
struct Contact{
struct PeoInfo data[MAX];//存放1000个人的信息
int size;//记录当前通讯录中已存放了多少人的信息
};
//声明通讯录初始化函数
void InitContact(struct Contact *ps);
//声明通讯录添加函数
void AddContact(struct Contact *ps);
//声明打印通讯录函数
void ShowContact(const struct Contact *ps);
//声明删除指定联系人函数
void DeleteContact(struct Contact *ps);
//声明通讯录查找联系人函数
void ResearchContact(const struct Contact *ps);
//声明修改通讯录信息函数
void ModifyContact(struct Contact *ps);
2、Contact.c
#define _CRT_SECURE_NO_WARNINGS 1
#include "contact.h"
//初始化通讯录函数实现
void InitContact(struct Contact *ps)
{
memset(ps->data, 0, sizeof(ps->data));
ps->size = 0;//设置同学录最初只有0个元素
}
//通讯录增加函数实现
void AddContact(struct Contact *ps)
{
if (ps->size == MAX)
{
printf("通讯录已满n");
}
else
{
printf("请输入名字n");
scanf("%s", ps->data[ps->size].name);
printf("请输入年龄n");
scanf("%d", &(ps->data[ps->size].age));
printf("请输入性别n");
scanf("%s", ps->data[ps->size].Sex);
printf("请输入电话号码n");
scanf("%s", ps->data[ps->size].tel);
printf("请输入家庭住址n");
scanf("%s", ps->data[ps->size].addr);
ps->size++;
printf("添加成功n");
}
}
//打印通讯录函数实现
void ShowContact(const struct Contact *ps)
{
if (ps->size == 0)
{
printf("通讯录为空");
}
else
{
int i = 0;
printf("%20st%4st%5st%12st%20sn", "名字", "年龄", "性别", "电话", "住址");
for (i = 0; i < ps->size; i++)
{
printf("%20st%4dt%5st%12st%20sn",
ps->data[i].name,
ps->data[i].age,
ps->data[i].Sex,
ps->data[i].tel,
ps->data[i].addr);
}
}
}
//通过名字在通讯录查找该元素的下标
static int FindByName(const struct Contact *ps, char name[MAX_NAME])
{
//查找人
int i = 0;
for (i = 0; i < ps->size; i++)
{//找到相同名字的人的数组下标
if (0 == strcmp(ps->data[i].name, name))
{
return i;
}
}
return -1;
}
//删除指定联系人函数实现
void DeleteContact(struct Contact *ps)
{
char name[MAX_NAME];
printf("请输入你要删除的人的名字n");
scanf("%s", name);
//查找人
//找到了返回名字所在元素的下标
//找不到返回-1
int pos = FindByName(ps, name);
//删除人
if (pos == -1)
{//找名字时遍历完数组中的所有元素没有匹配时,则说明通讯录无此人信息,跳出函数
printf("通讯录不存在你要删除的人的信息");
}
else{
//删除数据
int j = pos;
for (j = pos; j < ps->size - 1; j++)
{//将要删除位置后面的数据往前挪一个位子
ps->data[j] = ps->data[j + 1];
}
printf("删除成功!");
ps->size--;
}
}
//通讯录查找联系人函数实现
void ResearchContact(const struct Contact *ps)
{
char name[MAX_NAME];
printf("请输入你要查找人的名字n");
scanf("%s", name);
//查找人
//找到了返回名字所在元素的下标
//找不到返回-1
int pos = FindByName(ps, name);
//查找人
if (pos == -1)
{//找名字时遍历完数组中的所有元素没有匹配时,则说明通讯录无此人信息,跳出函数
printf("通讯录不存在你要查找的人的信息");
}
else{
//打印信息
int i = 0;
printf("%20st%4st%5st%12st%20sn", "名字", "年龄", "性别", "电话", "住址");
printf("%20st%4dt%5st%12st%20sn",
ps->data[pos].name,
ps->data[pos].age,
ps->data[pos].Sex,
ps->data[pos].tel,
ps->data[pos].addr);
}
}
//通讯录信息修改函数实现
void ModifyContact(struct Contact *ps)
{
char name[MAX_NAME];
printf("请输入要修改人的名字");
scanf("%s", name);
//查找修改人信息的下标
int pos = FindByName(ps, name);
if (pos == -1)
{//找名字时遍历完数组中的所有元素没有匹配时,则说明通讯录无此人信息,跳出函数
printf("通讯录不存在你要修改的人的信息");
}
else{
//重新录入信息
printf("请输入名字n");
scanf("%s", ps->data[pos].name);
printf("请输入年龄n");
scanf("%d", &(ps->data[pos].age));
printf("请输入性别n");
scanf("%s", ps->data[pos].Sex);
printf("请输入电话号码n");
scanf("%s", ps->data[pos].tel);
printf("请输入家庭住址n");
scanf("%s", ps->data[pos].addr);
ps->size++;
printf("修改成功n");
}
}
3、 test.c
#define _CRT_SECURE_NO_WARNINGS 1
#include "contact.h"
//菜单
void menu()
{
printf("*********************************************n");
printf("***** 1.add 2.del *****n");
printf("***** 3.research 4.modify *****n");
printf("***** 5.show 6.sort *****n");
printf("***** 0.exit *****n");
printf("*********************************************n");
}
int main(){
int input = 0;
//创建通讯录
struct Contact con;//con是可以存放1000个人信息的通讯录,里面还包括记录人数的size
//初始化通讯录
InitContact(&con);
do{
menu();
printf("请选择-》n");
scanf("%d", &input);
switch (input){
case ADD:
AddContact(&con);
break;
case DEL:
DeleteContact(&con);
break;
case RESEARCH:
ResearchContact(&con);
break;
case MODIFY:
ModifyContact(&con);
break;
case SHOW:
ShowContact(&con);
break;
case SORT:
break;
case EXIT:
break;
default:
break;
}
}while (input);
system("pause");
return 0;
}
最后
以上就是矮小刺猬为你收集整理的用C语言实现通讯录(初阶)的全部内容,希望文章能够帮你解决用C语言实现通讯录(初阶)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复