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

新手實作:C 語言通訊錄與簡易日曆系統

     編輯:關於C

專案概述

這是一個經典的 C 語言入門專案,包含兩個獨立功能模組:通訊錄管理系統與簡易日曆顯示程式。程式碼展示了檔案操作、結構體應用、選單驅動介面、密碼驗證機制以及日期計算演算法等基礎概念,適合初學者研讀與修改練習。

通訊錄管理系統

資料結構設計

struct info {
    char name[15];    // 姓名
    char phone[12];   // 電話
    char sex[2];      // 性別
    char age[4];      // 年齡
    char address[20]; // 地址
};

使用結構體陣列儲存聯絡人資訊,透過 information.txt 二進位檔案持久化資料。

核心功能模組

  • 密碼機制:支援初始化密碼(Initial())、讀取驗證(InitializationPassword()、EnterPassword())、修改密碼(ModifyPassword()),分為管理員與一般使用者兩種權限模式。
  • CRUD 操作:
    • 新增(New()):附加模式寫入檔案,支援連續輸入。
    • 修改(Modify()):建立暫存檔 temp.txt,逐筆比對姓名後覆寫,最後替換原檔。
    • 刪除(Delet()):同樣採用暫存檔過濾法,排除指定姓名後重建檔案。
    • 顯示全部(Display()):格式化輸出所有記錄。
    • 多條件查詢(Search()):支援姓名、電話、性別、年齡、地址五種欄位搜尋。
  • 介面控制:AdministratorInterface() 與 NormalUserInterface() 分別提供完整與唯讀功能選單,透過 SelectOption()、ExecutiveFunction1/2() 分派執行。

簡易日曆程式

演算法邏輯

採用 蔡勒公式 變體計算星期:

  1. EnterAndCheckDate() 輸入年月並驗證合法性(年≥1900,月 1-12)。
  2. February() 判斷閏年調整 2 月天數。
  3. TotalDays() 累計從 1900 年 1 月 1 日到目標年月首日的總天數。
  4. Calendar() 根據總天數模 7 計算起始空格數。
  5. Showing() 依序印出日期,每週換行。

關鍵資料結構

static int year, month, days;
static int moon[] = {0,31,28,31,30,31,30,31,31,30,31,30,31}; // 每月天數表

程式碼亮點與改進建議

  • ✅ 完整示範檔案讀寫、結構體序列化、選單迴圈架構。
  • ✅ 密碼分級權限設計具備實務參考價值。
  • ⚠️ 使用 gets()、fflush(stdin) 等不安全/非標準函式,建議改用 fgets() 並自行移除換行符。
  • ⚠️ 結構體直接 fwrite/fread 存在跨平台相容性風險(記憶體對齊、位序),教學用途可接受,實務建議序列化為文字格式(如 CSV/JSON)。
  • ⚠️ 日曆模組固定基準年 1900,若需支援更早日期需擴充演算法。

編譯與執行

gcc contact_calendar.c -o contact_calendar
./contact_calendar

首次執行會提示設定初始密碼,之後依密碼正確性進入管理員或一般使用者介面;日曆功能獨立於通訊錄,可單獨編譯測試。

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