当前位置:网站首页>通讯录(静态版)(C语言)(VS)
通讯录(静态版)(C语言)(VS)
2022-08-01 12:10:00 【星尘不会落】
文章目录
前言
通讯录(静态版)
一、Text.c
#include"AddressList.h"
enum Usage
{
ALEXIT,
ALPLUS,
ALDELETE,
ALFSHOW,
ALREPLACE,
ALSHOW,
ALDESTORY,
ALSORT
};
void menu()
{
printf("\n");
printf(" 1.添加联系人信息 2.删除指定联系人信息\n");
printf(" 3.查找指定联系人信息 4.修改指定联系人信息\n");
printf(" 5.显示所有联系人信息 6.清空所有联系人\n");
printf(" 7.以名字排序所有联系人 0.退出\n");
printf("\n");
}
void Play()
{
AL address_list;
AL* pal = &address_list;
ALInIt(pal);
printf("欢迎进入通信录。\n");
int n;
do
{
menu();
printf("请输入:");
scanf("%d", &n);
switch (n)
{
//退出通讯录
case ALEXIT:
printf("退出通讯录中...\n");
break;
//添加联系人信息
case ALPLUS:
ALPlus(pal);
break;
//删除指定联系人信息
case ALDELETE:
ALDelete(pal);
break;
//查找指定联系人信息
case ALFSHOW:
ALFShow(pal);
break;
//修改指定联系人信息
case ALREPLACE:
ALReplace(pal);
break;
//显示所有联系人信息
case ALSHOW:
ALShow(pal);
break;
//清空所有联系人
case ALDESTORY:
ALDestory(pal);
break;
//以名字排序所有联系人
case ALSORT:
ALSort(pal);
break;
//选择错误
default:
printf("选择错误。");
break;
}
} while (n);
printf("退出通讯录成功。\n");
}
int main()
{
Play();
return 0;
}
二、AddressList.h
#pragma once
#define _CRT_SECURE_NO_WARNINGS 1
//_CRT_SECURE_NO_WARNINGS
//包含头文件
#include<stdio.h>
#include<assert.h>
#include<string.h>
#include<stdlib.h>
//定义
#define MAX 1000
#define MAX_NAME 10
#define MAX_GENDER 5
#define MAX_PHONE 12
#define MAX_ADDRESS 30
//人的信息包括:姓名、性别、年龄、电话、住址
typedef struct People
{
char name[MAX_NAME];//姓名
char gender[MAX_GENDER];//性别
char age;//年龄
char phone[MAX_PHONE];//电话
char address[MAX_ADDRESS];//住址
}P;
//通讯录可以用来存储1000个人的信息
typedef struct AddressList
{
P persons[MAX];
int sum;
}AL;
//通讯录初始化
void ALInIt(AL* pal);
//添加联系人信息
void ALPlus(AL* pal);
//删除指定联系人信息
void ALDelete(AL* pal);
//查找指定联系人信息
void ALFShow(const AL* pal);
//修改指定联系人信息
void ALReplace(AL* pal);
//显示所有联系人信息
void ALShow(const AL* pal);
//清空所有联系人
void ALDestory(AL* pal);
//以名字排序所有联系人
void ALSort(AL* pal);
三、AddressList.c
#include"AddressList.h"
//通讯录初始化
void ALInIt(AL* pal)
{
assert(pal);
pal->sum = 0;
memset(pal->persons, 0, sizeof(pal->persons));
}
static int ALFindName(const AL* pal,const char* name)
{
assert(pal);
int i;
for (i = 0;i < pal->sum;i++)
{
if (!(strcmp(name, pal->persons[i].name)))
return i;
}
return -1;
}
//添加联系人信息
void ALPlus(AL* pal)
{
assert(pal);
if (pal->sum == MAX)
{
printf("通讯录已达上限,无法添加。\n");
return;
}
else
{
printf("请添加联系人的姓名:");
scanf("%s",pal->persons[pal->sum].name);
printf("请添加联系人的性别:");
scanf("%s", pal->persons[pal->sum].gender);
printf("请添加联系人的年龄:");
scanf("%hhd", &pal->persons[pal->sum].age);
printf("请添加联系人的电话号码:");
scanf("%s", pal->persons[pal->sum].phone);
printf("请添加联系人的地址:");
scanf("%s", pal->persons[pal->sum].address);
printf("添加联系人%s信息成功!\n", pal->persons[pal->sum].name);
pal->sum++;
}
}
//删除指定联系人信息
void ALDelete(AL* pal)
{
assert(pal);
char tmp_name[MAX_NAME];
printf("请输入您要删除的联系人:");
scanf("%s", tmp_name);
int n = ALFindName(pal, tmp_name);
if (n == -1)
{
printf("查无此人。\n");
return;
}
else
{
int i;
for (i = n;i <= pal->sum - 1;i++)
pal->persons[i] = pal->persons[i + 1];
pal->sum--;
printf("删除联系人%s成功!\n", tmp_name);
}
}
//查找指定联系人信息
void ALFShow(const AL* pal)
{
assert(pal);
char tmp_name[MAX_NAME];
printf("请输入您要查找的联系人:");
scanf("%s", tmp_name);
int n = ALFindName(pal, tmp_name);
if (n == -1)
{
printf("查无此人。\n");
return;
}
else
{
printf("%3s%21s\t%5s\t%3s\t%12s\t%30s\n", "序列", "名字", "性别", "年龄", "电话", "地址");
printf("%3d:%20s\t%5s\t%4d\t%12s\t%30s\n", n + 1,
pal->persons[n].name,
pal->persons[n].gender,
pal->persons[n].age,
pal->persons[n].phone,
pal->persons[n].address);
}
}
//修改指定联系人信息
void ALReplace(AL* pal)
{
assert(pal);
char tmp_name[MAX_NAME];
printf("请输入您要修改的联系人的信息:");
scanf("%s", tmp_name);
int n = ALFindName(pal, tmp_name);
if (n == -1)
{
printf("查无此人。\n");
return;
}
else
{
printf("请修改联系人的姓名:");
scanf("%s", pal->persons[n].name);
printf("请修改联系人的性别:");
scanf("%s", pal->persons[n].gender);
printf("请修改联系人的年龄:");
scanf("%hhd", &pal->persons[n].age);
printf("请修改联系人的电话号码:");
scanf("%s", pal->persons[n].phone);
printf("请修改联系人的地址:");
scanf("%s", pal->persons[n].address);
printf("以成功修改联系人%s的信息为联系人%s的信息!\n", tmp_name, pal->persons[n].name);
}
}
//显示所有联系人信息
void ALShow(const AL* pal)
{
assert(pal);
int i;
printf("%3s%21s\t%5s\t%3s\t%12s\t%30s\n","序列", "名字", "性别", "年龄", "电话", "地址");
for (i = 0;i < pal->sum;i++)
{
printf("%3d:%20s\t%5s\t%4hhd\t%12s\t%30s\n", i + 1,
pal->persons[i].name,
pal->persons[i].gender,
pal->persons[i].age,
pal->persons[i].phone,
pal->persons[i].address);
}
}
//清空所有联系人
void ALDestory(AL* pal)
{
assert(pal);
ALInIt(pal);
printf("清空所有联系人成功!\n");
}
//以名字排序
int NameSort(const void* e1, const void* e2)
{
return strcmp(((P*)e1)->name, ((P*)e2)->name);
}
//以名字排序所有联系人
void ALSort(AL* pal)
{
assert(pal);
qsort(pal->persons,pal->sum , sizeof(P), NameSort);
printf("以名字排序所有联系人成功!\n");
}
总结与效果
刚开始:
添加联系人信息:
删除指定联系人信息:
查找指定联系人信息:
修改指定联系人信息:
显示所有联系人信息:
以名字排序所有联系人:
清空所有联系人:
退出:
看完给个关注,多谢了!!!
边栏推荐
猜你喜欢
随机推荐
The use of Ts - Map type
易周金融分析 | 银行ATM机智能化改造提速;互联网贷款新规带来挑战
How much do you know about Amazon reviews?
将同级数据处理成树形数据
Jenkins安装插件遇到的问题
Flutter Widget 如何启用和屏蔽点击事件
腾讯云原生:Areaki Mesh 在 2022 冬奥会视频直播应用中的服务网格实践
表达式引擎在转转平台的实践
Pytest e-commerce project combat (below)
Audio and Video Technology Development Weekly | 256
爱可可AI前沿推介(8.1)
SQL函数 SQUARE
R语言诊断ARIMA模型:forecast包构建了一个ARIMA模型、使用checkresiduals函数诊断ARIMA模型、并进行结果解读(拟合较差的ARIMA模型具有的特点)
如何使用 Authing 单点登录,集成 Discourse 论坛?
音视频技术开发周刊 | 256
R language fitting ARIMA model: use the auto.arima function in the forecast package to automatically search for the best parameter combination, model order (p, d, q), set the seasonal parameter to spe
字体反爬之好租
如何获取微信视频号的地址(微信公众号的链接地址)
(ES6以上以及TS) Map对象转数组
英特尔全方位打造算力基础,助推“算”赋百业