C语言实现学生选课系统:功能、代码及优化
#include <stdio.h> #include <string.h>
#define MAX_STUDENT 100 #define MAX_COURSE 50
struct student { char name[20]; char id[10]; char cls[10]; char dept[20]; int selected[MAX_COURSE]; };
struct course { char name[30]; char time[20]; char place[20]; int capacity; int selected; };
struct student students[MAX_STUDENT]; struct course courses[MAX_COURSE];
int num_students = 0; int num_courses = 0;
void display_menu() { printf("学生选课系统\n"); printf("1. 添加学生信息\n"); printf("2. 添加课程信息\n"); printf("3. 查看学生信息\n"); printf("4. 查看课程信息\n"); printf("5. 学生选课\n"); printf("6. 查看选课情况\n"); printf("0. 退出系统\n"); }
void add_student() { if (num_students >= MAX_STUDENT) { printf("系统容量已满,无法添加新学生。\n"); return; } printf("请输入学生姓名:"); scanf("%s", students[num_students].name); printf("请输入学生学号:"); scanf("%s", students[num_students].id); printf("请输入学生班级:"); scanf("%s", students[num_students].cls); printf("请输入学生所属学院:"); scanf("%s", students[num_students].dept); for (int i = 0; i < num_courses; i++) { students[num_students].selected[i] = 0; } num_students++; printf("添加学生信息成功。\n"); }
void add_course() { if (num_courses >= MAX_COURSE) { printf("系统容量已满,无法添加新课程。\n"); return; } printf("请输入课程名称:"); scanf("%s", courses[num_courses].name); printf("请输入上课时间:"); scanf("%s", courses[num_courses].time); printf("请输入上课地点:"); scanf("%s", courses[num_courses].place); printf("请输入课程容量:"); scanf("%d", &courses[num_courses].capacity); courses[num_courses].selected = 0; num_courses++; printf("添加课程信息成功。\n"); }
void display_students() { printf("学生列表:\n"); for (int i = 0; i < num_students; i++) { printf("%s\t%s\t%s\t%s\n", students[i].name, students[i].id, students[i].cls, students[i].dept); } }
void display_courses() { printf("课程列表:\n"); for (int i = 0; i < num_courses; i++) { printf("%s\t%s\t%s\t%d/%d\n", courses[i].name, courses[i].time, courses[i].place, courses[i].selected, courses[i].capacity); } }
void select_course() { char id[10]; printf("请输入学生学号:"); scanf("%s", id); int sid = -1; for (int i = 0; i < num_students; i++) { if (strcmp(id, students[i].id) == 0) { sid = i; break; } } if (sid == -1) { printf("学号为%s的学生不存在。\n", id); return; } int cid; printf("请输入要选择的课程编号:"); scanf("%d", &cid); if (cid < 1 || cid > num_courses) { printf("无效的课程编号。\n"); return; } if (students[sid].selected[cid-1] == 1) { printf("该学生已经选择过该课程。\n"); return; } if (courses[cid-1].selected == courses[cid-1].capacity) { printf("该课程已经选满。\n"); return; } students[sid].selected[cid-1] = 1; courses[cid-1].selected++; printf("选课成功。\n"); }
void display_selection() { printf("选课情况:\n"); for (int i = 0; i < num_students; i++) { printf("%s\t%s\t%s\t%s\t", students[i].name, students[i].id, students[i].cls, students[i].dept); for (int j = 0; j < num_courses; j++) { if (students[i].selected[j] == 1) { printf("%s ", courses[j].name); } } printf("\n"); } }
int main() { int choice; while (1) { display_menu(); printf("请输入选项:"); scanf("%d", &choice); switch (choice) { case 0: printf("退出学生选课系统。\n"); return 0; case 1: add_student(); break; case 2: add_course(); break; case 3: display_students(); break; case 4: display_courses(); break; case 5: select_course(); break; case 6: display_selection(); break; default: printf("无效的选项,请重新输入。\n"); break; } } return 0; }
原文地址: https://www.cveoy.top/t/topic/obtL 著作权归作者所有。请勿转载和采集!