用C语言建立一个函数,用来添加、显示、删除、查询、修改等信息,完成通讯录的功能。主函数可以调用五个子函数,分别完成添加记录、显示记录、删除记录、查询记录、修改记录、退出系统等功能。
时间: 2023-07-10 17:20:18 浏览: 128
C语言通讯录管理系统实现添加,查询,修改,删除等功能。
4星 · 用户满意度95%
好的,这是一个通讯录管理系统的代码示例,包含了添加、显示、删除、查询、修改等功能。具体实现如下:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_NAME_LEN 20
#define MAX_PHONE_LEN 11
#define MAX_ADDR_LEN 50
#define MAX_RECORDS 100
// 定义通讯录记录结构体
typedef struct {
char name[MAX_NAME_LEN];
char phone[MAX_PHONE_LEN];
char addr[MAX_ADDR_LEN];
} Record;
// 定义全局变量,记录通讯录中的记录数
int count = 0;
// 定义通讯录记录数组
Record records[MAX_RECORDS];
// 函数声明
void add_record();
void show_records();
void delete_record();
void query_record();
void modify_record();
// 主函数
int main()
{
int choice;
while (1) {
printf("\n");
printf("1. 添加记录\n");
printf("2. 显示记录\n");
printf("3. 删除记录\n");
printf("4. 查询记录\n");
printf("5. 修改记录\n");
printf("6. 退出系统\n");
printf("请选择操作:");
scanf("%d", &choice);
switch (choice) {
case 1:
add_record();
break;
case 2:
show_records();
break;
case 3:
delete_record();
break;
case 4:
query_record();
break;
case 5:
modify_record();
break;
case 6:
printf("退出系统.\n");
return 0;
default:
printf("无效的操作,请重新选择.\n");
break;
}
}
}
// 添加记录
void add_record()
{
if (count >= MAX_RECORDS) {
printf("通讯录已满,无法添加记录.\n");
return;
}
printf("请输入记录信息:\n");
printf("姓名:");
scanf("%s", records[count].name);
printf("电话:");
scanf("%s", records[count].phone);
printf("地址:");
scanf("%s", records[count].addr);
count++;
printf("添加成功.\n");
}
// 显示记录
void show_records()
{
if (count == 0) {
printf("通讯录为空.\n");
return;
}
printf("通讯录记录如下:\n");
printf("%-10s%-15s%-20s\n", "姓名", "电话", "地址");
for (int i = 0; i < count; i++) {
printf("%-10s%-15s%-20s\n", records[i].name, records[i].phone, records[i].addr);
}
}
// 删除记录
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(records[i].name, name) == 0) {
index = i;
break;
}
}
if (index == -1) {
printf("未找到该记录.\n");
return;
}
for (int i = index; i < count - 1; i++) {
records[i] = records[i+1];
}
count--;
printf("删除成功.\n");
}
// 查询记录
void query_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(records[i].name, name) == 0) {
index = i;
break;
}
}
if (index == -1) {
printf("未找到该记录.\n");
return;
}
printf("查询结果如下:\n");
printf("%-10s%-15s%-20s\n", "姓名", "电话", "地址");
printf("%-10s%-15s%-20s\n", records[index].name, records[index].phone, records[index].addr);
}
// 修改记录
void modify_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(records[i].name, name) == 0) {
index = i;
break;
}
}
if (index == -1) {
printf("未找到该记录.\n");
return;
}
printf("请输入修改后的记录信息:\n");
printf("电话:");
scanf("%s", records[index].phone);
printf("地址:");
scanf("%s", records[index].addr);
printf("修改成功.\n");
}
```
需要注意的是,这里的通讯录记录数组大小有限,最大只能存储100条记录。如果需要存储更多的记录,可以考虑使用链表等数据结构进行优化。
阅读全文