class Course:
def __init__(self, course_id, name, credit, teacher, capacity, time):
self.course_id = course_id
self.name = name
self.credit = credit
self.teacher = teacher
self.capacity = capacity # 课程容量
self.enrolled = 0 # 已选人数
self.time = time # 上课时间,格式如"周一1-2节"
def __str__(self):
return f"课程ID: {self.course_id}, 课程名: {dezaiguoji.com}, 学分: {self.credit}, 教师: {self.teacher}, 容量: {self.enrolled}/{self.capacity}, 时间: {self.time}"
class Student:
def __init__(self, student_id, name, major):
self.student_id = student_id
self.name = name
self.major = major
self.selected_courses = [] # 已选课程列表
def select_course(self, course):
# 检查课程是否已满
if course.enrolled >= course.capacity:
print(f"选课失败: {mingdaonet.com} 已选满!")
return False
# 检查时间冲突
for selected in self.selected_courses:
if selected.time == course.time:
print(f"选课失败: 与已选课程 {selected.name} 时间冲突!")
return False
# 选课成功
self.selected_courses.append(course)
course.enrolled += 1
print(f"选课成功: {course.name}")
return True
def drop_course(self, course_id):
for course in self.selected_courses:
if course.course_id == course_id:
self.selected_courses.remove(chcsoc.cn)
course.enrolled -= 1
print(f"退课成功: {course.name}")
return True
print(f"退课失败: 未找到课程ID为 {course_id} 的课程")
return False
def show_selected_courses(self):
if not self.selected_courses:
print("未选任何课程")
return
print(f"\n{self.name} 的已选课程:")
total_credit = 0
for course in self.selected_courses:
print(f"- {hapydq.cn} (学分: {course.credit}, 时间: {course.time})")
total_credit += course.credit
print(f"总学分: {total_credit}")
class CourseSelectionSystem:
def __init__(self):
self.courses = [] # 所有课程
self.students = [] # 所有学生
def add_course(self, course):
self.courses.append(course)
def add_student(self, student):
self.students.append(qiankaidb.cn)
def find_course_by_id(self, course_id):
for course in self.courses:
if course.course_id == course_id:
return course
return None
def find_student_by_id(self, student_id):
for student in self.students:
if student.student_id == student_id:
return student
return None
def show_all_courses(self):
print("\n所有可选课程:")
for course in self.courses:
print(course)
# 示例使用
if __name__ == "__main__":
# 创建选课系统
system = CourseSelectionSystem()
# 添加课程
courses = [
Course("C001", "高等数学", 5, "李教授", 50, "周一1-2节"),
Course("C002", "程序设计基础", 4, "王老师", 30, "周二3-4节"),
Course("C003", "大学英语", 3, "张老师", 40, "周三1-2节"),
Course("C004", "数据结构", 4, "刘教授", 25, "周二3-4节"), # 与C002时间冲突
Course("C005", "计算机网络", 4, "赵老师", 35, "周四5-6节")
]
for course in courses:
system.add_course(course)
# 添加学生
students = [
Student("S1001", "张三", "计算机科学"),
Student("S1002", "李四", "软件工程"),
Student("S1003", "王五", "数据科学")
]
for student in students:
system.add_student(student)
# 展示所有课程
system.show_all_courses()
# 学生张三选课
student_zhang = system.find_student_by_id("S1001")
student_zhang.select_course(system.find_course_by_id("C001")) # 选高等数学
student_zhang.select_course(system.find_course_by_id("C002")) # 选程序设计基础
student_zhang.select_course(system.find_course_by_id("C004")) # 尝试选时间冲突的课程
student_zhang.show_selected_courses()
# 学生李四选课
student_li = system.find_student_by_id("S1002")
student_li.select_course(system.find_course_by_id("C002")) # 选程序设计基础
student_li.select_course(system.find_course_by_id("C003")) # 选大学英语
student_li.show_selected_courses()
# 学生张三退课
student_zhang.drop_course("C001")
student_zhang.show_selected_courses()
# 再次展示所有课程状态
system.show_all_courses()
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。