博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C 语言通讯录(结构体)
阅读量:3950 次
发布时间:2019-05-24

本文共 4361 字,大约阅读时间需要 14 分钟。

#define _CRT_SECURE_NO_WARNINGS#include
#include
#include
#include
#define NameMax 100#define TeleMax 12#define AddressMax 200#define DEFAULT 10typedef struct info {
char name[NameMax]; char tele[TeleMax]; char addr[AddressMax];}info;typedef struct Contact {
info* data; // 结构体数组,存放通讯录中人的信息 int size; // 当前有效元素个数 int capacity; // 当前空间大小}Contact,*pContact;void InitContact(pContact pc) {
// 初始化 system("cls"); pc->size = 0; pc->data = (info*)malloc(sizeof(info) * DEFAULT); pc->capacity = DEFAULT;}int CheckCapacity(pContact pc) {
// 检查空间是否够用,若不够用再申请 if (pc->size == pc->capacity) {
pc->data = (info*)realloc(pc->data,sizeof(info)*( pc->capacity + 10)); if (pc->data == NULL) {
return 0; } pc->capacity += 10; } return 1;}void AddContact(pContact pc) {
// 添加信息 system("cls"); info AddInfo; int judge = 1; printf("输入1继续输入,输入0结束输入\n"); while (1) {
if (CheckCapacity(pc) == 0) {
printf("通讯录已满!添加失败\n"); return; } printf("请输入姓名:\n"); scanf("%s", AddInfo.name); printf("请输入电话:\n"); scanf("%s", AddInfo.tele); printf("请输入地址:\n"); scanf("%s", AddInfo.addr); pc->data[pc->size] = AddInfo; pc->size++; scanf("%d", &judge); if (judge == 0) {
break; } } }int FindContact(pContact pc,char* name) {
for (int i = 0; i < pc->size; ++i) {
if (strcmp(pc->data[i].name, name) == 0) {
return i; } } return -1;}void DelContact(pContact pc) {
system("cls"); char name[NameMax]; printf("请输入要删除的人的姓名:\n"); scanf("%s", name); int pos = FindContact(pc, name); if (pos == -1) {
printf("此人不存在!删除失败!\n"); return; } for (int i = pos; i < pc->size-1; ++i) {
pc->data[i] = pc->data[i + 1]; } pc->size--; printf("删除成功!\n");}void SearchContact(pContact pc) {
system("cls"); char name[NameMax]; printf("请输入要查找的人!\n"); scanf("%s", name); int pos = FindContact(pc, name); if (pos == -1) {
printf("此人不存在,查找失败!"); return; } printf("+=================================================+\n"); printf("| 姓名:%s \n", pc->data[pos].name); printf("| 电话:%s \n", pc->data[pos].tele); printf("| 地址:%s \n", pc->data[pos].addr); printf("+=================================================+\n"); system("pause");}void ModifyContact(pContact pc) {
system("cls"); char name[NameMax]; printf("请输入要修改的人的姓名:\n"); scanf("%s", name); int pos = FindContact(pc, name); if (pos == -1) {
printf("此人不存在,修改失败!\n"); return; } printf("请输入姓名:\n"); scanf("%s",pc->data[pos].name); printf("请输入电话:\n"); scanf("%s", pc->data[pos].tele); printf("请输入地址:\n"); scanf("%s", pc->data[pos].addr); printf("修改成功!\n"); }void ShowContact(pContact pc) {
system("cls"); for (int i = 0; i < pc->size; ++i) {
printf("+======================第%d个人========================== +\n",i+1); printf("| 姓名:%s \n", pc->data[i].name); printf("| 电话:%s \n", pc->data[i].tele); printf("| 地址:%s \n", pc->data[i].addr); printf("+========================================================= +\n"); } system("pause");}void menu() {
printf("\n\n\n\n\n\n\t\t\t\t\n"); printf("\t\t\t\t\t========================\n"); printf("\t\t\t\t\t\t1.增加信息 \n"); printf("\t\t\t\t\t\t2.删除信息 \n"); printf("\t\t\t\t\t\t3.修改信息 \n"); printf("\t\t\t\t\t\t4.查找信息 \n"); printf("\t\t\t\t\t\t5.显示信息 \n"); printf("\t\t\t\t\t\t0.退出程序 \n"); printf("\t\t\t\t\t========================\n");}void fun() {
Contact pc; InitContact(&pc); while (1) {
system("cls"); menu(); int choice; scanf("%d",&choice); switch (choice) {
case 1:AddContact(&pc); break; case 2:DelContact(&pc); break; case 3:ModifyContact(&pc); break; case 4:SearchContact(&pc); break; case 5:ShowContact(&pc); break; case 0:return; } }}int main() {
system("title 通讯录"); fun();}

转载地址:http://hqwzi.baihongyu.com/

你可能感兴趣的文章
ranger通过web界面登录用户验证类UsernamePasswordAuthenticationFilter
查看>>
墨菲定律——职场
查看>>
java匿名内部类原理及使用
查看>>
java基础学习之Timer定时器使用
查看>>
Linux中修改环境变量及快速生效方法
查看>>
解决报错 “build.sh /bin/bash^M: 坏的解释器:没有那个文件或目录”
查看>>
linux学习之tr操作符用法
查看>>
shell的dirname $0和readlink用法
查看>>
设计模式——外观模式详解
查看>>
Android APP架构设计——MVC、MVP和MVVM介绍
查看>>
Android APP架构设计——MVP的使用示例
查看>>
Android开发——布局性能优化的一些技巧(一)
查看>>
NetWork——关于TCP协议的三次握手和四次挥手
查看>>
设计模式——观察者模式详解
查看>>
Java集合——LinkedList源码详解
查看>>
Android开发——LinearLayout和RelativeLayout的性能对比
查看>>
NetWork——关于HTTP、HTTPS的知识总结(以及Android网络优化建议)
查看>>
Android开发——支付宝和微信支付快速接入流程
查看>>
NetWork——TCP的流量控制和拥塞控制
查看>>
Android开发——解决方法数越界问题
查看>>