Python - Programmation orientée objet - pratique (6)

python programmation orient objet pratique


Besoins

Concevoir un système de gestion des établissements de formation,Il y a un quartier général、Campus,Il y a des cadets、Professeur.、Personnel,Réaliser les exigences spécifiques suivantes:

  • Il y a plusieurs cours,Les cours doivent être tarifés
  • Il y a plusieurs classes,La classe est liée au programme
  • Il y a plusieurs étudiants,Les élèves s'inscrivent en classe,Payer les frais du cours correspondant à cette classe
  • Il y a plusieurs professeurs,Peut être distribué sur différents Campus,Prendre des cours dans différentes classes
  • Il y a plusieurs employés,Peut être distribué sur différents Campus,Il est possible de faire des statistiques sur les soldes des comptes de chaque campus au siège social、Nombre de salariés、Nombre de stagiaires
  • Les étudiants peuvent abandonner l'école

Diagramme de classe

Code de mise en œuvre

Ce n'est certainement pas le Code optimal, Si quelqu'un a une meilleure solution, Commentez - moi

#!usr/bin/env python
# -*- coding:utf-8 _*-
"""
# author: Notes de test pour petit ananas
# blog: https://www.cnblogs.com/poloyy/
# time: 2021/9/7 11:18 Après - midi
# file: 18_Sur le terrain6.py
"""
# Cours
class Course(object):
def __init__(self, name, price):
# Nom du cours、Prix des cours:Propriété privée
self.__name = name
self.__price = price
@property
def name(self):
return self.__name
@name.setter
def name(self, name):
self.__name = name
@property
def price(self):
return self.__price
@price.setter
def price(self, price):
self.__price = price
# Les humains
class Person(object):
def __init__(self, name, sex, phone):
self.name = name
self.sex = sex
self.phone = phone
def __str__(self):
return f"Nom:{self.name}, Sexe{self.sex}, Téléphone:{self.phone}"
# Classe d'étudiants
class Student(Person):
def __init__(self, name, sex, phone, balance):
super(Student, self).__init__(name, sex, phone)
# Solde étudiant、Classe inscrite:Propriété privée
self.__balance = balance
self.__class_list = []
@property
def classList(self):
return [class_.name for class_ in self.__class_list]
# Inscription en classe
def addClass(self, class_):
price = class_.price
# 1、Si le solde étudiant est supérieur aux frais de classe
if self.__balance > price:
# 2、Inscription réussie
self.__class_list.append(class_)
# 3、Moins les frais d'inscription
self.__balance -= price
# 4、Les élèves actuels doivent également être ajoutés à la liste des élèves de la classe.
class_.addStudent(self)
# 5、Augmentation du nombre total de classes
class_.totalBalance()
return
print("Solde insuffisant,Impossible de s'inscrire à la classe")
# Abandon scolaire
def removeClass(self, class_):
if class_ in self.__class_list:
# 1、Supprimer la liste des classes d'inscription
self.__class_list.remove(class_)
# 2、Liste des élèves de la classe supprimer l'étudiant actuel
class_.removeStudent(self)
print("La classe n'existe pas,Impossible d'abandonner l'école")
# Catégorie de personnel
class Employ(Person):
def __init__(self, name, sex, phone):
super(Employ, self).__init__(name, sex, phone)
# Salaire:Propriété privée
self.money = 0
# Enseignants
class Teacher(Employ):
def __init__(self, name, sex, phone):
super(Teacher, self).__init__(name, sex, phone)
# Classe d'enseignement:Propriété privée
self.__class_list = []
@property
def classList(self):
return [class_.name for class_ in self.__class_list]
# Enseignement
def teachClass(self, class_):
# 1、Ajouter une classe à la liste des conférences
self.__class_list.append(class_)
# 2、Classe ajouter un instructeur
class_.teacher = self
# Classe
class Class(object):
def __init__(self, name):
# Nom de la classe、Frais de classe、Liste des cours、Liste des catégories d'étudiants、Professeur de classe、École:Propriété privée
self.__name = name
self.__price = 0
self.__course_list = []
self.__student_list = []
self.__teacher = None
self.__balance = 0
self.__school = None
@property
def name(self):
return self.__name
@name.setter
def name(self, name):
self.__name = name
@property
def school(self):
return self.__school.name
@school.setter
def school(self, school):
self.__school = school
@property
def price(self):
return self.__price
@property
def courseList(self):
return self.__course_list
def addCourse(self, course):
# 1、Frais de classe
self.__price += course.price
# 2、Ajouter à la liste des cours
self.__course_list.append(course)
@property
def studentList(self):
return [stu.name for stu in self.__student_list]
def addStudent(self, student):
self.__student_list.append(student)
def removeStudent(self, student):
self.__student_list.remove(student)
@property
def teacher(self):
return self.__teacher
@teacher.setter
def teacher(self, teacher):
self.__teacher = teacher
@property
def balance(self):
return self.__balance
# Compter le revenu d'une classe
def totalBalance(self):
self.__balance = len(self.__student_list) * self.__price
# Classe scolaire
class School(object):
def __init__(self, name, balance):
# Nom de l'école、Solde scolaire、Liste des employés de l'école:Propriété publique
self.name = name
self.balance = balance
self.employ_list = []
# Liste des campus:Propriété privée
self.__school_list = []
def __str__(self):
return f"L'école:{self.name} Solde:{self.balance}"
# Obtenir la liste des écoles secondaires
@property
def schoolList(self):
return [school.name for school in self.__school_list]
# Ajouter une branche
def addBranchSchool(self, school):
self.__school_list.append(school)
# Ajouter un employé
def addEmploy(self, employ):
self.employ_list.append(employ)
# Voir la liste des employés
def getEmploy(self):
return [emp.name for emp in self.employ_list]
# Statistiques du solde des comptes de chaque branche
def getTotalBalance(self):
res = {}
sum = 0
for school in self.__school_list:
# 1、Régler le solde de la branche primaire
school.getTotalBalance()
res[school.name] = school.balance
# 2、Solde cumulé des campus
sum += school.balance
res[self.name] = sum
return res
# Nombre d'employés
def getTotalEmploy(self):
sum_emp = 0
for school in self.__school_list:
sum_emp += len(school.employ_list)
sum_emp += len(self.employ_list)
return sum_emp
# Nombre total d'étudiants
def getTotalStudent(self):
sum_stu = 0
for school in self.__school_list:
sum_stu += school.getTotalStudent()
return sum_stu
# Branche
class BranchSchool(School):
def __init__(self, name, balance):
super(BranchSchool, self).__init__(name, balance)
# Liste des classes de l'école:Propriété privée
self.__class_list = []
# Obtenir la liste des classes
@property
def classList(self):
return [class_.name for class_ in self.__class_list]
# Ajouter une classe
def addClass(self, class_):
# 1、Ajouter une classe
self.__class_list.append(class_)
# 2、Ajouter un employé enseignant
self.addEmploy(class_.teacher)
# Obtenir le solde total
def getTotalBalance(self):
for class_ in self.__class_list:
# 1、Recettes de la classe de règlement
class_.totalBalance()
# 2、Revenu cumulé de la classe
self.balance += class_.balance
# Obtenir le nombre total d'étudiants
def getTotalStudent(self):
sum_stu = 0
for class_ in self.__class_list:
sum_stu += len(class_.studentList)
return sum_stu
# École générale
school = School("Junior ananas General School", 100000)
# Campus
bj1 = BranchSchool("Xiaochuanhuan Beijing Branch", 2222)
sz1 = BranchSchool("Shenzhen Nanshan University City Branch", 5555)
# Ajouter une branche
school.addBranchSchool(bj1)
school.addBranchSchool(sz1)
# Classe d'initialisation
class1 = Class("Python Cours de base")
class2 = Class("Python Classe avancée")
# Cours d'initialisation
c1 = Course("Python Base", 666)
c2 = Course("Python Niveau avancé", 1666)
c3 = Course("Python Sur le terrain", 2666)
# Ajouter un cours
class1.addCourse(c1)
class1.addCourse(c2)
class2.addCourse(c2)
class2.addCourse(c3)
# Initialiser le professeur
tea1 = Teacher("Petit professeur d'ananas", "girl", 1355001232)
tea2 = Teacher("Grand professeur d'ananas", "boy", 1355001232)
# Enseignement par les enseignants
tea1.teachClass(class1)
tea2.teachClass(class2)
bj1.addClass(class1)
sz1.addClass(class2)
# Initialiser l'étudiant
stu1 = Student("Petit ananas", "girl", 1355001232, 50000)
stu2 = Student("Gros ananas", "boy", 1355001231, 50000)
stu3 = Student("Gros ananas", "girl", 1355001233, 10000)
# Inscription des étudiants
stu1.addClass(class1)
stu1.addClass(class2)
stu2.addClass(class1)
stu3.addClass(class2)
# Personnel ordinaire
emp1 = Employ("Petit employé ananas", "girl", 1355001232)
emp2 = Employ("Big ananas staff", "boy", 1355001231)
emp3 = Employ("Petit employé ananas", "girl", 1355001233)
print(bj1.getTotalStudent())
print(school.getTotalBalance())
print(school.getTotalEmploy())

