ホームページ >バックエンド開発 >C++ >C の練習: 単純な電話帳アプリケーションの構築

C の練習: 単純な電話帳アプリケーションの構築

Barbara Streisand
Barbara Streisandオリジナル
2025-01-22 04:24:141010ブラウズ

Practicing C: Building a Simple Phonebook Application

C プログラミングを学習する最良の方法の 1 つは、実践的な演習を通して行うことです。この記事では、私が最近完了したプロジェクト、つまり単純な電話帳アプリケーションの作成を段階的に説明します。このプログラムでは、連絡先の追加、表示、削除が可能で、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>

プログラム機能

このプログラムは 3 つの主要な機能を実装しています:

  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. 改善された UI:

    • より詳細な手順を提供します。
    • scanf の代わりに fgets を使用すると、複数の単語の名前を使用できます。
  3. 拡張ファイル処理:

    • セキュリティのためにデータを暗号化します。
    • 構造化形式 (CSV や JSON など) を使用します。
  4. 高度な機能:

    • 連絡先を素早く見つけるための検索機能を実装します。
    • 電話帳をアルファベット順に並べ替えます。

概要

この演習は、C 言語でのファイル処理と基本的なデータ管理の理解を強化するのに役立ちました。これは、より複雑なプロジェクトの構成要素として機能する、シンプルでありながら実用的なプログラムです。 C を初めて使用する場合は、ぜひ試してみてください。プログラミングを練習する楽しくてやりがいのある方法です。

以上がC の練習: 単純な電話帳アプリケーションの構築の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。