首頁 >後端開發 >C++ >練習 C:建立一個簡單的電話簿應用程式

練習 C:建立一個簡單的電話簿應用程式

Barbara Streisand
Barbara Streisand原創
2025-01-22 04:24:141010瀏覽

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn