用C语言写 学生选修课查询系统开发
时间: 2023-08-18 07:09:19 浏览: 126
学生选课系统,C语言实现
5星 · 资源好评率100%
好的,下面是一个简单的学生选修课查询系统的开发思路和代码示例。
1. 确定需求和功能:
- 输入学生信息(学号、姓名、班级等);
- 输入课程信息(课程名称、课程编号、授课教师、学分等);
- 学生选课功能:学生可以从已有的课程中选择自己的课程;
- 成绩查询功能:学生可以查询自己已选课程的成绩;
- 课程查询功能:学生可以查询所有课程信息;
- 退课功能:学生可以退选已选的课程。
2. 定义数据结构和变量:
```c
struct student {
char name[20];
char id[10];
char major[20];
int selected_course[10];
int grade[10];
int course_count;
};
struct course {
char name[20];
char id[10];
char teacher[20];
int credit;
int capacity;
int selected_count;
};
struct student stu[100];
struct course cou[100];
int stu_count = 0;
int cou_count = 0;
```
3. 实现输入学生和课程信息的函数:
```c
void add_student() {
printf("请输入学生信息:\n");
printf("姓名:");
scanf("%s", stu[stu_count].name);
printf("学号:");
scanf("%s", stu[stu_count].id);
printf("专业:");
scanf("%s", stu[stu_count].major);
stu[stu_count].course_count = 0;
stu_count++;
}
void add_course() {
printf("请输入课程信息:\n");
printf("课程名称:");
scanf("%s", cou[cou_count].name);
printf("课程编号:");
scanf("%s", cou[cou_count].id);
printf("授课教师:");
scanf("%s", cou[cou_count].teacher);
printf("学分:");
scanf("%d", &cou[cou_count].credit);
printf("容量:");
scanf("%d", &cou[cou_count].capacity);
cou[cou_count].selected_count = 0;
cou_count++;
}
```
4. 实现学生选课和退课的函数:
```c
void select_course() {
char course_id[10];
printf("请输入课程编号:");
scanf("%s", course_id);
for (int i = 0; i < cou_count; i++) {
if (strcmp(cou[i].id, course_id) == 0) {
if (cou[i].selected_count < cou[i].capacity) {
cou[i].selected_count++;
stu[stu_count-1].selected_course[stu[stu_count-1].course_count] = i;
stu[stu_count-1].course_count++;
printf("选课成功!\n");
} else {
printf("该课程已满!\n");
}
return;
}
}
printf("没有找到该课程!\n");
}
void drop_course() {
char course_id[10];
printf("请输入课程编号:");
scanf("%s", course_id);
for (int i = 0; i < stu[stu_count-1].course_count; i++) {
int index = stu[stu_count-1].selected_course[i];
if (strcmp(cou[index].id, course_id) == 0) {
cou[index].selected_count--;
for (int j = i; j < stu[stu_count-1].course_count-1; j++) {
stu[stu_count-1].selected_course[j] = stu[stu_count-1].selected_course[j+1];
}
stu[stu_count-1].course_count--;
printf("退课成功!\n");
return;
}
}
printf("没有找到该课程!\n");
}
```
5. 实现成绩查询和课程查询的函数:
```c
void query_grade() {
for (int i = 0; i < stu[stu_count-1].course_count; i++) {
int index = stu[stu_count-1].selected_course[i];
printf("%s的%s课程成绩为:%d\n", stu[stu_count-1].name, cou[index].name, stu[stu_count-1].grade[i]);
}
}
void query_course() {
for (int i = 0; i < cou_count; i++) {
printf("课程名称:%s 课程编号:%s 授课教师:%s 学分:%d 容量:%d 已选人数:%d\n",
cou[i].name, cou[i].id, cou[i].teacher, cou[i].credit, cou[i].capacity, cou[i].selected_count);
}
}
```
6. 主函数中实现菜单和用户交互:
```c
int main() {
int choice;
while (1) {
printf("\n请选择功能:\n");
printf("1. 输入学生信息\n");
printf("2. 输入课程信息\n");
printf("3. 学生选课\n");
printf("4. 退课\n");
printf("5. 成绩查询\n");
printf("6. 课程查询\n");
printf("0. 退出\n");
printf("请选择:");
scanf("%d", &choice);
switch (choice) {
case 1:
add_student();
break;
case 2:
add_course();
break;
case 3:
select_course();
break;
case 4:
drop_course();
break;
case 5:
query_grade();
break;
case 6:
query_course();
break;
case 0:
return 0;
default:
printf("输入错误,请重新选择!\n");
}
}
return 0;
}
```
这是一个简单的学生选修课查询系统的实现,您可以根据自己的需求进行改进。
阅读全文