# 角色:学校、学员、课程、讲师
# 要求:
# 1. 创建北京、上海 2 所学校
# 2. 创建linux , python , go 3个课程 , linux\py 在北京开, go 在上海开
# 3. 课程包含,周期,价格,通过学校创建课程
# 4. 通过学校创建班级, 班级关联课程、讲师
# 5. 创建学员时,选择学校,关联班级
# 5. 创建讲师角色时要关联学校,
# 6. 提供两个角色接口
# 6.1 学员视图, 可以注册, 交学费, 选择班级,
# 6.2 讲师视图, 讲师可管理自己的班级, 上课时选择班级, 查看班级学员列表 , 修改所管理的学员的成绩
# 6.3 管理视图,创建讲师, 创建班级,创建课程import pickle
import osBASE_PATH = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
db_path = BASE_PATH + '/db'
admin_path  = db_path + '/admin'
classes_path = db_path + '/classes'
course_path = db_path + '/course'
school_path = db_path + '/school'
student_path = db_path + '/student'
teacher_path = db_path + '/teacher'# with open(classes_path + '/1','r') as f:
#     for line in f:
#         print(line)class Admin_base(object):def __init__(self):pass#创建类方法,本身就是类的功能,不需要进行实例化,分别为存入和取出数据
    @staticmethoddef save_pickle(save_dict,save_path):pickle.dump(save_dict,open(save_path,'wb'))@staticmethoddef read_pickle(save_path):read_dict = pickle.load(open(save_path,'rb'))return read_dict#创建学校的方法
    @staticmethoddef create_school():school_name = input('请输入学校名称:').strip()school_add = input('请输入学校地址:').strip()school_classes = input('请输入学校班级:').strip()school_course = input('请输入学校课程:').strip()school_teacher = input('请输入老师姓名:').strip()save_dict = {}save_dict['name'] = school_namesave_dict['address'] = school_addsave_dict['classes'] = school_classessave_dict['course'] = school_coursesave_dict['teacher'] = school_teachersave_path = school_path + '/%s%s'%(school_name,school_add)Admin_base.save_pickle(save_dict,save_path)#创建班级的方法
@staticmethoddef create_classes():classes_name = input('请输入班级名称:').strip()classes_course = input('请输入班级课程:').strip()save_dict = {}save_dict['name'] = classes_namesave_dict['course'] = classes_coursesave_path = classes_path + '/%s'%(classes_name)Admin_base.save_pickle(save_dict, save_path)#创建老师
@staticmethoddef create_teacher():teacher_name = input('请输入老师名称:').strip()teacher_course = input('请输入课程名称:').strip()save_dict = {}save_dict['name'] = teacher_namesave_dict['course'] = teacher_coursesave_path = teacher_path + '/%s' % (teacher_name)Admin_base.save_pickle(save_dict, save_path)#创建课程
@staticmethoddef create_course():course_name = input('请输入课程名称:').strip()course_teacher = input('请输入老师名称:').strip()save_dict = {}save_dict['name'] = course_namesave_dict['course'] = course_teachersave_path = course_path + '/%s' % (course_name)Admin_base.save_pickle(save_dict, save_path)# 创建学生
@staticmethoddef create_student():student_name = input('请输入学生名称:').strip()student_course = input('请输入课程名称:').strip()save_dict = {}save_dict['name'] = student_namesave_dict['course'] = student_coursesave_dict['school'] = 'None'save_path = student_path + '/%s' % (student_name)Admin_base.save_pickle(save_dict, save_path)class Student(Admin_base):def __init__(self):Admin_base.__init__(self)@staticmethoddef student_option():username = input('请输入您的姓名:').strip()school_all = os.listdir(school_path)school_name_list = []for school_name in school_all:school_dict = Admin_base.read_pickle(school_path + '/%s'%(school_name))school_name_list.append(school_dict['name'])course_all = os.listdir(course_path)print('可选的学校如下:',school_name_list)school_option = input('请输入您选择的学校:').strip()print('可选的课程如下:',course_all)course_option = input('请输入您选择的课程:').strip()save_dict = {}save_dict['name'] = usernamesave_dict['course'] = course_optionsave_dict['school'] = school_optionsave_path = classes_path + '/%s' % (username)Admin_base.save_pickle(save_dict, save_path)class Teacher(Admin_base):def __init__(self):Admin_base.__init__(self)@staticmethoddef check_course():course_all = os.listdir(course_path)print('课程如下:',course_all)course_option = input('请选择您的课程:').strip()student_all = os.listdir(student_path)student_now_course = []for student_one in student_all:save_path = student_path + '/%s'%(student_one)save_dict = Admin_base.read_pickle(save_path)if  save_dict['course'] == course_option:student_now_course.append(save_dict['name'])else:passprint('您的学生列表:',student_now_course)def login_read():while 1:option = input('请选择您要进行的操作:''1.管理''2.学生''3.老师''4.退出')a = Truewhile a:if option == '1':username = input('请输入用户名:')password = input('请输入密码:')username_path = admin_path + '/%s'%(username)if os.path.exists(username_path):admin_dict = Admin_base.read_pickle(username_path)if password == admin_dict['password']:print('登录成功!')option_next = input('请选择您要进行的操作:''1.新建学校''2.新建班级''3.新建课程''4.新建老师''5.新建学生''6.返回')if option_next == '1':Admin_base.create_school()breakif option_next == '2':Admin_base.create_classes()breakif option_next == '3':Admin_base.create_course()breakif option_next == '4':Admin_base.create_teacher()breakif option_next == '5':Admin_base.create_student()breakif option_next == '6':a = Falseelse:print('输入有误!')breakelse:print('密码错误!')breakelse:print('用户名错误!')breakif option == '2':Student.student_option()breakif option == '3':Teacher.check_course()breakif option == '4':exit()else:print('输入错误!')break# a = pickle.load(open(school_path + '/老男孩北京','rb'))
# print(a)# a =  os.listdir(admin_path)
# print(a)
if __name__ == '__main__':login_read()# login_read()
# save_dict = {'username':'admin','password':'admin'}
# save_path = admin_path + '/admin'
# Admin_base.save_pickle(save_dict,save_path)

