# 角色:学校、学员、课程、讲师
# 要求:
# 1. 创建北京、上海 2 所学校
# 2. 创建linux , python , go 3个课程 , linux\py 在北京开, go 在上海开
# 3. 课程包含,周期,价格,通过学校创建课程
# 4. 通过学校创建班级, 班级关联课程、讲师
# 5. 创建学员时,选择学校,关联班级
# 5. 创建讲师角色时要关联学校,
# 6. 提供两个角色接口
# 6.1 学员视图, 可以注册, 交学费, 选择班级,
# 6.2 讲师视图, 讲师可管理自己的班级, 上课时选择班级, 查看班级学员列表 , 修改所管理的学员的成绩
# 6.3 管理视图,创建讲师, 创建班级,创建课程 import pickle
import os BASE_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
#创建类方法,本身就是类的功能,不需要进行实例化,分别为存入和取出数据
@staticmethod
def save_pickle(save_dict,save_path):
pickle.dump(save_dict,open(save_path,'wb'))
@staticmethod
def read_pickle(save_path):
read_dict = pickle.load(open(save_path,'rb'))
return read_dict
#创建学校的方法
@staticmethod
def 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_name
save_dict['address'] = school_add
save_dict['classes'] = school_classes
save_dict['course'] = school_course
save_dict['teacher'] = school_teacher
save_path = school_path + '/%s%s'%(school_name,school_add)
Admin_base.save_pickle(save_dict,save_path)
#创建班级的方法 @staticmethod
def create_classes():
classes_name = input('请输入班级名称:').strip()
classes_course = input('请输入班级课程:').strip()
save_dict = {}
save_dict['name'] = classes_name
save_dict['course'] = classes_course
save_path = classes_path + '/%s'%(classes_name)
Admin_base.save_pickle(save_dict, save_path)
#创建老师 @staticmethod
def create_teacher():
teacher_name = input('请输入老师名称:').strip()
teacher_course = input('请输入课程名称:').strip()
save_dict = {}
save_dict['name'] = teacher_name
save_dict['course'] = teacher_course
save_path = teacher_path + '/%s' % (teacher_name)
Admin_base.save_pickle(save_dict, save_path)
#创建课程 @staticmethod
def create_course():
course_name = input('请输入课程名称:').strip()
course_teacher = input('请输入老师名称:').strip()
save_dict = {}
save_dict['name'] = course_name
save_dict['course'] = course_teacher
save_path = course_path + '/%s' % (course_name)
Admin_base.save_pickle(save_dict, save_path)
# 创建学生 @staticmethod
def create_student():
student_name = input('请输入学生名称:').strip()
student_course = input('请输入课程名称:').strip()
save_dict = {}
save_dict['name'] = student_name
save_dict['course'] = student_course
save_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)
@staticmethod
def 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'] = username
save_dict['course'] = course_option
save_dict['school'] = school_option
save_path = classes_path + '/%s' % (username)
Admin_base.save_pickle(save_dict, save_path) class Teacher(Admin_base):
def __init__(self):
Admin_base.__init__(self)
@staticmethod
def 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:
pass
print('您的学生列表:',student_now_course) def login_read():
while 1:
option = input('请选择您要进行的操作:'
'1.管理'
'2.学生'
'3.老师'
'4.退出')
a = True
while a:
if option == '':
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 == '':
Admin_base.create_school()
break
if option_next == '':
Admin_base.create_classes()
break
if option_next == '':
Admin_base.create_course()
break
if option_next == '':
Admin_base.create_teacher()
break
if option_next == '':
Admin_base.create_student()
break
if option_next == '':
a = False
else:
print('输入有误!')
break
else:
print('密码错误!')
break
else:
print('用户名错误!')
break
if option == '':
Student.student_option()
break
if option == '':
Teacher.check_course()
break
if option == '':
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)

