首页 > 其他分享 >Day32.老师查看课程下学生功能

Day32.老师查看课程下学生功能

时间:2024-07-10 22:18:49浏览次数:16  
标签:name 查看 list Day32 course 课程 path todo teacher

1.老师查看课程下学生功能_程序代码及执行流程

2.老师查看课程下学生功能_老师视图层中查看课程下的学生check_stu_from_course

'''老师视图'''
from lib import common
from lib import common_interface
from interface import teacher_interface

# todo 全局记录用户登陆状态
teacher_info = {'user': None}

# todo 查看课程下学生
@common.auth('teacher')
def check_stu_from_course():
    while True:
        # todo 1. 调用获取当前老师下所有的课程接口
        flag, course_list = teacher_interface.check_course_interface(
            teacher_info.get('user')
        )
        # todo 如果没有则程序终止
        if not flag:
            print(course_list)
            break
        else:
            # todo 2. 打印所有课程,并让老师选择
            for index2, course_name in enumerate(course_list):
                print('编号:{}     课程名:{}'.format(index2, course_name))
            choice = input('请输入选择的课程编号:').strip()
            if not choice.isdigit():
                print('输入有误')
                continue
            choice = int(choice)
            if choice not in range(len(course_list)):
                print('输入编号有误!')
                continue
            # todo 3. 获取选择的学校名称
            course_name = course_list[choice]

            # todo 4. 利用当前课程名称获取所有学生
            flag2, student_list = teacher_interface.get_student_interface(
                course_name, teacher_info.get('user')
            )

            if flag2:
                print(student_list)
                break
            else:
                print(student_list)
                break

3.老师查看课程下学生功能_老师接口层老师查看课程接口和老师获取课程下学生接口teacher_interface.py

'''老师接口层'''
from db import models

# todo 老师查看课程接口
def check_course_interface(teacher_name):
    # todo 1. 获取当前老师对象
    teacher_obj = models.Teacher.select(
        teacher_name
        )

    # todo 2. 判断老师对象中课程列表是否有值
    # todo 让老师对象,调用查看教授课程方法,返回课程
    # course_list = teacher_obj.course_list_from_tea
    course_list = teacher_obj.show_course()
    

    # todo 3. 若有则返回True,无则返回False
    if not course_list:
        return False, '老师没有选择课程'
    else:
        
        return True, course_list


# todo 老师获取课程下学生接口   
def get_student_interface(course_name, teacher_name):
    # todo 1. 获取当前老师对象
    teacher_obj = models.Teacher.select(teacher_name)
    # todo 2. 让当前老师对象,调用获取课程下所有学生功能
    student_list = teacher_obj.get_student(course_name)
    
    # todo 3. 判断课程下是否有学生
    if not student_list:
        return False, '学生没有选择该课程'
    
    else:
        return True, student_list

4.老师查看课程下学生功能_models下的功能类老师类Teacher和父类Base

'''用于存放类的
学校类、学员类、课程类、讲师类、管理员类
'''
from db import db_handler

# todo 提供select和save方法写入父类, 让所有子类都继承
class Base:
    # todo 定义一个数据查找方法 ----> 登录、查看数据
    @classmethod
    def select(cls, username):      # 接收到类Admin和username
        # todo obj: 对象 OR None
        obj = db_handler.select_data(
            cls, username)
        return obj

    # todo 定义一个数据保存方法 ----> 注册、保存、更新数据
    def save(self):
        # todo 调用db_handler中的save方法,并且需要对其中的方法做传值,即添加self
        # todo 让db_handler中的save_data进行保存对象数据
        db_handler.save_data(self)

# todo 老师类
class Teacher(Base):
    def __init__(self, teacher_name, teacher_pwd):
        self.user = teacher_name
        # todo self.pwd 需要统一
        self.pwd = teacher_pwd
        self.course_list_from_tea = []

    # todo 老师查看教授课程方法
    def show_course(self):
        return self.course_list_from_tea

    # todo 老师添加课程方法
    def add_course(self, course_name):
        self.course_list_from_tea.append(
            course_name)
        self.save()

    # todo 老师获取课程下的学生
    def get_student(self, course_name):
        course_obj = Course.select(course_name)
        return course_obj.student_list

5.老师查看课程下学生功能_db_handler下用于保存与获取对象

'''
用于保存对象与获取对象
'''
import os
from conf import settings
import pickle

# todo 保存数据
def save_data(obj):
    # todo 1. 获取对象的保存文件夹路径
    # todo 以类名 当作 文件夹的名字
    # todo obj.__class__:获取当前对象的类,即models.py中调用该方法的类
    # todo obj.__class__.__name__:获取当前类的名字,即models.py中调用该方法的类名
    class_name = obj.__class__.__name__
    user_dir_path = os.path.join(
        settings.DB_PATH, class_name
    )
    # todo 2.判断文件夹是否存在,不存在则创建文件夹
    if not os.path.exists(user_dir_path):
        os.mkdir(user_dir_path)

    # todo 3.拼接当前用户的pickle文件路径,以用户作为文件名
    user_path = os.path.join(
        user_dir_path, obj.user     # 当前用户名字
    )
    # todo 4.打开文件,保存对象,通过pickle
    with open(user_path, 'wb') as f:
        pickle.dump(obj, f)
    
