1、定义结构体
定义来存储联系人的信息,如姓名、电话号码等的结构体。
#include <stdio.h>
#include <string.h>
#define MAX_CONTACTS 100
#define NAME_LENGTH 50
#define PHONE_LENGTH 15
// 定义联系人结构体
typedef struct {
char name[NAME_LENGTH];
char phone[PHONE_LENGTH];
} Contact;
// 定义电话簿结构体
typedef struct {
Contact contacts[MAX_CONTACTS];
int size;
} PhoneBook;
int main() {
printf("Hello, World!");
return 0;
}
2、添加联系人
实现一个函数,将新联系人的信息添加到存储结构中。
#include <stdio.h>
#include <string.h>
#define MAX_CONTACTS 100
#define NAME_LENGTH 50
#define PHONE_LENGTH 15
// 定义联系人结构体
typedef struct {
char name[NAME_LENGTH];
char phone[PHONE_LENGTH];
} Contact;
// 定义电话簿结构体
typedef struct {
Contact contacts[MAX_CONTACTS];
int size;
} PhoneBook;
// 初始化电话簿
void initPhoneBook(PhoneBook *phoneBook) {
phoneBook->size = 0;
}
// 添加联系人
void addContact(PhoneBook *phoneBook, const char *name, const char *phone) {
if (phoneBook->size < MAX_CONTACTS) {
strcpy(phoneBook->contacts[phoneBook->size].name, name);
strcpy(phoneBook->contacts[phoneBook->size].phone, phone);
phoneBook->size++;
printf("联系人添加成功!\n");
} else {
printf("电话簿已满,无法添加更多联系人。\n");
}
}
int main() {
printf("Hello, World!");
return 0;
}
3、显示所有联系人
遍历存储的联系人信息,将每个联系人的信息输出到屏幕上。
#include <stdio.h>
#include <string.h>
#define MAX_CONTACTS 100
#define NAME_LENGTH 50
#define PHONE_LENGTH 15
// 定义联系人结构体
typedef struct {
char name[NAME_LENGTH];
char phone[PHONE_LENGTH];
} Contact;
// 定义电话簿结构体
typedef struct {
Contact contacts[MAX_CONTACTS];
int size;
} PhoneBook;
// 初始化电话簿
void initPhoneBook(PhoneBook *phoneBook) {
phoneBook->size = 0;
}
// 显示所有联系人
void displayContacts(const PhoneBook *phoneBook) {
if (phoneBook->size == 0) {
printf("电话簿为空。\n");
} else {
printf("电话簿中的联系人:\n");
for (int i = 0; i < phoneBook->size; i++) {
printf("联系人 %d: 姓名: %s, 电话: %s\n", i + 1, phoneBook->contacts[i].name, phoneBook->contacts[i].phone);
}
}
}
int main() {
printf("Hello, World!");
return 0;
}
4、删除联系人
删除联系人时,需要找到目标联系人,然后将其从数据结构中移除。
#include <stdio.h>
#include <string.h>
#define MAX_CONTACTS 100
#define NAME_LENGTH 50
#define PHONE_LENGTH 15
// 定义联系人结构体
typedef struct {
char name[NAME_LENGTH];
char phone[PHONE_LENGTH];
} Contact;
// 定义电话簿结构体
typedef struct {
Contact contacts[MAX_CONTACTS];
int size;
} PhoneBook;
// 初始化电话簿
void initPhoneBook(PhoneBook *phoneBook) {
phoneBook->size = 0;
}
// 删除联系人
void deleteContact(PhoneBook *phoneBook, const char *name) {
int found = 0;
for (int i = 0; i < phoneBook->size; i++) {
if (strcmp(phoneBook->contacts[i].name, name) == 0) {
found = 1;
for (int j = i; j < phoneBook->size - 1; j++) {
phoneBook->contacts[j] = phoneBook->contacts[j + 1];
}
phoneBook->size--;
printf("联系人已删除。\n");
break;
}
}
if (!found) {
printf("未找到联系人。\n");
}
}
int main() {
printf("Hello, World!");
return 0;
}
5、完整代码
一个简单的电话簿实现,可以根据自己的需求进行扩展和完善。
#include <stdio.h>
#include <string.h>
#define MAX_CONTACTS 100
#define NAME_LENGTH 50
#define PHONE_LENGTH 15
// 定义联系人结构体
typedef struct {
char name[NAME_LENGTH];
char phone[PHONE_LENGTH];
} Contact;
// 定义电话簿结构体
typedef struct {
Contact contacts[MAX_CONTACTS];
int size;
} PhoneBook;
// 初始化电话簿
void initPhoneBook(PhoneBook *phoneBook) {
phoneBook->size = 0;
}
// 添加联系人
void addContact(PhoneBook *phoneBook, const char *name, const char *phone) {
if (phoneBook->size < MAX_CONTACTS) {
strcpy(phoneBook->contacts[phoneBook->size].name, name);
strcpy(phoneBook->contacts[phoneBook->size].phone, phone);
phoneBook->size++;
printf("联系人添加成功!\n");
} else {
printf("电话簿已满,无法添加更多联系人。\n");
}
}
// 显示所有联系人
void displayContacts(const PhoneBook *phoneBook) {
if (phoneBook->size == 0) {
printf("电话簿为空。\n");
} else {
printf("电话簿中的联系人:\n");
for (int i = 0; i < phoneBook->size; i++) {
printf("联系人 %d: 姓名: %s, 电话: %s\n", i + 1, phoneBook->contacts[i].name, phoneBook->contacts[i].phone);
}
}
}
// 删除联系人
void deleteContact(PhoneBook *phoneBook, const char *name) {
int found = 0;
for (int i = 0; i < phoneBook->size; i++) {
if (strcmp(phoneBook->contacts[i].name, name) == 0) {
found = 1;
for (int j = i; j < phoneBook->size - 1; j++) {
phoneBook->contacts[j] = phoneBook->contacts[j + 1];
}
phoneBook->size--;
printf("联系人已删除。\n");
break;
}
}
if (!found) {
printf("未找到联系人。\n");
}
}
int main() {
PhoneBook phoneBook;
initPhoneBook(&phoneBook);
int choice;
char name[NAME_LENGTH];
char phone[PHONE_LENGTH];
do {
printf("\n简易电话簿菜单:\n");
printf("1. 添加联系人\n");
printf("2. 查看联系人\n");
printf("3. 删除联系人\n");
printf("4. 退出\n");
printf("请选择操作: ");
scanf("%d", &choice);
switch (choice) {
case 1:
printf("请输入联系人姓名: ");
scanf("%s", name);
printf("请输入联系人电话: ");
scanf("%s", phone);
addContact(&phoneBook, name, phone);
break;
case 2:
displayContacts(&phoneBook);
break;
case 3:
printf("请输入要删除的联系人姓名: ");
scanf("%s", name);
deleteContact(&phoneBook, name);
break;
case 4:
printf("退出程序。\n");
break;
default:
printf("无效选项,请重新选择。\n");
}
} while (choice != 4);
return 0;
}