用c语言编写 16. 题目:通讯录程序设计 设计一个实用的小型通讯录程序,具有添加,查询和删除功能。由姓名,籍贯,电话号码1,电话号码2,电子邮箱组成,姓名可以由字符和数字混合编码。电话号码可由字符和数字组成。实现功能: (1)系统以菜单方式工作 (2)信息录入功能 (3)信息浏览功能 (4)信息查询功能 (5)信息修改功能 (6)系统退出功能
时间: 2024-02-05 08:13:35 浏览: 32
以下是一个简单的通讯录程序的 C 语言代码:
```c
#include <stdio.h>
#include <string.h>
#define MAX_CONTACTS 100
// 联系人结构体
typedef struct {
char name[50];
char hometown[50];
char phone1[20];
char phone2[20];
char email[50];
} Contact;
// 通讯录结构体
typedef struct {
Contact contacts[MAX_CONTACTS];
int size;
} AddressBook;
// 显示菜单
void showMenu() {
printf("\n");
printf("********** 通讯录程序 **********\n");
printf("* 1. 添加联系人 *\n");
printf("* 2. 浏览联系人 *\n");
printf("* 3. 查询联系人 *\n");
printf("* 4. 修改联系人 *\n");
printf("* 5. 删除联系人 *\n");
printf("* 6. 退出程序 *\n");
printf("**********************************\n");
printf("\n");
}
// 添加联系人
void addContact(AddressBook *book) {
if (book->size >= MAX_CONTACTS) {
printf("通讯录已满,无法添加联系人!\n");
return;
}
Contact contact;
printf("请输入联系人姓名:");
scanf("%s", contact.name);
printf("请输入联系人籍贯:");
scanf("%s", contact.hometown);
printf("请输入联系人电话号码1:");
scanf("%s", contact.phone1);
printf("请输入联系人电话号码2:");
scanf("%s", contact.phone2);
printf("请输入联系人电子邮箱:");
scanf("%s", contact.email);
book->contacts[book->size] = contact;
book->size++;
printf("联系人添加成功!\n");
}
// 浏览联系人
void displayContacts(AddressBook book) {
if (book.size == 0) {
printf("通讯录为空!\n");
return;
}
printf("姓名\t\t籍贯\t\t电话1\t\t电话2\t\t电子邮箱\n");
for (int i = 0; i < book.size; i++) {
Contact contact = book.contacts[i];
printf("%s\t\t%s\t\t%s\t\t%s\t\t%s\n", contact.name, contact.hometown, contact.phone1, contact.phone2, contact.email);
}
}
// 查询联系人
void searchContact(AddressBook book) {
if (book.size == 0) {
printf("通讯录为空!\n");
return;
}
char name[50];
printf("请输入要查询的联系人姓名:");
scanf("%s", name);
int found = 0;
for (int i = 0; i < book.size; i++) {
Contact contact = book.contacts[i];
if (strcmp(contact.name, name) == 0) {
printf("姓名\t\t籍贯\t\t电话1\t\t电话2\t\t电子邮箱\n");
printf("%s\t\t%s\t\t%s\t\t%s\t\t%s\n", contact.name, contact.hometown, contact.phone1, contact.phone2, contact.email);
found = 1;
break;
}
}
if (!found) {
printf("未找到联系人!\n");
}
}
// 修改联系人
void modifyContact(AddressBook *book) {
if (book->size == 0) {
printf("通讯录为空!\n");
return;
}
char name[50];
printf("请输入要修改的联系人姓名:");
scanf("%s", name);
int found = 0;
for (int i = 0; i < book->size; i++) {
Contact *contact = &book->contacts[i];
if (strcmp(contact->name, name) == 0) {
printf("请输入联系人籍贯:");
scanf("%s", contact->hometown);
printf("请输入联系人电话号码1:");
scanf("%s", contact->phone1);
printf("请输入联系人电话号码2:");
scanf("%s", contact->phone2);
printf("请输入联系人电子邮箱:");
scanf("%s", contact->email);
printf("联系人修改成功!\n");
found = 1;
break;
}
}
if (!found) {
printf("未找到联系人!\n");
}
}
// 删除联系人
void deleteContact(AddressBook *book) {
if (book->size == 0) {
printf("通讯录为空!\n");
return;
}
char name[50];
printf("请输入要删除的联系人姓名:");
scanf("%s", name);
int found = 0;
for (int i = 0; i < book->size; i++) {
Contact *contact = &book->contacts[i];
if (strcmp(contact->name, name) == 0) {
for (int j = i; j < book->size - 1; j++) {
book->contacts[j] = book->contacts[j+1];
}
book->size--;
printf("联系人删除成功!\n");
found = 1;
break;
}
}
if (!found) {
printf("未找到联系人!\n");
}
}
int main() {
AddressBook book;
book.size = 0;
int choice;
do {
showMenu();
printf("请输入操作编号:");
scanf("%d", &choice);
switch (choice) {
case 1:
addContact(&book);
break;
case 2:
displayContacts(book);
break;
case 3:
searchContact(book);
break;
case 4:
modifyContact(&book);
break;
case 5:
deleteContact(&book);
break;
case 6:
printf("谢谢使用!\n");
break;
default:
printf("无效的操作编号!\n");
break;
}
} while (choice != 6);
return 0;
}
```
该程序使用结构体来表示联系人和通讯录,包含添加、浏览、查询、修改和删除联系人等功能。可以通过菜单选择需要的功能,实现通讯录的基本操作。