C语言学生选课管理系统代码示例
#include <stdio.h> #include <stdlib.h> #include <string.h>
#define MAX_COURSE_NUM 10 #define MAX_STUDENT_NUM 20 #define MAX_NAME_LEN 20 #define MAX_ID_LEN 10
// 学生结构体 typedef struct student { char id[MAX_ID_LEN]; // 学号 char name[MAX_NAME_LEN]; // 姓名 int course_num; // 已选课程数 char courses[MAX_COURSE_NUM][MAX_NAME_LEN]; // 已选课程列表 } Student;
// 课程结构体 typedef struct course { char name[MAX_NAME_LEN]; // 课程名称 int capacity; // 课程容量 int enrolled; // 已选人数 } Course;
// 学生数组 Student students[MAX_STUDENT_NUM]; int student_count = 0;
// 课程数组 Course courses[MAX_COURSE_NUM]; int course_count = 0;
// 添加学生 void add_student() { if (student_count >= MAX_STUDENT_NUM) { printf("学生人数已达到最大值,无法添加新学生。\n"); return; } Student student; printf("请输入学生学号:"); scanf("%s", student.id); printf("请输入学生姓名:"); scanf("%s", student.name); student.course_num = 0; memset(student.courses, 0, sizeof(student.courses)); students[student_count++] = student; printf("学生添加成功。\n"); }
// 添加课程 void add_course() { if (course_count >= MAX_COURSE_NUM) { printf("课程数量已达到最大值,无法添加新课程。\n"); return; } Course course; printf("请输入课程名称:"); scanf("%s", course.name); printf("请输入课程容量:"); scanf("%d", &course.capacity); course.enrolled = 0; courses[course_count++] = course; printf("课程添加成功。\n"); }
// 显示所有学生 void show_students() { printf("学号\t姓名\t已选课程\n"); for (int i = 0; i < student_count; i++) { printf("%s\t%s\t", students[i].id, students[i].name); for (int j = 0; j < students[i].course_num; j++) { printf("%s ", students[i].courses[j]); } printf("\n"); } }
// 显示所有课程 void show_courses() { printf("课程名称\t容量\t已选人数\n"); for (int i = 0; i < course_count; i++) { printf("%s\t\t%d\t%d\n", courses[i].name, courses[i].capacity, courses[i].enrolled); } }
// 学生选课 void select_course() { char student_id[MAX_ID_LEN]; printf("请输入学生学号:"); scanf("%s", student_id); Student *student = NULL; for (int i = 0; i < student_count; i++) { if (strcmp(students[i].id, student_id) == 0) { student = &students[i]; break; } } if (student == NULL) { printf("学生不存在,请重新输入。\n"); return; } char course_name[MAX_NAME_LEN]; printf("请输入课程名称:"); scanf("%s", course_name); Course *course = NULL; for (int i = 0; i < course_count; i++) { if (strcmp(courses[i].name, course_name) == 0) { course = &courses[i]; break; } } if (course == NULL) { printf("课程不存在,请重新输入。\n"); return; } if (student->course_num >= MAX_COURSE_NUM) { printf("已选课程数已达到最大值,无法再选课。\n"); return; } if (course->enrolled >= course->capacity) { printf("课程已满,无法选课。\n"); return; } for (int i = 0; i < student->course_num; i++) { if (strcmp(student->courses[i], course_name) == 0) { printf("该课程已选过,请勿重复选课。\n"); return; } } strcpy(student->courses[student->course_num], course_name); student->course_num++; course->enrolled++; printf("选课成功。\n"); }
// 主函数 int main() { while (1) { printf("请选择操作:\n"); printf("1. 添加学生\n"); printf("2. 添加课程\n"); printf("3. 显示所有学生\n"); printf("4. 显示所有课程\n"); printf("5. 学生选课\n"); printf("6. 退出程序\n"); int choice; scanf("%d", &choice); switch (choice) { case 1: add_student(); break; case 2: add_course(); break; case 3: show_students(); break; case 4: show_courses(); break; case 5: select_course(); break; case 6: exit(0); default: printf("无效操作,请重新选择。\n"); break; } } return 0; }
原文地址: https://www.cveoy.top/t/topic/oakt 著作权归作者所有。请勿转载和采集!