python--学校管理系统(只做了学校管理的接口)

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=="1":
            schoolobj=SH
            break
        elif chooseshool=="2":
            schoolobj=BJ
            break
        elif chooseshool=="3":
            exit()
        else:
            chooseshool=input("请选择您要管理的学校。\n1、上海\n2、北京\n3、退出\n")

    while True:
        choice1 = input("请选择您要做的操作。\n1、创建课程\n2、招聘教师\n3、为课程创建班级\n4、保存\n5、目前学校信息\n6、退出\n")
        if choice1=="1":
            schoolobj.creatcouse()
            continue
        elif choice1=="2":
            schoolobj.creatteacher()
            continue
        elif choice1=="3":
            schoolobj.creatgroup()
        elif choice1=="4":
            with open(r"C:\Users\chinalife\workspace\selectsystem\doc\schooldump", 'wb') as fd:
                pickle.dump(schoolobj, fd, 0)
            continue
        elif choice1=='5':
            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=='6':
            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、后续可以改进的地方

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

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

 

 


 
posted @ 2017-09-17 17:06  susenyan  阅读(1052)  评论(0编辑  收藏  举报