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

C語言實現學生選課系統:管理員與學生雙角色功能設計

     編輯:C 語言問答

系統需求分析

  • 雙角色登錄:管理員 / 學生,帳號密碼驗證。
  • 管理員功能:課程增刪(名稱、介紹、學分、選課上限)、學生帳號管理(學號、密碼)。
  • 學生功能:修改密碼、選課、查看已選課程、查看課程選課人數及名單。
  • 業務規則:選課人數不得超過課程上限。

數據結構設計

// 課程信息
typedef struct {
    char id[20];        // 課程號
    char name[50];      // 課程名稱
    char intro[200];    // 介紹
    int credit;         // 學分
    int max_stu;        // 選課上限
    int cur_stu;        // 當前已選人數
    char stu_list[MAX_STU][20]; // 已選學生學號列表
} Course;

// 學生信息
typedef struct {
    char id[20];        // 學號
    char pwd[20];       // 密碼
    char courses[MAX_COURSE][20]; // 已選課程號列表
    int course_cnt;
} Student;

// 全局數據(簡化版,實際建議文件/數據庫持久化)
Course courses[MAX_COURSE];
Student students[MAX_STU];
int course_cnt = 0, stu_cnt = 0;

核心功能模塊

1. 登錄驗證

int login(char *id, char *pwd, int role) { // role: 1-admin, 2-student
    if (role == 1) {
        return strcmp(id, "admin")==0 && strcmp(pwd, "admin123")==0;
    } else {
        for (int i=0; i

2. 管理員 - 添加課程

void admin_add_course() {
    if (course_cnt >= MAX_COURSE) { printf("課程已滿\n"); return; }
    Course *c = &courses[course_cnt++];
    printf("課程號: "); scanf("%s", c->id);
    printf("名稱: "); scanf("%s", c->name);
    printf("介紹: "); scanf("%s", c->intro);
    printf("學分: "); scanf("%d", &c->credit);
    printf("上限: "); scanf("%d", &c->max_stu);
    c->cur_stu = 0;
    printf("添加成功!\n");
}

3. 學生 - 選課(含人數檢查)

void student_select_course(int stu_idx) {
    char cid[20];
    printf("輸入要選的課程號: "); scanf("%s", cid);
    for (int i=0; i= courses[i].max_stu) {
                printf("該課程已滿(%d/%d)\n", courses[i].cur_stu, courses[i].max_stu);
                return;
            }
            // 檢查是否已選
            for (int j=0; j

持久化與擴展建議

  • 文件存儲:程序啟動讀取 courses.dat、students.dat,退出時寫回(二進制 fwrite/fread 或文本 fprintf/fscanf)。
  • 數據庫升級:引入 SQLite,表結構對應上述 Struct,支持並發、查詢靈活。
  • 界面:控制台菜單循環 while(1){ show_menu(); scanf("%d",&opt); ... },或移植至 Qt/GTK 圖形界面。

開發提示

本系統屬典型「管理信息系統」(MIS)入門項目,核心在於數據結構設計與業務邏輯封裝。建議分模塊編寫(course.c、student.c、auth.c、main.c),使用 Makefile 管理編譯,養成工程化習慣。

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