C语言完成一个通讯录
时间: 2024-09-12 07:11:14 浏览: 40
C语言课程设计之通讯录
在C语言中实现一个通讯录涉及到结构体的定义、文件的读写操作以及用户界面的设计。以下是一个简单的示例,展示如何用C语言实现一个基础的通讯录功能:
首先,定义一个结构体来保存联系人信息:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_CONTACTS 100
#define NAME_LEN 50
#define PHONE_LEN 20
// 定义联系人结构体
typedef struct {
char name[NAME_LEN];
char phone[PHONE_LEN];
int is_valid; // 用于标记该条记录是否有效
} Contact;
```
然后,定义一个通讯录结构体,包含一个联系人数组以及当前联系人的数量:
```c
// 定义通讯录结构体
typedef struct {
Contact contacts[MAX_CONTACTS];
int contact_count;
} AddressBook;
```
接着,实现一些基本的功能函数,比如添加新的联系人、显示所有联系人、保存通讯录到文件、从文件加载通讯录等:
```c
// 添加联系人
void AddContact(AddressBook *book, const char *name, const char *phone) {
if (book->contact_count < MAX_CONTACTS) {
strncpy(book->contacts[book->contact_count].name, name, NAME_LEN);
strncpy(book->contacts[book->contact_count].phone, phone, PHONE_LEN);
book->contacts[book->contact_count].is_valid = 1;
book->contact_count++;
} else {
printf("通讯录已满,无法添加新的联系人。\n");
}
}
// 显示所有联系人
void DisplayContacts(const AddressBook *book) {
for (int i = 0; i < book->contact_count; i++) {
if (book->contacts[i].is_valid) {
printf("姓名: %s, 电话: %s\n", book->contacts[i].name, book->contacts[i].phone);
}
}
}
// 保存通讯录到文件
void SaveAddressBook(const AddressBook *book, const char *filename) {
FILE *file = fopen(filename, "w");
if (file == NULL) {
printf("无法打开文件 %s\n", filename);
return;
}
for (int i = 0; i < book->contact_count; i++) {
if (book->contacts[i].is_valid) {
fprintf(file, "%s %s\n", book->contacts[i].name, book->contacts[i].phone);
}
}
fclose(file);
}
// 从文件加载通讯录
void LoadAddressBook(AddressBook *book, const char *filename) {
FILE *file = fopen(filename, "r");
if (file == NULL) {
printf("无法打开文件 %s\n", filename);
return;
}
book->contact_count = 0; // 清空通讯录
while (fscanf(file, "%49s %19s\n", book->contacts[book->contact_count].name, book->contacts[book->contact_count].phone) == 2) {
book->contacts[book->contact_count].is_valid = 1;
book->contact_count++;
if (book->contact_count >= MAX_CONTACTS) {
break;
}
}
fclose(file);
}
// 主函数实现通讯录操作流程
int main() {
AddressBook book = {0}; // 初始化通讯录
// 示例:添加联系人
AddContact(&book, "张三", "12345678901");
AddContact(&book, "李四", "23456789012");
// 显示通讯录
DisplayContacts(&book);
// 保存通讯录到文件
SaveAddressBook(&book, "addressbook.txt");
// 清空通讯录
book.contact_count = 0;
// 从文件加载通讯录
LoadAddressBook(&book, "addressbook.txt");
// 再次显示通讯录
DisplayContacts(&book);
return 0;
}
```
这个示例程序提供了通讯录的基本框架,但还需要增加更多的功能,例如删除联系人、编辑联系人信息、搜索联系人等,以及用户界面的设计,以便用户可以通过菜单选择他们想要执行的操作。
阅读全文