1、老师的要求是做学校管理、学生、老师的接口,本文档,只做了学校管理的接口

2、具体要求:

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

3、用到的知识点

类:分别定义学校、老师、学生,学校下有课程、班级、老师列表作为属性,有获取课程列表、班级列表和老师列表的方法

用户界面:根据用户身份选择不同的管理接口

pickle:用户通过程序进行的修改,通过pickle dump到文件中,学校的信息进schooldump文件,老师的进teacherdump文件,学生的进studentdump文件。用load能读出dump进去的对象,然后通过类的方法实现一些功能。

4、代码

类定义classdefine.py:

#学校类
#属性:地点,课程,班级,老师
#方法:开设课程,建立班级,招募老师
class School(object):
def __init__(self,location):
self.location=location
self.courselist=[]
self.grouplist=[]
self.teacherlist=[]
print("%s 学校成立。"%self.location) def creatcouse(self):
coname = input("请输入课程名字:")
coprice = input("请输入课程价格:")
coperiod = input("请输入课程周期:")
coobj = Course(coname, coprice, coperiod)
self.courselist.append(coobj)
return def creatteacher(self):
tname = input("请输入老师姓名:")
tage = input("请输入老师年龄:")
tgender = input("请输入老师性别:")
tobj = Teacher(tname, tgender, tage)
self.teacherlist.append(tobj)
return def creatgroup(self):
cname=input("请输入课程名字:")
gname=input("请输入班级名字:")
gteacher=input("请输入带班老师名字:")
gobj=Group(cname,gname,gteacher)
self.grouplist.append(gobj) def getcourses(self):
lenth=len(self.courselist)
if lenth==0:
print("%s学校不开设课程:"%self.location)
else:
print("%s 学校开设以下课程:" % (self.location))
i=0
while i<lenth:
print(self.courselist[i].name)
i+=1
return def getteacher(self):
lenth=len(self.teacherlist)
if lenth==0:
print("%s学校没有老师:"%self.location)
else:
print("%s 学校有以下老师:" % (self.location))
i=0
while i<lenth:
print(self.teacherlist[i].name)
i+=1
return def getgroup(self):
lenth=len(self.grouplist)
if lenth==0:
print("%s学校没有班级:"%self.location)
else:
print("%s 学校有以下班级:" % (self.location))
i=0
while i<lenth:
print(self.grouplist[i].name)
i+=1
return
#课程类
#属性:课程名字、价格、课程时长
class Course(object):
def __init__(self,name,price,period):
self.name=name
self.price=price
self.period=period
#班级类
#属性:课程名字,班级名字、带班老师名字
class Group(object):
def __init__(self,cname,gname,gteacher):
self.cname=cname
self.gname=gname
self.teacher=gteacher #人类,作为老师和学生类的基类
#属性:姓名、性别、年龄
class People(object):
def __init__(self,name,gender,age):
self.name=name
self.gender=gender
self.age=age #老师类
#属性:人的基础上增加 所属学校,可以教授的课程列表,管理的班级列表
class Teacher(People):
def __init__(self,name,gender,age):
super(Teacher,self).__init__(name,gender,age)
self.courselist=[] #学生类
#属性:人的基础上增加 所属学校,班级列表
class Student(People):
def __init__(self,name,gender,age):
super(Student,self).__init__(name,gender,age)
self.grouplist=[]

学校管理接口schoolmanage.py:

from selectsystem.classdefine.classdefine import *
import pickle
# 创建两个学校SH和BJ,分别代表上海和北京分校
SH= School("上海")
BJ = School("北京") def schoolmanage():
#学校管理视图
print("学校管理视图")
chooseshool=input("请选择您要管理的学校。\n1、上海\n2、北京\n3、退出\n")
while True:
if chooseshool=="":
schoolobj=SH
break
elif chooseshool=="":
schoolobj=BJ
break
elif chooseshool=="":
exit()
else:
chooseshool=input("请选择您要管理的学校。\n1、上海\n2、北京\n3、退出\n") while True:
choice1 = input("请选择您要做的操作。\n1、创建课程\n2、招聘教师\n3、为课程创建班级\n4、保存\n5、目前学校信息\n6、退出\n")
if choice1=="":
schoolobj.creatcouse()
continue
elif choice1=="":
schoolobj.creatteacher()
continue
elif choice1=="":
schoolobj.creatgroup()
elif choice1=="":
with open(r"C:\Users\chinalife\workspace\selectsystem\doc\schooldump", 'wb') as fd:
pickle.dump(schoolobj, fd, 0)
continue
elif choice1=='':
with open(r"C:\Users\chinalife\workspace\selectsystem\doc\schooldump", 'rb') as fd:
schoolobj=pickle.load(fd)
schoolobj.getcourses()
schoolobj.getteacher()
schoolobj.getgroup()
elif choice1=='':
break
else:
choice1 = input("请选择您要做的操作。\n1、招聘教师\n2、创建课程\n3、为课程创建班级\n4、退出\n")

主程序入口main.py:

from selectsystem.classdefine.classdefine import *
from selectsystem.code.schoolmanage import *
from selectsystem.code.teachermanage import *
from selectsystem.code.studentmanage import * role=input("Who are you?Administor, teacher or student?")
if role=="Administor":
schoolmanage()
elif role=="teacher":
teachermanage()
elif role=="student":
studentmanage()

