首页 > 其他分享 >Day32.学生注册

Day32.学生注册

时间:2024-07-08 17:42:46浏览次数:14  
标签:username obj 注册 Day32 学生 user student path todo

1.学生注册_详细代码及执行流程

2.学生注册_学生视图层(student.py)_学生注册register功能函数

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

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

# todo 学生注册
def register():
    while True:
        student_username = input('请输入用户名:').strip()
        student_password = input('请输入密码:').strip()
        student_re_password = input('请确认密码:').strip()

        # todo 小的逻辑判断
        if student_password == student_re_password:
            # 调用接口层,学生注册接口
            flag, msg = student_interface.student_register_interface(
                student_username, student_password
            )
            
            if flag:
                print(msg)
                break
            
            else:
                print(msg)

        else:
            print('两次密码不一致,请重新输入')

3.学生注册_学生接口层(student_interface.py)_学生注册接口student_register_interface功能

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

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

# todo 学生注册接口
def student_register_interface(student_username, student_password):
    # todo 1.判断用户是否存在
    # todo 调用Student类中的,select方法,有该方法去调用db_handler中
    # todo 的select_data功能获取对象
    student_obj = models.Student.select(student_username)
    
    # todo 1.1)若存在不允许注册,返回用户已存在给视图层
    if student_obj:
        return False, '学生用户已存在!'
    
    else:
        # todo 1.2)若不存在则允许注册,调用类实例化得到对象并保存
        student_obj = models.Student(student_username, student_password)

        # todo 对象调用save() 会将student_obj传给save方法
        student_obj.save()
        
        return True, '学生注册成功!'

4.学生注册_存放类(models.py)_学生类Student功能

'''用于存放类的
学校类、学员类、课程类、讲师类、管理员类
'''
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
        self.course_list = []
        self.score = {}     # todo {"course_name": 0}

5.学生注册_db_handler.py用于保存和查询对象

'''
用于保存对象与获取对象
'''
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.学生注册_学生注册运行结果

标签:username,obj,注册,Day32,学生,user,student,path,todo
From: https://www.cnblogs.com/vless/p/18290441

相关文章

  • javab毕业设计-基于Java的校园二手交易商城系统设计与实现,基于springboot+vue二手跳蚤
    文章目录背景介绍演示视频(进入B站观看画面更清晰):项目架构和内容获取(文末获取)部分功能展示用户前端系统管理后台项目相关文件为什么我?本章节给大家带来的是一个基于java的大学生二手交易平台系统设计与实现,可适用于校园二手交易系统,基于Java的二手交易商城系统,大学......
  • MySQl数据库课程设计 学生宿舍管理系统
    表的创建(1)createtabledormitory( #宿舍信息表  dormitory_idvarchar(15)notnull,#宿舍号    capacityint,#宿舍人数    bed_idint,#床号    student_namevarchar(20),#姓名    student_sexvarchar(5)#性别);(2)createtablesug......
  • 适合学生党性价比高的蓝牙耳机有哪些?几款必看的性价比耳机分享
    蓝牙耳机几乎成为了我们日常生活中不可或缺的一部分,对于学生党来说,找到一款既符合预算又不牺牲品质的蓝牙耳机尤为重要,无论是在学习、运动还是通勤路上,一个好的蓝牙耳机都能带来更佳的音乐体验和便捷的通话功能,在众多的蓝牙耳机款式和品牌里,适合学生党性价比高的蓝牙耳机有哪些......
  • 不单独部署注册中心,又要具备注册中心的功能,我能上天!
    开心一刻昨天看到一条广告:全国比丑大赛,一等奖2万奖金我高高兴兴骑着自行车去了场地,结果被保安拦着不让进我心里窃喜:莫非我长得不丑,不符合参赛条件?我说道:为什么不让我进保安:这是业余人员间的比赛,职业选手不能参加敢情不是不丑,而是太丑!书接上回上篇不单独部署注册中心,又......
  • python+flask计算机毕业设计高校学生实习信息管理(程序+开题+论文)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着高等教育的普及与深化,高校学生实习已成为连接理论与实践、校园与社会的关键桥梁。然而,传统的实习信息管理方式往往依赖于纸质文档或简......
  • AI与编程:一个学生的心路历程与思考
    前言大家好,本人是在一个在校的大学生,方向是前端语言。爱好是码代码和看一点小新闻,游戏也是喜爱的。其实本篇文章的想法是源于网上一些人对AI以及对前端的看法,看完网上的评论后我也是有感而发。本篇文章的讨论中心也是围绕着AI和前端,作为一个学生我的观察与思考,但是本人其......
  • 学生管理系统(通过顺序表,获取连续堆区空间实现)
    将学生的信息,以顺序表的方式存储(堆区),并且实现封装函数:1】顺序表的创建,2】判满、3】判空、4】往顺序表里增加学生信息、5】遍历学生信息6】任意位置插入学生信息7】任意位置删除学生信息8】修改学生信息9】查找(按学生的学号查找)、10】删除重复学生信息11】销毁顺序......
  • 【计算机毕业设计】springboot基于Android的大学生勤工助学管理系统设计与实现
    大学生勤工助学管理系统设计的目的是为用户提供企业招聘、已投简历等方面的平台。与PC端应用程序相比,大学生勤工助学管理系统的设计主要面向于大学生勤工助学,旨在为管理员和学生、企业提供一个Android的大学生勤工助学管理系统。学生可以通过Android及时查看企业招聘等。......
  • Java语言,MySQL数据库;基于微信小程序的安全教育平台面向大学生 85871(免费领源码)计算机
    目 录摘要1绪论1.1研究背景1.2研究现状1.3论文结构与章节安排2 基于微信小程序的安全教育平台面向大学生系统分析2.1可行性分析2.2系统流程分析2.2.1数据增加流程2.2.2数据修改流程2.2.3数据删除流程2.3系统功能分析2.3.1功能性分析......
  • [SNCPC2024] 2024 年陕西省大学生程序设计 J题猜质数II 题解
    题目链接:CF或者洛谷PS:CF的得等上gym。前提说明其实在上个月就见到这题了,当时很想做这题,结果找不到做题链接,也不知道出处,原来是陕西省赛的捧杯题。个人评价觉得是一道很不错的题,难度适中。讲解其实题解写的挺不错的,比很多比赛的题解写的详细许多了。这里站在我的角度分......