# todo 查看数据
def select_data(cls, username):  # 拿到models.py中刚传过来的类名(即文件夹名称)和username,
    # todo 有cls获取类名
    class_name = cls.__name__
    user_dir_path = os.path.join(
        settings.DB_PATH, class_name
    )
    # todo 2.判断文件夹是否存在,不存在则创建文件夹
    if not os.path.exists(user_dir_path):
        os.mkdir(user_dir_path)

    # todo 3.拼接当前用户的pickle文件路径,以用户作为文件名
    user_path = os.path.join(
        user_dir_path, username     # 当前用户名字
    )

    # todo 4.判断文件如果存在,再打开,并返回,若不存在,则代表用户不存在
    if os.path.exists(user_path):
        # todo 5.打开文件,获取对象
        with open(user_path, 'rb') as f:
            obj = pickle.load(f)
            return obj
    else:
        return None

6.老师查看课程下学生功能_程序运行结果

 

标签:name,查看,list,Day32,course,课程,path,todo,teacher
From: https://www.cnblogs.com/vless/p/18295129

相关文章

  • 查看SQLServer最耗资源时间的SQL语句(转载)
    sqlserver中,如果想知道有哪些语句是执行效率不高的,应该如何查看呢?下面就将为您介绍sqlserver中如何查看执行效率不高的语句,供您参考。 1.找出执行时间最长的10条SQL(适用于SQLSERVER2005及其以上版本)Sql代码SELECTtop10(total_elapsed_time/execution_count)......
  • HTTP与HTTPS详解及其请求与响应报文的查看方法
    HTTP与HTTPS详解及其请求与响应报文的查看方法HTTP与HTTPS概述**HTTP(HyperTextTransferProtocol)**是一种用于传输超文本数据(例如HTML)的应用层协议,是Web中最基础的通信协议。它通过客户端-服务器模型工作,客户端(例如浏览器)向服务器发送请求,服务器返回相应的资源。**HTTP......
  • Day32.老师查看教授课程
    1.老师查看教授课程_代码及执行流程2.老师查看教授课程_老师视图层中选择教授课程choose_course功能'''老师视图'''fromlibimportcommonfromlibimportcommon_interfacefrominterfaceimportteacher_interface#todo全局记录用户登陆状态teacher_info={'user......
  • Day32.学生查看分数
    1.学生查看分数_整体代码及执行流程2.学生查看分数_学生视图层中的学生查看分数功能check_score'''学生视图'''fromlibimportcommonfrominterfaceimportstudent_interfacefromlibimportcommon_interface#todo全局记录用户登陆状态student_info={'user':N......
  • Day32.学生选择课程
    1.学生选择课程_整体代码及执行流程2.学生选择课程_学生视图中choice_course选课功能'''学生视图'''fromlibimportcommonfrominterfaceimportstudent_interfacefromlibimportcommon_interface#todo全局记录用户登陆状态student_info={'user':None}......
  • 计算机毕业设计项目:18655 课程题库管理系统(开题答辩+程序定制+全套文案 )上万套实战教
    摘 要随着科学技术的飞速发展,各行各业都在努力与现代先进技术接轨,通过科技手段提高自身的优势;对于课程题库管理系统当然也不能排除在外,随着网络技术的不断成熟,带动了课程题库管理系统,它彻底改变了过去传统的管理方式,不仅使服务管理难度变低了,还提升了管理的灵活性。这种个......
  • SQL Server查看所有表大小,所占空间
    createtable#Data(namevarchar(100),rowvarchar(100),reservedvarchar(100),datavarchar(100),index_sizevarchar(100),unusedvarchar(100))declare@namevarchar(100)declarecurcursorforselectnamefromsysobjectswherextype='u'or......
  • docker 查看 某个容器
    转自:https://blog.51cto.com/u_16213309/7405862docker查看某个容器原创mob64ca12d2a3422023-09-0808:31:04 文章标签Dockerdocker客户端文章分类Docker云计算Docker相关视频讲解: 什么是容器 Docker介绍Docker查看某个容器在使用Docker时,我们经......
  • 暑期课程学一学XSS攻击,以及开源项目
    XSS存储型本文主要是使用vulstudy直接搭建的漏洞环境,是其中的DVWA。然后随手记一个反弹shell的工具反弹shell工具。原理存储型XSS,也叫持久型XSS,主要是将XSS代码发送到服务器(不管是数据库、内存还是文件系统等。),然后在下次请求页面的时候就不用带上XSS代码了。最典型的就是留言......
  • 生产实习--启明星辰 第四天(实操关于CC攻击以及查看摄像头)
    CC攻击原理:CC(ChallengeCollapsar,挑战黑洞)攻击是DDoS攻击的一种类型,使用代理服务器向受害服务器发送大量貌似合法的请求。环境:KaliLinux,siege工具具体步骤:首先,我们打开虚拟机kalilinux,打开命令行,输入aptinstallsiege下载我们所需要的工具。之后利用命令:siege-c并......