如下是要求:

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

如下是目录结构:

start.py

 import sys, os, pickle
sys.path.append(os.path.dirname(os.path.dirname(__file__)) + "\\" + "core")
from main import Main obj = Main()
obj.run()

init_db.py

 # 此程序作为初始化数据库
import sys,os
sys.path.append(os.path.dirname(os.path.dirname(__file__))+"\\"+"module")
from pickle_file import pickle_wb,pickle_rb teacher_db = [["学校","讲师","年龄","性别"]]
classes_db = [["班级","学校","课程","讲师","周期","价格"]]
stu_db = [["编号","姓名","年龄","性别","学费","班级"]] def init_db():
if "teacher_db" not in os.listdir(os.path.dirname(os.path.dirname(__file__))+"\\"+"db"):
pickle_wb("teacher_db", teacher_db)
else:
pass if "classes_db" not in os.listdir(os.path.dirname(os.path.dirname(__file__))+"\\"+"db"):
pickle_wb("classes_db", classes_db)
else:
pass if "stu_db" not in os.listdir(os.path.dirname(os.path.dirname(__file__))+"\\"+"db"):
pickle_wb("stu_db", stu_db)
else:
pass

main.py

 # 角色:学校、学员、课程、讲师
# 要求:
# 1. 创建北京、上海 2 所学校
# 2. 创建linux , python , go 3个课程 , linux\py 在北京开, go 在上海开
# 3. 课程包含,周期,价格,通过学校创建课程
# 4. 通过学校创建班级, 班级关联课程、讲师
# 5. 创建学员时,选择学校,关联班级
# 5. 创建讲师角色时要关联学校,
# 6. 提供两个角色接口
# 6.1 学员视图, 可以注册, 交学费, 选择班级,
# 6.2 讲师视图, 讲师可管理自己的班级, 上课时选择班级, 查看班级学员列表 , 修改所管理的学员的成绩
# 6.3 管理视图,创建讲师, 创建班级,创建课程
# 7. 上面的操作产生的数据都通过pickle序列化保存到文件里 class Main(object):
def __init__(self):
pass def run(self): import sys,os,pickle
sys.path.append(os.path.dirname(os.path.dirname(__file__))+"\\"+"module")
from init_db import init_db
from school import School
from lesson import Lesson
from classes import Classes
from school_member import Schoolmember,Teacher,Student
from pickle_file import pickle_wb,pickle_rb msg = """
学校管理系统
1、学校管理
2、讲师管理
3、学员管理
4、退出
"""
mgr = """
1、创建讲师
2、创建班级
3、创建课程
4、查看讲师信息
5、查看班级、课程信息
6、返回上一级
"""
stu = """
1、注册
2、交学费
3、选择班级
4、查看学员信息
5、返回上一级
""" init_db()
school_bj = School("北京")
school_sh = School("上海")
lesson_linux = Lesson("linux",10000,"6 month")
lesson_python = Lesson("python",11000,"8 month")
lesson_go = Lesson("go",8000,"6 month")
flag = True
while flag:
print(msg)
choice = input("请选择系统 :")
if choice == "":
while True:
print(mgr)
choice = input("请选择功能 :")
if choice == "":
print("创建讲师 :\n请选择学校:\n1、北京\n2、上海")
num = 0
while True:
school_num = input("请选择学校 :")
if num < 2:
if school_num == "":
school_choice = school_bj.school_name
break
elif school_num == "":
school_choice = school_sh.school_name
break
else:
print("请输入正确编号!")
num += 1
else:
print("尝试次数过多!")
exit()
teacher_name = input("请输入教师名字 :")
age = input("请输入教师年龄 :")
sex = input("请输入教师性别 :")
teacher_data = school_bj.create_teacher(school_choice,teacher_name,age,sex)
teacher_db_data = pickle_rb("teacher_db")
teacher_db_data.append(teacher_data)
pickle_wb("teacher_db",teacher_db_data)
elif choice == "":
classes_data = []
c_name_list = []
classes_db_data = pickle_rb("classes_db")
while True:
c_name = input("\n创建班级\n请输入班级编号(格式001) :")
for i in classes_db_data:
c_name_list.append(i[0])
if c_name in c_name_list:
print("班级名称已存在!")
print("已有如下班级:")
for j in c_name_list:
print(j)
else:break
school_num = input("\n1、北京(linux与python课程)\n2、上海(go课程)\n请选择学校 :")
lesson_choice = ""
if school_num == "":
school_choice = school_bj.school_name
lesson_num = input("\n1、linux\n2、python\n请选择课程 :")
if lesson_num == "":
lesson_choice = lesson_linux.lesson_name
lesson_choice_cycle = lesson_linux.cycle
lesson_choice_price = lesson_linux.price
elif lesson_num == "":
lesson_choice = lesson_python.lesson_name
lesson_choice_cycle = lesson_python.cycle
lesson_choice_price = lesson_python.price
else:
print("没有这门课程")
exit()
elif school_num == "":
school_choice = school_sh.school_name
lesson_choice = lesson_go.lesson_name
lesson_choice_cycle = lesson_go.cycle
lesson_choice_price = lesson_go.price
else:
print("没有此编号!")
exit()
teacher_data = pickle_rb("teacher_db")
teacher_name = {}
for i,ele in enumerate(teacher_data):
teacher_name[i] = ele[1]
for key,value in teacher_name.items():
if key == 0:continue
else:print("%s、%s" % (key,value))
teacher_choice = input("请选择讲师 :")
classes_data.append(c_name)
classes_data.append(school_choice)
classes_data.append(lesson_choice)
classes_data.append(teacher_name[int(teacher_choice)])
classes_data.append(lesson_choice_cycle)
classes_data.append(lesson_choice_price)
classes_db_data = pickle_rb("classes_db")
classes_db_data.append(classes_data)
pickle_wb("classes_db",classes_db_data)
elif choice == "":
classes_data = []
c_name_list = []
classes_db_data = pickle_rb("classes_db")
school_num = input("\n1、北京(linux与python课程)\n2、上海(go课程)\n请选择学校 :")
lesson_choice = ""
if school_num == "":
school_choice = school_bj.school_name
lesson_num = input("\n1、linux\n2、python\n请选择课程 :")
if lesson_num == "":
lesson_choice = lesson_linux.lesson_name
lesson_choice_cycle = lesson_linux.cycle
lesson_choice_price = lesson_linux.price
elif lesson_num == "":
lesson_choice = lesson_python.lesson_name
lesson_choice_cycle = lesson_python.cycle
lesson_choice_price = lesson_python.price
else:
print("没有这门课程")
exit()
elif school_num == "":
school_choice = school_sh.school_name
lesson_choice = lesson_go.lesson_name
lesson_choice_cycle = lesson_go.cycle
lesson_choice_price = lesson_go.price
else:
print("没有此编号!")
exit()
while True:
c_name = input("\n创建班级\n请输入班级编号(格式001) :")
for i in classes_db_data:
c_name_list.append(i[0])
if c_name in c_name_list:
print("班级名称已存在!")
print("已有如下班级:")
for j in c_name_list:
print(j)
else:break
teacher_data = pickle_rb("teacher_db")
teacher_name = {}
for i,ele in enumerate(teacher_data):
teacher_name[i] = ele[1]
for key,value in teacher_name.items():
if key == 0:continue
else:print("%s、%s" % (key,value))
teacher_choice = input("请选择讲师 :")
classes_data.append(c_name)
classes_data.append(school_choice)
classes_data.append(lesson_choice)
classes_data.append(teacher_name[int(teacher_choice)])
classes_data.append(lesson_choice_cycle)
classes_data.append(lesson_choice_price)
classes_db_data = pickle_rb("classes_db")
classes_db_data.append(classes_data)
pickle_wb("classes_db",classes_db_data)
elif choice == "":
teacher_data = pickle_rb("teacher_db")
for i,item in enumerate(teacher_data):
print(i,item)
input("回车返回上级菜单。")
elif choice == "":
classes_db_data = pickle_rb("classes_db")
for i,item in enumerate(classes_db_data):
print(i,item)
input("回车返回上级菜单。")
elif choice == "":
break
elif choice == "":
exit()
elif choice == "":
while True:
print(stu)
choice = input("请选择功能 :")
if choice == "":
stu_list = []
stu_db_data = pickle_rb("stu_db")
len_stu_db_data = len(stu_db_data)
stu_list.append(""+str(len_stu_db_data))
stu_name = input("请输入学生姓名 :")
stu_age = input("请输入学生年龄 :")
stu_sex = input("请输入学生性别 :")
stu_data = Student(stu_name,stu_age,stu_sex)
stu_list.append(stu_data.name)
stu_list.append(stu_data.age)
stu_list.append(stu_data.sex)
stu_list.append("未付款")
stu_list.append("未选择")
stu_db_data = pickle_rb("stu_db")
stu_db_data.append(stu_list)
pickle_wb("stu_db",stu_db_data) elif choice == "":
stu_db_data = pickle_rb("stu_db")
stu_unpay = []
stu_unpay_id = []
stu_id = []
for i in stu_db_data:
if i[4] == "未付款":
stu_unpay_id.append(i[0])
stu_unpay.append(i)
if len(stu_unpay_id) == 0:
a = input("不存在未付款的学员,回车键返回。")
break
else:
print("如下同学还未付款 :")
for i in stu_unpay:
print(i)
for i in stu_db_data:
stu_id.append(i[0])
pay_id = input("\n请输入付款学员的编号 :")
if pay_id not in stu_id:
a = input("没有这个学员编号,请输入正确学员编号,回车键返回")
break
elif pay_id in stu_id and pay_id not in stu_unpay_id:
a = input("这个学员已付款,回车键返回")
elif pay_id in stu_unpay_id:
for i in stu_db_data:
if pay_id == i[0]:
i[4] = "已付款"
pickle_wb("stu_db",stu_db_data)
a = input("编号:%s,此学员已付款完毕,回车键返回。" % (pay_id)) elif choice == "":
stu_db_data = pickle_rb("stu_db")
stu_unchoice = []
stu_unchoice_id = []
stu_id = []
classes_db_data_id = []
for i in stu_db_data:
if i[5] == "未选择":
stu_unchoice_id.append(i[0])
stu_unchoice.append(i)
if len(stu_unchoice_id) == 0:
a = input("不存在未选课的学员,回车键返回。")
break
else:
print("如下同学还未选课 :")
for i in stu_unchoice:
print(i)
for i in stu_db_data:
stu_id.append(i[0])
choice_id = input("\n请输入选课学员的编号 :")
print("\n")
if choice_id not in stu_id:
a = input("没有这个学员编号,请输入正确学员编号,回车键返回")
break
elif choice_id in stu_id and choice_id not in stu_unchoice_id:
a = input("这个学员已选课,回车键返回")
elif choice_id in stu_unchoice_id:
classes_db_data = pickle_rb("classes_db")
for i,item in enumerate(classes_db_data):
classes_db_data_id.append(item[0])
print(i,item)
classes_id = input("请选择班级编号(如:001) :")
if classes_id not in classes_db_data_id:
a = input("没有这个班级,请输入正确班级号,回车键返回。")
break
else:
for i in stu_db_data:
if choice_id == i[0]:
i[5] = classes_id
pickle_wb("stu_db",stu_db_data)
a = input("编号:%s学员,已选择班级%s,回车键返回" % (choice_id,classes_id)) elif choice == "":
stu_data = pickle_rb("stu_db")
for i,item in enumerate(stu_data):
print(i,item)
input("回车返回上级菜单。")
elif choice == "":
break
elif choice == "":
pass
else:
a = input("请输入正确编号!按回车键返回。")
return # ['姓名', '年龄', '性别', '学费', '班级']

