用C语言写一个简易的课程管理系统,功能有添加课程,删除课程,输出所有课程,课程信息只有课程名,在添加课程之后可以选择继续添加和返回上一级,添加课程需要判断该课程是否已存在,存在则添加失败,删除课程需要判断该课程是否存在,不存在则删除失败,同时需要对该程序的每一句代码都增加注释说明
时间: 2024-03-24 19:41:44 浏览: 58
好的,我可以为您解答这个问题。以下是代码实现和注释说明:
```c
#include <stdio.h>
#include <string.h>
#define MAX_COURSE_NUM 100 // 最大课程数
struct Course {
char name[20]; // 课程名
};
int course_num = 0; // 当前课程数
struct Course courses[MAX_COURSE_NUM]; // 课程数组
// 添加课程
void add_course() {
char name[20];
printf("请输入课程名:");
scanf("%s", name);
// 判断该课程是否已存在
for (int i = 0; i < course_num; i++) {
if (strcmp(courses[i].name, name) == 0) {
printf("该课程已存在!\n");
return;
}
}
// 添加课程
strcpy(courses[course_num].name, name);
course_num++;
printf("添加成功!\n");
}
// 删除课程
void delete_course() {
char name[20];
printf("请输入课程名:");
scanf("%s", name);
// 判断该课程是否存在
int index = -1;
for (int i = 0; i < course_num; i++) {
if (strcmp(courses[i].name, name) == 0) {
index = i;
break;
}
}
if (index == -1) {
printf("该课程不存在!\n");
} else {
// 删除课程
for (int i = index; i < course_num - 1; i++) {
strcpy(courses[i].name, courses[i + 1].name);
}
course_num--;
printf("删除成功!\n");
}
}
// 输出所有课程
void print_all_courses() {
printf("所有课程如下:\n");
for (int i = 0; i < course_num; i++) {
printf("%s\n", courses[i].name);
}
}
int main() {
int choice;
while (1) {
printf("请选择操作:\n");
printf("1. 添加课程\n");
printf("2. 删除课程\n");
printf("3. 输出所有课程\n");
printf("4. 退出\n");
scanf("%d", &choice);
switch (choice) {
case 1:
add_course();
break;
case 2:
delete_course();
break;
case 3:
print_all_courses();
break;
case 4:
printf("程序退出!\n");
return 0;
default:
printf("输入无效,请重新输入!\n");
break;
}
}
return 0;
}
```
代码注释说明:
- `#define MAX_COURSE_NUM 100`:定义最大课程数为 100。
- `struct Course`:定义课程结构体,包含课程名 `name`。
- `int course_num = 0`:定义当前课程数,初始值为 0。
- `struct Course courses[MAX_COURSE_NUM]`:定义课程数组,元素个数为 `MAX_COURSE_NUM`。
- `void add_course()`:添加课程函数。
- `void delete_course()`:删除课程函数。
- `void print_all_courses()`:输出所有课程函数。
- `int main()`:主函数。
- `while (1)`:循环执行,直到用户选择退出程序。
- `scanf("%d", &choice)`:输入用户选择的操作。
- `switch (choice)`:根据用户选择的操作进行相应的处理。
- `case 1`:添加课程。
- `case 2`:删除课程。
- `case 3`:输出所有课程。
- `case 4`:退出程序。
- `default`:输入无效,重新输入。
- `for` 循环语句:遍历课程数组,判断课程是否已存在或删除。
- `strcpy` 函数:复制字符串。
- `strcmp` 函数:比较两个字符串是否相等。
阅读全文