通讯录管理系统c数组指针
时间: 2023-12-03 07:04:12 浏览: 107
通讯录管理系统是一个常见的小项目,使用C语言中的数组和指针可以很好地实现。下面是一个简单的通讯录管理系统的示例代码:
```c
#include <stdio.h>
#include <string.h>
#define MAX 100
// 联系人结构体
typedef struct {
char name[20]; // 姓名
int age; // 年龄
char phone[20]; // 电话号码
char address[50]; // 地址
} Person;
// 通讯录结构体
typedef struct {
Person data[MAX]; // 联系人数组
int sz; // 联系人个数
} Contact;
// 初始化通讯录函数
void InitContact(Contact* pc) {
pc->sz = 0;
memset(pc->data, 0, sizeof(pc->data));
}
// 添加联系人函数
void AddContact(Contact* pc) {
if (pc->sz == MAX) {
printf("通讯录已满,无法添加新联系人!\n");
return;
}
Person p;
printf("请输入姓名:");
scanf("%s", p.name);
printf("请输入年龄:");
scanf("%d", &p.age);
printf("请输入电话号码:");
scanf("%s", p.phone);
printf("请输入地址:");
scanf("%s", p.address);
pc->data[pc->sz++] = p;
printf("添加联系人成功!\n");
}
// 显示所有联系人函数
void ShowContact(const Contact* pc) {
if (pc->sz == 0) {
printf("通讯录为空!\n");
return;
}
printf("%-20s%-10s%-20s%-50s\n", "姓名", "年龄", "电话号码", "地址");
for (int i = 0; i < pc->sz; ++i) {
printf("%-20s%-10d%-20s%-50s\n", pc->data[i].name, pc->data[i].age, pc->data[i].phone, pc->data[i].address);
}
}
// 查找联系人函数
void FindContact(const Contact* pc) {
if (pc->sz == 0) {
printf("通讯录为空!\n");
return;
}
char name[20];
printf("请输入要查找的姓名:");
scanf("%s", name);
for (int i = 0; i < pc->sz; ++i) {
if (strcmp(pc->data[i].name, name) == 0) {
printf("%-20s%-10d%-20s%-50s\n", pc->data[i].name, pc->data[i].age, pc->data[i].phone, pc->data[i].address);
return;
}
}
printf("未找到该联系人!\n");
}
int main() {
Contact c;
InitContact(&c);
while (1) {
printf("******************************\n");
printf("** 1.添加联系人 2.显示联系人 **\n");
printf("** 3.查找联系人 0.退出通讯录 **\n");
printf("******************************\n");
int choice;
printf("请选择:");
scanf("%d", &choice);
switch (choice) {
case 1:
AddContact(&c);
break;
case 2:
ShowContact(&c);
break;
case 3:
FindContact(&c);
break;
case 0:
printf("感谢使用通讯录管理系统,再见!\n");
return 0;
default:
printf("输入有误,请重新输入!\n");
break;
}
}
return 0;
}
```
阅读全文