用c语言实现学生信息管理系统中删除课程的功能,不能使用链表,初始化课程信息和删除课程信息都用函数完成
时间: 2024-03-22 12:39:40 浏览: 71
好的,我可以为您提供一个实现学生信息管理系统中删除课程的功能的C语言程序。以下是一个简单的实现,其中没有使用链表:
```c
#include <stdio.h>
#include <string.h>
// 课程结构体
typedef struct {
char name[20]; // 课程名称
int score; // 课程分数
} Course;
// 学生结构体
typedef struct {
char name[20]; // 学生姓名
int id; // 学生学号
Course courses[5]; // 学生选修的课程
int num_courses; // 学生选修课程数目
} Student;
// 初始化课程信息函数
void init_course_info(Course* course, char* name, int score) {
strcpy(course->name, name);
course->score = score;
}
// 删除课程信息函数
void delete_course_info(Student* student, char* name) {
int i, j;
for (i = 0; i < student->num_courses; i++) {
if (strcmp(student->courses[i].name, name) == 0) {
// 找到要删除的课程
for (j = i; j < student->num_courses - 1; j++) {
// 将后面的课程向前移动
strcpy(student->courses[j].name, student->courses[j + 1].name);
student->courses[j].score = student->courses[j + 1].score;
}
student->num_courses--;
printf("已删除课程 %s\n", name);
return;
}
}
printf("未找到课程 %s\n", name);
}
int main() {
Student student;
strcpy(student.name, "张三");
student.id = 1001;
// 初始化课程信息
init_course_info(&student.courses[0], "数学", 90);
init_course_info(&student.courses[1], "英语", 85);
init_course_info(&student.courses[2], "物理", 95);
student.num_courses = 3;
// 删除课程信息
delete_course_info(&student, "英语");
delete_course_info(&student, "化学");
return 0;
}
```
以上程序中,我们定义了两个结构体,一个是课程结构体,一个是学生结构体。课程结构体包含了课程名称和课程分数两个属性,学生结构体包含了学生姓名、学号、选修的课程以及选修课程数目。
我们通过 `init_course_info` 函数来初始化课程信息,其中传入了一个指向 `Course` 结构体的指针,以及课程名称和课程分数两个参数。这个函数的实现比较简单,就是将传入的参数分别赋值给课程结构体中的属性。
对于删除课程信息的功能,我们定义了一个 `delete_course_info` 函数,其中传入了一个指向 `Student` 结构体的指针,以及要删除的课程名称。这个函数的实现比较复杂,需要遍历学生选修的所有课程,查找要删除的课程,如果找到了,就将后面的课程向前移动,最后将学生选修课程数目减一。如果没找到,就输出一个提示信息。
在 `main` 函数中,我们先初始化了一个学生的课程信息,然后分别调用了 `delete_course_info` 函数来删除选修的课程。
阅读全文