用c语言代码实现设计一个实用的小型通讯录程序,具有添加,修改,查询和删除功能。每一条通讯录信息由姓名,籍贯,电话号码1,电话号码2,电子邮箱组成,姓名可以由字符和数字混合编码,电话号码可由字符和数字组成。 实现功能: (1)系统以菜单方式工作 (2)信息录入功能 (3)信息删除功能 (4)信息查询功能 (5)信息修改功能 (6)系统退出功能
时间: 2024-02-21 10:57:31 浏览: 63
好的,以下是一个简单的实现:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_CONTACTS 100 // 最大通讯录容量
#define NAME_LEN 50 // 姓名最大长度
#define ADDR_LEN 100 // 籍贯最大长度
#define PHONE_LEN 20 // 电话号码最大长度
#define EMAIL_LEN 30 // 电子邮箱最大长度
// 通讯录结构体
typedef struct {
char name[NAME_LEN];
char addr[ADDR_LEN];
char phone1[PHONE_LEN];
char phone2[PHONE_LEN];
char email[EMAIL_LEN];
} Contact;
// 全局变量
Contact contacts[MAX_CONTACTS]; // 通讯录数组
int num_contacts = 0; // 通讯录中的联系人数量
// 函数声明
void print_menu();
void add_contact();
void delete_contact();
void find_contact();
void modify_contact();
int main() {
int choice;
do {
print_menu();
scanf("%d", &choice);
switch (choice) {
case 1:
add_contact();
break;
case 2:
delete_contact();
break;
case 3:
find_contact();
break;
case 4:
modify_contact();
break;
case 5:
printf("谢谢使用!\n");
break;
default:
printf("无效的选项,请重新输入。\n");
break;
}
} while (choice != 5);
return 0;
}
// 打印菜单
void print_menu() {
printf("欢迎使用小型通讯录程序!\n");
printf("1. 添加联系人\n");
printf("2. 删除联系人\n");
printf("3. 查询联系人\n");
printf("4. 修改联系人\n");
printf("5. 退出程序\n");
printf("请输入选项(1-5):");
}
// 添加联系人
void add_contact() {
if (num_contacts >= MAX_CONTACTS) {
printf("通讯录已满,无法添加更多联系人。\n");
return;
}
Contact new_contact;
printf("请输入联系人姓名:");
scanf("%s", new_contact.name);
printf("请输入联系人籍贯:");
scanf("%s", new_contact.addr);
printf("请输入联系人电话号码1:");
scanf("%s", new_contact.phone1);
printf("请输入联系人电话号码2:");
scanf("%s", new_contact.phone2);
printf("请输入联系人电子邮箱:");
scanf("%s", new_contact.email);
contacts[num_contacts++] = new_contact;
printf("联系人已添加成功!\n");
}
// 删除联系人
void delete_contact() {
char name[NAME_LEN];
int i, j;
printf("请输入要删除的联系人姓名:");
scanf("%s", name);
for (i = 0; i < num_contacts; i++) {
if (strcmp(contacts[i].name, name) == 0) {
// 找到要删除的联系人,将后面的联系人向前移动
for (j = i; j < num_contacts - 1; j++) {
contacts[j] = contacts[j + 1];
}
num_contacts--;
printf("联系人已删除成功!\n");
return;
}
}
printf("未找到该联系人。\n");
}
// 查询联系人
void find_contact() {
char name[NAME_LEN];
int i;
printf("请输入要查询的联系人姓名:");
scanf("%s", name);
for (i = 0; i < num_contacts; i++) {
if (strcmp(contacts[i].name, name) == 0) {
printf("姓名:%s\n", contacts[i].name);
printf("籍贯:%s\n", contacts[i].addr);
printf("电话号码1:%s\n", contacts[i].phone1);
printf("电话号码2:%s\n", contacts[i].phone2);
printf("电子邮箱:%s\n", contacts[i].email);
return;
}
}
printf("未找到该联系人。\n");
}
// 修改联系人
void modify_contact() {
char name[NAME_LEN];
int i;
printf("请输入要修改的联系人姓名:");
scanf("%s", name);
for (i = 0; i < num_contacts; i++) {
if (strcmp(contacts[i].name, name) == 0) {
printf("请输入新的联系人姓名(留空表示不修改):");
scanf("%s", contacts[i].name);
printf("请输入新的联系人籍贯(留空表示不修改):");
scanf("%s", contacts[i].addr);
printf("请输入新的联系人电话号码1(留空表示不修改):");
scanf("%s", contacts[i].phone1);
printf("请输入新的联系人电话号码2(留空表示不修改):");
scanf("%s", contacts[i].phone2);
printf("请输入新的联系人电子邮箱(留空表示不修改):");
scanf("%s", contacts[i].email);
printf("联系人已修改成功!\n");
return;
}
}
printf("未找到该联系人。\n");
}
```
注意,这个实现有很多不足之处,比如没有对输入进行合法性检查,没有对通讯录进行排序等等。但是它可以作为一个基础版本,供你参考和扩展。
阅读全文