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

时间:2022-09-01 14:57:21

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. &lbrack;terry笔记&rsqb;学校管理系统

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

  2. Asp&period;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&period;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. 为什么document&period;firstChild找到的不是html节点

    DOM是针对HTML4.01开发的,我们现在是XHTML1.0. 所以要想使用核心DOM中的属性和方法,必须去掉DTD类型定义. <!DOCTYPE html PUBLIC "-//W ...

  2. C&plus;&plus;省略参数&lpar;va&lowbar;list va&lowbar;start va&lowbar;arg va&lowbar;end&rpar;的简单应用

    原文参考自:http://www.cnblogs.com/hanyonglu/archive/2011/05/07/2039916.html #include <iostream> #in ...

  3. JavaScript 之 走马灯

    1.原理分析:首先截取字符串的最后一位用Last表示,再截取剩余字符串用Rest表示,拼接字符串Last + Rest, 此事字符串是不会动的,还需要一个函数setInterval(javascrip ...

  4. SQL 左外连接,右外连接,全连接,内连接

    原文地址  连接条件可在FROM或WHERE子句中指定,建议在FROM子句中指定连接条件.WHERE和HAVING子句也可以包含搜索条件,以进一步筛选连接条件所选的行.             连接可 ...

  5. java&lowbar;web学习&lpar;16&rpar;Ajax

    Ajax       Ajax(Asynchronous JavaScript and XML的缩写),允许浏览器与服务器通信而无须刷新当前页面的技术都被叫做Ajax.       Ajax:一种不用 ...

  6. Linux内存中的 buffer 和 cache 到底是个什么东东?

    Linux 中的 free 命令,会输出: total 总量 used  已使用 free 空闲 shared 共享内存 buffers cached 前面四项都比较好理解,一看我也就知道啥意思了.但 ...

  7. canvas画布,时钟

    原理代码如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset="U ...

  8. new 和 newInstance 的区别

    初始化一个类,生成一个实例的时候:newInstance() 和 new 有什么区别? 用newInstance与用new是区别的,区别在于创建对象的方式不一样,前者是使用类加载机制,那么为什么会有两 ...

  9. 掷骰子DApp的实现

    前言:​ DApp前些日子比较火, 这段时间有些低迷. 我也是后知后觉, 现在才接触一些, 这篇博文就当做DApp的初次印象吧.​ 本文要写的是基于智能合约的博彩游戏DApp—骰子游戏, 来看看它是怎 ...

  10. Working with Excel Files in Python

    Working with Excel Files in Python from: http://www.python-excel.org/ This site contains pointers to ...