程序介绍
基于C语言开发的一个学生选课系统,定义添加学生和课程、学生选课、查询学生和课程信息等几个函数。通过主程序的while循环,可以实现用户对选课系统的操作选择。
代码详情
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义学生信息结构体
typedef struct {
char name[20];
int age;
char sex[5];
int max_course_num; // 学生最多选择的课程数
int selected_course_num; // 学生已经选择的课程数
char selected_courses[5][20]; // 学生已选课程
} Student;
// 定义课程信息结构体
typedef struct {
char name[20];
char teacher[20];
int credit;
int max_num; // 课程最大选课人数
int selected_num; // 课程已选人数
Student* selected_students[10]; // 选课学生名单
} Course;
Student students[10]; // 最多存储10个学生
Course courses[5]; // 最多存储5门课程
int student_num = 0; // 存储学生数量
int course_num = 0; // 存储课程数量
// 添加学生
void add_student() {
if (student_num >= 10) {
printf("学生数量已达上限!\n");
return;
}
printf("请输入学生姓名:");
scanf("%s", students[student_num].name);
printf("请输入学生年龄:");
scanf("%d", &students[student_num].age);
printf("请输入学生性别:");
scanf("%s", students[student_num].sex);
printf("请输入学生最多选择课程的数目:");
scanf("%d", &students[student_num].max_course_num);
students[student_num].selected_course_num = 0;
student_num++;
printf("添加成功!\n");
}
// 添加课程
void add_course() {
if (course_num >= 5) {
printf("课程数量已达上限!\n");
return;
}
printf("请输入课程名称:");
scanf("%s", courses[course_num].name);
printf("请输入授课教师:");
scanf("%s", courses[course_num].teacher);
printf("请输入学分:");
scanf("%d", &courses[course_num].credit);
printf("请输入最大选课人数:");
scanf("%d", &courses[course_num].max_num);
courses[course_num].selected_num = 0;
course_num++;
printf("添加成功!\n");
}
// 学生选课
void choose_course() {
char name[20];
printf("请输入你的姓名:");
scanf("%s", name);
Student* current_student = NULL;
for (int i = 0; i < student_num; i++) {
if (strcmp(students[i].name, name) == 0) {
current_student = &students[i];
break;
}
}
if (current_student == NULL) {
printf("未找到该学生!\n");
return;
}
if (current_student->selected_course_num >= current_student->max_course_num) {
printf("你已经选够了最大的课程数!\n");
return;
}
char course_name[20];
printf("请输入你要选择的课程名称:");
scanf("%s", course_name);
Course* current_course = NULL;
for (int i = 0; i < course_num; i++) {
if (strcmp(courses[i].name, course_name) == 0) {
current_course = &courses[i];
break;
}
}
if (current_course == NULL) {
printf("未找到该课程!\n");
return;
}
if (current_course->selected_num >= current_course->max_num) {
printf("该课程已经选满了!\n");
return;
}
for (int i = 0; i < current_student->selected_course_num; i++) {
if (strcmp(current_student->selected_courses[i], course_name) == 0) {
printf("你已经选择了该课程!\n");
return;
}
}
// 学生选课
strcpy(current_student->selected_courses[current_student->selected_course_num], course_name);
current_student->selected_course_num++;
// 更新课程已选人数和学生名单
current_course->selected_students[current_course->selected_num] = current_student;
current_course->selected_num++;
printf("选课成功!\n");
}
// 查询学生信息
void search_student() {
char name[20];
printf("请输入你要查询的学生的姓名:");
scanf("%s", name);
for (int i = 0; i < student_num; i++) {
if (strcmp(students[i].name, name) == 0) {
printf("姓名:%s,年龄:%d,性别:%s\n", students[i].name, students[i].age, students[i].sex);
printf("已选课程:\n");
for (int j = 0; j < students[i].selected_course_num; j++) {
printf("%s\n", students[i].selected_courses[j]);
}
return;
}
}
printf("未找到该学生!\n");
}
// 查询课程信息
void search_course() {
char name[20];
printf("请输入你要查询的课程名称:");
scanf("%s", name);
for (int i = 0; i < course_num; i++) {
if (strcmp(courses[i].name, name) == 0) {
printf("课程名称:%s,授课教师:%s,学分:%d\n", courses[i].name, courses[i].teacher, courses[i].credit);
printf("已选人数:%d,最大选课人数:%d\n", courses[i].selected_num, courses[i].max_num);
printf("选课学生名单:\n");
for (int j = 0; j < courses[i].selected_num; j++) {
printf("%s\n", courses[i].selected_students[j]->name);
}
return;
}
}
printf("未找到该课程!\n");
}
int main() {
while (1) {
printf("请选择操作:\n");
printf("1. 添加学生\n");
printf("2. 添加课程\n");
printf("3. 学生选课\n");
printf("4. 查询学生信息\n");
printf("5. 查询课程信息\n");
printf("6. 退出系统\n");
int choice;
scanf("%d", &choice);
switch (choice) {
case 1:
add_student();
break;
case 2:
add_course();
break;
case 3:
choose_course();
break;
case 4:
search_student();
break;
case 5:
search_course();
break;
case 6:
exit(0);
default:
printf("输入有误,请重新输入!\n");
break;
}
}
return 0;
}
希望这个示例能对你有所帮助!
© 版权声明
本站资源来自互联网收集,仅供用于学习和交流,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!
THE END