Présentation de la version orientée objet Python du système de gestion des étudiants

coldplay.xixi
Libérer: 2021-02-25 10:10:51
avant
2080 Les gens l'ont consulté

Présentation de la version orientée objet Python du système de gestion des étudiants

Recommandations d'apprentissage gratuites : Tutoriel vidéo Python

Répertoire d'articles

  • Système de gestion des étudiants Python édition orientée objet
  • Objectifs
  • 1.
  • 2. Préparer les fichiers du programme
    • 2.1 Analyse
    • 2.2 Créer les fichiers du programme
  • 3. >
  • 3.1 student.py
    • 3.1.2 Code du programme
      3.2 managerSystem.py
    • 3.2.1 Définir les classes
      • 3.2.2 Cadre du système de gestion
      3.3 main.py
    • 3.4 Définir Fonction fonction système
    • 3.4.1 Ajouter une fonction
      • 3.4.2 Supprimer un élève
      • 3.4.3 Modifier les informations sur l'élève
      • 3.4 .5 Interroger les informations sur les étudiants
      • 3.4.6 Afficher toutes les informations sur les étudiants
      • 3.4.7 Enregistrer les informations sur les étudiants
      • 3.4.8 Charger les informations sur les étudiants
    IV.Résumé
Objectif

Comprendre la méthode d'analyse des fonctions internes des classes dans l'objet -processus de développement orienté
  • Découvrez les fonctions courantes du système
  • Ajouter
    • Supprimer
    • Modifier
    • Requête
1. Configuration système requise

Utiliser des idées de programmation orientée objet pour terminer le développement du système de gestion des étudiants, comme suit :

Exigences du système : les données des étudiants sont stockées dans des fichiers
  • Fonctions du système : ajouter des étudiants, supprimer des étudiants, modifier les informations sur les étudiants, interroger les informations sur les étudiants, afficher toutes les informations sur les étudiants, enregistrer les informations sur les étudiants et quitter le système.
2. Préparer les fichiers du programme

2.1 Analyse

Analyse des caractères
  • Étudiants
    • Système de gestion
Choses à noter pendant le travail

Afin de faciliter la maintenance du code, il est généralement un rôle par rôle. Le fichier programme
  1. le projet doit avoir une entrée de programme principale, la coutume est
  2. main.py
2.2 Créer un fichier programme

Répertoire du projet, par exemple :

StudentManagerSystemLes fichiers du programme sont les suivants :

Fichier d'entrée du programme : main.py
  • Fichier étudiant : student.py
  • Gérer les fichiers système : managerSystem.py
Programme d'écriture

3.1 étudiant. .py

Exigences :

Les informations sur l'étudiant comprennent : le nom, le sexe, le numéro de téléphone portable
  • Ajoutez
  • méthode magique pour visualiser facilement l'étudiant ; informations sur l'objet
  • __str__
3.1.2 Code du programme

class Student(object):
    def __init__(self, name, gender, tel):
        self.name = name
        self.gender = gender
        self.tel = tel    def __str__(self):
        return f'{self.name}, {self.gender}, {self.tel}'
Copier après la connexion

3.2 managerSystem.py

Exigences :

Emplacement pour stocker les données : fichier (student.data)
  • Charger les données du fichier
    • Modifier les données et les enregistrer dans le fichier
    Forme de stockage des données : objet étudiant de stockage de liste
  • Fonctions du système
  • Ajouter des étudiants
    • Supprimer des étudiants
    • Modifier des étudiants
    • Interroger les informations sur les étudiants
    • Afficher toutes les informations sur les étudiants
    • Enregistrer les informations sur les étudiants
    • Quitter le système
3.2 .1 Définir la classe

class StudentManager(object):
    def __init__(self):
        # 存储数据所用的列表
        self.student_list = []
Copier après la connexion

3.2.2 Cadre du système de gestion

Exigences : les fonctions du système sont utilisées de manière cyclique et les utilisateurs saisissent différents numéros de fonction pour exécuter différentes fonctions .

