Python オブジェクト指向バージョンの学生管理システムの導入

coldplay.xixi
リリース: 2021-02-25 10:10:51
転載
2081 人が閲覧しました

Python オブジェクト指向バージョンの学生管理システムの導入

無料学習の推奨事項: Python ビデオ チュートリアル

記事ディレクトリ

  • Python オブジェクト指向版学生管理システム
  • 目的
  • 1. システム要件
  • 2. プログラム ファイルの準備
    • 2.1 解析
    • 2.2 プログラム ファイルの作成
  • 3. プログラムの作成
    • 3.1student.py
      • ##3.1.2 プログラムコード
    • 3.2 managerSystem.py
    • #3.2.1 クラスの定義
        ##3.2.2 管理システム フレームワーク
      • ##3.3 main.py
      3.4 システムの定義関数 function
    • 3.4.1 関数の追加
    • 3.4.2 生徒の削除
      • 3.4.3 生徒情報の変更
      • 3.4. 5 学生情報のクエリ
      • 3.4.6 すべての学生情報の表示
      • 3.4.7 学生情報の保存
      • 3.4.8 学生情報の読み込み
      4. まとめ
  • 目的

オブジェクト内のクラスの内部関数の解析方法を理解する。指向性のある開発プロセス

一般的なシステム機能を理解する
  • Add
  • Delete
    • Modify
    • Query
    1. システム要件

# オブジェクト指向プログラミングのアイデアを使用して、次のように学生管理システムの開発を完了します。システム要件: 学生データはファイル中#に保存されます。システム機能: 学生の追加、学生の削除、学生情報の変更、学生情報のクエリ、すべての学生情報の表示、学生情報の保存とシステムの終了など。

#2. プログラムファイルの準備

  • #2.1 解析
  • #文字解析

学生管理システム

    作業上の注意事項
    • コードのメンテナンスを容易にするために、通常、ロールごとに 1 つのロールがあります プログラム ファイル;
    • プロジェクトにはメイン プログラム エントリが必要です (通常は
    • main.py

#) #2.2 プログラム ファイルの作成

  1. プロジェクト ディレクトリを作成します。例:
  2. StudentManagerSystem
  3. プログラム ファイルは次のとおりです:
#プログラムエントリーファイル:main.py

学生ファイル:student.py管理システムファイル:managerSystem.py

3. プログラムの作成

    3.1 学生。py
  • 要件:
  • 学生情報には、名前、性別、携帯電話番号が含まれます。

Add__str__魔法のメソッド、便利 生徒オブジェクト情報の表示

3.1.2 プログラム コード

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}'
ログイン後にコピー
    3.2 managerSystem.py
  • 要件:##データが保存される場所: ファイル (student.data)
ファイル データのロード

データを変更してファイルに保存します

データ ストレージの形式: リスト ストレージ学生オブジェクト

システム関数

学生を追加
  • 生徒の削除
    • 生徒の変更
    • 生徒情報のクエリ
    すべての生徒情報の表示
  • 生徒情報の保存
  • システムを終了
    • ##3.2.1 定義クラス
    class StudentManager(object):
        def __init__(self):
            # 存储数据所用的列表
            self.student_list = []
    ログイン後にコピー
  • 3.2.2 管理システムのフレームワーク
  • 要件: システム関数は周期的に使用され、ユーザーは異なる関数番号を入力して異なる機能を実行します。
  • 手順
プログラムエントリ関数の定義

データロード関数メニューの表示

ユーザー入力関数番号 ユーザーが入力した機能番号に従ってさまざまな機能を実行します

    システム機能機能を定義し、生徒の追加、削除などを行います。
      • 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
        ログイン後にコピー
      • 3.3 main.py
      # 1. 导入managerSystem模块from managerSystem import *# 2. 启动学员管理系统if __name__ == '__main__':
          student_manager = StudentManager()
      
          student_manager.run()
      ログイン後にコピー
    • 3.4 システム関数の定義 function
    3.4.1 関数の追加
  • 要件: ユーザーは、学生の名前、性別、携帯電話番号を入力して、学生をシステムに追加します。

    #手順

    ユーザー入力の名前、性別、携帯電話番号

    学生オブジェクトの作成

    学生を作成するオブジェクト リストに追加

    • コード

    • # 添加学员函数内部需要创建学员对象,故先导入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)
      ログイン後にコピー

      3.4.2 生徒の削除
      • 要件: ユーザーは対象の生徒の名前を入力し、生徒が存在する場合は生徒を削除します。
      • 手順
      ユーザーは対象の生徒の名前を入力します
    • 生徒データ リストを調べます。ユーザーが入力した生徒の名前が存在する場合は削除します。存在しない場合は、学生が存在しないことを示すプロンプトが表示されます。

    コード

        # 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)
    ログイン後にコピー

    3.4.3 学生情報の変更
    • 要件: ユーザー入力対象学生名前、学生が存在する場合は学生情報を変更します。
      • 手順
      • ユーザーは対象の生徒の名前を入力します。
      生徒データ リストを調べ、ユーザーが入力した生徒の名前が存在する場合は、生徒の名前を変更します。 、性別、携帯電話番号のデータが含まれていない場合は、学生が存在しないことを示すメッセージが表示されます。
    コード

        # 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('查无此人!')
    ログイン後にコピー

    3.4.5 学生情報のクエリ
      • 需求:用户输入目标学员姓名,如果学员存在则打印该学员信息
      • 步骤
        • 用户输入目标学员姓名
        • 遍历学员数据列表,如果用户输入的学员姓名存在则打印学员信息,否则提示该学员不存在。
      • 代码
          # 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('查无此人!')
      ログイン後にコピー

      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}')
      ログイン後にコピー

      3.4.7 保存学员信息

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

      思考

      1. 文件写入的数据是学员对象的内存地址吗?
      2. 文件内数据要求的数据类型是什么?
      • 拓展__dict__
      class A(object):
          a = 0
      
          def __init__(self):
              self.b = 1aa = A()# 返回类内部所有属性和方法对应的字典print(A.__dict__)# 返回实例属性和值组成的字典print(aa.__dict__)
      ログイン後にコピー

      在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()
      ログイン後にコピー

      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()
      ログイン後にコピー

      四. 总结

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

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

    以上がPython オブジェクト指向バージョンの学生管理システムの導入の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

    ソース:csdn.net
    このウェブサイトの声明
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
    最新の問題
    人気のチュートリアル
    詳細>
    最新のダウンロード
    詳細>
    ウェブエフェクト
    公式サイト
    サイト素材
    フロントエンドテンプレート