python 学习分享-实战篇选课系统的更多相关文章

  1. python 学习分享-实战篇类 Fabric 主机管理程序开发

    # 类 Fabric 主机管理程序开发: # 1. 运行程序列出主机组或者主机列表 # 2. 选择指定主机或主机组 # 3. 选择让主机或者主机组执行命令或者向其传输文件(上传/下载) # 4. 充分 ...

  2. python 学习分享-实战篇高级的ftp

    #server代码 import socketserver,os,hashlib Base_paht = os.path.dirname(os.path.dirname(os.path.abspath ...

  3. python 学习分享-实战篇简单的ftp

    import socket import os import time import pickle Basedb = os.path.dirname(os.path.dirname(os.path.a ...

  4. python 学习分享-实战篇增删改查作业

    一大波函数来袭 作业要求: 1本次作业通过空格及逗号,将文件拆分成列表,在通过判断add.del.update.select等关键字,来判断用户执行的是哪种命令,根据不同的命令调用不同的函数去处理. ...

  5. python 学习分享-函数篇

    函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 函数能提高应用的模块性,和代码的重复利用率.你已经知道Python提供了许多内建函数,比如print().但你也可以自己创建函数,这 ...

  6. python 学习分享-字典篇

    python字典(Dictionary) dict是无序的 key必须是唯一切不可变的 a={'key1':'value1','key2':'value2'} 字典的增删改查 a['key3']='v ...

  7. python 学习分享-基础篇

    1.python起手式 写下第一个代码,打印‘hello world’ print('hello world') 2.变量 变量是为了存储信息,在程序中被调用,标识数据名称或类型. 变量定义的规则: ...

  8. python 学习分享-函数篇2

    递归 自己玩自己的函数: 1. 必须有一个明确的结束条件 2. 每次进入更深一层递归时,问题规模相比上次递归都应有所减少 3. 递归效率不高,递归层次过多会导致栈溢出 递归例子和二分查找都放在里面了 ...

  9. Python 学习 第十篇 CMDB用户权限管理

    Python 学习 第十篇 CMDB用户权限管理 2016-10-10 16:29:17 标签: python 版权声明:原创作品,谢绝转载!否则将追究法律责任. 不管是什么系统,用户权限都是至关重要 ...

随机推荐

  1. 使用C#版OpenCV进行圆心求取

    OpenCVSharp是OpenCV的.NET wrapper,是一名日本工程师开发的,项目地址为:https://github.com/shimat/opencvsharp. 该源码是 BSD开放协 ...

  2. grafana快速入门

    入门 本指南将帮助您开始并熟悉Grafana.它假定您有一台正在运行的Grafana服务器,并至少添加了一个数据源. 初学者指南 观看10分钟的初学者指南,以建立仪表板,以快速介绍设置仪表板和面板. ...

  3. codeforces 600C Make Palindrome

    要保证变化次数最少就是出现次数为奇数的相互转化,而且对应字母只改变一次.保证字典序小就是字典序大的字母变成字典序小的字母. 长度n为偶数时候,次数为奇数的有偶数个,按照上面说的搞就好了. n为奇数时, ...

  4. Linux一键脚本合集vps

    首先,想说说一键脚本流行的原因何在? 众所周知的是,Linux 是占据大半壁江山的服务器系统,但在桌面上的占有率可就远不是那么回事儿了,使用和熟悉 Linux 的人远没有 Windows 多,但又因为 ...

  5. Optional int parameter 'fundID' is present but cannot be translated into a null value due to being declared as a primitive type

    错误的意思是: "可选的int参数'fundID'存在但由于被声明为基本类型而无法转换为空值" 意思是fundID被申明为int的基本数据类型, 不能转换为字符串的null值. 难 ...

  6. LigerUI的下拉框行和树的设置(表单生成)

    http://blog.csdn.net/dxnn520/article/details/8194767 // ---------------------- // [下拉树设置 -- 单选] {dis ...

  7. 在React中使用Redux数据流

    问题:数据流是什么呢?为什么要用数据流? 答案:1.数据流是我们的行为与相应的抽象 2.使用数据流帮助我们明确了行为的对应的响应 问题: React与数据流的关系 1.React是纯 V 层的前端框架 ...

  8. 【前端_js】ajax的应用

    1.设置请求头部 function makeRequest() { alert("inside makeRequest()"); var settings = { type: &q ...

  9. dynamic routing between captual

    对于人脑 决策树形式 对于CNN 层级与层级间的传递 人在识别物体的时候会进行坐标框架的设置 CNN无法识别,只能通过大量训练 胶囊 :一个神经元集合,有一个活动的向量,来表示物体的各类信息,向量的长 ...

  10. 二十三、MySQL 事务

    MySQL 事务 MySQL 事务主要用于处理操作量大,复杂度高的数据.比如说,在人员管理系统中,你删除一个人员,你即需要删除人员的基本资料,也要删除和该人员相关的信息,如信箱,文章等等,这样,这些数 ...