classes.py

 class Classes(object):
def __init__(self,classes_name):
self.classes_name = classes_name

lesson.py

 class Lesson(object):
def __init__(self,lesson_name,price,cycle):
self.lesson_name = lesson_name
self.price = price
self.cycle = cycle

pickle_file.py

 import pickle
import os def pickle_wb(file_name,data):
f = open(os.path.dirname(os.path.dirname(__file__))+"\\"+"db"+"\\"+file_name,"wb")
f.write(pickle.dumps(data))
f.close()
return def pickle_rb(file_name):
f = open(os.path.dirname(os.path.dirname(__file__))+"\\"+"db"+"\\"+file_name,"rb")
data = pickle.loads(f.read())
return data

school.py

 class School(object):
def __init__(self,school_name):
self.school_name = school_name def create_teacher(self,school_name,teacher_name,age,sex):
teacher_data = [school_name,teacher_name,age,sex]
return teacher_data def create_lesson(self,school_name,lesson_name,price,cycle):
lesson_data = [school_name,lesson_name,price,cycle]
return lesson_data

school_member.py

 class Schoolmember(object):
def __init__(self,name,age,sex):
self.name = name
self.age = age
self.sex = sex class Teacher(Schoolmember):
def __init__(self,name,age,sex):
super(Teacher,self).__init__(name,age,sex) class Student(Schoolmember):
def __index__(self,name,age,sex):
super(Student,self).__init__(name,age,sex)

