用c语言写:通讯录管理:设计一个通讯录管理程序,要求包含下列基本功能:1.创建通讯录,支持多条信息的输入;2.增加一组记录;3.删除指定记录;4.根据给定条件查询记录;5.显示通讯录中所有记录信息;【要求】:1)在通讯录中,每个人的通讯信息用一条记录表示,其中至少包括姓名、电话号码、邮箱地址三个数据项。2)为了能够将通讯录的信息独立于程序永久性地保存起来,建议利用C语言提供的文件类型将通讯录信息存储成磁盘文件。
时间: 2024-03-08 14:50:25 浏览: 73
好的,下面是用C语言实现通讯录管理的程序:
```
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_CONTACTS 1000 //通讯录最大记录数
#define MAX_NAME_LEN 50 //姓名最大长度
#define MAX_PHONE_LEN 20 //电话号码最大长度
#define MAX_EMAIL_LEN 50 //邮箱地址最大长度
//通讯录记录结构体
typedef struct contact {
char name[MAX_NAME_LEN];
char phone[MAX_PHONE_LEN];
char email[MAX_EMAIL_LEN];
} Contact;
//通讯录结构体
typedef struct contacts {
Contact list[MAX_CONTACTS]; //通讯录记录数组
int count; //通讯录记录数
} Contacts;
//函数声明
void menu();
void createContacts(Contacts *c);
void addContact(Contacts *c);
void deleteContact(Contacts *c);
void queryContact(Contacts *c);
void displayContacts(Contacts *c);
void saveContactsToFile(Contacts *c);
void loadContactsFromFile(Contacts *c);
//主函数
int main() {
Contacts myContacts;
myContacts.count = 0;
loadContactsFromFile(&myContacts);
menu(&myContacts);
saveContactsToFile(&myContacts);
return 0;
}
//菜单函数
void menu(Contacts *c) {
int choice;
do {
printf("\n*******************************\n");
printf("* 通讯录管理程序 *\n");
printf("*******************************\n");
printf("* 1. 创建通讯录 *\n");
printf("* 2. 增加记录 *\n");
printf("* 3. 删除记录 *\n");
printf("* 4. 查询记录 *\n");
printf("* 5. 显示所有记录 *\n");
printf("* 0. 退出程序 *\n");
printf("*******************************\n");
printf("请选择:");
scanf("%d", &choice);
switch (choice) {
case 1:
createContacts(c);
break;
case 2:
addContact(c);
break;
case 3:
deleteContact(c);
break;
case 4:
queryContact(c);
break;
case 5:
displayContacts(c);
break;
case 0:
printf("谢谢使用,再见!\n");
break;
default:
printf("无效选择,请重新输入!\n");
break;
}
} while (choice != 0);
}
//创建通讯录函数
void createContacts(Contacts *c) {
printf("请输入要创建的记录数:");
scanf("%d", &(c->count));
if (c->count > MAX_CONTACTS) {
printf("记录数超出最大限制,创建失败!\n");
c->count = 0;
} else {
for (int i = 0; i < c->count; i++) {
printf("请输入第%d条记录:\n", i+1);
printf("姓名:");
scanf("%s", c->list[i].name);
printf("电话号码:");
scanf("%s", c->list[i].phone);
printf("邮箱地址:");
scanf("%s", c->list[i].email);
}
printf("创建成功!\n");
}
}
//增加记录函数
void addContact(Contacts *c) {
if (c->count >= MAX_CONTACTS) {
printf("记录数已满,无法添加!\n");
} else {
printf("请输入要添加的记录:\n");
printf("姓名:");
scanf("%s", c->list[c->count].name);
printf("电话号码:");
scanf("%s", c->list[c->count].phone);
printf("邮箱地址:");
scanf("%s", c->list[c->count].email);
c->count++;
printf("添加成功!\n");
}
}
//删除记录函数
void deleteContact(Contacts *c) {
char name[MAX_NAME_LEN];
printf("请输入要删除的记录的姓名:");
scanf("%s", name);
int index = -1;
for (int i = 0; i < c->count; i++) {
if (strcmp(c->list[i].name, name) == 0) {
index = i;
break;
}
}
if (index == -1) {
printf("找不到要删除的记录!\n");
} else {
for (int i = index; i < c->count-1; i++) {
c->list[i] = c->list[i+1];
}
c->count--;
printf("删除成功!\n");
}
}
//查询记录函数
void queryContact(Contacts *c) {
char name[MAX_NAME_LEN];
printf("请输入要查询的记录的姓名:");
scanf("%s", name);
int count = 0;
for (int i = 0; i < c->count; i++) {
if (strcmp(c->list[i].name, name) == 0) {
printf("姓名:%s\n", c->list[i].name);
printf("电话号码:%s\n", c->list[i].phone);
printf("邮箱地址:%s\n", c->list[i].email);
count++;
}
}
if (count == 0) {
printf("找不到要查询的记录!\n");
}
}
//显示所有记录函数
void displayContacts(Contacts *c) {
if (c->count == 0) {
printf("通讯录为空!\n");
} else {
printf("所有记录如下:\n");
for (int i = 0; i < c->count; i++) {
printf("姓名:%s\n", c->list[i].name);
printf("电话号码:%s\n", c->list[i].phone);
printf("邮箱地址:%s\n", c->list[i].email);
}
}
}
//保存通讯录到文件函数
void saveContactsToFile(Contacts *c) {
FILE *fp;
fp = fopen("contacts.dat", "wb");
if (fp == NULL) {
printf("文件打开失败!\n");
return;
}
fwrite(&(c->count), sizeof(int), 1, fp);
fwrite(c->list, sizeof(Contact), c->count, fp);
fclose(fp);
printf("通讯录已保存到文件!\n");
}
//从文件加载通讯录函数
void loadContactsFromFile(Contacts *c) {
FILE *fp;
fp = fopen("contacts.dat", "rb");
if (fp == NULL) {
printf("文件打开失败!\n");
return;
}
fread(&(c->count), sizeof(int), 1, fp);
fread(c->list, sizeof(Contact), c->count, fp);
fclose(fp);
printf("从文件加载通讯录成功!\n");
}
```
在通讯录中,每个人的通讯信息用一条记录表示,其中至少包括姓名、电话号码、邮箱地址三个数据项。为了能够将通讯录的信息独立于程序永久性地保存起来,利用C语言提供的文件类型将通讯录信息存储成磁盘文件。程序中包含了创建通讯录、增加记录、删除记录、查询记录、显示所有记录、保存通讯录到文件、从文件加载通讯录等基本功能,用户可以根据需要选择相应的操作。
阅读全文