首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Python进行学生选课实例代码

Python进行学生选课实例代码

原创
作者头像
用户11789613
发布2025-08-13 11:22:39
发布2025-08-13 11:22:39
1130
举报

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 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档