python--学校管理系统(在学校接口上,增加了老师的管理接口和学生的管理接口)

和上一篇随笔一样的要求,完善了一下老师接口和学生接口。

搞清楚了一件事情,就是import那么多文件,该怎么搞才比较方便。

1、先上文件目录

在lib中定义了各个类,一看名字就知道是啥类了哦

在interface中定义了接口程序,用户验证身份之后就调用相应的接口

在dumpfile中分了几个文件夹,是分别存放pickle的内容的

main就是主入口了

2、程序代码

main是程序入口,由用户输入选项,选择是学校管理员、老师、还是学生,对应调用interface包中的schoolcontrol、teachercontrol、studentcontrol函数。

 1 #main.py
 2 from interface import *
 3 from lib import *
 4
 5 programexitflag=False
 6 optdic={‘1‘:schoolmanage.schoolcontrol,‘2‘:teachermanage.teachercontrol,‘3‘:studentmanage.studentcontrol,‘4‘:exit}
 7
 8 while not programexitflag:
 9     idcheck=input("Who are you?\n1:Administrator\n2:Teacher\n3:Student\n4:exit\n")
10     if idcheck in optdic.keys():
11         optdic[idcheck]()

schoolmanage.py是学校管理接口的程序。

 1 from lib import *
 2 import pickle
 3 import os
 4
 5 def schoolcontrol():
 6     print("This is school management view.")
 7     schoolobj = School.School()
 8
 9     def chooseschool():
10         namein=input("请输入学校名字:")
11         fddir = os.path.dirname(os.path.dirname(__file__))
12         with open(‘%s/dumpfile/school/%s‘%(fddir,namein),‘rb‘) as fd:
13             schoolobj=pickle.load(fd)
14         schoolobj.getteacher()
15         schoolobj.getcourse()
16         schoolobj.getgroup()
17         schoolobj.getstudent()
18         return schoolobj
19
20     schoolmanageoptdic={‘1‘:schoolobj.setschool,‘2‘:chooseschool,‘3‘:schoolobj.addteacher,‘4‘:schoolobj.addcourse,‘5‘:schoolobj.addgroup,‘6‘:exit}
21     flag=True
22     while flag:
23         schoolmanopt=input("你要干什么?\n1:建校\n2:选择学校\n3:招聘老师\n4:开设课程\n5:开设班级\n6:退出\n")
24         if schoolmanopt in schoolmanageoptdic.keys():
25             schoolobj=schoolmanageoptdic[schoolmanopt]()
26     return

teachermanage是老师管理的程序

 1 import os
 2 import pickle
 3 from lib import *
 4
 5 def teachercontrol():
 6     print("This is teacher management view.")
 7     teacherobj=Teacher.Teacher()
 8
 9     def slogin():
10         name=input("请输入您的名字:")
11         fddir = os.path.dirname(os.path.dirname(__file__))
12         with open(‘%s\dumpfile\\teacher\%s‘ % (fddir, name), ‘rb‘) as fd:
13             teacherobj=pickle.load(fd)
14         return teacherobj
15
16     teachermanageoptdic = {‘1‘: slogin(), ‘2‘:teacherobj.checkgroupinfo, ‘3‘:teacherobj.changescore,‘4‘:exit}
17     flag = True
18     while flag:
19         teachermanopt = input("你要干什么?\n1:登陆\n2:查看班级信息\n3:登记学生成绩\n4:退出\n")
20         if teachermanopt in teachermanageoptdic.keys():
21             teacherobj = teachermanageoptdic[teachermanopt]()
22     return

studentmanage.py是学生管理的程序

 1 from lib import *
 2 import pickle
 3 import os
 4
 5 def studentcontrol():
 6     print("This is student management view.")
 7     studentobj=Student.Student()
 8
 9     def slogin():
