学生选课系统

学生选课系统业务需求

角色:学校 学院 课程 讲师

 	 要求:
 1. 创建北京、上海 2 所学校
 2. 创建linux , python , go 3个课程 , linux\py 在北京开, go 在上海开
 3. 课程包含,周期,价格,通过学校创建课程 
 4. 通过学校创建班级, 班级关联课程、讲师5. 创建学员时,选择学校,关联班级
 5. 创建讲师角色时要关联学校, 
 6. 提供三个角色接口  
	 学员视图, 可以注册, 交学费, 选择班级,  
 6.1 讲师视图, 讲师可管理自己的班级, 上课时选择班级, 查看班级学员列表 , 修改所管理的学员的成绩   
 6.2 管理视图,创建讲师, 创建班级,创建课程
 7. 上面的操作产生的数据都通过pickle序列化保存到文件里

具体功能模块

1.管理员功能
	注册功能
 	登录功能
 	创建学校
 	创建课程
 	创建老师
2.讲师功能
	登录功能
 	选择课程
 	查看课程
 	查看学生分数
	修改学生分数
3.学生功能
	注册功能
 	登录功能
 	选择学校
 	选择课程
 	查看课程分数

系统架构设计

三层架构
第一部分 需要分层展示 分别去展示3个视端 (管理员,老师,学生)
第三部分 需要创建 models.py储存所有的类,只有该文件内的代码有资格调用db_handler

image

准备工作

1.创建文件开发目录规范
2.考虑是3个身份登录展示不同的信息,需要创建额外的三个视窗,在core文件夹内
3.编写启动文件,start.py  通过启动文件 连接 core-src文件启动,src文件可以根据
用户选择进入不同的 身份视窗
4.搭建功能架构,使用大量 空函数. 
5.准备工作完成,开始进入代码编写,完成一个个的功能函数补充

管理员功能

注册功能
第一层(admin_viwe):
获取用户输入的账号密码,判断2次输入密码是否一致,并把密码加密后 发送至 注册接口
第二层 (admin_api) 
1.判断是否有该对象存在,存在则返回,'用户名已存在无法注册'
  (通过调用 数据库 查询对象功能)
2.创建 注册功能函数 创建管理员类,把接收的账号密码 发生给 管理员类,
通过类产生 管理员对象  然后在数据库保存该对象,已账号命名保存
  (生成对象时,会自动调用数据库保存功能)
第三层 (models)存放 各种 类
第四层 (db_handler)保存数据功能,查询数据功能
登录功能
第一层
  获取用户输入的账号密码,判断2次输入密码是否一致,并把密码加密后 发送至 登录 接口
第二层  
1.判断是否有该对象存在,不存在则返回,'用户名不存在'
  (通过调用 数据库 查询对象功能)
2.通过数据库查询功能,获得 管理员对象,然后把 用户输入的密码和管理对象.密码 判断 密码是否一致 
第三层 (models)通过第二次传的姓名,返回对应的对象
第四层 (db_handler)使用了查询数据功能
创建学校
第一层(admin_viwe):
  获取用户输入的学校名称,学校地址,发送给第二次创建学校接口
第二层 (create_school_api) 
利用 类里面的查询功能,查询学校名称是否存在
把收到的 学校名称,学校地址,发送给第三层 
第三层 (models)创建一个学校类,获取的 学校名称,学校地址 生成学校对象
第四层 (db_handler)保存该对象
创建课程
第一层(admin_viwe):
    调用第二次接口,获取所有学校名称,学校名称加枚举让管理员选择一个学校
获取课程相关信息,把 学校名称 课程相关信息 传入第二层
第二层
    先通过学校名 拿到学校对象,然后查看 该学校下面已有课程 是否和新增课程重复。
    未重复,把新增课程名称 添加到该学校对象 课程信息下 并保存学校对象
第三层 
		查询是否有该课程类,没有则新建
		创建一个课程类,用获取到的课程信息 产生 课程对象,课程对象内加入学校名称
第四层
    保存课程对象
  
学校关联课程 课程关联学校 
创建老师
第一层
		获取用户输入的账号,(密码可设置默认密码)传给第二层
第二层
	  调用教师类方法,查询是否有该账号命名的教师对象,判断是否重复注册
    把获得的教师用户名,调用第三层 教师 类 产生教师对象
第三层
    创建教师类 密码设置为 默认密码,
第四层 
    保存教师对象

讲师功能

登录功能
第一层
  获取用户输入的账号密码, 发送至 第二次 登录 接口
第二层  
1.判断是否有该对象存在,不存在则返回,'用户名不存在'
  (通过调用 数据库 查询对象功能)
