用 C++写一个班级通讯录
时间: 2023-12-27 19:45:21 浏览: 81
下面是一个简单的班级通讯录示例,使用了结构体和指针来存储和访问联系人信息:
```
#include <stdio.h>
#include <string.h>
#define MAX_NAME_LEN 20
#define MAX_PHONE_LEN 12
#define MAX_EMAIL_LEN 30
#define MAX_CONTACTS 100
typedef struct {
char name[MAX_NAME_LEN];
char phone[MAX_PHONE_LEN];
char email[MAX_EMAIL_LEN];
} Contact;
int main() {
Contact contacts[MAX_CONTACTS];
int num_contacts = 0;
while (1) {
printf("Enter command (add, list, find, quit): ");
char command[10];
scanf("%s", command);
if (strcmp(command, "add") == 0) {
if (num_contacts == MAX_CONTACTS) {
printf("Error: contact list full\n");
} else {
Contact *new_contact = &contacts[num_contacts];
printf("Enter name: ");
scanf("%s", new_contact->name);
printf("Enter phone number: ");
scanf("%s", new_contact->phone);
printf("Enter email address: ");
scanf("%s", new_contact->email);
num_contacts++;
printf("Contact added.\n");
}
} else if (strcmp(command, "list") == 0) {
printf("Contacts:\n");
for (int i = 0; i < num_contacts; i++) {
printf("%s\t%s\t%s\n",
contacts[i].name,
contacts[i].phone,
contacts[i].email);
}
} else if (strcmp(command, "find") == 0) {
printf("Enter name to find: ");
char name[MAX_NAME_LEN];
scanf("%s", name);
Contact *found_contact = NULL;
for (int i = 0; i < num_contacts; i++) {
if (strcmp(contacts[i].name, name) == 0) {
found_contact = &contacts[i];
break;
}
}
if (found_contact) {
printf("%s\t%s\t%s\n",
found_contact->name,
found_contact->phone,
found_contact->email);
} else {
printf("Contact not found.\n");
}
} else if (strcmp(command, "quit") == 0) {
break;
} else {
printf("Invalid command.\n");
}
}
return 0;
}
```
这个程序可以添加、列出和查找班级通讯录中的联系人。它使用一个结构体 `Contact` 来表示每个联系人的姓名、电话和电子邮件地址。通讯录中最多可以保存 `MAX_CONTACTS` 个联系人。在程序运行时,用户可以输入一个命令来执行不同的操作:
- `add`:添加一个新的联系人,要求输入姓名、电话和电子邮件地址。
- `list`:列出所有联系人的姓名、电话和电子邮件地址。
- `find`:查找指定姓名的联系人,并列出其电话和电子邮件地址。
- `quit`:退出程序。
这个程序的一个缺点是没有进行输入验证,可能导致输入超出字符串长度的错误。还可以改进程序,例如使用动态内存分配来支持更多联系人。
阅读全文