当前位置:网站首页>通讯录(静态版)(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");
}
总结与效果
刚开始:
添加联系人信息:
删除指定联系人信息:
查找指定联系人信息:
修改指定联系人信息:
显示所有联系人信息:
以名字排序所有联系人:
清空所有联系人:
退出:
看完给个关注,多谢了!!!
边栏推荐
- 阿里云官方 Redis 开发规范
- 软件设计师考点汇总(室内设计师个人总结)
- R语言ggplot2可视化:使用ggpubr包的ggdensity函数可视化密度图、使用stat_central_tendency函数在密度中添加均值竖线并自定义线条类型
- MVVM响应式
- 万字解析:vector类
- [Cloud Enjoying Freshness] Community Weekly Vol.73- DTSE Tech Talk: 1 hour in-depth interpretation of SaaS application system design
- 这项工作事关中小学生生命安全!五部门作出联合部署
- 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)
- [Nodejs] node的fs模块
- Envoy source code flow chart
猜你喜欢
随机推荐
(ES6以上以及TS) Map对象转数组
How to use DevExpress controls to draw flowcharts?After reading this article, you will understand!
SQL函数 SQRT
pgAdmin 4 v6.12 发布,PostgreSQL 开源图形化管理工具
【讲座分享】“营收“看金融
CloudCompare & PCL ICP registration (point to face)
Promise learning (4) The ultimate solution for asynchronous programming async + await: write asynchronous code in a synchronous way
如何将第三方服务中心注册集成到 Istio ?
实现集中式身份认证管理的案例
用户体验 | 如何度量用户体验 ?
Dameng replaces the officially authorized dm.key
【倒计时5天】探索音画质量提升背后的秘密,千元大礼等你来拿
易周金融分析 | 银行ATM机智能化改造提速;互联网贷款新规带来挑战
Js手写函数之new的模拟实现
【公开课预告】:超分辨率技术在视频画质增强领域的研究与应用
【公开课预告】:超分辨率技术在视频画质增强领域的研究与应用
一文带你读懂云原生、微服务与高可用
pandas连接oracle数据库并拉取表中数据到dataframe中、筛选当前时间(sysdate)到一个小时之前的所有数据(筛选一个小时的范围数据)
R language ggplot2 visualization: use ggpubr package ggscatter function visualization scatterplot, use xscale wasn't entirely specified X axis measurement adjustment function, set the X coordinate for
关于亚马逊测评,你了解多少?