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

C語言課程設計指南:宿舍信息管理系統功能模塊劃分與實現思路

     編輯:C 語言問答

需求拆解

  • 數據實體:宿舍 (樓號、房間號、面積、住學生班級、人數)
  • 功能模塊:文件管理、增刪改查、統計、排序

數據結構設計


#define MAX_DORM 1000
#define MAX_CLASS 50

typedef struct {
    int building;      // 樓號
    int room;          // 房間號
    float area;        // 面積
    char class_name[30]; // 學生班級
    int count;         // 人數
} Dormitory;

Dormitory dorms[MAX_DORM];
int dorm_cnt = 0;

核心功能實現骨架

1. 文件持久化


void load_data() { FILE *fp=fopen("dorm.dat","rb"); if(fp){ fread(&dorm_cnt,4,1,fp); fread(dorms,sizeof(Dormitory),dorm_cnt,fp); fclose(fp); } }
void save_data() { FILE *fp=fopen("dorm.dat","wb"); if(fp){ fwrite(&dorm_cnt,4,1,fp); fwrite(dorms,sizeof(Dormitory),dorm_cnt,fp); fclose(fp); } }

2. 菜單驅動主循環


void menu() {
    printf("\n1.添加 2.顯示 3.查詢 4.修改 5.刪除 6.統計 7.排序 0.退出\n選擇: ");
    int opt; scanf("%d",&opt);
    switch(opt){
        case 1: add(); break;
        case 2: show_all(); break;
        case 3: query(); break;
        case 4: modify(); break;
        case 5: delete(); break;
        case 6: statistics(); break;
        case 7: sort(); break;
        case 0: save_data(); exit(0);
    }
}

3. 關鍵操作示例

  • 添加:檢查房間號唯一性 → 讀取字段 → dorms[dorm_cnt++] = new_dorm;
  • 查詢:按樓號/房間號/班級/人數範圍篩選輸出。
  • 統計:遍歷累加總人數、平均面積;按班級分組統計人數分布(可用鏈表/動態數組存儲分組結果)。
  • 排序:qsort(dorms, dorm_cnt, sizeof(Dormitory), cmp_by_count) 或按面積、樓號排序。

進階建議

  • 鏈表替換數組:支持動態擴容、插入刪除 O(1)。
  • 索引優化:建立樓號→宿舍列表映射 (哈希表/多級數組) 加速查詢。
  • 界面:ncurses 實現文本界面 (TUI),或導出 CSV 供 Excel 分析。
  • 測試:邊界值 (空文件、滿容量、重複鍵)、持久化斷電恢復。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved