C语言学生选课系统分角色登录代码
时间: 2023-11-09 07:05:04 浏览: 49
以下是一个简单的 C 语言学生选课系统的角色登录代码示例:
```c
#include <stdio.h>
#include <string.h>
#define MAX_STUDENTS 100
#define MAX_COURSES 10
// 学生信息结构体
typedef struct {
int id;
char name[20];
int selected_courses[MAX_COURSES];
} Student;
// 课程信息结构体
typedef struct {
int id;
char name[20];
} Course;
// 学生数据数组
Student students[MAX_STUDENTS] = {
{1, "张三", {1, 2}},
{2, "李四", {2, 3}},
{3, "王五", {1, 3}},
{4, "赵六", {1, 2, 3}},
};
// 课程数据数组
Course courses[MAX_COURSES] = {
{1, "C语言程序设计"},
{2, "数据结构与算法"},
{3, "操作系统"},
};
// 根据学生 ID 查找学生信息
Student *find_student(int id) {
for (int i = 0; i < MAX_STUDENTS; i++) {
if (students[i].id == id) {
return &students[i];
}
}
return NULL;
}
// 根据课程 ID 查找课程信息
Course *find_course(int id) {
for (int i = 0; i < MAX_COURSES; i++) {
if (courses[i].id == id) {
return &courses[i];
}
}
return NULL;
}
// 学生登录函数
void student_login() {
int id;
printf("请输入学生 ID:");
scanf("%d", &id);
Student *student = find_student(id);
if (student == NULL) {
printf("找不到该学生!\n");
return;
}
printf("欢迎你,%s!\n", student->name);
printf("你已选的课程有:\n");
for (int i = 0; i < MAX_COURSES; i++) {
if (student->selected_courses[i] != 0) {
Course *course = find_course(student->selected_courses[i]);
if (course != NULL) {
printf("%d:%s\n", course->id, course->name);
}
}
}
}
// 教师登录函数
void teacher_login() {
printf("欢迎你,教师!\n");
printf("当前选课情况如下:\n");
for (int i = 0; i < MAX_COURSES; i++) {
Course *course = &courses[i];
printf("%d:%s\n", course->id, course->name);
printf("选课学生:\n");
for (int j = 0; j < MAX_STUDENTS; j++) {
Student *student = &students[j];
for (int k = 0; k < MAX_COURSES; k++) {
if (student->selected_courses[k] == course->id) {
printf("%d:%s\n", student->id, student->name);
break;
}
}
}
}
}
int main() {
int role;
printf("请选择登录角色:1.学生 2.教师\n");
scanf("%d", &role);
switch (role) {
case 1:
student_login();
break;
case 2:
teacher_login();
break;
default:
printf("无效的角色!\n");
break;
}
return 0;
}
```
该示例程序定义了两个结构体 `Student` 和 `Course`,分别表示学生和课程信息,其中学生信息包括学生 ID、姓名和已选课程数组,课程信息包括课程 ID 和名称。程序还定义了两个数组 `students` 和 `courses`,分别存储学生和课程数据。
程序还定义了两个函数 `find_student` 和 `find_course`,用于根据 ID 查找学生和课程信息。这两个函数的实现很简单,就是一个循环查找。
在 `student_login` 函数中,程序首先要求用户输入学生 ID,然后调用 `find_student` 函数查找学生信息。如果找不到该学生,则输出错误信息并返回。否则,输出欢迎信息和该学生已选课程信息。
在 `teacher_login` 函数中,程序直接输出欢迎信息和当前选课情况。具体实现为两个嵌套的循环,分别遍历课程和学生数据,并输出选课情况。
在 `main` 函数中,程序首先要求用户选择登录角色,然后根据选择调用 `student_login` 或 `teacher_login` 函数。如果选择无效,则输出错误信息。
此示例程序只是一个简单的学生选课系统,实际应用中可能需要更复杂的功能和更完善的逻辑。