2.通过数据库查询功能,获得 教师对象,然后把 用户输入的密码和管理对象.密码 
判断 密码是否一致 
第三层 (models)通过第二次传的姓名,返回对应的对象
第四层 (db_handler)使用了查询数据功能
选择课程
第一层
	获取所有学校名称 循环打印先让老师选择学校
  通过学校名称,获取该学校下所有课程名称 选择课程
  然后把 老师名称 和 课程名称 传给第二层接口
第二层 
  通过老师名称 获取老师对象,然后把课程信息加入老师对象中
  通过课程名称 获取课程对象 然后把老师名称加入课程信息中
第三层
  通过类方法查询对象 保存对象
  
老师关联课程  课程也关联老师
查看课程
第一层
		把老师账户 传给第二层  获取 老师对象内 已选课程
第二层
    通过老师账户,获取老师对象 然后获得老师已选课程名称 返回第一层展示
查看学生分数
第一层
    把老师账户 传给第二层  获取 老师对象内 已选课程
  	打印所有已选课程,选择查看成绩的课程名称
    课程名称 传入接口层 可以获取 该课程下所有学生的名称
    把所有学生的名字 传入接口 可获得所有学生的成绩 
    循环打印即可
第二层
    通过讲师用户名,获得该讲师负责的所有课程 返回
    通过课程名称。 获得该课程下所有学生姓名  
    利用所有学生 循环调用 学生类获得每一个学生对象
    然后把每个学生对象中 成绩 加入一个空的列表
    把 包含所有学生成绩的列表返回第一层
修改学生分数
第一层
    把老师账户 传给第二层  获取 老师对象内 已选课程
  	打印所有已选课程,选择更改成绩的课程名称
    课程名称 传入接口层 可以获取 该课程下所有学生的名称
    把所有学生的名字,循环打印 选择一个学生
第二层
		获取讲师名称  通过名称获得 讲师对象 通过对象 获取 该讲师所负责的课程
    通过课程名称  获得课程对象 通过课程对象 获得该课程下所有的学生名称
    有了 课程名称 学生名称  通过学生名称 获得学生对象 获得学生成绩字典
    字典的key 就是 课程名称  然后就可以更改了

学生功能

注册功能
第一层:
获取用户输入的账号密码,判断2次输入密码是否一致,并把密码加密后 发送至 注册接口
第二层  
1.判断是否有该对象存在,存在则返回,'用户名已存在无法注册'
  (通过调用 数据库 查询对象功能)
2.创建 功能函数 创建管理员类,把接收的账号密码 发生给 学生类,通过类产生 管理员对象  
然后在数据库保存该对象,已账号命名保存
  (生成对象时,会自动调用数据库保存功能)
第三层 (models)存放 各种 类
第四层 (db_handler)保存数据功能,查询数据功能

注册需要 (models)创建这个学生类  类继承父类 父类有保存对象 和 查询对象功能
登录功能
第一层:
		 获取用户输入的账号密码,并把密码加密后 发送至 登录接口
第二层:
     通过获得的用户名 调取学生类方法 查询  判断是否用户名存在
  	 用户名存在 获得该学生对象 通过学生对象获得密码 
     对比密码是否一致即可 把结果返回给第一层
选择学校
第一层:
		 把用户名,用户登录后全局字典会保存该用户用户名 发送至 第二层
     然后判断 该学生对象中 是否有了学校
     没有学校 则 利用第二层 获取 所有学校名称
     然后让 选择一个学校
     选择完成后 把 学生名称  学校名称 传给第二层
第二层:
     获得学生姓名,通过学生姓名获得学生对象,判断是否已经有了学生
     创建获取所有学校名称接口,返回所有学生名称给第一层
     利用 学生名称 学校名称。调取学生对象 学校对象
     学生对象中加入 学校 信息。学校信息中 加入 学生对象
选择课程
第一层:
  		把学生名称 发送至 第二层 获取该学生所在学校 没有学校则提示先选择学校
      把学校名称 发送给第二层 获取 该学校下所有课程名称
      然后用户选择课程 把 学生姓名 和用户已选课程 发入第二层
第二层:
     第二层 通过名称 获得判断是否有学校
     通过学校名称 得到学校对象 获得学校下所有开发课程
通过 获得 用户名 获得用户目前已选的所有课程,
     然后把 已选课程 和 刚刚 所选择的课程名 循环遍历,课程已选了 就不再添加,课程未
选择则添加入学生对象课程列表,
     学生对象 成绩字典内 把刚刚新添加入课程列表的课程 生成键值对,键是课程名,值
是成绩列表,(因为列表可以存放多次成绩)
     课程列表里面也条件 学生姓名
     最后保存学生对象 保存课程对象
      
课程关联学生。学生关联课程
查看课程分数
第一层
    把学生名称传送给第二层
第二层
    通过学生名称 获得学生对象,然后获得学生成绩,返回给第一层
posted @   Python-moon  阅读(73)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示