用c语言写:通讯录管理:设计一个通讯录管理程序,要求包含下列基本功能:1.创建通讯录,支持多条信息的输入;2.增加一组记录;3.删除指定记录;4.根据给定条件查询记录;5.显示通讯录中所有记录信息;【要求】:1)在通讯录中,每个人的通讯信息用一条记录表示,其中至少包括姓名、电话号码、邮箱地址三个数据项。2)为了能够将通讯录的信息独立于程序永久性地保存起来,建议利用C语言提供的文件类型将通讯录信息存储成磁盘文件。3)考虑设计一个菜单,其中列出程序提供的功能,用户可以自由地选择其中的某项操作。
时间: 2024-03-10 17:43:26 浏览: 62
好的,以下是用 C 语言实现通讯录管理程序的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_NAME_LEN 20
#define MAX_PHONE_LEN 20
#define MAX_EMAIL_LEN 30
#define MAX_RECORD_NUM 1000
struct record {
char name[MAX_NAME_LEN];
char phone[MAX_PHONE_LEN];
char email[MAX_EMAIL_LEN];
};
struct record book[MAX_RECORD_NUM];
int count = 0;
void menu();
void add_record();
void delete_record();
void find_record();
void show_records();
void store_records();
void load_records();
int main()
{
load_records(); // 从文件中读取通讯录信息
menu(); // 显示菜单
return 0;
}
void menu()
{
int choice;
do {
printf("\n");
printf("通讯录管理系统\n");
printf("1. 添加记录\n");
printf("2. 删除记录\n");
printf("3. 查找记录\n");
printf("4. 显示所有记录\n");
printf("5. 保存记录到文件\n");
printf("6. 退出程序\n");
printf("请选择操作(1-6):");
scanf("%d", &choice);
switch (choice) {
case 1: add_record(); break;
case 2: delete_record(); break;
case 3: find_record(); break;
case 4: show_records(); break;
case 5: store_records(); break;
case 6: printf("退出程序\n"); break;
default: printf("输入错误,请重新选择\n");
}
} while (choice != 6);
}
void add_record()
{
if (count >= MAX_RECORD_NUM) {
printf("通讯录已满,无法添加记录\n");
return;
}
struct record r;
printf("请输入姓名:");
scanf("%s", r.name);
printf("请输入电话号码:");
scanf("%s", r.phone);
printf("请输入邮箱地址:");
scanf("%s", r.email);
book[count++] = r;
printf("添加成功\n");
}
void delete_record()
{
if (count == 0) {
printf("通讯录为空,无法删除记录\n");
return;
}
char name[MAX_NAME_LEN];
printf("请输入要删除的记录的姓名:");
scanf("%s", name);
int index = -1;
for (int i = 0; i < count; i++) {
if (strcmp(book[i].name, name) == 0) {
index = i;
break;
}
}
if (index == -1) {
printf("找不到要删除的记录\n");
return;
}
for (int i = index; i < count - 1; i++) {
book[i] = book[i + 1];
}
count--;
printf("删除成功\n");
}
void find_record()
{
if (count == 0) {
printf("通讯录为空,无法查找记录\n");
return;
}
char name[MAX_NAME_LEN];
printf("请输入要查找的记录的姓名:");
scanf("%s", name);
int found = 0;
for (int i = 0; i < count; i++) {
if (strcmp(book[i].name, name) == 0) {
printf("%s %s %s\n", book[i].name, book[i].phone, book[i].email);
found = 1;
}
}
if (!found) {
printf("找不到要查找的记录\n");
}
}
void show_records()
{
if (count == 0) {
printf("通讯录为空\n");
return;
}
for (int i = 0; i < count; i++) {
printf("%s %s %s\n", book[i].name, book[i].phone, book[i].email);
}
}
void store_records()
{
if (count == 0) {
printf("通讯录为空,无法保存记录\n");
return;
}
FILE *fp = fopen("book.dat", "wb");
if (!fp) {
printf("打开文件失败\n");
return;
}
fwrite(book, sizeof(struct record), count, fp);
fclose(fp);
printf("保存成功\n");
}
void load_records()
{
FILE *fp = fopen("book.dat", "rb");
if (!fp) {
printf("打开文件失败\n");
return;
}
count = fread(book, sizeof(struct record), MAX_RECORD_NUM, fp);
fclose(fp);
}
```
上述代码实现了通讯录管理系统的基本功能,包括创建通讯录、增加记录、删除记录、查询记录、显示所有记录和保存记录到文件。其中,每个人的通讯信息用一条记录表示,包括姓名、电话号码和邮箱地址三个数据项。
在程序中,定义了一个结构体 `struct record`,用于表示每个记录。通讯录用一个数组 `book` 来存储所有记录,最多可以存储 1000 条记录,这个数值可以根据实际情况进行调整。另外,使用一个变量 `count` 来记录当前存储的记录数。
程序的主函数中,首先从文件中读取通讯录信息,然后显示菜单。菜单提供了 6 个选项,分别对应 6 个不同的操作,用户可以根据需要选择相应的操作。在每个操作函数中,根据用户的输入进行相应的处理,然后给出相应的提示信息。
注意,在程序中,为了将通讯录的信息独立于程序永久性地保存起来,使用了 C 语言提供的文件类型将通讯录信息存储成磁盘文件。在程序运行时,会从文件中读取已保存的记录,然后在程序结束时将记录保存到文件中。
阅读全文