目前老师的管理接口和学生的管理接口还没有细化,但是学校的管理接口已经做好,类似的写逻辑就可以了。

5、后续可以改进的地方

首先,主程序入口仅靠用户输入自己的身份,实属简单做法,可以将之前做的用户登录验证的功能加进来。

第二,在学校管理接口中,增加班级、关联老师,全凭输入,可以加入验证功能,保证只能在已设课程下新建班级,选择已聘用的老师,即范围限定在学校对象中的课程列表和老师列表中。即数据校验功能,防止输入不合理的数据

 

python--学校管理系统(只做了学校管理的接口)的更多相关文章

  1. [terry笔记]学校管理系统

    如下是要求: # 角色:学校.学员.课程.讲师# 要求:# 1. 创建北京.上海 2 所学校# 2. 创建linux , python , go 3个课程 , linux\py 在北京开, go 在上 ...

  2. Asp.Net Core 项目实战之权限管理系统(6) 功能管理

    0 Asp.Net Core 项目实战之权限管理系统(0) 无中生有 1 Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端 2 Asp.Net Core 项目实战之 ...

  3. python脚本实现集群检测和管理

    python脚本实现集群检测和管理 场景是这样的:一个生产机房,会有很多的测试机器和生产机器(也就是30台左右吧),由于管理较为混乱导致了哪台机器有人用.哪台机器没人用都不清楚,从而产生了一个想法-- ...

  4. python主要用来做什么

    python这门编程语言在国外极受欢迎,但在国内使用还不是极普遍. 由于python编程效率极高,现在国内的使用者也开始变得越来越多. python主要用来做什么?这个语言到底有哪些作用呢? 下面主是 ...

  5. BAT线下战争:巨额投资或培养出自己最大对手(包括美团、58、饿了么在内的公司都在计划推出自己的支付工具和金融产品,腾讯只做2不做O)

    BAT线下战争:巨额投资或培养出自己最大对手 2015年10月12日09:49   <财经>杂志    我有话说(18人参与) 收藏本文        BAT大举投资线下公司,看似咄咄逼人 ...

  6. 基于Quqrtz.NET 做的任务调度管理工具

    基于Quqrtz.NET 做的任务调度管理工具 国庆前,需求让我看了一下任务调度的数据表设计.和之前一样,有100多个字段,p1 ~ p100, 我说这是干嘛啊!按这写,写死去了! 然后在网上搜了一下 ...

  7. 学了 Python 能用来做这些!

    来源商业新知网,原标题:学了 Python 能用来做什么? 说起编程语言,Python 也许不是使用最广的,但一定是现在被谈论最多的.随着近年大数据.人工智能的兴起,Python 越来越多的出现在人们 ...

  8. 为什么学Python语言,只需四步全面了解Python语言

    为什么学Python语言,只需四步全面了解Python语言每个时代都会悄悄犒赏会选择的人,Python现在风口的语言Python--第三大主流编程语言Python , 是一种面向对象的解释型计算机程序 ...

  9. 安装python发行版本,并用conda来管理Environments,Python,packages

    简介:anaconda指的是一个开源的python发行版本,其包含了conda.Python等180多个科学包及其依赖项. 因为包含了大量的科学包,Anaconda 的下载文件比较大(约 515 MB ...

随机推荐

  1. Javascript数组(1)--基本属性及方法

    数组Array是Javascript语言中非常重要的两种引用类型数据之一,另外一种为对象Object.Array的数据模型可分为两种进行存储:堆栈结构.队列结构. 昨天,确切说是前天了,去和大学同学见 ...

  2. 【CPP】数据和C

    %f是浮点型的占位符,%f.2表示显示到小数点后两位,.2称为修饰词 变量可以在程序执行过程中变化和指定,而常量不可以. [数据类型关键字]int long short unsigned char  ...

  3. [算法题] 3Sum

    题目内容 题目来源:LeetCode Given an array S of n integers, are there elements a, b, c in S such that a + b + ...

  4. 在 WebSphere Application Server V7 集群环境中管理 HTTP session[阅读]

    http://www.ibm.com/developerworks/cn/websphere/library/techarticles/1012_dingsj_wascluster/1012_ding ...

  5. OSX 监听系统网络设置

    由于日常开发的需求,我们需要监听OSX一些系统设置的变化,达到软件程序设置的同步,这时我们可以通过以下函数监听系统设置的改变: #include <SystemConfiguration/Sys ...

  6. 【leetcode】260. Single Number III

    Given an array of numbers nums, in which exactly two elements appear only once and all the other ele ...

  7. ReactiveCocoa源码解读(二)

    上一篇解读了ReactiveCocoa的三个重要的类的底层实现,本篇继续. 一.RACMulticastConnection 1.应用 RACMulticastConnection: 用于当一个信号被 ...

  8. Web.Config文件详解

    一).Web.Config是以XML文件规范存储,配置文件分为以下格式    1.配置节处理程序声明      特点: 位于配置文件的顶部,包含在<configSections>标志中.  ...

  9. DesiredCapabilities参数配置及含义

    一.DesiredCapabilities的作用: 负责启动服务端时的参数设置,启动session的时候是必须提供的. Desired Capabilities本质上是key value的对象,它告诉 ...

  10. 为什么新生代内存需要有两个Survivor区

    转载自:http://blog.csdn.net/antony9118/article/details/51425581 在JVM的新生代内存中,为什么除了Eden区,还要设置两个Survivor区? ...