首页 > 其他分享 >Day32.学生查看分数

Day32.学生查看分数

时间:2024-07-10 14:43:07浏览次数:7  
标签:分数 obj name 查看 self Day32 user path todo

1.学生查看分数_整体代码及执行流程

2.学生查看分数_学生视图层中的学生查看分数功能check_score

'''学生视图'''
from lib import common
from interface import student_interface
from lib import common_interface

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


# todo 学生查看课程分数
@common.auth('student')
def check_score():
    print('学生查看课程分数')
    # todo 1. 直接调用查看分数接口
    score_dict = student_interface.check_score_interface(
        student_info.get('user')
    )
    if not score_dict:
        print('没有选择课程!')
    
    else:
        print(score_dict)

3.学生查看分数_学生接口层中学生产看分数接口check_score_interface

'''学生接口层'''
from db import models

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

# todo 学生查看分数接口
def check_score_interface(student_name):
    student_obj = models.Student.select(student_name)
    if student_obj.score_dict:
        return student_obj.score_dict

4.学生查看分数_类的存放学生类和功能父类

'''用于存放类的
学校类、学员类、课程类、讲师类、管理员类
'''
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 Student(Base):
    def __init__(self, user, pwd):
        self.user = user
        self.pwd = pwd
        # todo 每个学生只能有一个校区
        self.school = None
        # todo 一个学生可以选择多门课程
        self.course_list = []
        # todo 学生课程分数
        self.score_dict = {}     # todo {"course_name": 0}
    # todo 学生选择学校
    def add_school(self, school_name):
        self.school = school_name
        self.save()

    # todo 学生添加课程方法
    def add_course(self, course_name):
        # todo 1. 学生课程列表添加课程
        self.course_list.append(course_name)
        # todo 2. 给学生选择的课程设置默认分数
        self.score_dict[course_name] = 0
        self.save()
        # todo 3. 学生选择的课程对象,添加学生
        course_obj = Course.select(course_name)
        course_obj.student_list.append(self.user)
        course_obj.save()
        return True, '{} -- 课程添加成功'

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.学生查看分数_程序运行结果

标签:分数,obj,name,查看,self,Day32,user,path,todo
From: https://www.cnblogs.com/vless/p/18294010

相关文章

  • Day32.学生选择课程
    1.学生选择课程_整体代码及执行流程2.学生选择课程_学生视图中choice_course选课功能'''学生视图'''fromlibimportcommonfrominterfaceimportstudent_interfacefromlibimportcommon_interface#todo全局记录用户登陆状态student_info={'user':None}......
  • 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时,我们经......
  • 生产实习--启明星辰 第四天(实操关于CC攻击以及查看摄像头)
    CC攻击原理:CC(ChallengeCollapsar,挑战黑洞)攻击是DDoS攻击的一种类型,使用代理服务器向受害服务器发送大量貌似合法的请求。环境:KaliLinux,siege工具具体步骤:首先,我们打开虚拟机kalilinux,打开命令行,输入aptinstallsiege下载我们所需要的工具。之后利用命令:siege-c并......
  • Day32.学生选择学校
    1.学生选择学校_详细代码及执行流程2.学生选择学校_学生视图(student.py)中choice_school功能 '''学生视图'''fromlibimportcommonfrominterfaceimportstudent_interfacefromlibimportcommon_interface#todo全局记录用户登陆状态student_info={'user':......
  • Linux系统运维命令:查看http的并发请求数及其TCP连接状态(使用netstat结合awk和sort,组合
    一、需求二、解决方法(一)解决思路(二)命令三、实例演示和命令解释(一)实例演示(二)命令解释四、扩展一、需求用户访问一个视频监控平台的web服务特别频繁,据客户说,有大概2000个用户,要随机访问这个视频监控平台,这样对带宽的要求非常大。因此,他们需要查看到底有多少个http的并......
  • Day32.学生注册
    1.学生注册_详细代码及执行流程2.学生注册_学生视图层(student.py)_学生注册register功能函数'''学生视图'''fromlibimportcommonfrominterfaceimportstudent_interface#todo全局记录用户登陆状态student_info={'user':None}#todo学生注册defregister(......
  • Windows 电脑查看 WiFi 密码的方法都有哪些?
    从设置面板中查看当你使用的是笔记本电脑并且连接WiFi之后可以在设置面板中查看WiFi密码,首先打开设置界面,然后点击网络和Internet,找到WiFi之后点击进入,然后点击管理已知网络。然后点击已经连接好的无线网络。进入之后点击查看WiFi安全密钥区域的显示按钮,就可以看......
  • P1068 [NOIP2009 普及组] 分数线划定【排序】
    [NOIP2009普及组]分数线划定题目描述世博会志愿者的选拔工作正在A市如火如荼的进行。为了选拔最合适的人才,A市对所有报名的选手进行了笔试,笔试分数达到面试分数线的选手方可进入面试。面试分数线根据计划录取人数的150......
  • python如何查看内置函数
    如何通过命令查看python中的所有内置函数和内置常量举例python版本:利用python中的语句输出python中的所有内置函数及内置常量名:dir(__builtin__)输出一个列表:In [1]: dir(__builtin__)Out[1]:['ArithmeticError','AssertionError','AttributeError','BaseEx......