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. LindAgile~大叔新宠~一个无所不能框架

    关于她 LindAgile是大叔在这两年里的新宠儿,它主推模块化,插件化,敏捷化,主要于LindAgile基础项目,LindAgile.Http项目,LindAgile.Modules项目和几个扩展模 ...

  2. PyCharm中光标变粗的解决方法

    pycharm中光标变粗,如下: 原因:光标进入了改写状态. 解决方法:按一下键盘中的Insert键就好了.

  3. yhTriangle_LinkQueue(队列实现杨辉三角)

    #include"LinkQueue.h" void yhTriangle(int n) { LinkQueue<int> A; int s,t; A.Inqueue( ...

  4. 【有意思的BUG】默认置灰的属性的值传递

    数据由Client发送给Server,如下图所示,Server在收到请求后会响应Client. 比如Client发送给Server一组数据:Name:sean&Hobby:movies& ...

  5. NodeJS基本使用简介

    Node.js 1.Nvm Node的版本管理工具,用于切换node的版本 一.下载nvm,放在纯英文路径 二.用命令行打开nvm.exe 三.打开setting.txt,其中有四个配置. Root: ...

  6. python第一篇-------python介绍

    一.python介绍 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,Guido开始写Python语言的编译器.Python这个名字,来自Guido所 ...

  7. ExpandableListView实现手风琴效果

    1. 效果示例图 2. 创建方法 (1)第一种方法与ListView等普通控件一样,直接在布局文件中添加ExpandableListView控件即可. (2)第二种方法则是创建一个Activity继承 ...

  8. LxNx前端F2F面试问题整理

    LxNx前端面试问题: 1. 你用过前端哪些框架?它们项目中会用到Angular.js Backbone.js 我回答jQuery, bootstrap, 而Augular.js只是学过 2. 那既然 ...

  9. [js高手之路] 设计模式系列课程 - jQuery的链式调用与灵活的构造函数

    一.我们从一个简单的构造函数+原型程序开始 var G = function(){}; G.prototype = { length : 5, size : function(){ return th ...

  10. SQL 模糊查询

    在进行数据库查询时,有完整查询和模糊查询之分.一般模糊查询语句如下: SELECT 字段 FROM 表 WHERE 某字段 Like 条件 其中关于条件,SQL提供了四种匹配模式:1,%:表示任意0个 ...