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

wufei123 2025-01-26 阅读:69 评论:0
学习C语言编程的最佳途径之一就是动手实践。本文将带您逐步完成一个我最近完成的项目:一个简单的电话簿应用程序。此应用演示了C语言中的文件处理和基本数据管理,允许您添加、查看和删除联系人。 代码详解 以下是完整代码: #include &l...

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

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

代码详解

以下是完整代码:

PHP
#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("-- 欢迎使用您的电话簿! -- 
");

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

        switch (choice) {
            case 1:
                // 添加新联系人
                printf("很好,让我们创建一个新联系人:
");
                printf("请输入联系人的姓名:
");
                scanf("%s", name);
                printf("现在输入电话号码:
");
                scanf("%s", number);
                addcontact(name, number);
                break;
            case 2:
                // 查看电话簿
                printf("这是您的电话簿:
");
                viewcontacts();
                break;
            case 3:
                // 删除联系人
                printf("请输入要删除的联系人的姓名:
");
                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 	 电话: %s
", name, number);
    printf("联系人已创建!
");
    fclose(pfile);
}

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

    while (fgets(filecontent, sizeof(filecontent), pfile)) {
        printf("
%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 	 电话: %s
", contactname, contactnumber);
        if (strcmp(name, contactname) != 0) {
            fputs(line, ptrash);
        }
    }

    fclose(pfile);
    fclose(ptrash);

    // 将旧电话簿替换为更新后的版本
    remove("phonebook.txt");
    rename("trash.txt", "phonebook.txt");
    printf("联系人已删除。");
}
项目特点

该程序实现了三个核心功能:

  1. 添加联系人:
    • 允许用户输入姓名和电话号码。
    • 将联系人信息存储到名为 phonebook.txt 的文件中。
  2. 查看联系人:
    • 读取并显示 phonebook.txt 文件中存储的所有联系人信息。
  3. 删除联系人:
    • 根据用户输入的姓名删除联系人。
    • 通过创建临时文件过滤掉已删除的联系人,然后替换原始文件。
学习收获

通过这个练习,我巩固了以下C语言知识:

  1. 文件处理: 熟练运用 fopen、fclose 等文件操作函数,并处理文件打开失败的情况。
  2. 字符串操作: 使用 strcmp 和 sscanf 等函数进行字符串比较和解析。
  3. 基本数据管理: 学习如何在简单的文本文件中存储和管理数据,以及通过创建临时文件来更新文件内容。
代码测试
  1. 将代码复制到 .c 文件中(例如 phonebook.c),并使用C编译器(如 GCC)编译:
PHP
gcc -o phonebook phonebook.c
  1. 运行编译后的程序:
PHP
./phonebook
  1. 按照屏幕提示添加、查看或删除联系人。
  2. 打开 phonebook.txt 文件验证数据是否正确存储。
未来改进

这个程序是一个良好的开端,未来可以考虑以下改进:

  1. 输入验证: 验证电话号码的有效性(例如,只包含数字),防止重复姓名。
  2. 用户界面改进: 提供更清晰的提示信息,允许输入包含多个单词的姓名(使用 fgets 代替 scanf)。
  3. 增强文件处理: 考虑数据加密以提高安全性,使用更结构化的文件格式(如 CSV 或 JSON)。
  4. 高级功能: 添加搜索功能,按字母顺序排序联系人。
总结

这个练习帮助我深入理解了C语言的文件处理和基本数据管理。这是一个简单但实用的程序,可以作为更复杂项目的基础。如果您是C语言初学者,强烈推荐您尝试一下!这是一个有趣且有益的学习过程。

以上就是练习 C:构建一个简单的电话簿应用程序的详细内容,更多请关注知识资源分享宝库其它相关文章!

版权声明

本站内容来源于互联网搬运,
仅限用于小范围内传播学习,请在下载后24小时内删除,
如果有侵权内容、不妥之处,请第一时间联系我们删除。敬请谅解!
E-mail:dpw1001@163.com

分享:

扫一扫在手机阅读、分享本文

发表评论
热门文章
  • BioWare埃德蒙顿工作室面临关闭危机,龙腾世纪制作总监辞职引关注(龙腾.总监.辞职.危机.面临.....)

    BioWare埃德蒙顿工作室面临关闭危机,龙腾世纪制作总监辞职引关注(龙腾.总监.辞职.危机.面临.....)
    知名变性人制作总监corrine busche离职bioware,引发业界震荡!外媒“smash jt”独家报道称,《龙腾世纪:影幢守护者》制作总监corrine busche已离开bioware,此举不仅引发了关于个人职业发展方向的讨论,更因其可能预示着bioware埃德蒙顿工作室即将关闭而备受关注。本文将深入分析busche离职的原因及其对bioware及游戏行业的影响。 Busche的告别信:挑战与感激并存 据“Smash JT”获得的内部邮件显示,Busche离职原...
  • boss直聘怎么取消面试预约 boss直聘上面试爽约了会怎么样(面试.爽约.预约.取消.boss.....)

    boss直聘怎么取消面试预约 boss直聘上面试爽约了会怎么样(面试.爽约.预约.取消.boss.....)
    求职宝典:boss直聘面试技巧及取消预约方法 各位求职者注意啦!在Boss直聘上,随意取消面试预约会留下爽约记录,影响后续求职!本文将指导您如何避免爽约,以及如何取消已预约的面试。 如何取消Boss直聘面试预约? 打开Boss直聘APP,进入“我的”页面。 点击“待面试”,查看面试日程。 选择需要取消的面试,点击“取消面试”按钮即可。 Boss直聘面试爽约的后果? 爽约行为会在HR端留下记录,影响您的求职成功率。其他HR也能看到您的不良记录,所以务必重视面试预约。...
  • 闪耀暖暖靡城永恒怎么样-闪耀暖暖靡城永恒套装介绍(闪耀.暖暖.套装.介绍.....)

    闪耀暖暖靡城永恒怎么样-闪耀暖暖靡城永恒套装介绍(闪耀.暖暖.套装.介绍.....)
    闪耀暖暖钻石竞技场第十七赛季“华梦泡影”即将开启!全新闪耀性感套装【靡城永恒】震撼来袭!想知道如何获得这套精美套装吗?快来看看吧! 【靡城永恒】套装设计理念抢先看: 设计灵感源于夜色中的孤星,象征着淡然、漠视一切的灰色瞳眸。设计师希望通过这套服装,展现出在虚幻与真实交织的夜幕下,一种独特的魅力。 服装细节考究,从面料的光泽、鞋跟声响到裙摆的弧度,都力求完美还原设计初衷。 【靡城永恒】套装设计亮点: 闪耀的绸缎与金丝交织,轻盈的羽毛增添华贵感。 这套服装仿佛是从无尽的黑...
  • 蛋仔派对2025最新皮肤兑换码汇总 最新皮肤兑换码一览(兑换.皮肤.最新.派对.汇总.....)

    蛋仔派对2025最新皮肤兑换码汇总 最新皮肤兑换码一览(兑换.皮肤.最新.派对.汇总.....)
    蛋仔派对2025最新皮肤兑换码大放送!游戏内新增多款皮肤兑换码,包含最新、福利和通用三种类型,助你轻松获取精美奖励! 赶紧来看看如何兑换吧! 兑换码列表: 最新兑换码: ccewndj4k4k、cdkqdfm4fh、peetnmp4ef、cdxymk8f67 福利兑换码: cca863ywtfa、eggy2310am、eggy2311gz、eggyeggy9wz 通用兑换码: pec74dkcty、jsrqkrrjmh、cd3wt7wrph、ccepn7d8cjf...
  • python怎么调用其他文件函数

    python怎么调用其他文件函数
    在 python 中调用其他文件中的函数,有两种方式:1. 使用 import 语句导入模块,然后调用 [模块名].[函数名]();2. 使用 from ... import 语句从模块导入特定函数,然后调用 [函数名]()。 如何在 Python 中调用其他文件中的函数 在 Python 中,您可以通过以下两种方式调用其他文件中的函数: 1. 使用 import 语句 优点:简单且易于使用。 缺点:会将整个模块导入到当前作用域中,可能会导致命名空间混乱。 步骤:...