10         name=input("请输入您的名字:")
11         fddir = os.path.dirname(os.path.dirname(__file__))
12         with open(‘%s\dumpfile\student\%s‘ % (fddir, name), ‘rb‘) as fd:
13             studentobj=pickle.load(fd)
14         return studentobj
15
16     studentmanageoptdic={‘1‘:studentobj.reg,‘2‘:slogin,‘3‘:studentobj.addgroup,‘4‘:studentobj.scorecheck,‘5‘:studentobj.pay,‘6‘:exit}
17     flag=True
18     while flag:
19         studentmanopt=input("你要干什么?\n1:注册\n2:登陆\n3:报名(选择要上的班级)\n4:查成绩\n5:缴费\n6:退出\n")
20         if studentmanopt in studentmanageoptdic.keys():
21             studentobj=studentmanageoptdic[studentmanopt]()
22     return

3、类统一都放在lib包中,在使用时只需要在__init__.py文件中,把lib包中所有类模块的名字加进去,然后在需要导入的文件中用from lib import *,在导入文件的程序中,先创建类对象实例,再用对象实例.属性(方法)的方法就可以使用类了。interface包也是一样处理。

  1 #school类
  2 import pickle
  3 import os
  4 from . import Course
  5 from . import Group
  6 from . import Student
  7 from . import Teacher
  8
  9 class School(object):
 10     def __init__(self):
 11         self.sname=‘‘
 12         self.saddress=‘‘
 13         self.teacherlist=[]
 14         self.courselist=[]
 15         self.grouplist=[]
 16         self.studentlist=[]
 17         return
 18
 19     def store(self):
 20         fddir=os.path.dirname(os.path.dirname(__file__))
 21         with open(‘%s\dumpfile\school\%s‘%(fddir,self.sname),‘wb‘) as fd:
 22             pickle.dump(self,fd)
 23         return
 24
 25     def setschool(self):
 26         name=input("学校名字:")
 27         address=input("学校地址:")
 28         self.sname=name
 29         self.saddress=address
 30         self.store()
 31         return self
 32
 33     def getteacher(self):
 34         print("本校有以下老师:")
 35         for t in self.teacherlist:
 36             print(t.tname)
 37         return
 38
 39     def getcourse(self):
 40         print("本校开设以下课程:")
 41         for c in self.courselist:
 42             print(c.cname)
 43         return
 44
 45     def getgroup(self):
 46         print("本校开设以下班级:")
 47         for g in self.grouplist:
 48             print(g.gname)
 49         return
 50
 51     def getstudent(self):
 52         print("本校有以下学员:")
 53         for s in self.studentlist:
 54             print(s.sname)
 55         return
 56
 57     def addteacher(self):
 58         print("招募讲师......")
 59         name=input("老师姓名:")
 60         newteacher=Teacher.Teacher(name)
 61         self.teacherlist.append(newteacher)
 62         print("%s 老师到岗。"%newteacher.tname)
 63         newteacher.store()
 64         self.store()
 65         return
 66
 67     def addcourse(self):
 68         print("开设课程......")
 69         name=input("课程名称:")
 70         price=input("课程价格:")
 71         newcourse=Course.Course(name,price)
 72         self.courselist.append(newcourse)
 73         print("%s 课程开设完毕。"%newcourse.cname)
 74         newcourse.store()
 75         self.store()
 76         return
 77
 78     def addgroup(self):
 79         print("开设班级......")
 80         csname=input("课程名字:")
 81         name=input("班级名字:")
 82         maxnum=input("班级最多人数:")
 83         teachername=input("带班老师:")
 84
 85         fddir = os.path.dirname(os.path.dirname(__file__))
 86         with open(‘%s\dumpfile\\teacher\%s‘ % (fddir, teachername), ‘rb‘) as fd:
 87             teacherobj=pickle.load(fd)
 88
 89         cnamelist=[]
 90         for c in self.courselist:
 91             cnamelist.append(c.cname)
 92         if csname in cnamelist:
 93             tnamelist=[]
 94             for t in self.teacherlist:
 95                 tnamelist.append(t.tname)
 96             if teachername in tnamelist:
 97                 newgroup=Group.Group(name,maxnum,teachername)
 98                 self.grouplist.append(newgroup)
 99                 newgroup.store()
