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

C語言專案實戰:簡易通訊錄系統完整實作 (增刪改查排序)

     編輯:關於C

專案需求

  • 聯繫人欄位:姓名、性別、年齡、電話、地址。
  • 功能:新增、刪除、查找、修改、顯示全部、按姓名排序、退出。
  • 資料結構:固定大小陣列 (10 人) + 計數器。

核心資料結構

#define MAX_CONTACT 10
#define NAME_LEN 15
#define PHONE_LEN 11
#define ADDR_LEN 30
#define SEX_LEN 6

typedef struct {
    char name[NAME_LEN];
    char sex[SEX_LEN];
    int age;            // 原碼漏掉年齡欄位,此處補全
    char phone[PHONE_LEN];
    char addr[ADDR_LEN];
} Contact;

Contact contacts[MAX_CONTACT];
int count = 0; // 當前聯繫人數

功能模組實作要點

1. 新增 (Add)

  • 檢查 count < MAX_CONTACT。
  • 使用 fgets 讀取含空白的地址/姓名,處理尾部 \n。
  • 輸入驗證:電話長度、年齡範圍、性別選項。

2. 刪除 (Delete)

  • 輸入姓名 → 線性搜尋索引。
  • 找到後,memmove 或循環前移後續元素覆蓋被刪項目。
  • count--。

3. 查找 (Find)

  • 選單:按姓名 / 按電話。
  • 線性搜尋 (資料量小),找到印出全部欄位。

4. 修改 (Alter)

  • 搜尋姓名 → 找到後重新輸入所有欄位覆蓋。

5. 顯示全部 (Print)

  • 格式化輸出表頭與每一筆資料,%-15s 左對齊對齊欄位。

6. 排序 (Sort)

  • 冒泡/選擇排序 (n=10 足夠),比較 strcmp(name_a, name_b)。
  • 交換整個 Contact 結構體 (可用 memcpy 或結構體賦值)。

主選單架構

enum Option { EXIT, ADD, DELETE, FIND, ALTER, PRINT, SORT };

void menu() {
    puts("************* 簡易通訊錄 ************");
    puts("1. 新增聯繫人");
    puts("2. 刪除聯繫人");
    puts("3. 查找聯繫人");
    puts("4. 修改聯繫人");
    puts("5. 顯示所有聯繫人");
    puts("6. 按姓名排序");
    puts("0. 退出");
    puts("*************************************");
}

int main() {
    int choice;
    while (1) {
        menu();
        printf("請選擇: ");
        if (scanf("%d", &choice) != 1) { /* 清理緩衝區 */ continue; }
        while (getchar() != '\n'); // 清理換行
        
        switch (choice) {
            case ADD:    add_contact(); break;
            case DELETE: del_contact(); break;
            case FIND:   find_contact(); break;
            case ALTER:  alter_contact(); break;
            case PRINT:  print_all(); break;
            case SORT:   sort_by_name(); break;
            case EXIT:   return 0;
            default:     puts("無效選項!");
        }
    }
}

優化方向

  • 動態陣列 (realloc) 支援無限聯繫人。
  • 檔案持久化 (CSV/二進位/JSON) 載入/儲存。
  • 鏈表/哈希表優化查找/刪除至 O(1)。
  • GUI (ncurses/GTK/Qt) 或 Web 介面 (CGI/HTTP server)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved