选课系统项目工程

选课系统项目工程

git:选课系统: 用面向对象方法写的一个选课系统 1.0 版本,仍有很多bug待调教! (gitee.com)

【一】项目需求

- 角色:
      - 学校
      - 学员
      - 课程
      - 讲师
- 功能需求
      - 创建学校地点  ----> 北京/上海   
            - 管理员功能创建学校
      - 创建班级  ----> Linux/Python/Go
            - Linux/Python在北京校区
            - Go在上海校区 
      - 课程内容
            - 周期
            - 价格
            -  ----> 通过学校创建课程
      - 创建学员时
            - 选择学校、付费后关联班级
      - 创建讲师
            - 关联学校
- 提供两个角色接口
		- 学员视图
             1.注册
             2.登陆
             3.选择校区
             4.选择课程
             5.付费课程
             6.查看分数
             7.查看全部信息
        - 讲师视图
              1.登陆
              2.查看教授课程
              3.选择教授课程
              4.查看课程学生
              5.修改学生分数
        - 管理员视图
                1.注册
                2.登陆
                3.创建学校
                4.创建课程(先选择学校)
                5.创建讲师
- 使用 pickle 序列化将数据保存到文件

【二】功能分析

【1】管理员功能

(1)注册

  • 管理员可以进行管理员身份注册
    • 注册时对密码进行加密(md5加盐)
    • 用户名
    • 盐 + 原始密码(二次验证) ----> 加密后的密码

(2)登陆

  • 管理员可以根据注册的账号密码进行登陆
    • 登陆时使用的也是加密后的密码进行验证登陆
    • 用户名
    • 原始密码 + 盐(注册时) ----> 加密后的密码
    • 随机四位登陆验证码
    • 比对密码是否一致

(3)创建学校

  • 管理员可以创建学校
    • 学校名称
    • 学校地点

(4)创建课程(先选择学校)

  • 管理员可以创建课程,前提是已经绑定好校区
    • 先选择想要添加课程的校区
    • 再向校区内添加课程
    • 课程名称
    • 课程周期
    • 课程价格

(5)创建讲师

  • 讲师不让自己注册,默认由管理员分配和创建

    • 讲师姓名

    • 讲师密码(设置默认密码)

【2】学生功能

(1)注册

  • 学生可以自行注册
    • 注册时对密码进行加密(md5加盐)
    • 用户名
    • 盐 + 原始密码(二次验证) ----> 加密后的密码

(2)登陆

  • 学生可以根据注册的用户名和密码进行登陆
    • 登陆时使用的也是加密后的密码进行验证登陆
    • 用户名
    • 原始密码 + 盐(注册时) ----> 加密后的密码
    • 随机四位登陆验证码
    • 比对密码是否一致

(3)选择校区

  • 学生可以选择入学的校区(且只能入学一个校区)
    • 打印所有学校列表让学生选择学校
    • 入学

(4)选择课程

  • 学生可以自主选择课程
    • 打印指定学校内的所有课程列表
    • 学生选择课程
    • 添加课程

(5)付费课程

  • 学生需要付费课程才能到指定班级上课
    • 打印学生已选课程列表
    • 打印学生选择的课程的详细信息
    • 学生选择需要付费的课程
    • 付费成功,激活课程
    • 添加学生到指定班级

(6)查看分数

  • 学生已选择课程并成功入学
    • 默认课程分数为0
    • 打印学生付费的课程
    • 打印学生付费课程的分数

(7)查看全部信息

  • 允许学生查看所有信息
    • 学生已入学学校
    • 学生已选择课程
    • 学生付费课程分数

【3】讲师功能

(1)登陆

  • 讲师可以根据管理员创建的账号密码进行登陆
    • 登陆时使用的也是加密后的密码进行验证登陆
    • 用户名
    • 默认密码 + 盐(注册时) ----> 加密后的密码
    • 随机四位登陆验证码
    • 比对密码是否一致

(2)选择教授课程

  • 允许讲师选择自己教授的课程
    • 讲师先选择教学的校区
    • 打印校区下的所有课程
    • 选择相应课程加入自己的教授列表

(3)查看教授课程

  • 允许讲师查看自己教授的课程

(4)查看课程学生

  • 允许讲师查看自己班级下的学生名单
    • 选择对应的课程
    • 打印对应课程下的学生名单

(5)修改学生分数

  • 允许讲师修改学生分数
    • 先打印课程列表下的所有学生名字
    • 根据学生名字修改对应的课程分数

【4】基类(父类)

  • 父类为查询数据类
    • 查询数据返回对象
    • 保存对象数据

(1)查询类

  • 静态方法(传入的参数为类和用户名)
    • 根据传入的类和用户名调用数据查询方法查询到指定类
    • 返回查询到的指定类

(2)保存类

  • 传入类对象数据
    • 调用数据处理层进行类的保存更新

【5】管理员类(继承父类)

(1)默认参数

  • 管理员姓名
  • 管理员密码
  • 管理员密码加密的盐

