一个可以存储100个人联系人信息的程序,提供添加联系人,删除联系人,查找联系人,修改联系人,显示联系人,排序联系人的功能
联系人信息结构体
//人员信息
typedef struct _PeoInfo
{
char name[MAX_NAME];
int age;
char sex[MAX_SEX];
char tele[MAX_TELE];
char addr[MAX_ADDR];
}PeoInfo;
通讯录结构体,包括联系人数组和联系人数量
//联系人数据
typedef struct _Data
{
int sz; //数量
PeoInfo pl[MAX]; //联系人
}Data;
函数接口功能
//菜单
void menu();
//初始化
void Init(Data* dat);
//增加
void Add(Data* dat);
//删除
void Del(Data* dat);
//修改
void Rev();
//查找
int Find(const Data* dat, const char* name);
void Ser(const Data* dat);
//显示
void Show(Data* dat);
//排序
void Sort();
分为三个文件,头文件和实现文件,主程序文件,主程序用一个do循环不断执行
头文件
#pragma once
#define MAX 100
#define MAX_NAME 100
#define MAX_SEX 5
#define MAX_TELE 12
#define MAX_ADDR 30
//人员信息
typedef struct _PeoInfo
{
char name[MAX_NAME];
int age;
char sex[MAX_SEX];
char tele[MAX_TELE];
char addr[MAX_ADDR];
}PeoInfo;
//联系人数据
typedef struct _Data
{
int sz; //数量
PeoInfo pl[MAX]; //联系人
}Data;
//选项
enum OPTION
{
EXIT,
ADD,
DEL,
REV,
SER,
SHOW,
SORT
};
//菜单
void menu();
//初始化
void Init(Data* dat);
//增加
void Add(Data* dat);
//删除
void Del(Data* dat);
//修改
void Rev();
//查找
int Find(const Data* dat, const char* name);
void Ser(const Data* dat);
//显示
void Show(Data* dat);
//排序
void Sort();
实现文件
#define _CRT_SECURE_NO_WARNINGS
#include "connect.h"
#include <stdio.h>
#include <string.h>
void menu()
{
printf("---------------------\n");
printf("----1.add 2.del----\n");
printf("----3.rev 4.ser----\n");
printf("----5.show 6.sort---\n");
printf("---------------------\n");
printf("请选择功能:\n");
}
void Init(Data* dat)
{
memset(dat->pl, 0, sizeof(dat->pl));
dat->sz = 0;
}
void Add(Data* dat)
{
//满了不能添加
if (dat->sz == MAX)
{
printf("通讯录已满,无法添加\n");
}
printf("请输入姓名\n");
scanf("%s", dat->pl[dat->sz].name);
printf("请输入年龄\n");
scanf("%d", &dat->pl[dat->sz].age);
printf("请输入性别\n");
scanf("%s", dat->pl[dat->sz].sex);
printf("请输入电话\n");
scanf("%s", dat->pl[dat->sz].tele);
printf("请输入地址\n");
scanf("%s", dat->pl[dat->sz].addr);
dat->sz++;
printf("成功增加联系人\n");
}
void Del(Data* dat)
{
//空
if (dat->sz == 0)
{
printf("通讯录为空\n");
return;
}
//输入
char name[MAX_NAME] = { 0 };
scanf("%s", name);
//查找
int ret = Find(dat, name);
//删除 往前覆盖
if (ret != -1)
{
for (int i = ret; i < dat->sz-1; i++)
{
dat->pl[i] = dat->pl[i + 1];
}
}
else
{
printf("不存在\n");
return;
}
dat->sz--;
printf("成功删除\n");
}
int Find(const Data* dat, const char* name)
{
int i = 0;
for (; i < dat->sz; i++)
{
printf("%s\n",dat->pl[i].name);
printf(name);
if (strcmp(dat->pl[i].name, name) == 0)
{
return i;
}
}
return -1;
}
void Rev()
{
}
void Ser(const Data* dat)
{
printf("请输入要查找的姓名:\n");
char name[20];
scanf("%s", name);
int ret = Find(dat, name);
if (ret != -1)
{
printf("%-10s%-8s%-6s%-10s%-20s\n", "姓名", "年龄", "性别", "电话", "地址");
printf("%-10s%-8d%-6s%-10s%-20s\n", dat->pl[ret].name, dat->pl[ret].age,
dat->pl[ret].sex, dat->pl[ret].tele,
dat->pl[ret].addr);
}
else {
printf("未找到\n");
}
}
void Show(Data* dat)
{
printf("%-10s%-8s%-6s%-10s%-20s\n","姓名","年龄","性别","电话","地址");
for (int i = 0; i < dat->sz; i++)
{
printf("%-10s%-8d%-6s%-10s%-20s\n", dat->pl[i].name, dat->pl[i].age,
dat->pl[i].sex, dat->pl[i].tele,
dat->pl[i].addr);
}
}
void Sort()
{
}
主程序文件
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "connect.h"
int g_val = 0;
int main()
{
int input;
Data data;
Init(&data);
do
{
menu();
scanf("%d",&input);
switch (input)
{
case ADD:
Add(&data);
break;
case DEL:
Del(&data);
break;
case REV:
Rev();
break;
case SER:
Ser(&data);
break;
case SHOW:
Show(&data);
break;
case EXIT:
return 0;
break;
default:
printf("输入错误\n");
break;
}
} while (1);
return 0;
}