100                 teacherobj.grouplist.append(newgroup)
101                 teacherobj.store()
102             else:
103                 print("没有你要的带班老师,班级开设失败。")
104         else:
105             print("本校没有你输入的课程,班级开设失败")
106         self.store()
107         return
 1 #Course类
 2 import os
 3 import pickle
 4
 5 class Course(object):
 6     def __init__(self,name,price):
 7         self.cname=name
 8         self.cprice=price
 9         self.cgroup=[]
10         return
11
12     def store(self):
13         fddir = os.path.dirname(os.path.dirname(__file__))
14         with open(‘%s\dumpfile\course\%s‘ % (fddir, self.cname), ‘wb‘) as fd:
15             pickle.dump(self, fd)
16         return
 1 #Group类
 2 import os
 3 import pickle
 4
 5 class Group(object):
 6     def __init__(self,name,maxnumber,teachername):
 7         self.gname=name
 8         self.gmaxstudent=maxnumber
 9         self.gteacher=teachername
10         self.gstudentdict={}#学生姓名:成绩
11         return
12
13     def store(self):
14         fddir = os.path.dirname(os.path.dirname(__file__))
15         with open(‘%s\dumpfile\group\%s‘ % (fddir, self.gname), ‘wb‘) as fd:
16             pickle.dump(self, fd)
17         return
18
19     def addstudent(self,sname):
20         self.gstudentdict[sname]=0
21         return
 1 #Teacher类
 2 import os
 3 import pickle
 4
 5 class Teacher(object):
 6     def __init__(self,name=‘‘):
 7         self.tname=name
 8         self.grouplist=[]#放的是group对象,在school建立班级的时候关联上去的
 9         return
10
11     def store(self):
12         fddir = os.path.dirname(os.path.dirname(__file__))
13         with open(‘%s\dumpfile\\teacher\%s‘ % (fddir, self.tname), ‘wb‘) as fd:
14             pickle.dump(self, fd)
15         return
16
17     def checkgroupinfo(self):
18         for g in self.grouplist:
19             print("%s 班级有以下学生:"%g.gname)
20             for  key in g.gstudentdict.keys():
21                 print(key)
22         return self
23
24     def changescore(self):
25         gname=input("请输入要登记成绩的班级名字:")
26         for g in self.grouplist:
27             if gname==g.gname:
28                 flag=True
29                 while flag:
30                     sname=input("请输入学生姓名:")
31                     sscore=input("请输入学生成绩:")
32                     if sname in g.gstudentdict.keys():
33                         g.gstudentdict[sname]=sscore
34                     else:
35                         print("没有这个学生。")
36                     cont=input("继续登记吗?y/n")
37                     if cont==n:
38                         flag=False
39         return self
 1 #Student类
 2 import os
 3 import pickle
 4 from . import Group
 5 from . import School
 6 from . import Course
 7 from . import Teacher
 8
 9 class Student(object):
10     def __init__(self):
11         self.sname=‘‘
12         self.schname=‘‘
13         self.scoursedic={}
14         self.sgrouplist=[]
15         return
16
17     def store(self):
18         fddir = os.path.dirname(os.path.dirname(__file__))
19         with open(‘%s\dumpfile\student\%s‘ % (fddir, self.sname), ‘wb‘) as fd:
20             pickle.dump(self, fd)
21         return
22
23     def reg(self):
24         name=input("请输入您的名字:")
25         schoolname=input("请输入学校名字:")
26         self.sname = name
27         self.schname = schoolname
28
29         fddir=os.path.dirname(os.path.dirname(__file__))
30         with open(‘%s\dumpfile\school\%s‘%(fddir,schoolname),‘rb‘) as fd:
31             schoolobj=pickle.load(fd)
32             schoolobj.studentlist.append(self)
33             schoolobj.store()
34         self.store()
35         print(‘注册成功‘)
36         return self
37
38     def addgroup(self):
39         fddir = os.path.dirname(os.path.dirname(__file__))
40         with open(‘%s\dumpfile\school\%s‘ % (fddir, self.schname), ‘rb‘) as fd:
41             schoolobj = pickle.load(fd)
42             schoolobj.getcourse()
43             schoolobj.getgroup()
44         choosecourse=input("输入你要上的课程名字:")
45         choosegroup=input("输入你要上的班级名字:")
46
47         with open(‘%s\dumpfile\group\%s‘%(fddir,choosegroup),‘rb‘) as fd1:
48             groupobj=pickle.load(fd1)
49             if len(groupobj.gstudentdict)<int(groupobj.gmaxstudent):
50                 self.scoursedic[choosecourse]=‘未缴费‘
51                 groupobj.addstudent(self.sname)
52                 groupobj.store()
53                 print("报名成功,未缴费。")
54             else:
55                 print("该班满员,不能报名。")
56         self.store()
57         return self
58
59     def scorecheck(self):
60         fddir = os.path.dirname(os.path.dirname(__file__))
61         for i in self.sgrouplist:
62             with open(‘%s\dumpfile\group\%s‘ % (fddir, i), ‘rb‘) as fd:
63                 groupobj=pickle.load(fd)
64                 print("%s 课程的成绩是 %d"%(i,groupobj.gstudentdict[self.sname]))
65         return self
66
67     def pay(self):
68         for key,ifpay in self.scoursedic.items():
69             if ifpay==‘未缴费‘:
70                 fddir = os.path.dirname(os.path.dirname(__file__))
71                 with open(‘%s\dumpfile\course\%s‘ % (fddir, key), ‘rb‘) as fd:
72                     courseobj=pickle.load(fd)
73                     price=courseobj.cprice
74                 print("课程 %s 需要缴费 %s 元"%(key,price))
75                 yorno=input("是否缴费?y/n")
76                 if yorno==‘y‘:
77                     self.scoursedic[key]=‘已缴费‘
78                     print("已缴费")
79                     self.store()
80         return self
时间: 2024-07-30 19:14:25

python--学校管理系统(在学校接口上,增加了老师的管理接口和学生的管理接口)的相关文章

[terry笔记]学校管理系统

如下是要求: # 角色:学校.学员.课程.讲师# 要求:# 1. 创建北京.上海 2 所学校# 2. 创建linux , python , go 3个课程 , linux\py 在北京开, go 在上海开# 3. 课程包含,周期,价格,通过学校创建课程# 4. 通过学校创建班级, 班级关联课程.讲师# 5. 创建学员时,选择学校,关联班级# 5. 创建讲师角色时要关联学校,# 6. 提供两个角色接口# 6.1 学员视图, 可以注册, 交学费, 选择班级,# 6.2 讲师视图, 讲师可管理自己的班

培训学校管理系统=互联网+管理(不“安分”校长必看)

培训学校管理系统=互联网+管理(不“安分”校长必看) 不可否认,当今社会已经步入互联网+的时代,李克强总理在今年政府工作报告中提出“互联网+”行动计划,“互联网+”代表一种新的经济形态,即充分发挥互联网在生产要素配置中的优化和集成作用,将互联网的创新成果深度融合于经济社会各领域之中,提升实体产业的创新力和生产力.未来将会达到人人互联网.物物互联网,业业互联网;实体与科技的融合的趋势不可阻挡.教育作为关于国计民生的和民族未来的重要领域和产业,更会加快互联网+的融合,这是个必然的无法阻挡的趋势. 互

使用python或robotframework调multipart/form-data接口上传文件

这几天调一个multipart/form-data类型的接口,遇到点小阻碍.之前同事有使用urllib库写了个类似的方法实现,比较长,想要改的时候发现不太好使.在网上查找发现用requests库做这个更强大.下面具体介绍一下python-requests及robotframework-RequestsLibrary实现multipart/form-data接口上传文件.1.从fiddler查看接口长这样:Header: WebForms: 2.python-requests实现 #!/usr/b

python通过snmp获取usg接口上的公网IP

