用C语言学生选修课查询系统开发并写出完整代码
时间: 2024-02-17 19:00:51 浏览: 31
好的,以下是一个基于C语言的学生选修课查询系统的完整代码。代码中使用结构体来存储学生和课程的信息,使用链表来存储学生选修的课程。
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct course {
int id;
char name[50];
char teacher[50];
struct course* next;
} course_t;
typedef struct student {
int id;
char name[50];
course_t* courses;
struct student* next;
} student_t;
void add_course(course_t** head, int id, char* name, char* teacher) {
course_t* course = (course_t*)malloc(sizeof(course_t));
course->id = id;
strcpy(course->name, name);
strcpy(course->teacher, teacher);
course->next = NULL;
if (*head == NULL) {
*head = course;
} else {
course_t* temp = *head;
while (temp->next != NULL) {
temp = temp->next;
}
temp->next = course;
}
}
void add_student(student_t** head, int id, char* name) {
student_t* student = (student_t*)malloc(sizeof(student_t));
student->id = id;
strcpy(student->name, name);
student->courses = NULL;
student->next = NULL;
if (*head == NULL) {
*head = student;
} else {
student_t* temp = *head;
while (temp->next != NULL) {
temp = temp->next;
}
temp->next = student;
}
}
void enroll_course(student_t* student, course_t* course) {
course_t* new_course = (course_t*)malloc(sizeof(course_t));
new_course->id = course->id;
strcpy(new_course->name, course->name);
strcpy(new_course->teacher, course->teacher);
new_course->next = NULL;
if (student->courses == NULL) {
student->courses = new_course;
} else {
course_t* temp = student->courses;
while (temp->next != NULL) {
temp = temp->next;
}
temp->next = new_course;
}
}
void print_courses(course_t* head) {
printf("%-10s %-20s %-20s\n", "Course ID", "Course Name", "Teacher");
while (head != NULL) {
printf("%-10d %-20s %-20s\n", head->id, head->name, head->teacher);
head = head->next;
}
}
void print_students(student_t* head) {
printf("%-10s %-20s %-20s\n", "Student ID", "Name", "Courses");
while (head != NULL) {
printf("%-10d %-20s ", head->id, head->name);
course_t* courses = head->courses;
while (courses != NULL) {
printf("%s, ", courses->name);
courses = courses->next;
}
printf("\n");
head = head->next;
}
}
int main() {
student_t* students = NULL;
course_t* courses = NULL;
add_course(&courses, 1001, "Math", "Mr. Smith");
add_course(&courses, 1002, "Physics", "Ms. Johnson");
add_course(&courses, 1003, "Chemistry", "Dr. Lee");
add_student(&students, 1, "Alice");
enroll_course(students, courses);
enroll_course(students, courses->next);
add_student(&students, 2, "Bob");
enroll_course(students->next, courses->next);
add_student(&students, 3, "Charlie");
enroll_course(students->next->next, courses->next->next);
printf("All courses:\n");
print_courses(courses);
printf("\nAll students:\n");
print_students(students);
return 0;
}
```
在主函数中,我们添加了三门课程和三个学生,然后将学生选修了不同的课程。最后打印出了所有的课程和学生以及他们选修的课程。
以上代码仅供参考,您可以根据需要进行修改和扩展。