Participation à cet articleTencent Cloud Self - media Sharing Plan,Bienvenue à la lecture,Partager ensemble.

版权声明
本文为[Notes de test pour les petits ananas]所创,转载请带上原文链接,感谢
https://pythonmana.com/2021/09/20210914180056941f.html

  1. Take you to learn more about nginx basic login authentication: generating passwords using Python
  2. 超硬核Python避坑学习方案奉上!入门到就业一篇就搞定!
  3. Talk about how JMeter executes Python scripts concurrently
  4. Talk about how JMeter executes Python scripts concurrently
  5. Talk about how JMeter executes Python scripts concurrently
  6. python内置函数通过字符串的方式来执行函数代码块,类似java的反射机制相当强大!
  7. python内置函数通过字符串的方式来执行函数代码块,类似java的反射机制相当强大!
  8. python內置函數通過字符串的方式來執行函數代碼塊,類似java的反射機制相當强大!
  9. Les fonctions intégrées Python exécutent des blocs de code de fonction à travers des chaînes, et les mécanismes de réflexion comme Java sont assez puissants!
  10. Python module 1
  11. Python tip: use namedtuple instead of manually created classes
  12. Python - poetry(3)配置项详解
  13. Python - poetry(3)配置项详解
  14. Python - poetry(3)配置項詳解
  15. Python - poetry(3)配置項詳解
  16. Python - détails de l'élément de configuration Poetry (3)
  17. Python - détails de l'élément de configuration Poetry (3)
  18. Python案例实战,pygame模块,Python实现字母代码雨
  19. Python calculation vector angle code
  20. Python基础面试题解读|《Python面试100层》|第1层
  21. 面对小白的pandas命令手册+练习题【三万字详解】
  22. 面對小白的pandas命令手册+練習題【三萬字詳解】
  23. Face au Manuel de commande pandas de Xiaobai + question d'exercice [30 000 mots pour plus de détails]
  24. Interprétation des questions d'entrevue de base Python | 100 couches d'entrevue Python | couche 1
  25. Python data structure and algorithm (17) -- merge sort
  26. Les fonctions intégrées Python exécutent des blocs de code de fonction à travers des chaînes, et les mécanismes de réflexion comme Java sont assez puissants!
  27. Python笔记-uiautomator2截图点击,OpenCV找图
  28. Python文档阅读笔记-OpenCV中Template Matching
  29. Python笔记-利用OpenCV的matchTemplate屏幕找图并使用pyautogui点击
  30. Python筆記-利用OpenCV的matchTemplate屏幕找圖並使用pyautogui點擊
  31. Notes python - utilisez l'écran matchtemplate d'OpenCV pour trouver des images et cliquez sur
  32. Notes de lecture de documents python - Matching de modèles dans OpenCV
  33. Notes python - capture d'écran de l'automate 2 Cliquez pour ouvrir la vue
  34. python链接云服务器的mysql8
  35. python鏈接雲服務器的mysql8
  36. Mysql8 pour les serveurs Cloud liés Python
  37. Python资源大集合,要的话可以拿走!
  38. ️万字【Python基础】保姆式教学️,小白快速入门Python!
  39. ️萬字【Python基礎】保姆式教學️,小白快速入門Python!
  40. Wanzi [base Python] Baby - sitting Teaching, Little White Quick Start Python!
  41. Realizing the function of sending e-mail automatically with Python
  42. Smtpauthenticationerror in Python: solution
  43. 8 steps to teach you how to solve Sudoku in Python! (including source code)
  44. Python change la vie | identifier facilement des centaines de numéros de livraison
  45. Python change life | utilisation de modèles reconnus par ocr
  46. Bibliothèques Python utiles et intéressantes - - psutil
  47. 3. Traitement des données pandas
  48. 【Python编程基础】控制流之链式比较运算符
  49. MFC uses Python scripting language
  50. 【Python編程基礎】控制流之鏈式比較運算符
  51. 【 base de programmation python】 opérateur de comparaison de chaîne pour le flux de contrôle
  52. Python game development, pyGame module, python implementation of Xiaole games
  53. Mise en œuvre du Code de vérification unique (OTP) avec le cadre de repos Django
  54. Python - eval ()
  55. Python - Programmation orientée objet - _Rapport()
  56. Différence entre python - rep (), Str ()
  57. Python - Programmation orientée objet - _Appel()
  58. Python calling matlab script
  59. Python - Programmation orientée objet - _Nouveau() et mode Singleton
  60. Python - Programmation orientée objet - méthode magique (méthode de double soulignement)