Étapes
  • Définir la fonction d'entrée du programme
    • Charger les données
      • Afficher le menu des fonctions
      • Numéro de la fonction de saisie utilisateur
      • Effectuer différentes fonctions en fonction du numéro de fonction saisi par l'utilisateur
      Définir les fonctions des fonctions du système, ajouter, supprimer des étudiants, etc.
    class StudentManager(object):
        def __init__(self):
            # 存储数据所用的列表
            self.student_list = []
    
        # 一. 程序入口函数,启动程序后执行的函数
        def run(self):
            # 1. 加载学员信息
            self.load_student()
    
            while True:
                # 2. 显示功能菜单
                self.show_menu()
    
                # 3. 用户输入功能序号
                menu_num = int(input('请输入您需要的功能序号:'))
    
                # 4 根据用户输入的功能序号执行不同的功能
                if menu_num == 1:
                    # 添加学员
                    self.add_student()
                elif menu_num == 2:
                    # 删除学员
                    self.del_student()
                elif menu_num == 3:
                    # 修改学员信息
                    self.modify_student()
                elif menu_num == 4:
                    # 查询学员信息
                    self.search_student()
                elif menu_num == 5:
                    # 显示所有学员信息
                    self.show_student()
                elif menu_num == 6:
                    # 保存学员信息
                    self.save_student()
                elif menu_num == 7:
                    # 退出系统
                    break
    
        # 二. 定义功能函数
        # 2.1 显示功能菜单
        @staticmethod
        def show_menu():
            print('请选择如下功能-----------------')
            print('1:添加学员')
            print('2:删除学员')
            print('3:修改学员信息')
            print('4:查询学员信息')
            print('5:显示所有学员信息')
            print('6:保存学员信息')
            print('7:退出系统')
    
        # 2.2 添加学员
        def add_student(self):
            pass
    
        # 2.3 删除学员
        def del_student(self):
            pass
    
        # 2.4 修改学员信息
        def modify_student(self):
            pass
    
        # 2.5 查询学员信息
        def search_student(self):
            pass
    
        # 2.6 显示所有学员信息
        def show_student(self):
            pass
    
        # 2.7 保存学员信息
        def save_student(self):
            pass
    
        # 2.8 加载学员信息
        def load_student(self):
            pass
    Copier après la connexion
3.3 main.py

# 1. 导入managerSystem模块from managerSystem import *# 2. 启动学员管理系统if __name__ == '__main__':
    student_manager = StudentManager()

    student_manager.run()
Copier après la connexion

3.4 Définir la fonction du système

3.4.1 Ajouter une fonction

    Exigence : L'utilisateur saisit le nom, le sexe et le numéro de téléphone portable de l'étudiant pour ajouter l'étudiant au système.
  • Étapes
  • Nom de saisie utilisateur, sexe, numéro de téléphone portable
    • Créer l'objet étudiant
    • Créer l'étudiant objet Ajouter à la liste
  • Code
  • # 添加学员函数内部需要创建学员对象,故先导入student模块from student import *class StudentManager(object):
    		......
        
        # 2.2 添加学员
        def add_student(self):
            # 1. 用户输入姓名、性别、手机号
            name = input('请输入您的姓名:')
            gender = input('请输入您的性别:')
            tel = input('请输入您的手机号:')
    
            # 2. 创建学员对象:先导入学员模块,再创建对象
            student = Student(name, gender, tel)
    
            # 3. 将该学员对象添加到列表
            self.student_list.append(student)
            
            # 打印信息
            print(self.student_list)
            print(student)
    Copier après la connexion
3.4.2 Supprimer l'élève

Exigence : L'utilisateur saisit le nom de l'élève cible, et si l'élève existe, supprime l'élève.
  • Étapes
  • L'utilisateur saisit le nom de l'élève cible
    • Parcourez la liste des données de l'élève Si le nom de l'élève saisi par l'utilisateur existe, supprimez-le. indiquera que l'étudiant n'existe pas.
    Code
  •     # 2.3 删除学员:删除指定姓名的学员
        def del_student(self):
            # 1. 用户输入目标学员姓名
            del_name = input('请输入要删除的学员姓名:')
            
            # 2. 如果用户输入的目标学员存在则删除,否则提示学员不存在
            for i in self.student_list:
                if i.name == del_name:
                    self.student_list.remove(i)
                    break
            else:
                print('查无此人!')
    
            # 打印学员列表,验证删除功能
            print(self.student_list)
    Copier après la connexion
3.4.3 Modifier les informations sur l'étudiant

Exigence : Étudiant cible de saisie utilisateur Nom, si l'élève existe, modifier les informations de l'élève.
  • Étapes
  • L'utilisateur saisit le nom de l'étudiant cible
    • Parcourez la liste des données de l'étudiant, et si le nom de l'étudiant saisi par l'utilisateur existe, modifiez le nom de l'étudiant ; , le sexe et le numéro de téléphone portable, sinon cela indiquera que l'élève n'existe pas.
    Code
  •     # 2.4 修改学员信息
        def modify_student(self):
            # 1. 用户输入目标学员姓名
            modify_name = input('请输入要修改的学员的姓名:')
            # 2. 如果用户输入的目标学员存在则修改姓名、性别、手机号等数据,否则提示学员不存在
            for i in self.student_list:
                if i.name == modify_name:
                    i.name = input('请输入学员姓名:')
                    i.gender = input('请输入学员性别:')
                    i.tel = input('请输入学员手机号:')
                    print(f'修改该学员信息成功,姓名{i.name},性别{i.gender}, 手机号{i.tel}')
                    break
            else:
                print('查无此人!')
    Copier après la connexion
