好的,以下是一个简单的学生选课系统的 C 语言代码示例,仅供参考:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义课程结构体
typedef struct Course {
char id[10];
char name[20];
char teacher[20];
int credit;
int capacity;
char** students;
} Course;
// 定义学生结构体
typedef struct Student {
char id[10];
char name[20];
int grade;
char** courses;
} Student;
// 课程添加学生
int add_student(Course* course, char* student_id) {
if (course->capacity > 0) {
// 分配内存空间
course->students = (char**)realloc(course->students, (course->capacity + 1) * sizeof(char*));
course->students[course->capacity] = (char*)malloc(10 * sizeof(char));
// 复制学生 ID
strcpy(course->students[course->capacity], student_id);
course->capacity--;
return 1;
} else {
return 0;
}
}
// 课程移除学生
int remove_student(Course* course, char* student_id) {
for (int i = 0; i < course->capacity; i++) {
if (strcmp(course->students[i], student_id) == 0) {
// 释放内存空间
free(course->students[i]);
// 移动数组元素
for (int j = i; j < course->capacity; j++) {
course->students[j] = course->students[j + 1];
}
// 重新分配内存空间
course->students = (char**)realloc(course->students, (course->capacity - 1) * sizeof(char*));
course->capacity++;
return 1;
}
}
return 0;
}
// 输出课程信息
void print_course(Course course) {
printf("Course ID: %s, Name: %s, Teacher: %s, Credit: %d, Capacity: %d, Students: ", course.id, course.name, course.teacher, course.credit, course.capacity);
for (int i = 0; i < course.capacity; i++) {
printf("%s ", course.students[i]);
}
printf("\n");
}
// 输出学生信息
void print_student(Student student) {
printf("Student ID: %s, Name: %s, Grade: %d, Courses: ", student.id, student.name, student.grade);
for (int i = 0; i < student.grade; i++) {
printf("%s ", student.courses[i]);
}
printf("\n");
}
int main() {
// 定义课程和学生对象
Course course1 = {"C001", "Math", "Tom", 2, 3, NULL};
Course course2 = {"C002", "English", "Mary", 3, 2, NULL};
Student student1 = {"S001", "John", 3, NULL};
Student student2 = {"S002", "Lucy", 2, NULL};
// 学生选课
add_student(&course1, student1.id);
add_student(&course2, student1.id);
add_student(&course1, student2.id);
// 输出课程和学生信息
print_course(course1);
print_course(course2);
print_student(student1);
print_student(student2);
// 学生退课
remove_student(&course2, student1.id);
// 输出课程和学生信息
print_course(course1);
print_course(course2);
print_student(student1);
print_student(student2);
return 0;
}
```
这个示例实现了一个简单的学生选课系统,包括课程结构体和学生结构体的定义,以及选课和退课的功能。注意,这个示例只是一个基础的实现,实际的学生选课系统需要根据实际需求进行设计和开发。