python选课系统项目详解

选课系统项目详解

  • 选课系统简介及分析
  • 选课系统架构设计分析
  • 选课系统目录设计
  • 管理员视图
    • 注册
    • 登录
    • 创建学校
    • 创建课程
    • 创建讲师
  • 学生视图
    • 注册
    • 登录
    • 选择学校
    • 选择课程
    • 查看分数
  • 教师视图
    • 登录
    • 选择课程
    • 查看课程
    • 查看学生分数
    • 修改学生分数

选课系统简介及分析

在学习完面向对象的内容后
我们可以通过选课系统来结合一下我们学习面向对象的内容
'''项目介绍
选课系统
角色:学校 学员 课程 讲师
要求:
	1.创建北京、上海两所学校
    2.创建linux、python、go 3个课程,linux\py在北京开,go在上海开
    3.课程包括 周期、价格,通过学校创建课程
    4.通过学校创建班级,班级关联课程、讲师5,创建学员时,选择学校,关联班级
    5.创建讲师角色时要关联学校
    6.提供三个接口
    	6.1学员视图,可以注册、交学费、选择班级
        6.2讲师视图,讲师可以管理自己的班级,上课时选择班级,查看学员列表,修改所管理的学员成绩
        6.3管理视图,创建讲师,创建班级,创建课程
    7.上面的操作产生的数据都通过pickle序列化保存到文件里
'''
我们通过上述描述即可提炼出一下几点内容:
1.管理员功能
	注册功能
    登录功能
    创建学校
    创建课程
    创建老师
2.讲师功能
	登录功能
    选择课程
    查看课程
    查看学生分数
    修改学生分数
3.学生功能
	注册功能
    登录功能
    选择学校
    选择课程
    查看课程分数

我们通过上述介绍可以得知这个项目具体的功能
所以接下来我们利用所学知识来分析一下架构方面

架构设计

image

目录搭建

我们需要再次基础之上对架构的目录进行搭建
bin
	start.py
core
	src.py
    admin_view.py
    teacher_view.py
    student_view.py
conf
	settings.py
lib
	common.py
log
	log.log  
db
	db_handler.py
     models.py
interface
	admin_interface.py
    student_interface.py
    teacher_interface.py
readme.txt
requirements.txt

目录如图

image

由于我们的日志目录可以通过logging模块的日志配置字典自动创建,所以我们可以写也可以不写

展示层部分搭建功能字典

我们搭建好了目录,那么首先我们应该先把框架的架子搭起来,然后再进入内部去完善补齐缺失的功能即可
  • bin目录下的start启动文件

    image

  • src文件中的run函数补充

    image

  • admin_view 视图里面 run函数补充

    image

管理员功能之注册

展示层代码编写

image

md5加密算法

我们先开始编写管理员部分的注册功能
我们可以通过md5算法将传递进入的用户密码进行一个加密处理
由于我们可以其他地方也会使用到加密算法,所以我们就将获取加密处理后的函数定义在common文件中

image

来康康

image

models文件创建Admin类

在Admin 类中可以看到我除了定义属性以外还写了一个 save()方法,这是为了保存对象
可以看到我直接在__init__中调用save()方法,这样我们创建好一个对象之后直接就可以通过这个对象去调用save()方法保存自己了,这样就不需要再通过对象名字去点save()方法~
image
db_handeler中的save()方法
image

管理员注册接口 完成注册保存

我们需要在注册页面功能完善一下,因为我们需要判断这个用户名是否已经注册了,所以我们需要在db_handler里面编写一个select方法,这样的话我们不仅可以拿到对应的对象,也可以通过这个返回值进行逻辑判断,对象到底创建与否

数据处理层
image
注册接口层
image

管理员功能之登录

展示层
image
登录接口层
image
我们在写完这两个功能之后需要考虑一个问题,那就是用户登录的校验,我们如果选择了管理员视图,但是如果用户不等了我们不能直接让他去使用除了注册与登录以外的功能,这个时候我们就需要编写一个装饰器,并且我们需要考虑其他视图,因为我们一共是三个视图
image

管理员功能之创建学校

展示层
我们用语法糖@common.login_auth('admin') 这样就代表了有参装饰器的mode为admin
image
创建学校接口层
image
models文件
我们需要注意,因为创建学校这个功能是管理员独有的,所以在创建它的时候就应该是管理员对象去创建,所以创建课程的函数应该写在Admin类中
image

管理员功能之创建课程

创建课程我们可以理清一下思路,因为课程是与学校绑定的,每个学校下有不同的课程,并且我们在创建学校的时候也编写了一个默认属性course_name_list 所以我们需要先获取学校,让管理员去选择,选择了学校之后,通过学校名字获取学校对象,并拿到学校对象属性中的course_name_list
然后用获取到的用户输入创建课程对象即可
展示层
image
接口层
image
db_handler
image

管理员之创建老师

这个功能就等同于管理员的登录
展示层
image
接口层
image

学生注册功能

其实学生的注册功能与管理员的注册都是相同的,就不过多赘述了
直接上代码,ps:我也是cv管理员的 就是改了一下变量名而已
展示层
image
接口层
image

学生登录功能

登录也是一样的,cv就完事了,把管理员功能写完之后就简简单单
展示层
image
接口层
image

学生选择学校功能

在此需要说一下思路,我们应该获取学校的名单,让学生去选择学校,选择学校后才可以去选择该学校内的课程,由于我的思路是将学生与学校进行了绑定,所以学生只能先选择学校然后再选择该学校下面的课程
展示层
image
接口层
image

学生选择课程功能

前面我们也说了,课程是学校内的 而学生也绑定了学校,所以我们就可以通过学生所在的学校中的课程列表获取它想选择的课程
展示层
我这次直接将具体过程全部写入接口层
image
接口层
image

学生查看分数

展示层
image
接口层
我们直接获取学生的课程名称列表,循环里面的课程,并将其中的分数字典展示即可
image

讲师登录功能

讲师登录功能是与学生以及管理员的登录一致的
所以我们直接上代码
展示层
image
接口层
image

讲师选择课程功能

讲师选择课程功能的思路就是,获取学校列表,并循环打印,获取学校名字
然后通过学校对象去找学校对象下面的课程列表,进行选择即可
展示层
image
接口层
image

讲师查看课程功能

循环学校列表,获取学校名字,并通过学校对象去获取学校下的课程列表,并进行循环打印即可
展示层
image
接口层
image

讲师查看学生分数

循环打印讲师对象下面的课程列表,然后通过课程名字去找到课程对象下面的学生列表,循环学生列表获取学生名字即可
展示层
image
接口层
image

讲师设置学生分数

与查看学生分数同理,只需要增加修改分数的代码即可
展示层
image
接口层
image

类的创建

image

image

posted @   dd随风  阅读(384)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示