下面是详细的“C语言实现静态存储通讯录的示例代码”的攻略:
一、准备工作
1. 安装开发环境
首先需要安装C语言开发环境,推荐使用Code::Blocks,可以在官网https://www.codeblocks.org/上进行下载和安装。
2. 创建项目
在Code::Blocks中,选择File->New->Project,选择“Console application”,按照提示设置项目名称和路径等信息,创建一个新的C语言项目。
3. 编写代码
根据通讯录的需求,编写相应的代码,包括定义结构体、添加联系人、删除联系人、显示所有联系人等操作。具体代码如下:
#include <stdio.h>
#include <string.h>
#define MAX_CONTACTS 100 // 最大联系人数
#define MAX_NAME_LEN 20 // 姓名的最大长度
#define MAX_PHONE_LEN 20 // 电话号码的最大长度
// 定义联系人结构体
struct Contact {
char name[MAX_NAME_LEN];
char phone[MAX_PHONE_LEN];
};
// 定义通讯录结构体
struct AddressBook {
struct Contact contacts[MAX_CONTACTS];
int count; // 当前联系人数
};
// 向通讯录添加联系人
void addContact(struct AddressBook *addressBook) {
if (addressBook->count >= MAX_CONTACTS) {
printf("通讯录已满!\n");
return;
}
printf("请输入联系人姓名:\n");
scanf("%s", addressBook->contacts[addressBook->count].name); // 输入姓名
printf("请输入联系人电话:\n");
scanf("%s", addressBook->contacts[addressBook->count].phone); // 输入电话
addressBook->count++; // 当前联系人数加一
printf("添加联系人成功!\n");
}
// 从通讯录删除联系人
void deleteContact(struct AddressBook *addressBook, char *name) {
int index = -1;
// 查找姓名对应的联系人
for (int i = 0; i < addressBook->count; i++) {
if (strcmp(name, addressBook->contacts[i].name) == 0) {
index = i;
break;
}
}
if (index == -1) {
printf("联系人不存在!\n");
return;
}
// 移动后面的联系人,覆盖被删除的联系人
for (int i = index + 1; i < addressBook->count; i++) {
addressBook->contacts[i - 1] = addressBook->contacts[i];
}
addressBook->count--; // 当前联系人数减一
printf("删除联系人成功!\n");
}
// 显示所有联系人
void showContacts(struct AddressBook *addressBook) {
if (addressBook->count == 0) {
printf("通讯录为空!\n");
return;
}
printf("共有%d个联系人:\n", addressBook->count);
for (int i = 0; i < addressBook->count; i++) {
printf("%d.姓名:%s,电话:%s\n", i + 1, addressBook->contacts[i].name, addressBook->contacts[i].phone);
}
}
int main() {
struct AddressBook addressBook = {{}, 0}; // 初始化为空通讯录
int choice;
// 提示用户输入命令
while (1) {
printf("\n请输入指令:\n");
printf("1.添加联系人\n");
printf("2.删除联系人\n");
printf("3.显示所有联系人\n");
printf("0.退出\n");
scanf("%d", &choice);
switch (choice) {
case 1:
addContact(&addressBook);
break;
case 2: {
char name[MAX_NAME_LEN];
printf("请输入要删除的联系人姓名:\n");
scanf("%s", name);
deleteContact(&addressBook, name);
break;
}
case 3:
showContacts(&addressBook);
break;
case 0:
return 0;
default:
printf("无效的指令!\n");
}
}
}
二、示例说明
1. 添加联系人
当用户选择1,即“添加联系人”时,程序会提示用户输入联系人姓名和电话,依次将输入的姓名和电话保存到下一个空闲的联系人位置,同时更新联系人数。如果通讯录已满,则提示“通讯录已满!”。代码如下:
void addContact(struct AddressBook *addressBook) {
if (addressBook->count >= MAX_CONTACTS) {
printf("通讯录已满!\n");
return;
}
printf("请输入联系人姓名:\n");
scanf("%s", addressBook->contacts[addressBook->count].name); // 输入姓名
printf("请输入联系人电话:\n");
scanf("%s", addressBook->contacts[addressBook->count].phone); // 输入电话
addressBook->count++; // 当前联系人数加一
printf("添加联系人成功!\n");
}
2. 删除联系人
当用户选择2,即“删除联系人”时,程序会提示用户输入待删除联系人的姓名。如果找到了该联系人,则将该联系人的信息从通讯录中删除,并将后面的联系人依次向前移动。如果未找到该联系人,则提示“联系人不存在!”。代码如下:
void deleteContact(struct AddressBook *addressBook, char *name) {
int index = -1;
// 查找姓名对应的联系人
for (int i = 0; i < addressBook->count; i++) {
if (strcmp(name, addressBook->contacts[i].name) == 0) {
index = i;
break;
}
}
if (index == -1) {
printf("联系人不存在!\n");
return;
}
// 移动后面的联系人,覆盖被删除的联系人
for (int i = index + 1; i < addressBook->count; i++) {
addressBook->contacts[i - 1] = addressBook->contacts[i];
}
addressBook->count--; // 当前联系人数减一
printf("删除联系人成功!\n");
}
以上就是“C语言实现静态存储通讯录的示例代码”的完整攻略,希望对你有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C语言实现静态存储通讯录的示例代码 - Python技术站