模拟手机通信录管理系统 主要功能有: (1) 查看功能:选择此功能,列出手机通信录得分类,如A同时、B家人、C朋友、D同学等分类,但选中某分类时,像是出此类所有数据中的姓名和电话号码; (2) 增加功能:录入新数据(包括姓名、电话号码、分类),当录入重复的姓名和电话号码时,提示结果错误并取消录入。 (3) 修改功能:对选择(选择的方式自定)的联系人,修改其通信录的相关信息,但如果修改姓名,不能跟其他已有的联系人的姓名不能重复。 (4) 删除功能:选择某个联系人的姓名,可对此人的相应数据进行删除 写出c语言代码
时间: 2024-03-25 20:39:37 浏览: 14
好的,我可以帮你提供一个简单的 C 语言代码实现。
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义联系人结构体
typedef struct {
char name[20]; // 姓名
char phone[20]; // 电话号码
char category; // 分类
} Contact;
// 定义联系人数组和数组长度
Contact contacts[100];
int num_contacts = 0;
// 查找联系人函数
void search_contacts(char category) {
printf("分类 %c 的联系人:\n", category);
for (int i = 0; i < num_contacts; i++) {
if (contacts[i].category == category) {
printf("%s\t%s\n", contacts[i].name, contacts[i].phone);
}
}
}
// 添加联系人函数
void add_contact() {
Contact new_contact;
printf("请输入姓名:");
scanf("%s", new_contact.name);
printf("请输入电话号码:");
scanf("%s", new_contact.phone);
printf("请输入分类(A/B/C/D):");
scanf(" %c", &new_contact.category);
// 检查姓名和电话是否重复
for (int i = 0; i < num_contacts; i++) {
if (strcmp(contacts[i].name, new_contact.name) == 0 || strcmp(contacts[i].phone, new_contact.phone) == 0) {
printf("录入错误:姓名或电话号码已存在!\n");
return;
}
}
// 添加联系人
contacts[num_contacts] = new_contact;
num_contacts++;
printf("成功添加联系人!\n");
}
// 修改联系人函数
void modify_contact() {
char name[20];
printf("请输入要修改的联系人的姓名:");
scanf("%s", name);
// 查找联系人
int index = -1;
for (int i = 0; i < num_contacts; i++) {
if (strcmp(contacts[i].name, name) == 0) {
index = i;
break;
}
}
if (index == -1) {
printf("未找到联系人!\n");
return;
}
// 修改联系人信息
printf("请输入新电话号码:");
scanf("%s", contacts[index].phone);
printf("请输入新分类(A/B/C/D):");
scanf(" %c", &contacts[index].category);
// 检查姓名是否重复
for (int i = 0; i < num_contacts; i++) {
if (i != index && strcmp(contacts[i].name, contacts[index].name) == 0) {
printf("修改错误:姓名已存在!\n");
return;
}
}
printf("成功修改联系人信息!\n");
}
// 删除联系人函数
void delete_contact() {
char name[20];
printf("请输入要删除的联系人的姓名:");
scanf("%s", name);
// 查找联系人
int index = -1;
for (int i = 0; i < num_contacts; i++) {
if (strcmp(contacts[i].name, name) == 0) {
index = i;
break;
}
}
if (index == -1) {
printf("未找到联系人!\n");
return;
}
// 删除联系人
for (int i = index; i < num_contacts - 1; i++) {
contacts[i] = contacts[i+1];
}
num_contacts--;
printf("成功删除联系人!\n");
}
int main() {
int choice;
while (1) {
// 显示菜单
printf("\n请选择功能:\n");
printf("1. 查看联系人\n");
printf("2. 添加联系人\n");
printf("3. 修改联系人\n");
printf("4. 删除联系人\n");
printf("5. 退出程序\n");
printf("请输入数字(1-5):");
scanf("%d", &choice);
// 执行相应操作
switch (choice) {
case 1:
printf("请选择分类(A/B/C/D):");
char category;
scanf(" %c", &category);
search_contacts(category);
break;
case 2:
add_contact();
break;
case 3:
modify_contact();
break;
case 4:
delete_contact();
break;
case 5:
return 0;
default:
printf("输入错误!\n");
}
}
return 0;
}
```
这个程序中,我们使用了一个结构体 `Contact` 来表示每个联系人的姓名、电话号码和分类。我们还定义了一个全局的联系人数组 `contacts` 和一个数组长度 `num_contacts` 来存储所有联系人。在主函数中,我们使用一个无限循环来显示菜单和执行各种操作,直到用户选择退出程序。
希望这个程序能够帮到你,如果有其他问题,欢迎继续提问。