其实是一个很低端的版本,学习类,但是感觉写着写着感觉有点跑偏了。

[terry笔记]学校管理系统的更多相关文章

  1. [terry笔记]RMAN综合学习之恢复

    [terry笔记]RMAN综合学习之备份http://www.cnblogs.com/kkterry/p/3308405.html [terry笔记]RMAN综合学习之恢复 http://www.cn ...

  2. [terry笔记]RMAN综合学习之备份

    rman是最经济实惠的oracle备份工具,在这里做一个rman的整体学习. 文章中大多是rman命令的语法,还是最好做做实验,以便印象深刻,因为大多数数据库的备份就是按时跑脚本,恢复也不是经常能遇到 ...

  3. [terry笔记]RMAN综合学习之配置

    [terry笔记]RMAN综合学习之备份http://www.cnblogs.com/kkterry/p/3308405.html [terry笔记]RMAN综合学习之恢复 http://www.cn ...

  4. [terry笔记]Oracle会话追踪(二):TKPROF

    接上一笔记[terry笔记]Oracle会话追踪(一):SQL_TRACE&EVENT 10046 http://www.cnblogs.com/kkterry/p/3279282.html ...

  5. [terry笔记]Oracle会话追踪(一):SQL_TRACE&EVENT 10046

      SQL_TRACE/10046 事件是 Oracle 提供的用于进行 SQL 跟踪的手段,在日常的数据库问题诊断和解决中是非常常用的方法.但其生成的trace文件需要tkprof工具生成一个可供人 ...

  6. Java学习笔记-学生管理系统

    Java学习笔记 一个Student类 public class Student { private String sid; private String name; private String a ...

  7. [terry笔记]dblink

    dblink在分布式数据库集群中很常见,今天简单的总结一下. db link 的命名和global_names有关,global_name是数据库全局名称,global_name在你所管理的数据库中要 ...

  8. [terry笔记]Oracle10g/11g安装-redhat5.5

    操作系统准备工作 其实真正的进入图形界面安装是简单的,只是前期的配置比较繁琐,如版本.空间.位置.软件包.用户.环境变量.内核参数,这里主要讨论前期配置. 10g与11g的单实例安装基本一样,主要区别 ...

  9. [terry笔记]对人员列表文件进行数据库操作

    原文件(数据已经脱敏): staff_id,name,age,phone,dept,enroll_date1,姬建明,25,152015410,运维,2013-11-012,刘海龙,26,186184 ...

随机推荐

  1. 使用gridlayout布局后,因某些原因又删除,并整理文件夹结构时,Unable to resolve target &#39;android-7&#39;

    出现的问题 [2013-01-11 10:52:39 - gridlayout_v7] Unable to resolve target 'android-7' 事由:在一次做九宫格时.误使用了gri ...

  2. 请用Java设计一个Least Recently Used (LRU) 缓存

    LRU介绍:LRU是Least Recently Used的缩写,即最少使用页面置换算法,是为虚拟页式存储管理服务的, 思路介绍: 能够使用两个标准的数据结构来实现.Map和Queue.由于须要支持多 ...

  3. UI各种小控件的用法

    今天给大家列举出来UI中的一些小控件的用法.方便大的学习与使用 一些方法和属性我们能够查看API文档.不必将每一个控件的功能都记住, 由于在使用的过程中,我们能够查看API文档.方便使用,我们仅仅要记 ...

  4. Auto property synthesis will not synthesize property &#39;delegate&#39;; it will be implemented by its super

    今天在XCode6.3上面重写TabBar的时候,自己定义tabBar的代理遇到的一个问题 在重写tabBar的代理的时候遇到了一个警告. 解决方法: 在.m文件里 警告消失

  5. POJ 1836 Alignment(DP max(最长上升子序列 + 最长下降子序列))

    Alignment Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 14486   Accepted: 4695 Descri ...

  6. Android圆角Tag控件的另类实现

    一般的圆角标签控件都是用xml设置shape做实现.可是假设我们想要做一个更加强大通用的的圆角控件,不须要使用者去关心圆角,仅仅设置背景就能够了. 应该怎么实现呢?这个就须要把背景先设置成图片,然后再 ...

  7. redis配置外部访问

    iptables -I INPUT 4 -p tcp -m state --state NEW -m tcp --dport 6379 -j ACCEPT 开放6379端口

  8. iOS判断一些权限是否被禁止

    iOS中经常会遇到访问相册.相机.麦克疯.蓝牙.以及推送等权限,所以每次我们要使用这些权限是都要记得查看用户是否允许了,如果用户禁止了你的访问权限,你仍然去调取相册或者相机等,那么就会先出现下面的这个 ...

  9. python fuzzy c-means demo

    摘自:http://pythonhosted.org/scikit-fuzzy/auto_examples/plot_cmeans.html#example-plot-cmeans-py,加入了自己的 ...

  10. poj--3169--Layout(简单差分约束)

    Layout Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 9098   Accepted: 4347 Descriptio ...