当前位置:网站首页>通讯录(静态版)(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");
}
总结与效果
刚开始:
添加联系人信息:
删除指定联系人信息:
查找指定联系人信息:
修改指定联系人信息:
显示所有联系人信息:
以名字排序所有联系人:
清空所有联系人:
退出:
看完给个关注,多谢了!!!
边栏推荐
- Ts-Map 类的使用
- Flutter Widget 如何启用和屏蔽点击事件
- 【随心笔记】假期快过去了,都干了点什么
- OpenHarmony高校技术俱乐部计划发布
- 基于ArkUI eTS开发的坚果食谱(NutRecipes)
- 判断JS数据类型的四种方法
- bat倒计时代码
- [CLion] CLion always prompts "This file does not belong to any project target xxx" solution
- Hot review last week (7.25 7.31)
- js中常用追加元素的几种方法:append,appendTo,after,before,insertAfter,insertBefore,appendChild
猜你喜欢
随机推荐
并发编程10大坑,你踩过几个?
OpenHarmony高校技术俱乐部计划发布
数字化转型实践:世界级2B数字化营销的方法框架
leetcode/子矩阵元素和
Visualization of lag correlation of two time series data in R language: use the ccf function of the forecast package to draw the cross-correlation function, and analyze the lag correlation according t
Sparse representation - study notes
如何将第三方服务中心注册集成到 Istio ?
新书上市 |《谁在掷骰子?》在“不确定性时代”中确定前行
Istio Meetup China:全栈服务网格 - Aeraki 助你在 Istio 服务网格中管理任何七层流量
CAN通信的数据帧和远程帧
【公开课预告】:超分辨率技术在视频画质增强领域的研究与应用
轮询和长轮询的区别
[Nodejs] node的fs模块
AI目标分割能力,无需绿幕即可实现快速视频抠图
大众碰到点评的一个字体反爬,落地技术也是绝了
SQL函数 SQRT
Js手写函数之new的模拟实现
程序员如何优雅地解决线上问题?
pandas connects to the oracle database and pulls the data in the table into the dataframe, filters all the data from the current time (sysdate) to one hour ago (filters the range data of one hour)
js中常用追加元素的几种方法:append,appendTo,after,before,insertAfter,insertBefore,appendChild