在华为usg防火墙上配置了snmp v3,通过python的netsnmp模块获取接口上的公网上. usg上的snmp配置,将yorur_usernam.your_auth_pass.yoru_priva_pass替换你自己的设置 snmp-agent snmp-agent sys-info version v3 snmp-agent group v3 v3group privacy read-view v3view write-view v3view notify-view v3view sn

python 学习笔记 3 -- 数据结构篇上

数据结构是可以处理一些 数据 的 结构 .或者说,它们是用来存储一组相关数据的.在Python中有三种内建的数据结构--列表.元组和字典.本文主要对这三种数据类型以及相关的使用做介绍,以例子的形式演示更加容易理解! 1.列表(List) 列表是处理一组有序项目的数据结构,即你可以在一个列表中存储一个 序列 的项目.在Python中,你在每个项目之间用逗号分割. 列表中的项目应该包括在**方括号**中,这样Python就知道你是在指明一个列表.一旦你创建了一个列表,你可以添加.删除或是搜索列表中的

使用Python创建MySQL数据库实现字段动态增加以及动态的插入数据

应用场景: 我们需要设计一个数据库来保存多个文档中每个文档的关键字.假如我们每个文档字符都超过了1000,取其中出现频率最大的为我们的关键字. 假设每个文档的关键字都超过了300,每一个文件的0-299号存储的是我们的关键字.那我们要建这样一个数据库,手动输入这样的一个表是不现实的,我们只有通过程序来帮我实现这个重复枯燥的操作. 具体的示意图如下所示: 首先图1是我们的原始表格: 图1 这个时候我们需要程序来帮我们完成自动字段的创建和数据的插入. 图2 上图是我们整个表的概况.下面我们就用程序来

Python基础(16)_面向对象程序设计(类、继承、派生、组合、接口)

一.面向过程程序设计与面向对象程序设计 面向过程的程序设计:核心是过程,过程就解决问题的步骤,基于该思想设计程序就像是在设计一条流水线,是一种机械式的思维方式 优点:复杂的问题的简单化,流程化 缺点:扩展性差 面向对象的程序设计:核心是对象,对象是特征(变量)与技能(函数)的结合体,是一种上帝式的思维方式 优点:解决了程序的扩展性 缺点:可控性差 二.类和对象 以游戏举例,基于面向对象设计一个款游戏:英雄联盟,每个玩家选一个英雄,每个英雄都有自己的特征和和技能,特征即数据属性,技能即方法属性,特

Python学习第一周总结(上)

Python基础知识总结 一.前期了解 1.1解释型语言和编译型语言 编译型语言在程序执行之前,有一个单独的编译过程,将程序翻译成机器语言,以后执行这个程序的时候,就不用再进行翻译了. 解释型语言,是在运行的时候将程序翻译成机器语言,所以运行速度相对于编译型语言要慢. C/C++ 等都是编译型语言,而Java,C#,Python等都是解释型语言. 1.2动态类型语言和静态类型语言 动态类型语言:指在运行期间才去做数据类型检查的语言.在用动态类型的语言编程时,永远也不用给任何变量指定数据类型,该语

?《Python自动化测试修炼宝典》线上课程已经成功入驻网易云课堂......

<Python自动化测试修炼宝典>线上课程已经成功入驻网易云课堂...... IT测试老兵利用工作之余,亲自录制的<Python自动化测试修炼宝典>线上课程已经成功入驻网易云课堂,想要提高测试技术的小伙伴可以线上购买课程进行学习. 课程背景 测试人员进阶实战课程.本套课程以作者多年测试实战经验为背景,结合大量测试案例深入浅出讲解目前主流web端.app端自动化测试框架以及使用Python如何从0到1实现接口测试框架的搭建. 课程特色 系统教学+实战案例+开放源码.涵盖Python3

泛型定义在接口上

/*泛型定义在接口上 *  * */ package 泛型; interface Inter<T>{    void show(T t);}//第一种方式class InterImpl implements Inter<String>{ public void show(String t) {        System.out.println("show:"+t);    }    }//第二种方式class InterImpl2<T> imple