首页 > 其他分享 >选课系统项目工程

选课系统项目工程

时间:2023-06-18 11:24:22浏览次数:41  
标签:工程 选课 对象 系统 学生 密码 课程 管理员 讲师

选课系统项目工程

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)修改学生分数

标签:工程,选课,对象,系统,学生,密码,课程,管理员,讲师
From: https://www.cnblogs.com/dream-ze/p/17488840.html

相关文章

  • archLinux grub 双系统引导
    1安装grub、efibootmgr和os-prober##安装grub,efibootmgr,os-probersudopacman-Sgrubefibootmgros-prober##安装grub到boot文件夹中。uefi启动grub-install--target=x86_64-efi--efi-directory=/boot--bootloader-id=GRUB##非uefi启动grub-install--target=i......
  • 操作系统(5.2.1)--请求分页的硬件支持
    内存、外存、页表机制、缺页中断机构、地址变换机构1.页表机制在请求分页系统中所需要的主要数据结构是页表。为支持请求分页,须在页表中再增加若干项,供程序(数据)在换进、换出时参考。在请求分页系统中的每个页表项如下所示:现对其中各字段说明如下:(1)状态位P:用于指示该页是否已......
  • Linux的文件系统及文件缓存
    文件系统的特点文件系统要有严格的组织形式,使得文件能够以块为单位进行存储。文件系统中也要有索引区,用来方便查找一个文件分成的多个块都存放在了什么位置。如果文件系统中有的文件是热点文件,近期经常被读取和写入,文件系统应该有缓存层。文件应该用文件夹的形式组织起来,方便管理和......
  • 系统架构师-UML相关图
    原文合集地址如下,有需要的朋友可以关注本文地址合集地址基本概念在UML(统一建模语言)中,常见的九种图包括:类图(ClassDiagram):展示系统中的类、接口、关系和属性等静态结构。对象图(ObjectDiagram):展示系统中对象的实例和对象之间的关系。用例图(UseCaseDiagram):描述系统的功能需求,显示参......
  • 系统架构师-UML相关图
    原文合集地址如下,有需要的朋友可以关注本文地址合集地址基本概念在UML(统一建模语言)中,常见的九种图包括:类图(ClassDiagram):展示系统中的类、接口、关系和属性等静态结构。对象图(ObjectDiagram):展示系统中对象的实例和对象之间的关系。用例图(UseCaseDiagram):描述系统的......
  • 操作系统_0617
    虚存容量受外存和内存影响虚存容量=min(内存容量+外存容量,2^N)(N为计算机的地址总线的长度)2.下列选项中,磁盘逻辑格式化程序所做的工作是II.建立文件系统的根目录Ⅳ.对保存空闲磁盘块信息的数据结构进行初始化一个新的磁盘是一个空白版,必须分成扇区以便磁盘控制器能读和写,这......
  • cn小系统
    一级导航二级导航列表storeId/categories/list(门店-分类-列表)store#1id=1storeId、categoriesId、fieldExt(month、type)(返回这几个字段、点击列表都要传2个字段给接口)id=2id=3store#2store#3store#4store#5type:check、cash、billcategories:列表id对应固定分类id=1:p......
  • 随机信号通过线性系统
    冲激响应和传输函数分别为$h(t)$和$H(\omega)$的线性时不变系统,当随机信号输入该线性时不变系统时,其输出的信号是由对应各个输入样本函数的输出响应所构成的函数集合,需要用统计的方法分析输出信号的特征。输入随机信号$X(t)$平稳时,输出响应$Y(t)$1.均值$E[Y(t)]=E[X(t)]H(w)......
  • Linux操作系统——主观题
    第一章——虚拟机UbuntuLinux'在安装系统时,应该建立几个分区?每个分区的大小大致是多少?建立四个分区,第一个主分区/dev/sad1512MB,第二个逻辑分区/dev/sda510240MB,第三个交换分区/dev/sda61024MB,第四个个人文件分区/dev/sda79696MB。在一台主机上只能安装一个VMware虚拟机软......
  • 大数据管理平台哪家好?“的修”不仅仅是报修系统
    随着科技的不断发展,报修系统已经成为了企业提高售后服务效率、降低成本的重要工具。在这个竞争激烈的市场环境下,企业需要选择一款操作便捷、自动化程度高、数据可视化、行业解决方案优质、自定义审批以及移动透明化管理的报修系统。而“的修”报修系统正是一款符合这些要求的优秀系......