用c语言设计一种通讯录系统 实现的功能例如: 录入信息(姓名、性别、手机号、qq号等)、保存信息、插入、删除、修改、查找等
时间: 2024-11-13 14:27:26 浏览: 12
在C语言中设计一个基础的通讯录系统,我们可以按以下步骤实现:
1. 定义一个结构体来存储联系人信息:
```c
struct Contact {
char name[50];
char gender;
char phone[20];
char qq[20];
};
```
2. 创建数组来存放联系人列表,并初始化计数器:
```c
struct Contact* contact_list = NULL;
size_t num_contacts = 0;
```
3. 功能函数 - 插入联系人(添加新联系人):
```c
void add_contact() {
struct Contact new_contact;
printf("请输入新的联系人信息(姓名、性别、手机号、QQ号):\n");
scanf("%s %c %s %s", new_contact.name, &new_contact.gender, new_contact.phone, new_contact.qq);
if (num_contacts < MAX_CONTACTS) { // 防止溢出
contact_list[num_contacts++] = new_contact;
printf("联系人已成功添加。\n");
} else {
printf("联系人列表已满,无法添加更多。\n");
}
}
```
4. 功能函数 - 删除联系人:
```c
void remove_contact(int index) {
if (index > 0 && index <= num_contacts) {
memmove(contact_list + index, contact_list + index - 1, (num_contacts - index) * sizeof(struct Contact));
num_contacts--;
printf("联系人已被移除。\n");
} else {
printf("无效的索引,无法删除。\n");
}
}
```
5. 查找联系人:
```c
struct Contact* find_contact(char* search_key, size_t key_type) {
for (size_t i = 0; i < num_contacts; i++) {
if (key_type == 0 && strcmp(search_key, contact_list[i].name) == 0) return &contact_list[i];
else if (key_type == 1 && strcmp(search_key, contact_list[i].phone) == 0) return &contact_list[i];
// 同理添加对QQ号的查找
}
return NULL;
}
```
6. 保存和读取文件(这部分涉及文件I/O,不是核心功能,这里略去):
```c
void save_to_file() { ... }
void load_from_file() { ... }
```
7. 主循环处理用户选择:
```c
while (true) {
print_menu();
int user_choice;
scanf("%d", &user_choice);
switch (user_choice) {
case 1: add_contact(); break;
case 2: remove_contact(get_index_from_user()); break;
case 3: find_and_print(find_contact, "姓名"); break;
case 4: find_and_print(find_contact, "手机号"); break;
case 5: save_to_file(); break;
case 6: load_from_file(); break;
case 7: exit_program(); break;
default: printf("无效选择,请重新输入。\n");
}
}
// 函数省略,如获取用户输入的索引、打印菜单等
```
以上是一个基础的通讯录系统的框架,实际应用可能需要处理更多边界情况和错误处理。同时,上述示例仅包含基本功能,若希望实现更多的功能,如修改、排序等,还需进一步完善。
阅读全文