首页 > 其他分享 >Day31.管理员创建课程功能

Day31.管理员创建课程功能

时间:2024-07-03 21:41:44浏览次数:18  
标签:school name Day31 course 课程 管理员 todo

1.管理员创建课程_代码及执行流程

2.管理员创建课程_管理员创建课程admin.py

# todo 管理员创建课程
@common.auth('admin')
def create_course():
    print('管理员创建课程...')
    while True:
        # todo 1.让管理员先选择学校
        # todo 1.1 调用接口,获取所有学校的名称并打印
        flag, school_list_or_msg = common_interface.get_all_school_interface()
        # todo 如果False, 学校不存在, 管理员先创建学校
        if not flag:
            print(school_list_or_msg)
            break
        # todo 如果是True, 学校存在,则开始选择学校并创建课程
        else:
            for index,school_name in enumerate(school_list_or_msg):
                print('编号:{},学校名:{}'.format(index, school_name))

            choice = input('请输入学校编号:').strip()
            # todo .isdigit 判断不是数字类型
            if not choice.isdigit():
                print('请输入数字')
                continue

            choice = int(choice)

            if choice not in range(len(school_list_or_msg)):
                print('请输入正确编号')
                continue
            
            # todo 获取选择后的学校名字,
            school_name = school_list_or_msg[choice]

            # todo 2.选择学校后,再输入课程名称
            course_name = input('请输入需要创建的课程名称:').strip()

            # todo 3.调用创建课程接口,让管理员去创建课程
            flag, msg = admin_interface.create_course_interface(
                # todo 传递学校的目的,是为了关联课程
                school_name, course_name, admin_info.get('user')
            )
            if flag:
                print(msg)
                break
            else:
                print(msg)

3.管理员创建课程_公共接口获取所有学校名称接口common_interface.py

'''公共接口'''
import os
from conf import settings

# todo 获取所有学校名称接口
def get_all_school_interface():
    # todo 1. 获取学校文件夹路径
    school_dir = os.path.join(
        settings.DB_PATH, 'School'
    )

    # todo 2. 判断文件夹是否存在
    if not os.path.exists(school_dir):
        return False, '没有学校,请先联系管理员'
    
    else:
        # todo 3. 文件夹若存在,则获取文件夹中所有的文件的名字
        school_list = os.listdir(school_dir)
        return True, school_list

4.管理员创建课程_管理员接口管理员创建课程接口admin_interface.py

'''管理员接口'''
from db import models

# todo 管理员创建课程接口
def create_course_interface(school_name, course_name, admin_name):
    # todo 1 查看课程是否存在
    
    # todo 1.1 先获取对象中的课程列表
    school_obj = models.School.select(school_name)
    # todo 1.2 判断当前课程是否存在课程列表中
    if course_name in school_obj.course_list:
        return False, '当前课程已存在!'
    # todo 1.3 若课程不存在,则创建课程,有管理员来创建
    admin_obj = models.Admin.select(admin_name)
    admin_obj.create_course(
        school_obj, course_name 
    )

    return True, '{}课程创建成功,绑定给{}校区'.format(
        course_name, school_name)

5.管理员创建课程_存放类models.py

'''用于存放类的
学校类、学员类、课程类、讲师类、管理员类
'''
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 Admin(Base):
    # todo 调用类的时候触发
    # todo admin_username, admin_password
    def __init__(self, user, pwd):
        self.user = user
        self.pwd = pwd
    
    # todo 管理员创建学校接口
    def create_school(self, school_name, school_addr):
        # 调用School类, 实例化一个学校对象, 并保存
        school_obj = School(school_name, school_addr)
        school_obj.save()
        pass

    # todo 管理员创建课程接口
    def create_course(self, school_obj, course_name):
        # todo 1. 调用课程类,实例化创建课程
        course_obj = Course(course_name)
        course_obj.save()
        # todo 2. 获取当前学校对象,并将课程添加到课程列表中
        school_obj.course_list.append(course_name)
        # todo 3. 更新学校数据
        school_obj.save()

# todo 学校类
class School(Base):
    def __init__(self, name, addr):
        # todo 必须写:self.user, 因为db_handler里面的select_data统一规范
        self.user = name
        self.addr = addr
        # todo 课程列表:每所学校都应该有相应的课程
        self.course_list = []

# todo 课程类
class Course(Base):
    def __init__(self, course_name):
        self.user = course_name
        self.student_list = []

6.管理员创建课程_程序执行结果

标签:school,name,Day31,course,课程,管理员,todo
From: https://www.cnblogs.com/vless/p/18281047

相关文章

  • 《智能计算系统》第五章 编程框架原理(上)课程笔记
    《智能计算系统》第五章编程框架原理(上)课程视频链接:https://www.bilibili.com/video/BV1Ei421i7Rg本文源自于B站国科大计算所智能计算系统课程官方账号所公开上传的视频,在原有视频之上,提取了关键帧、将音频转成了文字并进行了校正,以便学习使用。在此,也感谢国科大计算所智能......
  • 梁培利DeFi去中心化金融课程笔记2024版
    课程链接:https://space.bilibili.com/220951871/channel/collectiondetail?sid=2824381&ctype=0讲义仓库:https://github.com/liangpeili/defi-2024/tree/mainDeFi简介DeFi:Uniswap/AAVE/Curve/DAl/Compound等;GameFi:从CryptoKitties开始;SocailFi:nostr/Damus/friend.tech/xp......
  • OpenSpace Web3课程大纲
    这个OpenSpaceWeb3BootCamp区块链技术线下集训营培训的内容看起来不错,比较全面也比较深入,但我没有金钱和时间,而且似乎这个面向的应该是即将毕业的应届生,2个月脱产应该没多少工作的人参加,除了一些处于gap期的吧。年轻真好。不管怎样,在这里列一下这个培训的大纲,作为参考。夯实基......
  • C++课程设计--学生宿舍管理系统
    需求分析        系统主要使用类链表,将链表的知识得到充分的使用;还是用到了函数重载。 类定义    主要包括学生类、宿舍类、报修类以及访客类。由于博主时间问题并没有写到访客类的代码,但是思路是一样的。学生类    数据成员:学生学号、姓名、性......
  • 江协科技51单片机-学习笔记(1)-课程简介
    1、声明本人最近在学习b站up主“江协科技”制件的“51单片机入门教程”,为了便于自己以后复习51单片机的相关知识,遂将自己学习过程中认为重要的知识点进行了笔记记录。本人将学习笔记发布在CSDN上,目的是方便小伙伴们一起学习和交流单片机相关知识,共同进步。本人所写的笔记和up......
  • DApp设计与开发 课程笔记(六):NFT交易市场后端开发
    笔记对应课程内容为成都信息工程大学区块链产业学院老师梁培利的DApp设计与开发17-18课笔记中提到的名词不做过多解释不懂就搜!tokenuri对应一个metadata的json数据上传一个图片,将图片上传到IPFS,获得一个cid,然后将json格式的metadata上传到IPFS,然后给用户发送一个NFT......
  • 1.课程介绍及环境准备
    此合集是刘老师教编程的学习笔记,是个值得推荐的upup链接https://space.bilibili.com/472907970?spm_id_from=333.788.0.01.课程介绍及环境准备SpringBoot+vue全栈开发基础开发工具:IDEA+VSCode后端:javaEE企业级框架:SpringBoot+MyBatisPlus前端:Vue+VueRouter+Vuex......
  • 【课程设计】基于python的一款简单的计算器
    我们是大二本科生团队,主力两人耗时3天完成了这款计算器的制作。希望大家给我们多多引流!!!!!!欢迎各位优秀的高考学子报考长安大学,报考长安大学电子信息工程专业。欢迎有志于就读信息与通信工程和计算机科学与技术的准研究生报考长安大学!注意:文件我已经打包好了!长安大学直属国家......
  • DApp设计与开发 课程笔记(四):NFT交易市场合约
    笔记对应课程内容为成都信息工程大学区块链产业学院老师梁培利的DApp设计与开发10-13课笔记中提到的名词不做过多解释不懂就搜!开发准备:编辑IDE环境:Vscode+Hardhat调试:RemixERC标准智能合约生成巫师:https://docs.openzeppelin.com/contracts/5.x/wizard动手学Windo......
  • 6、Django-管理员界面-admin
    概念:Django的admin界面是自动生成的,它根据你的模型类自动创建表单和列表视图。你只需将模型类注册到admin界面,就可以轻松地管理和操作数据库中的数据。admin界面提供了各种功能,包括:列表视图:以表格形式展示数据库中的数据,支持分页、搜索和排序功能,方便快速浏览和筛选数据。表......