选课系统

目录

选课系统

功能分析及使用

选课系统总复习:
   -  用户视图层
        与用户交互
        - 管理员
        - 学生
        - 老师

   - 接口层
        处理业务逻辑
        - admin_interface
        - student_interface
        - teacher_interface
        - common_interface

   - 数据层
        - models
            存放一个个的类

        - db_handler
            - pickle
                通过pickle存取对象

功能分类

    注意: 为所有登录、注册意外的功能添加装饰器,用作用户认证

    - 管理员功能
        1.注册
            - 让用户输入用户名与密码,传给注册接口
            - 注册接口接收到用户名与密码
            - 调用models的类的select方法获取对象
            - 判断对象是否存在,若存在,则返回用户已存在
            - 若用户不存在,则调用models的类的save方法保存对象
            注意: 密码md5加密

        2.登录
            - 让用户输入用户名与密码,传给登录接口
            - 登录接口接收到用户名与密码
            - 调用models的类的select方法获取对象
            - 判断对象是否存在,若不存在,则返回用户不存在
            - 若用户存在,则判断用户输入的密码是否与对象中的密码一样
            - 若一样则返回登录成功,否则返回密码错误。
            - 用户视图层,记录当前用户登录状态

        3.创建学校
            - 让用户输入学校名称与学校地址
            - 把学校名称与学校地址发送给接口层
            - 再接口层调用调用models的类的select方法获取学校对象
            - 判断学校是否存在,若存在,返回学校已存在,退出
            - 若学校不存在,则获取管理员对象,让管理员调用创建学校功能
            - 管理员的创建学校方法中,调用School类触发__init__,self.save()保存对象

        4.创建课程
            - 调用获取所有学校接口获取所有学校,若没有退出功能
            - 若有,则打印所有学校名称与编号, 让用户选择学校编号
            - 对用户输入的选择数据进行限制
            - 获取学校名称,输入需要创建的课程名称
            - 调用接口,把学校名称、创建的课程传给创建课程接口
            - 先获取学校对象,查看当前输入的课程是否存在学校对象的course_list中
            - 若存在,则返回,课程已存在,重新输入课程名称
            - 若不存在,则让管理员对象创建课程,得先获取管理员对象
            - 通过管理员对象调用创建课程方法,把课程名称与学校传给该方法
            - 调用Course课程类,触发__init__创建课程对象,并保存文件
            - 让课程对象去添加学校,课程对象.school = 学校名绑定学校
            - 获取学校对象,学校对象调用add_course方法,并把该课程添加到学校course_list中
            - 再保存即可

        5.创建老师
            - 让用户输入老师名称,调用创建老师接口
            - 先获取老师对象,判断老师是否存在
            - 若存在,则返回
            - 若不存在则创建老师,把管理员对现象获取出来
            - 让管理员对象来调用创建老师方法
            - 调用Teacher老师类,触发__init__,调用save方法保存老师对象。
            注意: 密码md5加密

    - 学生功能
        1.学生注册
            与管理员一样

        2.学生登录
            与管理员一样

        3.选择学校
            - 调用获取学校接口,获取所有学校

一、需求分析

# 项目需求如下
'''
角色:学校、学生、课程、讲师
要求:
  1. 创建北京、上海 2 所学校
  2. 创建linux , python , go 3个课程 , linux\py在北京开,go在上海开
  3. 管理员创建学校 ,老师,课程
  4. 学校包含学校名称,地址等属性
  5. 学生注册登录后,可以选择学校,选择课程,查看成绩
  6. 学生只能选择一所学校,从校区中选择一门课程,课程绑定给学生。
  7. 老师登录后,可以查看教授课程,选择想要教授的课程,查看课程下的学生,修改学生成绩等

最终分为以下视图和功能:
学生视图
        1、注册
        2、登录
        3、选择校区
        4、选择课程
        5、查看成绩

老师视图
        1、登录
        2、查看教授课程
        3、选择教授课程
        4、查看课程下学生
        5、修改学生成绩

管理视图,创建讲师, 创建班级,创建课程
        1、注册
        2、登录
        3、创建学校
        4、创建老师
        5、创建课程
'''

二、程序的框架设计

'''
程序的架构一共分为三层:

    - 1.用户视图层

    - 2.接口层

    - 3.数据层
         - models ---> 用于把数据封装在对象中
         - db_handler ---> 把对象通过pickle的形式进行存储
'''

三、程序的目录结构

'''
conf放置配置信息setting
core:放置用户层视图
db:数据操作层py文件和以文件形式保存的数据,通过pickle把数据序列化保存到文件里。
interface:放置接口相关信息,有管理员接口,老师接口,学校接口,学生接口和公共接口
lib:放置公共方法


用户功能层:src下:
                src:主视图,
                admin:管理员视图,
                student:学生视图
                teacher:老师视图

接口层:interface下:
                  admin_interface管理员的接口
                  common_interface公共的接口
                  school_interface学校的接口
                  student_interface学生的接口
                  teacher_interface老师的接口
数据层:db目录下:
                db_handler,文件操作相关的方法
                models:各种类及类方法的定义

其它目录:admin,course,school,student,teacher是自动生成的目录,用来存放数据信息

start.py启动文件

总共分三个视图:
    管理员视图:
        def admin_register():
            pass
        def admin_login():
            pass
        def creat_school():
            pass
        def creat_teacher():
            pass
        def creat_course():
            pass
    老师视图:
        def teacher_login():
            pass
        def check_course():
            pass
        def choose_course():
            pass
        def check_student():
            pass
        def modify_score():
            pass
    学生视图:
        def student_register():
            pass
        def student_login():
            pass
        def choose_school():
            pass
        def choose_course():
            pass
        def check_score():
            pass
'''
12-23 12:31