3.4.5 Interroger les informations sur les étudiants

  • 需求:用户输入目标学员姓名,如果学员存在则打印该学员信息
  • 步骤
    • 用户输入目标学员姓名
    • 遍历学员数据列表,如果用户输入的学员姓名存在则打印学员信息,否则提示该学员不存在。
  • 代码
    # 2.5 查询学员信息
    def search_student(self):
        # 1. 用户输入目标学员姓名
        search_name = input('请输入要查询的学员的姓名:')

        # 2. 如果用户输入的目标学员存在,则打印学员信息,否则提示学员不存在
        for i in self.student_list:
            if i.name == search_name:
                print(f'姓名{i.name},性别{i.gender}, 手机号{i.tel}')
                break
        else:
            print('查无此人!')
Copier après la connexion

3.4.6 显示所有学员信息

  • 打印所有学员信息
  • 步骤
    • 遍历学员数据列表,打印所有学员信息
  • 代码
    # 2.6 显示所有学员信息
    def show_student(self):
        print('姓名\t性别\t手机号')
        for i in self.student_list:
            print(f'{i.name}\t{i.gender}\t{i.tel}')
Copier après la connexion

3.4.7 保存学员信息

  • 需求:将修改后的学员数据保存到存储数据的文件。
  • 步骤
    • 打开文件
    • 文件写入数据
    • 关闭文件

思考

  1. 文件写入的数据是学员对象的内存地址吗?
  2. 文件内数据要求的数据类型是什么?
  • 拓展__dict__
class A(object):
    a = 0

    def __init__(self):
        self.b = 1aa = A()# 返回类内部所有属性和方法对应的字典print(A.__dict__)# 返回实例属性和值组成的字典print(aa.__dict__)
Copier après la connexion

在Python中

  • 代码
    # 2.7 保存学员信息
    def save_student(self):
        # 1. 打开文件
        f = open('student.data', 'w')

        # 2. 文件写入学员数据
        # 注意1:文件写入的数据不能是学员对象的内存地址,需要把学员数据转换成列表字典数据再做存储
        new_list = [i.__dict__ for i in self.student_list]
        # [{'name': 'aa', 'gender': 'nv', 'tel': '111'}]
        print(new_list)

        # 注意2:文件内数据要求为字符串类型,故需要先转换数据类型为字符串才能文件写入数据
        f.write(str(new_list))

        # 3. 关闭文件
        f.close()
Copier après la connexion

3.4.8 加载学员信息

  • 需求:每次进入系统后,修改的数据是文件里面的数据

  • 步骤

    • 尝试以"r"模式打开学员数据文件,如果文件不存在则以"w"模式打开文件
    • 如果文件存在则读取数据并存储数据
      • 读取数据
      • 转换数据类型为列表并转换列表内的字典为对象
      • 存储学员数据到学员列表
    • 关闭文件
  • 代码

    # 2.8 加载学员信息
    def load_student(self):
        # 尝试以"r"模式打开数据文件,文件不存在则提示用户;文件存在(没有异常)则读取数据
        try:
            f = open('student.data', 'r')
        except:
            f = open('student.data', 'w')
        else:
            # 1. 读取数据
            data = f.read()

            # 2. 文件中读取的数据都是字符串且字符串内部为字典数据,故需要转换数据类型再转换字典为对象后存储到学员列表
            new_list = eval(data)
            self.student_list = [Student(i['name'], i['gender'], i['tel']) for i in new_list]
        finally:
            # 3. 关闭文件
            f.close()
Copier après la connexion

四. 总结

  • 函数
    • 定义和调用
    • 参数的使用
  • 面向对象
    • 定义类
    • 创建对象
    • 定义和调用实例属性
    • 定义和调用实例方法
  • 数据类型
    • 列表
      • 增加删除数据
      • 列表推导式
    • 字典
    • 字符串
  • 文件操作
    • 打开文件
    • 读取或写入
    • 关闭文件

相关免费学习推荐:python教程(视频)

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:csdn.net
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal