以下是一个简单的c语言实现通讯录拨号功能代码示例,实现了通讯录拨号功能。该程序允许用户输入联系人姓名和电话号码,并将它们存储在通讯录中。用户可以查看通讯录中的所有联系人,选择要拨打的联系人并拨打他们的电话号码。
#include <stdio.h> #include <string.h> #define MAX_CONTACTS 100 struct Contact { char name[50]; char phone[20]; }; struct Contact contacts[MAX_CONTACTS]; int num_contacts = 0; void add_contact() { struct Contact new_contact; printf("Enter name: "); scanf("%s", new_contact.name); printf("Enter phone: "); scanf("%s", new_contact.phone); contacts[num_contacts++] = new_contact; printf("Contact added.\n"); } void print_contacts() { printf("Contacts:\n"); for (int i = 0; i < num_contacts; i++) { printf("%s: %s\n", contacts[i].name, contacts[i].phone); } } void dial_contact() { char name[50]; printf("Enter name of contact to dial: "); scanf("%s", name); for (int i = 0; i < num_contacts; i++) { if (strcmp(contacts[i].name, name) == 0) { printf("Dialing %s...\n", contacts[i].phone); return; } } printf("Contact not found.\n"); } int main() { int choice; do { printf("Menu:\n"); printf("1. Add contact\n"); printf("2. Print contacts\n"); printf("3. Dial contact\n"); printf("4. Quit\n"); printf("Enter choice: "); scanf("%d", &choice); switch (choice) { case 1: add_contact(); break; case 2: print_contacts(); break; case 3: dial_contact(); break; case 4: printf("Goodbye.\n"); break; default: printf("Invalid choice.\n"); break; } } while (choice != 4); return 0; }
在这个程序中,我们使用一个结构体Contact
来表示一个通讯录中的联系人,包括姓名和电话号码。我们还定义了一个最大联系人数MAX_CONTACTS
和一个contacts
数组来存储联系人。我们使用num_contacts
变量来跟踪当前存储的联系人数量。
程序提供了以下几个操作:
- 添加联系人:用户输入姓名和电话号码,并将它们存储在通讯录中。
- 显示联系人列表:程序输出所有存储在通讯录中的联系人的姓名和电话号码。
- 拨打联系人电话:用户输入要拨打的联系人姓名,并显示其电话号码。
在主函数中,我们使用一个do-while
循环显示一个简单的菜单,让用户选择要执行的操作。根据用户的选择,我们调用add_contact
、print_contacts
或dial_contact
函数来执行相应的操作。
上述代码是一个简单的示例,您可以根据实际需求和项目需求进行修改和扩展。下面是一些可能有用的扩展:
添加删除联系人功能:在通讯录中删除一个联系人的操作。用户可以输入要删除的联系人的姓名,然后程序将其从通讯录中删除。
void delete_contact() { char name[50]; printf("Enter name of contact to delete: "); scanf("%s", name); for (int i = 0; i < num_contacts; i++) { if (strcmp(contacts[i].name, name) == 0) { for (int j = i; j < num_contacts - 1; j++) { contacts[j] = contacts[j+1]; } num_contacts--; printf("Contact deleted.\n"); return; } } printf("Contact not found.\n"); }
在main
函数中,我们可以将“删除联系人”选项添加到菜单中:
printf("Menu:\n"); printf("1. Add contact\n"); printf("2. Print contacts\n"); printf("3. Dial contact\n"); printf("4. Delete contact\n"); printf("5. Quit\n");
然后在switch
语句中添加相应的处理:
case 4: delete_contact(); break;
添加编辑联系人信息功能:在通讯录中编辑一个联系人的操作。用户可以输入要编辑的联系人的姓名,然后程序将其显示出来,用户可以修改其中一个或多个字段,然后将其保存回通讯录。
void edit_contact() { char name[50]; printf("Enter name of contact to edit: "); scanf("%s", name); for (int i = 0; i < num_contacts; i++) { if (strcmp(contacts[i].name, name) == 0) { printf("Editing contact: %s\n", contacts[i].name); printf("Enter new name (press enter to keep current value): "); char new_name[50]; scanf("%s", new_name); if (strlen(new_name) > 0) { strcpy(contacts[i].name, new_name); } printf("Enter new phone (press enter to keep current value): "); char new_phone[20]; scanf("%s", new_phone); if (strlen(new_phone) > 0) { strcpy(contacts[i].phone, new_phone); } printf("Contact updated.\n"); return; } } printf("Contact not found.\n"); }
同样,我们可以将“编辑联系人信息”选项添加到菜单中:
printf("Menu:\n"); printf("1. Add contact\n"); printf("2. Print contacts\n"); printf("3. Dial contact\n"); printf("4. Delete contact\n"); printf("5. Edit contact\n"); printf("6. Quit\n");
然后在switch
语句中添加相应的处理:
case 5: edit_contact(); break;
使用文件存储联系人信息:我们可以将通讯录中的联系人信息存储在文件中,以便程序重新启动时可以恢复先前的联系人信息。在程序启动时,我们可以尝试打开存储联系人信息的文件,如果该文件不存在,则创建一个新的文件。在程序关闭时,我们可以将联系人信息保存回文件中。
在主函数中,我们可以添加以下代码来读取先前保存的联系人信息:
int read_contacts() { FILE *f = fopen("contacts.dat", "rb"); if (f == NULL) { return 0; } fread(&num_contacts, sizeof(num_contacts), 1, f); fread(contacts, sizeof(Contact), num_contacts, f); fclose(f); return 1; }
在程序关闭之前,我们可以添加以下代码将联系人信息保存到文件中:
void save_contacts() { FILE *f = fopen("contacts.dat", "wb"); if (f == NULL) { printf("Error saving contacts.\n"); return; } fwrite(&num_contacts, sizeof(num_contacts), 1, f); fwrite(contacts, sizeof(Contact), num_contacts, f); fclose(f); printf("Contacts saved.\n"); }
最后,我们可以在程序退出之前调用save_contacts
函数来保存联系人信息:
case 6: save_contacts(); printf("Goodbye!\n"); return 0;
评论