c语言实现电话号码查询系统
时间: 2023-11-18 09:12:25 浏览: 53
一个电话号码查询系统可以有以下基本功能:
1. 添加联系人信息,包括姓名、电话号码、地址等。
2. 查询联系人信息,可以通过姓名或电话号码进行查询。
3. 修改联系人信息,包括姓名、电话号码、地址等。
4. 删除联系人信息,可以通过姓名或电话号码进行删除。
5. 显示所有联系人信息。
下面是一个简单的电话号码查询系统的 C 语言实现代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_CONTACTS 100
typedef struct {
char name[50];
char phone[20];
char address[100];
} Contact;
int num_contacts = 0;
Contact contacts[MAX_CONTACTS];
void add_contact() {
Contact c;
printf("Enter name: ");
fgets(c.name, sizeof(c.name), stdin);
printf("Enter phone number: ");
fgets(c.phone, sizeof(c.phone), stdin);
printf("Enter address: ");
fgets(c.address, sizeof(c.address), stdin);
contacts[num_contacts++] = c;
printf("Contact added successfully.\n");
}
void search_contact() {
char query[50];
printf("Enter name or phone number to search: ");
fgets(query, sizeof(query), stdin);
for (int i = 0; i < num_contacts; i++) {
if (strstr(contacts[i].name, query) || strstr(contacts[i].phone, query)) {
printf("Name: %sPhone: %sAddress: %s\n", contacts[i].name, contacts[i].phone, contacts[i].address);
}
}
}
void modify_contact() {
char query[50];
printf("Enter name or phone number to modify: ");
fgets(query, sizeof(query), stdin);
for (int i = 0; i < num_contacts; i++) {
if (strstr(contacts[i].name, query) || strstr(contacts[i].phone, query)) {
printf("Enter new name (leave blank to keep existing name): ");
fgets(contacts[i].name, sizeof(contacts[i].name), stdin);
printf("Enter new phone number (leave blank to keep existing phone number): ");
fgets(contacts[i].phone, sizeof(contacts[i].phone), stdin);
printf("Enter new address (leave blank to keep existing address): ");
fgets(contacts[i].address, sizeof(contacts[i].address), stdin);
printf("Contact modified successfully.\n");
}
}
}
void delete_contact() {
char query[50];
printf("Enter name or phone number to delete: ");
fgets(query, sizeof(query), stdin);
for (int i = 0; i < num_contacts; i++) {
if (strstr(contacts[i].name, query) || strstr(contacts[i].phone, query)) {
for (int j = i; j < num_contacts - 1; j++) {
contacts[j] = contacts[j + 1];
}
num_contacts--;
printf("Contact deleted successfully.\n");
return;
}
}
printf("Contact not found.\n");
}
void display_contacts() {
for (int i = 0; i < num_contacts; i++) {
printf("Name: %sPhone: %sAddress: %s\n", contacts[i].name, contacts[i].phone, contacts[i].address);
}
}
int main() {
int choice;
do {
printf("1. Add contact\n");
printf("2. Search contact\n");
printf("3. Modify contact\n");
printf("4. Delete contact\n");
printf("5. Display all contacts\n");
printf("6. Quit\n");
printf("Enter your choice: ");
scanf("%d", &choice);
getchar(); // to consume the newline character left by scanf
switch (choice) {
case 1:
add_contact();
break;
case 2:
search_contact();
break;
case 3:
modify_contact();
break;
case 4:
delete_contact();
break;
case 5:
display_contacts();
break;
case 6:
printf("Goodbye!\n");
break;
default:
printf("Invalid choice.\n");
break;
}
} while (choice != 6);
return 0;
}
```
注意,这个实现是非常基础的,仅适用于小规模的电话号码查询。在实际应用中,可能需要处理更多的输入验证、数据存储和并发访问等问题。