(2)创建学校功能

  • 参数
    • 调用功能的类对象本身
    • 学校的名称
    • 学校的地点
  • 方法
    • 根据学校名称和学校地点实例化学校类对象
    • 将学校类传给学校类中的保存方法进行保存

(3)创建课程功能

  • 参数

    • 调用功能的类对象本身
    • 学校对象
    • 课程名称
    • 课程周期
    • 课程价格
  • 方法

    • 根据课程名称、课程周期、课程价格实例化课程类对象
    • 调用课程类中的保存方法,对课程类进行保存
    • 将课程名字添加到指定学校中的课程列表中
    • 对学校类对象进行保存

(4)创建讲师功能

  • 参数
    • 调用功能的类对象本身
    • 讲师姓名
    • 讲师密码
    • 讲师加密的盐
  • 方法
    • 根据讲师姓名、讲师密码、讲师加密用到的盐实例化讲师类对象
    • 调用讲师类中的保存方法进行类对象数据的保存

【6】学员类(继承父类)

(1)默认参数

  • 学生姓名
  • 学生密码
  • 学生密码加密用到的盐
  • 学生所在校区(默认为空)
  • 学生已选择的课程列表
  • 学生已付费的课程的分数字典
  • 学生是否已付费的课程字典

(2)学生选择学校功能

  • 参数
    • 调用类功能的类对象本身
    • 学校名称
  • 方法
    • 更改自己的默认所在校区参数
    • 对学生类对象进行保存

(3)学生选择课程功能

  • 参数
    • 调用类功能的类对象本身
    • 课程名称
  • 方法
    • 更改自己的默认课程列表
    • 在付费字典中记录默认状态
      • 未付费
    • 对学生类对象进行保存

(4)学生付费功能

  • 参数

    • 调用类功能的类对象本身

    • 课程名称

  • 方法

    • 根据课程名称实例化得到课程对象本身
    • 向课程列表中添加学生
    • 修改自己的分数字典中的默认课程
      • 默认分数为0
    • 修改是否付费字典中的课程状态
      • 已付费
    • 对学生类对象进行保存
    • 对课程类进行保存

【7】课程类(继承父类)

(1)默认参数

  • 课程名称
  • 课程周期
  • 课程价格
  • 默认课程学生列表

【8】讲师类(继承父类)

(1)默认参数

  • 讲师姓名
  • 讲师密码
  • 讲师密码加密的盐
  • 讲师教授的课程列表

(2)讲师查看全部课程功能

  • 直接返回对象本身的讲授的课程列表

(3)添加课程功能

  • 参数

    • 调用功能的类对象本身

    • 课程名称

  • 方法

    • 调用自身的课程列表,将课程名称添加到课程列表内
    • 对讲师类进行保存

(4)获取对应课程的学生列表

  • 参数
    • 调用功能的类对象本身
    • 课程名称
  • 方法
    • 根据课程名称实例化得到对应的课程列表
    • 返回对应课程列表内的学生列表

(5)更爱学生分数功能

  • 参数
    • 调用类功能的类对象本身
    • 课程名称
    • 学生名字
    • 修改的目标学生分数
  • 方法
    • 根据学生名字实例化得到学生对象
    • 根据课程名称拿到对应分数字典中的课程,将默认0修改为指定分数
    • 调用学生对象保存功能保存更改后的学生对象

【9】数据处理层之保存数据

(1)默认参数

  • 类对象

(2)方法

  • 根据类对象取得类对象的名字
  • 根据类对象名字拼接指定文件夹路径
    • 比如管理员类传进来就要建立Admin文件夹
      • 该文件夹下存储每个管理员的信息
  • 根据类对象中的名字参数取得对应对象的名字
    • 也就是每个人的姓名
  • 打开文件并写入数据

【10】数据处理层之查看数据

(1)默认参数

  • 实例后的类
  • 用户名

(2)方法

  • 根据传入的类取得类的名字
  • 拼接文件路径
    • 比如管理员文件夹 Admin 文件夹路径
  • 拼接用户指定路径
    • 在上面的基础上拼上需要查询的指定的文件的数据
      • 比如管理员下的某个管理员的数据文件
  • 如果文件存在则打开指定路径
    • 读取到对象数据并返回对象数据
  • 如果文件不存在则返回空供上一层判断

【三】逻辑分析

作者懒得搞了,自己捋!

【四】功能演示

【1】管理员功能演示

(1)主功能展示

(2)注册

(3)登录

(4)创建学校

(5)创建课程

(6)创建讲师

【2】学生功能展示

(1)主功能展示

(2)注册

(3)登陆

(4)选择校区

(5)选择课程

(6)付费课程

(7)查看分数

(8)查看全部信息

【3】讲师功能展示

(1)主功能展示

(2)登陆

(3)选择教授课程

(4)查看教授课程

(5)查看课程学生

(6)修改学生分数

posted @ 2023-06-18 11:10  Chimengmeng  阅读(65)  评论(0编辑  收藏  举报
/* */