首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C語言實作通訊錄:從結構體設計到完整功能開發

     編輯:關於C語言

C語言通訊錄系統完整實作指南

通訊錄是C語言初學者練習結構體、檔案操作與模組化程式設計的經典專案。本文將帶您從零開始,完成一個具備新增、刪除、查詢、修改、顯示與清空功能的通訊錄系統。

核心資料結構設計

首先定義標頭檔 contact.h,規劃聯絡人資料欄位與通訊錄容器:

#ifndef __CONTACT_H__
#define __CONTACT_H__

#define NAME_LEN 10
#define SEX_LEN 6
#define TELE_LEN 12
#define ADDR_LEN 20
#define MAX_PEO 1000

typedef struct PEO {
    char name[NAME_LEN];
    int age;
    char sex[SEX_LEN];
    char tele[TELE_LEN];
    char addr[ADDR_LEN];
} Peo, *PPEO;

typedef struct Contact {
    Peo nb[MAX_PEO];
    int count; // 記錄有效聯絡人數量
} PCON, *Pcon;

// 函數宣告
void add_peo(Pcon pcon);
void del_peo(Pcon pcon);
void search(Pcon pcon);
void modify(Pcon pcon);
void show(Pcon pcon);
void clear(Pcon pcon);

#endif

核心功能實作

在 contact.c 中實作各項操作函數:

  • 新增聯絡人:檢查容量後讀取輸入,存入陣列並更新計數
  • 顯示所有:格式化輸出聯絡人列表
  • 查找輔助函數:透過姓名比對返回索引,未找到返回 -1
  • 刪除聯絡人:查找後將後續元素前移覆蓋,計數遞減
  • 查詢聯絡人:呼叫查找函數並顯示單筆資料
  • 修改聯絡人:查找後重新輸入各欄位資料
  • 清空通訊錄:將計數歸零

主程式與選單互動

main.c 提供文字選單介面,透過 switch 語句分派功能:

#include <stdio.h>
#include "contact.h"
#define _CRT_SECURE_NO_WARNINGS

void print_menu() {
    printf("****************************\n");
    printf("*** 1>add 2>del ***\n");
    printf("*** 3>show 4>search ***\n");
    printf("*** 5>modify 6>clear ***\n");
    printf("****************************\n");
}

int main() {
    PCON con;
    int input = 1;
    con.count = 0;
    while (input) {
        print_menu();
        printf("請選擇:");
        scanf("%d", &input);
        switch (input) {
            case 1: add_peo(&con); break;
            case 2: del_peo(&con); break;
            case 3: show(&con); break;
            case 4: search(&con); break;
            case 5: modify(&con); break;
            case 6: clear(&con); break;
            default: break;
        }
    }
    return 0;
}

執行畫面示例

程式執行時會顯示選單,依使用者輸入執行對應操作,介面清晰直觀:

選單介面 新增聯絡人 顯示所有聯絡人 查詢聯絡人 修改聯絡人

重點總結與延伸建議

此專案展示了結構體陣列管理資料、模組化程式設計、基本輸入輸出處理等核心技能。進階可嘗試:加入檔案存取實現資料持久化、使用動態記憶體分配突破固定容量限制、或引入鏈結串列優化刪除效能。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved