实现一个python选课系统实例

  下面介绍一下自己写的python程序,主要是的知识点为sys、os、json、pickle的模块应用,python程序包的的使用,以及关于类的使用。

  下面是我的程序目录:

          实现一个python选课系统实例

bin是存放一些执行文件course.py下面是这个文件的内容:

import sys,os#程序主目录BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))print(BASE_DIR)#添加环境变量sys.path.append(BASE_DIR)from core import mainif __name__ == '__main__':    a =main.Run()    a.interactive()

这个文件是对os,sys模块的应用;

立即学习“Python免费学习笔记(深入)”;

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

  这里的os.path.abspath(__file__)是查看当前文件的所在位置。例如:

  D:python项目选课系统course_systembincourse.py

  这里的os.path.abspath是上一级目录例如:print(BASE_DIR)

  D:python项目选课系统course_system

sys.path.append(BASE_DIR) 括号里面是模块引用的地址,我们可以理解把这个模块得知设置成环境变量。from core import main  导入core包中的main文件这里是core包中udi.py文件
import hashlibimport timedef create_md():    m = hashlib.md5()    m.update(bytes(str(time.time()),encoding="utf-8"))    return m.hexdigest()

在python中hashlib提供了常见的摘要算法,如MD5,SHA1等等。它通过一个函数,把任意长度的数据转换为一个长度固定的数据串(通常用16进制的字符串表示)。为了给学生生成一个随机不重复的uid。

 

这里是core包中main.py文件内容

import sys,os         import json      #这里说一下json这个模块,java之中也有应用,所以一些数据也可以给java去用。import pickle     from bin import coursefrom core import uid#数据库文件路径db_DIR = course.BASE_DIR + r"db"db_school = db_DIR + r"school"db_teacher = db_DIR + r"teacher"db_student = db_DIR + r"student"db_classes = db_DIR + r"classes"db_course = db_DIR + r"course"db_admin = db_DIR + r"admin"db_class_record = db_DIR + r"class_record"db_class_grade = db_DIR + r"class_grade"#基础类,主要包括文件的读写操作class Baseclass(object):  #在python3中全部是新式类,但是建议还是这样写。在python2中存在经典类和新式类;例如:class Baseclass: 这种在python中是经典类,而class Baseclass(object):这样是新式类。有关它们的区别,我会在下一篇博客中具体说明。    def __init__(self):        pass    def save(self,type,dict):        filename = uid.create_md()        dict['uid'] = filename        file_path = "%s%s" %(db_DIR,type)        ab_file = "%s%s" %(file_path,filename)        if os.path.isdir(file_path):            with open(ab_file,"wb") as f:                f.write(pickle.dumps(dict))                if True:                    print(                    "-------",type,"创建成功","-------")                    for key in dict:                        print(key,":t",dict[key])    def seek_list(self,type,list):        filename = uid.create_md()        file_path = "%s%s" %(db_DIR,type)        ab_file = "%s%s" %(file_path,filename)        if os.path.isdir(file_path):            with open(ab_file,"wb") as f:                f.write(pickle.dumps(list))                if True:                    print(                    "-------",type,"创建成功","-------")                    for i in list:                        for key in i:                            print(key,i[key])                        print("n")        return True    def open(self,type):        all_data = []        db_path = "%s%s" %(db_DIR,type)        for i in os.listdir(db_path):            if os.path.isfile(os.path.join(db_path,i)):                db_file = os.path.join(db_path,i)                with open(db_file,"rb") as f:                    file_dict = pickle.load(f)                    all_data.append(file_dict)        return all_data#admin类class Admin(Baseclass):    def __init__(self):        Baseclass.__init__(self)    def create_school(self):        school_dict = {}        school_name = input("校名:")        school_address = input("地址:")        s1 = School(school_name, school_address)        school_dict["校名"] = s1.school_name        school_dict["地址"] = s1.school_address        Baseclass.save(self, "school", school_dict)    def create_teacher(self):        teacher_dict = {}        teacher_name = input("讲师姓名:")        teacher_salary = input("讲师工资:")        teacher_school = input("所属学校:")        t1 = Teacher(teacher_name, teacher_salary, teacher_school)        teacher_dict["姓名"] = t1.teacher_name        teacher_dict["工资"] = t1.teacher_salary        teacher_dict["所属学校"] = t1.teacher_school        print(teacher_dict)        Baseclass.save(self, "teacher", teacher_dict)    def create_student(self):        student_dict = {}        student_name = input("学员姓名:")        student_sex = input("学员性别:")        student_school = input("所属学校:")        student_classes = input("学员班级:")        st1 = Student(student_name, student_sex, student_school, student_classes)        student_dict["姓名"] = st1.student_name        student_dict["性别"] = st1.student_sex        student_dict["学校"] = st1.student_school        student_dict["班级"] = st1.student_classes        Baseclass.save(self, "student", student_dict)    def create_course(self):        course_dict = {}        course_name = input("课程名:")        course_period = input("周期:")        course_prices = input("价格:")        c1 = Course(course_name, course_period, course_prices)        course_dict["课程名"] = c1.course_name        course_dict["周期"] = c1.course_period        course_dict["价格"] = course_prices        Baseclass.save(self, "course", course_dict)    def create_classes(self):        classes_dict = {}        classes_name = input("班级名:")        classes_teachter = input("负责讲师:")        classes_course = input("所学课程:")        cs1 = Classes(classes_name, classes_teachter, classes_course)        classes_dict["班级名"] = cs1.classes_name        classes_dict["负责讲师"] = cs1.classes_teacher        classes_dict["课程"] = cs1.classes_course        Baseclass.save(self, "classes", classes_dict)#School类class School(Baseclass):    def __init__(self,school_name,school_address):        Baseclass.__init__(self)        self.school_name = school_name        self.school_address = school_address#teacher类class Teacher(Baseclass):    def __init__(self,teacher_name,teacher_salary,teacher_school):        Baseclass.__init__(self)        self.teacher_name = teacher_name        self.teacher_salary = teacher_salary        self.teacher_school = teacher_school    def create_class_record(self):        class_record = []        student_school = input("选择学校:")        student_classes = input("选择班级:")        student_times = input("课次:")        student_list = Baseclass.open(self,"student")        for i in student_list:            if i["学校"] == student_school and i["班级"] == student_classes:                student_name = i["姓名"]                student_status = input("%s 上课情况:" % student_name)                i["上课情况"] = student_status                i["课次"] = student_times                class_record.append(i)        Baseclass.seek_list(self,"class_record",class_record)    def create_class_grade(self):        class_grade = []        student_school = input("选择学校:")        student_classes = input("选择班级:")        student_times = input("课次:")        student_list = Baseclass.open(self,"student")        for i in student_list:            if i["学校"] == student_school and i["班级"] == student_classes:                student_name = i["姓名"]                student_grade = input("%s 成绩:" % student_name)                i["成绩"] = student_grade                i["课次"] = student_times                class_grade.append(i)        Baseclass.seek_list(self,"class_grade",class_grade)    def teacher_view_grade(self):        grade_list = []        student_school = input("校名:")        student_class = input("班级:")        student_times = input("课次:")        class_grade_list = Baseclass.open(self, "class_grade")        for i in class_grade_list:            for j in i:                if j["学校"] == student_school and j["班级"] == student_class and j["课次"] == student_times:                    grade_list.append(j)        for i in grade_list:            for key in i:                print(key,i[key])            print("n")    def tacher_view_record(self):        record_list = []        student_school = input("校名:")        student_class = input("班级:")        student_times = input("课次:")        class_record_list = Baseclass.open(self, "class_record")        for i in class_record_list:            for j in i:                if j["学校"] == student_school and j["班级"] == student_class and j["课次"] == student_times:                    record_list.append(j)        for i in record_list:            for key in i:                print(key,i[key])            print("n")#classes类class Course(Baseclass):    def __init__(self,course_name,course_period,course_prices):        Baseclass.__init__(self)        self.course_name = course_name        self.course_period = course_period        self.course_prices = course_prices#student类class Student(Baseclass):    def __init__(self,student_name,student_sex,student_school,student_classes):        Baseclass.__init__(self)        self.student_name = student_name        self.student_sex = student_sex        self.student_school = student_school        self.student_classes = student_classes    def student_registered(self):        student_dict = {}        print("欢迎进入学生注册系统")        student_name = input("注册姓名:")        student_sex = input("性别:")        student_school = input("学校:")        student_class = input("班级:")        st1 = Student(student_name,student_sex,student_school,student_class)        student_dict["姓名"] = st1.student_name        student_dict["性别"] = st1.student_sex        student_dict["学校"] = st1.student_school        student_dict["班级"] = st1.student_classes        Baseclass.save(self, "student", student_dict)    def student_pay_fees(self):        pass    def student_view_grade(self):        student_school = input("校名:")        student_class = input("班级:")        student_times = input("课次:")        student_name = input("姓名:")        class_grade_list = Baseclass.open(self,"class_grade")        for i in class_grade_list:            for j in i:                if j["学校"] == student_school and j["班级"] == student_class and j["课次"] == student_times                     and j["姓名"] == student_name:                    for key in j:                        print(key,j[key])                    print("n")    def student_view_record(self):        student_school = input("校名:")        student_class = input("班级:")        student_times = input("课次:")        student_name = input("姓名:")        class_record_list = Baseclass.open(self,"class_record")        for i in class_record_list:            for j in i:                if j["学校"] == student_school and j["班级"] == student_class and j["课次"] == student_times                     and j["姓名"] == student_name:                    for key in j:                        print(key,j[key])                    print("n")#课程类class Classes(Baseclass):    def __init__(self,classes_name,classes_teachter,classes_course):        Baseclass.__init__(self)        self.classes_name = classes_name        self.classes_teacher = classes_teachter        self.classes_course = classes_course#管理员视图,继承Admin类class Admin_view(Admin):    def __init__(self):        Admin.__init__(self)    def auth(self,username,password):        admin_file = "%s/%s.json" %(db_admin,username)        if os.path.isfile(admin_file):            with open(admin_file, 'r') as f:                admin_data = json.load(f)            if admin_data["name"] == username and admin_data["password"] == password:                return True            else:                print("用户名或密码错误")    def login(self):        menu = u'''        ------- 欢迎进入管理视图 ---------            33[32;1m 1.  校区管理            2.  讲师管理            3.  学员管理            4.  课程管理            5.  返回            33[0m'''        menu_dic = {            '1': Admin_view.school_manager,            '2': Admin_view.teacher_manager,            '3': Admin_view.student_manager,            '4': Admin_view.course_manager,            '5': "logout",        }        username = input("输入用户名:").strip()        password = input("输入密码:").strip()        auth = Admin_view.auth(self,username,password)        if auth:            exit_flag = False            while not exit_flag:                print(menu)                option = input("请选择:").strip()                if option in menu_dic:                    if int(option) == 5:                        exit_flag = True                    else:                        print(menu_dic[option])                        menu_dic[option](self)                else:                    print("33[31;1m输入错误,重新输入33[0m")    def school_manager(self):        exit_flag = False        while not exit_flag:            print("""                ------- 欢迎进入校区管理 ---------                33[32;1m1.  创建校区                2.  创建班级                3.  返回                33[0m            """)            option = input("请选择:").strip()            if int(option) == 1:                Admin.create_school(self)            elif int(option) == 2:                Admin.create_classes(self)            else:                exit_flag = True    def teacher_manager(self):        exit_flag = False        while not exit_flag:            print("""                ------- 欢迎进入讲师管理 ---------                33[32;1m 1.  创建讲师                2.  ...                3.  返回                33[0m            """)            option = input("请选择:").strip()            if int(option) == 1:                Admin.create_teacher(self)            elif int(option) == 2:                print("扩展中")            else:                exit_flag = True    def student_manager(self):        exit_flag = False        while not exit_flag:            print("""                ------- 欢迎进入学员管理 ---------                33[32;1m 1.  创建学员                2.  ...                3.  返回                33[0m            """)            option = input("请选择:").strip()            if int(option) == 1:                Admin.create_student(self)            elif int(option) == 2:                print("扩展中")            else:                exit_flag = True    def course_manager(self):        exit_flag = False        while not exit_flag:            print("""                ------- 欢迎进入课程管理 ---------                33[32;1m 1.  创建课程                2.  ...                3.  返回                33[0m            """)            option = input("请选择:").strip()            if int(option) == 1:                Admin.create_course(self)            elif int(option) == 2:                print("扩展中")            else:                exit_flag = True#讲师视图类,继承Teacher类class Teacher_view(Teacher,):    def __init__(self,teacher_name,teacher_salary,teacher_school):        Teacher.__init__(self,teacher_name,teacher_salary,teacher_school)    def login(self):        menu = u'''        ------- 欢迎进入讲师视图 ---------            33[32;1m  1.  创建上课记录            2.  创建学员成绩            3.  查看学员上课记录            4.  查看学员成绩            5.  返回            33[0m'''        menu_dic = {            '1': Teacher.create_class_record,            '2': Teacher.create_class_grade,            '3': Teacher.tacher_view_record,            '4': Teacher.teacher_view_grade,            '5': "logout",        }        if True:            exit_flag = False            while not exit_flag:                print(menu)                option = input("请选择:").strip()                if option in menu_dic:                    if int(option) == 5:                        exit_flag = True                    else:                        print(menu_dic[option])                        menu_dic[option](self)                else:                    print("33[31;1m输入错误,重新输入33[0m")#学员视图类,继承Student类class Student_view(Student):    def __init__(self,student_name,student_sex,student_school,student_classes):        Student.__init__(self,student_name,student_sex,student_school,student_classes)    def login(self):        menu = u'''        ------- 欢迎进入学生管理视图 ---------        33[32;1m 1.  注册        2.  交学费        3.  查看上课记录        4.  查看作业成绩        5.  返回        33[0m'''        menu_dic = {            '1': Student.student_registered,            '2': Student.student_pay_fees,            '3': Student.student_view_record,            '4': Student.student_view_grade,            '5': "logout",        }        if True:            exit_flag = False            while not exit_flag:                print(menu)                option = input("请选择:").strip()                if option in menu_dic:                    if int(option) == 5:                        exit_flag = True                    else:                        menu_dic[option](self)                else:                    print("33[31;1m输入错误,重新输入33[0m")#程序交互类class Run(object):    def __init__(self):        pass    def interactive(self):        menu = u'''        ------- 欢迎进入选课系统 ---------        33[32;1m 1.  学生视图        2.  讲师视图        3.  管理视图        4.  退出        33[0m'''        menu_dic = {            '1': Student_view,            '2': Teacher_view,            '3': Admin_view,            # '4': logout,        }        exit_flag = False        while not exit_flag:            print(menu)            option_view = input("请选择视图:").strip()            if option_view in menu_dic:                if int(option_view) == 4:                    exit_flag = True                else:                    menu_dic[option_view].login(self)            else:                print("33[31;1m输入错误,重新输入33[0m")

