用C语言写一个学生选修课查询系统并写出完整代码
时间: 2023-12-29 16:05:05 浏览: 120
C语言学生选修课管理系统.rar
好的,以下是一个基于 C 语言实现的学生选修课查询系统的代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_COURSES 10 // 最大课程数
#define MAX_NAME_LEN 20 // 最大姓名长度
// 课程结构体
typedef struct {
char name[MAX_NAME_LEN]; // 课程名称
int credit; // 学分
} Course;
// 学生结构体
typedef struct {
char name[MAX_NAME_LEN]; // 姓名
Course courses[MAX_COURSES]; // 已选课程
int num_courses; // 已选课程数
} Student;
// 显示菜单
void show_menu() {
printf("1. 添加学生\n");
printf("2. 添加课程\n");
printf("3. 为学生添加课程\n");
printf("4. 显示所有学生的课程\n");
printf("5. 退出\n");
}
// 添加学生
void add_student(Student *students, int *num_students) {
if (*num_students >= MAX_COURSES) {
printf("已达到最大学生数,无法添加!\n");
return;
}
Student *student = &students[*num_students];
printf("请输入学生姓名:");
scanf("%s", student->name);
student->num_courses = 0;
(*num_students)++;
}
// 添加课程
void add_course(Course *courses, int *num_courses) {
if (*num_courses >= MAX_COURSES) {
printf("已达到最大课程数,无法添加!\n");
return;
}
Course *course = &courses[*num_courses];
printf("请输入课程名称:");
scanf("%s", course->name);
printf("请输入课程学分:");
scanf("%d", &course->credit);
(*num_courses)++;
}
// 为学生添加课程
void add_course_for_student(Student *students, int num_students, Course *courses, int num_courses) {
char name[MAX_NAME_LEN];
int i, j;
printf("请输入学生姓名:");
scanf("%s", name);
for (i = 0; i < num_students; i++) {
if (strcmp(students[i].name, name) == 0) {
if (students[i].num_courses >= MAX_COURSES) {
printf("该学生已选课程数已达到最大,无法添加!\n");
return;
}
Course *course = &students[i].courses[students[i].num_courses];
printf("请选择要添加的课程:\n");
for (j = 0; j < num_courses; j++) {
printf("%d. %s(%d学分)\n", j + 1, courses[j].name, courses[j].credit);
}
int choice;
scanf("%d", &choice);
if (choice < 1 || choice > num_courses) {
printf("无效的选择!\n");
return;
}
*course = courses[choice - 1];
students[i].num_courses++;
printf("已为学生 %s 添加课程 %s(%d学分)\n", students[i].name, course->name, course->credit);
return;
}
}
printf("未找到该学生!\n");
}
// 显示所有学生的课程
void show_all_courses(Student *students, int num_students) {
int i, j;
printf("所有学生的课程如下:\n");
for (i = 0; i < num_students; i++) {
printf("%s:", students[i].name);
if (students[i].num_courses == 0) {
printf("无\n");
} else {
for (j = 0; j < students[i].num_courses; j++) {
printf("%s(%d学分) ", students[i].courses[j].name, students[i].courses[j].credit);
}
printf("\n");
}
}
}
int main() {
Student students[MAX_COURSES];
int num_students = 0;
Course courses[MAX_COURSES];
int num_courses = 0;
while (1) {
show_menu();
int choice;
scanf("%d", &choice);
switch (choice) {
case 1:
add_student(students, &num_students);
break;
case 2:
add_course(courses, &num_courses);
break;
case 3:
add_course_for_student(students, num_students, courses, num_courses);
break;
case 4:
show_all_courses(students, num_students);
break;
case 5:
printf("退出程序...\n");
exit(0);
default:
printf("无效的选择!\n");
break;
}
}
return 0;
}
```
该程序实现了以下功能:
1. 添加学生
2. 添加课程
3. 为学生添加课程
4. 显示所有学生的课程
您可以将代码复制到 C 语言编译器中进行编译和运行。
阅读全文