用c语言实现学生信息管理系统中删除课程的功能,不能使用链表,初始化课程信息和删除课程信息都用函数完成,课程结构体为typedef struct Class { char cid[20];//课程号 char cnane[50];//课程名 char cacademy[50];//课程开设学院 }clas[N];
时间: 2024-03-22 22:39:42 浏览: 144
好的,我可以为您提供一个实现学生信息管理系统中删除课程的功能的C语言程序。以下是一个简单的实现,其中没有使用链表:
```c
#include <stdio.h>
#include <string.h>
#define N 100 // 最大课程数目
// 课程结构体
typedef struct Class {
char cid[20]; // 课程号
char cname[50]; // 课程名
char cacademy[50]; // 课程开设学院
} Clas;
// 初始化课程信息函数
void init_course_info(Clas* clas, char* cid, char* cname, char* cacademy) {
strcpy(clas->cid, cid);
strcpy(clas->cname, cname);
strcpy(clas->cacademy, cacademy);
}
// 删除课程信息函数
void delete_course_info(Clas* clas, int num_clas, char* cid) {
int i, j;
for (i = 0; i < num_clas; i++) {
if (strcmp(clas[i].cid, cid) == 0) {
// 找到要删除的课程
for (j = i; j < num_clas - 1; j++) {
// 将后面的课程向前移动
strcpy(clas[j].cid, clas[j + 1].cid);
strcpy(clas[j].cname, clas[j + 1].cname);
strcpy(clas[j].cacademy, clas[j + 1].cacademy);
}
printf("已删除课程 %s\n", cid);
return;
}
}
printf("未找到课程 %s\n", cid);
}
int main() {
Clas clas[N];
int num_clas = 0;
// 初始化课程信息
init_course_info(&clas[num_clas++], "001", "数学", "数学与统计学院");
init_course_info(&clas[num_clas++], "002", "英语", "外国语学院");
init_course_info(&clas[num_clas++], "003", "物理", "物理学院");
// 删除课程信息
delete_course_info(clas, num_clas, "002");
delete_course_info(clas, num_clas, "004");
return 0;
}
```
以上程序中,我们定义了一个课程结构体 `Clas`,其中包含了课程号、课程名和课程开设学院三个属性。
我们通过 `init_course_info` 函数来初始化课程信息,其中传入了一个指向 `Clas` 结构体的指针,以及课程号、课程名和课程开设学院三个参数。这个函数的实现比较简单,就是将传入的参数分别赋值给课程结构体中的属性。
对于删除课程信息的功能,我们定义了一个 `delete_course_info` 函数,其中传入了一个指向 `Clas` 结构体数组的指针、课程数目以及要删除的课程号。这个函数的实现比较复杂,需要遍历所有的课程,查找要删除的课程,如果找到了,就将后面的课程向前移动。如果没找到,就输出一个提示信息。
在 `main` 函数中,我们先初始化了一些课程信息,然后分别调用了 `delete_course_info` 函数来删除课程。
阅读全文