首页 > 后端开发 > C++ > 练习 C:构建一个简单的电话簿应用程序

练习 C:构建一个简单的电话簿应用程序

Barbara Streisand
发布: 2025-01-22 04:24:14
原创
1011 人浏览过

Practicing C: Building a Simple Phonebook Application

学习C语言编程的最佳途径之一就是进行实践练习。本文将带您逐步完成我最近完成的一个项目:创建一个简单的电话簿应用程序。此程序允许您添加、查看和删除联系人,演示了C语言中的文件处理和基本数据管理。


代码详解

以下是电话簿应用程序的完整代码:

<code class="language-c">#include <stdio.h>
#include <string.h>

// 函数声明
void addContact(char name[], char number[]);
void viewContacts();
void deleteContact(char name[]);

int main() {
    int choice;
    char name[20];
    char number[20];

    printf("-- 欢迎使用您的电话簿! -- \n");

    do {
        // 显示菜单
        printf("\n您想执行什么操作?\n");
        printf("1. 创建新联系人\t 2. 查看电话簿\t 3. 删除联系人\t 4. 退出\n");
        scanf("%d", &choice);

        switch (choice) {
            case 1:
                // 添加新联系人
                printf("很好,让我们创建一个新的联系人:\n");
                printf("输入联系人的姓名:\n");
                scanf("%s", name);
                printf("现在输入电话号码:\n");
                scanf("%s", number);
                addContact(name, number);
                break;
            case 2:
                // 查看电话簿
                printf("这是您的电话簿:\n");
                viewContacts();
                break;
            case 3:
                // 删除联系人
                printf("输入要删除的联系人的姓名:\n");
                scanf("%s", name);
                deleteContact(name);
                break;
        }
    } while (choice != 4); // 循环直到用户选择“退出”

    return 0;
}

// 向电话簿添加联系人的函数
void addContact(char name[], char number[]) {
    FILE *pFile;
    pFile = fopen("Phonebook.txt", "a");
    if (pFile == NULL) {
        printf("打开电话簿时出错。");
        return;
    }
    fprintf(pFile, "姓名: %s \t 电话: %s\n", name, number);
    printf("联系人已创建!\n");
    fclose(pFile);
}

// 查看电话簿中所有联系人的函数
void viewContacts() {
    char fileContent[200];
    FILE *pFile;
    pFile = fopen("Phonebook.txt", "r");

    while (fgets(fileContent, sizeof(fileContent), pFile)) {
        printf("\n%s", fileContent);
    }

    fclose(pFile);
}

// 从电话簿中删除联系人的函数
void deleteContact(char name[]) {
    FILE *pFile, *pTrash;
    char line[200], contactName[20], contactNumber[20];

    pFile = fopen("Phonebook.txt", "r");
    pTrash = fopen("Trash.txt", "w");

    if (pFile == NULL || pTrash == NULL) {
        printf("打开文件时出错。");
        return;
    }

    while (fgets(line, sizeof(line), pFile)) {
        sscanf(line, "姓名: %s \t 电话: %s\n", contactName, contactNumber);
        if (strcmp(name, contactName) != 0) {
            fputs(line, pTrash);
        }
    }

    fclose(pFile);
    fclose(pTrash);

    // 将旧的电话簿替换为更新后的版本
    remove("Phonebook.txt");
    rename("Trash.txt", "Phonebook.txt");
    printf("联系人已删除。");
}</code>
登录后复制

程序功能

此程序实现了三个关键功能:

  1. 添加联系人:

    • 允许用户输入姓名和电话号码。
    • 将联系人存储在名为Phonebook.txt的文件中。
  2. 查看联系人:

    • 读取并显示存储在Phonebook.txt中的所有联系人。
  3. 删除联系人:

    • 根据用户输入的姓名删除联系人。
    • 创建一个临时文件来过滤掉已删除的联系人,然后替换原始文件。

从此练习中获得的关键知识

  1. C语言中的文件处理:

    • 使用fopen、fclose和文件操作函数。
    • 处理无法打开或访问文件时的错误。
  2. 字符串处理:

    • 使用strcmp和sscanf等函数进行字符串比较和解析。
  3. 基本数据管理:

    • 在简单的文本文件中存储和组织数据。
    • 通过创建临时文件来替换或更新文件内容。

如何测试代码

  1. 将代码复制到.c文件中,并使用C编译器(例如gcc)进行编译:
<code class="language-bash">gcc -o phonebook phonebook.c</code>
登录后复制
  1. 运行编译后的程序:
<code class="language-bash">./phonebook</code>
登录后复制
  1. 按照屏幕上的说明添加、查看或删除联系人。
  2. 打开Phonebook.txt以验证数据是否按预期存储。

潜在的改进

此程序是一个很好的起点,但以下是一些您可以尝试的改进:

  1. 输入验证:

    • 确保电话号码有效(例如,只有数字字符)。
    • 防止电话簿中出现重复的姓名。
  2. 改进的用户界面:

    • 提供更详细的说明。
    • 使用fgets而不是scanf允许使用多单词名称。
  3. 增强的文件处理:

    • 加密数据以确保安全性。
    • 使用结构化格式(例如CSV或JSON)。
  4. 高级功能:

    • 实现搜索功能以快速查找联系人。
    • 按字母顺序排序电话簿。

总结

这个练习帮助我加强了对C语言中文件处理和基本数据管理的理解。它是一个简单而实用的程序,可以作为更复杂项目的基石。如果您是C语言新手,请尝试一下——这是一个有趣且有益的编程练习方式!

以上是练习 C:构建一个简单的电话簿应用程序的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板