转载于:https://www.cnblogs.com/laay/p/7266931.html

python 学习分享-实战篇选课系统相关推荐

  1. Redis学习笔记②实战篇_黑马点评项目

    若文章内容或图片失效,请留言反馈.部分素材来自网络,若不小心影响到您的利益,请联系博主删除. 资料链接:https://pan.baidu.com/s/1189u6u4icQYHg_9_7ovWmA( ...

  2. python学习历程-安装篇(一)

    python学习历程-安装篇 之前工作中数据量很少,每天也就是用excel发一下报表,函数已经足够应付工作内容,但心里一直渴望学习更深层次一点的数据分析(崇拜那些技术大神),网上看了很多有关数据分析挖 ...

  3. 程序猿编程课堂 Python学习之入门篇1:环境搭建与第一个程序

    前言: Python作为目前比较热门的编程语言,其简单和简洁的语法使它成为一种非常好的通用编程语言,它是一种面向对象的动态类型语言,最初被设计用于编写自动化脚本(shell),并且随着版本的不断更新和 ...

  4. python学习[第十三篇] 条件和循环

    python学习[第十三篇] 条件和循环 if语句 单一if 语句 if语句有三个部分构成,关键字if本身,判断结果真假的条件表达式,以及表达式为真或非0是执行的代码 if expression: e ...

  5. python中if语句缺省else_9_【Python学习分享文章】_if(条件语句)

    [Python学习分享文章]_if(条件语句)_logicalJudgement介绍及基本操作 综述 计算机的"条件语句"和生活中的"条件成立"是不一样的. 一 ...

  6. 米斯特白帽培训讲义(v2)实战篇 捷达系统

    米斯特白帽培训讲义 实战篇 捷达系统 讲师:gh0stkey 整理:飞龙 协议:CC BY-NC-SA 4.0 概述 官网:http://www.jeedaa.com/ 主要产品有: 捷达ERP 捷达 ...

  7. 猿编程python代码_程序猿编程课堂 Python学习之入门篇3:简单的数据类型

    1. 什么是数据类型? 我们知道编程就是编写程序解决某个问题,而任何能使用编程来解决的问题都是能够提取或者转换出相应的数据,只是数据的表达形式是不一样的,而这表达形式就是数据类型. 比如,数学中的数字 ...

  8. python开发项目:学生选课系统

    程序要求: 1.创建北京.上海两所学校(分析:通过学校类实例化两个学校实例) 2.创建Linux.python.go三个课程,Linux\go在北京开,Linux在上海开(创建Linux.python ...

  9. python如何全网爬取_如何爬取全网1200本Python书|爬虫实战篇

    这是菜鸟学Python的第98篇原创文章 阅读本文大概需要3分钟 引用 前面写了一篇文章关于爬取市面上所有的Python书思路,这也算是我们数据分析系列讲座里面的一个小的实战项目.上次代码没有写完,正 ...

最新文章

  1. docker-registry的定制和性能分析
  2. Spring创建对象的三种方式以及创建时间
  3. webstorm两个文件比对_webstorm/phpstorm配置连接ftp快速进行文件比较(上传下载/同步)操作...
  4. android 怎么换行,android textview 怎么换行?
  5. linux终端进程bash,让Linux的进程不受终端影响
  6. 指标波动多大才算是异常?
  7. rabbitmq消息确认机制及死信队列的使用
  8. OpenShift 4 - 直接将Web应用当成Serverless运行
  9. 松下抛却Jungle掌机研发项目
  10. 解析数论引论 第2章 数论函数和狄利克雷乘积
  11. JS实现实时显示时间
  12. 高一下册计算机教案,高一信息技术教案
  13. 6种摆脱百度竞价恶意点击的技巧
  14. 我励志成为芸芸阿里云大使中的佼佼者 云大使社区
  15. Linux CentOS 7中安装XXX(持续更新)
  16. 【官方文档】Fluent Bit 简介
  17. 打印显示服务器脱机win10,win10网络打印机脱机怎么办?
  18. RTL9010调试记录
  19. 二十道面试题成都至少16k
  20. xposed的总开关

热门文章

  1. 以安装 WordPress为例介绍在Xampp中安装Bitnami XAMPP modules
  2. 12年经验资深产品经理领你从“产品小白”走向“产品大牛”
  3. react 中from表单输入 提交
  4. 企业如何选择合适的分销商城系统呢?
  5. 正点原子T100智能焊台-试用-拆机测评
  6. 北京大学曹健——Tensorflow笔记 03 搭建神经网络
  7. 前端401错误 解决方法:响应拦截器
  8. arch安装百度输入法
  9. 纯滞后系统的数字Smith预估控制-2
  10. 设置或恢复Windows10字体的小工具