class CourseManagementSystem: def __init__(self): self.courses = [] self.students = {} self.teachers = {} self.schedule = {} self.grades = {} def add_course(self, course_id, name, credit): self.courses.append({ "course_id": course_id, "name": name, "credit": credit }) def add_student(self, student_id, name): self.students[student_id] = { "name": name, "courses": [] } def add_teacher(self, teacher_id, name): self.teachers[teacher_id] = { "name": name, "courses": [] } def schedule_course(self, course_id, teacher_id, time, classroom): # 检查时间冲突 for scheduled in self.schedule.values(): if scheduled["time"] == time and scheduled["classroom"] == classroom: print("教室时间冲突!") return False self.schedule[course_id] = { "teacher": teacher_id, "time": time, "classroom": classroom } return True def register_course(self, student_id, course_id): if course_id in self.schedule: self.students[student_id]["courses"].append(course_id) return True return False def input_grade(self, student_id, course_id, grade): if student_id in self.students and course_id in self.schedule: self.grades.setdefault(student_id, {})[course_id] = grade return True return False def query_schedule(self, student_id): schedule = [] for course_id in self.students[student_id]["courses"]: if course_id in self.schedule: detail = self.schedule[course_id] schedule.append({ "course": next(c for c in self.courses if c["course_id"] == course_id), "time": detail["time"], "classroom": detail["classroom"], "teacher": self.teachers[detail["teacher"]]["name"] }) return schedule def query_grades(self, student_id): return self.grades.get(student_id, {}) def main(): cms = CourseManagementSystem() # 初始化数据 cms.add_course("C001", "Python编程", 3) cms.add_course("C002", "数据库原理", 4) cms.add_student("S001", "张三") cms.add_student("S002", "李四") cms.add_teacher("T001", "王老师") cms.add_teacher("T002", "李教授") # 排课 cms.schedule_course("C001", "T001", "周一 1-2节", "A101") cms.schedule_course("C002", "T002", "周三 3-4节", "B203") # 选课 cms.register_course("S001", "C001") cms.register_course("S001", "C002") cms.register_course("S002", "C001") # 录入成绩 cms.input_grade("S001", "C001", 90) cms.input_grade("S001", "C002", 85) cms.input_grade("S002", "C001", 78) # 查询示例 while True: print("\n教务管理系统") print("1. 查询课表") print("2. 查询成绩") print("3. 退出") choice = input("请选择操作:") if choice == "1": student_id = input("输入学号:") schedule = cms.query_schedule(student_id) print(f"\n{student_id} 的课表:") for course in schedule: print(f"{course['course']['name']} 时间:{course['time']} 教室:{course['classroom']} 教师:{course['teacher']}") elif choice == "2": student_id = input("输入学号:") grades = cms.query_grades(student_id) print(f"\n{student_id} 的成绩:") for course_id, grade in grades.items(): course_name = next(c["name"] for c in cms.courses if c["course_id"] == course_id) print(f"{course_name}: {grade}") elif choice == "3": break else: print("无效选择") if __name__ == "__main__": main()