实现一个python选课系统实例

写程序的的时候最好先把一个框架先写出来,最后再往里边填写东西。

这是程序执行效果

实现一个python选课系统实例

不在过多演示了

因为毕竟是刚刚学习python,这里也借鉴了很多网友的代码,所以也非诚感谢这些人。

 

以上就是实现一个python选课系统实例的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/186686.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
【公布】必易微 “一种控制电路及其供电方法”专利公布;铨兴科技“一种垃圾数据回收及固态存储优化方法、系统和介质”专利公布
上一篇 2026年9月5日 10:25:35
高清影视资源永久免费观看入口 国产高清资源永久观看网站
下一篇 2026年9月5日 10:29:30

相关推荐

  • ChatGPT代码会出错吗_AI编程中5个常见错误及解决方法

    AI编程中常见错误包括语法不匹配、逻辑遗漏、API误用、安全漏洞和集成困难,需通过版本明确、测试验证、文档核对、安全扫描和上下文补充等方式解决,结合人工审查与测试才能确保代码质量。 ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜ ChatGP…

    2026年9月20日
    100
  • RBAC(基于角色的权限控制)实现方案

    rbac重要,因为它通过角色管理权限,简化了权限管理,提高了系统安全和管理效率。实现rbac时:1.设计数据库结构,定义用户、角色、权限表及中间表;2.在代码中实现权限检查和角色、权限的动态管理;3.优化性能,防止权限泄露,管理角色膨胀。 在探讨RBAC(基于角色的权限控制)实现方案之前,让我们先来…

    2026年9月20日
    000
  • VSCode的扩展推荐是怎么工作的?

    VSCode的扩展推荐基于用户行为和项目环境智能生成,当你打开.py文件时会推荐Python相关工具,打开.ts、.vue等文件则触发对应语言插件;系统通过分析package.json、requirements.txt等依赖文件识别技术栈,推荐Docker、ESLint等匹配扩展;同时记录常用操作如…

    2026年9月20日
    000
  • 当VSCode启动或运行变慢时,有哪些系统性的排查和优化步骤?

    答案:VSCode变慢主要由扩展、文件监控和设置引起。先以安全模式启动排查扩展影响,使用内置性能工具分析启动耗时,优化工作区的文件监听与搜索范围,调整渲染设置并清理缓存,可显著提升运行效率。 VSCode 启动或运行变慢通常涉及扩展、设置、系统资源或文件索引等问题。以下是系统性的排查与优化步骤,帮助…

    2026年9月20日
    000
  • 如何在Linux中自动重启 Linux systemd自动恢复

    答案:通过配置systemd服务文件中的Restart、RestartSec、WatchdogSec及StartLimitInterval等参数,可实现Linux服务的自动重启与看门狗监控,并避免无限重启循环,提升系统稳定性。 在Linux中,可以通过systemd来实现服务的自动重启,确保服务在崩…

    2026年9月20日
    000
  • VSCode的侧边栏图标代表什么?

    资源管理器(文件夹图标)用于管理项目文件结构,支持新建、重命名、删除和拖拽操作;2. 搜索(放大镜图标)实现全局文本查找与替换,支持正则表达式及范围筛选;3. 源代码管理(分支图标)集成Git功能,可查看变更、提交代码并同步远程仓库;4. 运行和调试(虫子图标)支持断点调试、变量监控及多语言启动配置…

    2026年9月20日
    000
  • 漏洞复现 | DirtyPipe CVE-2022-0847 Linux 内核提权漏洞复现

    漏洞复现 | DirtyPipe CVE-2022-0847 Linux 内核提权漏洞复现漏洞复现 | DirtyPipe CVE-2022-0847 Linux 内核提权漏洞复现漏洞复现 | DirtyPipe CVE-2022-0847 Linux 内核提权漏洞复现漏洞复现 | DirtyPipe CVE-2022-0847 Linux 内核提权漏洞复现

    0x00 前言 CVSS 评分:7.8 影响范围:5.8 通过 CVE-2022-0847,RT 可以覆盖重写任意可读文件中的数据,从而将普通权限的用户提升到特权 root 级别。 这个漏洞被作者命名为 Dirty Pipe,之所以这样命名,是因为其原理与 Dirty Cow 相似,但 Dirty …

    2026年9月20日 用户投稿
    000
  • Linux如何将进程放入后台运行

    将Linux进程放入后台运行主要有四种方法:使用&符号在启动时放入后台;通过Ctrl+Z暂停后用bg继续运行;结合nohup与&防止会话关闭导致终止;使用screen或tm…

    2026年9月20日
    000
  • 日志审计与异常行为监控

    有效进行日志审计与异常行为监控需从多个角度结合技术和策略:1.确保日志的完整性和不可篡改性;2.收集和集中管理日志;3.分析和可视化日志;4.建立正常行为基线;5.使用异常检测算法识别偏离行为。通过这些步骤,可以提升系统安全性并提供诊断信息。 在现代的网络安全和系统管理领域中,日志审计与异常行为监控…

    2026年9月20日
    000
  • 模型(Model)的定义与数据库操作基础

    模型是软件架构中的一个概念,代表数据及其相关的业务逻辑。1) 模型通过继承类定义,如django中的book模型。2) 模型提供crud操作,如创建、读取、更新和删除book对象。3) 模型封装业务逻辑和数据验证,需考虑性能和迁移管理。4) 测试模型行为和数据库操作是关键,设计模型时需平衡当前需求和…

    2026年9月20日
    000
  • VSCode的终端集成有哪些技巧?

    掌握VSCode终端技巧可提升开发效率。1. 用Ctrl+`快速打开终端,支持多实例创建与重命名;2. 在设置中自定义默认shell如zsh或Git Bash;3. 优化字体、启用自动换行与智能复制;4. 终端联动编辑器实现一键运行、路径拖拽补全与点击跳转。 VSCode的终端集成非常实用,合理使用…

    2026年9月20日
    000
  • Python中print函数使用详解

    Python中print函数使用详解Python中print函数使用详解Python中print函数使用详解Python中print函数使用详解

    1、 输出常见数据类型如字符串与整数 2、 对输出结果进行格式化处理 立即学习“Python免费学习笔记(深入)”; 3、 实现浮点数的格式化输出 4、 关闭自动换行功能 以上就是Python中print函数使用详解的详细内容,更多请关注创想鸟其它相关文章!

    2026年9月20日 用户投稿
    200
  • 如何为VSCode配置远程开发环境?

    使用Remote-SSH插件可在VSCode实现远程开发,首先安装插件并配置SSH主机信息,确保本地与远程连接通畅;随后通过远程资源管理器连接目标服务器,VSCode将自动部署服务端组件;连接成功后即可在本地编辑远程代码,需保证远程环境有基础开发工具及足够权限;若遇问题,检查SSH服务、配置准确性、…

    2026年9月20日
    100
  • 怎样在VSCode中为不同文件类型设置不同的缩进?

    在VSCode中可为不同文件类型设置缩进,通过settings.json按语言ID配置,如Python用4空格、HTML用2空格,保存后自动生效并覆盖全局设置。 在 VSCode 中为不同文件类型设置不同的缩进,可以通过配置语言特定的设置来实现。VSCode 支持按语言 ID 覆盖编辑器的缩进行为,…

    2026年9月20日
    100
  • VSCode的悬浮提示信息如何自定义?

    通过JSDoc或docstring添加注释可直接影响VSCode悬浮提示内容,如JavaScript/TypeScript中使用/* /格式、Python中使用三引号文档字符串,配合Pylance等扩展增强显示;安装语言支持扩展可提升提示丰富度;高级场景可通过开发自定义语言服务器,在textDocu…

    2026年9月20日
    500
  • 怎样在VSCode中重命名变量或文件?

    使用F2键可快速重命名变量或文件,VSCode会自动更新符号引用,支持多语言,重命名文件时需注意导入路径可能需手动调整。 在 VSCode 中重命名变量或文件非常方便,可以通过内置的重构功能快速完成,同时保持代码的一致性。 重命名变量(符号重命名) 当你想重命名代码中的变量、函数或类时,VSCode…

    2026年9月20日
    000
  • Linux系统目录bin的作用说明

    /bin 目录存放系统最基础的可执行命令,如 ls、cp、mv、rm、bash 等,是系统启动和单用户模式下运行所必需的核心二进制程序。 /bin 目录在 Linux 系统中存放的是系统最基础、最关键的可执行命令文件,也就是二进制程序(binary executables)。这些命令是系统启动和运行…

    2026年9月20日
    000
  • Linux如何使用journalctl查看服务日志

    journalctl是Linux系统下排查服务日志的核心工具,通过-u参数可定位特定服务日志,结合-f实现实时追踪,-p按级别筛选错误信息,–since和–until支持时间段过滤,组合使用可高效定位问题;为避免日志重启后丢失,需配置/etc/systemd/journald…

    2026年9月20日
    000
  • mysql如何解决连接本地数据库失败的问题

    连接本地MySQL数据库失败通常由服务未启动、连接参数错误、用户权限不足或防火墙阻止引起。首先确认MySQL服务是否运行,Windows可通过“服务”管理器查看,Linux/macOS使用systemctl或brew命令;若服务未启动,尝试手动启动并检查日志。其次核对连接参数:主机应为localho…

    2026年9月20日
    000
  • huARdb:单细胞水平克隆型-转录组分析的人类抗原受体数据库

    前言 摘要 人类的适应性免疫系统是免疫反应的一个重要分支,负责识别和清除特定抗原。通过与特定抗原的结合,适应性免疫系统被激活,并能保存对目标抗原的长期免疫记忆。因此,具有高特异性的长期免疫记忆能够在后续抗原暴露中引发更强烈的反应。适应性免疫反应的激活需要T细胞或B细胞上的受体识别抗原,这些受体分别称…

    2026年9月20日
    000

发表回复

登录后才能评论
关注微信