[python]面向对象示例:学生管理系统

python面向对象
python基础知识整理

主要界面

建议跟着框架自行完成功能需求,最下面有完整带注释版本,学生信息会存到当前目录下data.txt文本中,没有则会自行创建

涉及到的知识点

  • 面向对象
  • 列表, 字典
  • for, if, input…
  • 文件操作
  • 需求分析

    开始 -> 循环调用主程序 ->不同的功能->退出保存

    1.基本框架搭建

    student.py 学生类

    class Student:
        def __init__(self, name, gender, age, mobile, des):
            '''
            初始化学生属性信息
            :param name:
            :param gender:
            :param age:
            :param mobile:
            :param des: 描述信息
            '''
            self.name = name
            self.gender = gender
            self.age = age
            self.mobile = mobilec
            self.des = des
    
        def __str__(self):
            return f'Student: 姓名: {self.name},性别: {self.gender},年龄: {self.age},手机号: {self.mobile},描述信息: {self.des}'
    

    student_cms 类创建

    from Student import Student
    
    
    class cms:
        def __init__(self):
            # 定义空间用来临时存储学生数据
            self.students = []
        #show_info 通过静态方法实现
    	@@staticmethod
        def show_info(self):
            # 打印基本提示信息
            pass
    
        def add_student(self):
            # 往students列表中添加新学生
            pass
    
        def del_student(self):
            # 删除students列表中指定name的学生
            pass
    
        def update_student(self):
            # 在students列表中找到指定name的学生并修改其属性
            pass
    
        def get_student_info(self):
            # 在students列表中找到指定name的学生并返回其信息
            pass
    
        def get_students_info(self):
            # 列出students列表中所有学生的基本信息
            pass
    
        def save_info(self):
            # 持久化students列表中的学生数据到本地
            pass
        
        def load_info(self):
            # 从本地读取学生数据并重新加载到students列表中
            pass
        
        def run(self):
            # 主函数,循环执行功能
            pass
      
    

    2.功能实现

    1.show_info()

        def show_info():
            '''
            显示操作界面
            :return:
            '''
            print('-' * 30)
            print('\t学生信息管理系统')
            print('\t1. 添加学生信息')
            print('\t2. 更新学生信息')
            print('\t3. 删除学生信息')
            print('\t4. 查询学生信息')
            print('\t5. 显示所有学员信息')
            print('\t6. 保存信息')
            print('\t0. 退出系统')
            print('-' * 30)
    

    2.add_student()

        def add_student(self):
            '''
            添加学生信息
            :return:
            '''
            print('-' * 30)
            name = input('请输入姓名: ')
            gender = input('请输入性别: ')
            age = int(input('请输入年龄: '))
            mobile = input('请输入手机号: ')
            des = input('请输入描述信息: ')
            s = Student(name, gender, age, mobile, des)
            self.students.append(s)
            print(f'添加学生 {name} 信息成功')
    

    3.update_student()

        def update_student(self):
            '''
            更新学生信息
            :return:
            '''
            n = input('请输入你要修改学生的姓名')
            if not self.students:
                print('没有找到该学生!')
                return
            for s in self.students:
                if s.name == n:
                    print('-' * 30)
                    name = input('请输入姓名: ')
                    gender = input('请输入性别: ')
                    age = int(input('请输入年龄: '))
                    mobile = input('请输入手机号: ')
                    des = input('请输入描述信息: ')
                    s.name = name
                    s.gender = gender
                    s.age = age
                    s.mobile = mobile
                    s.des = des
                    print(f'修改学生 {n} 信息成功')
                    return
            print('没有找到该学生!')
    

    4.delete_Student()

     def delete_student(self):
            '''
            删除学生信息
            :return:
            '''
            n = input('请输入要删除学生的名字: ')
            if not self.students:
                print('没有找到该学生!')
                return
            for s in self.students:
                if s.name == n:
                    self.students.remove(s)
                    print(f'删除学生 {n} 信息成功')
                    return
            print('没有找到该学生!')
    

    5.get_Student_info()

        def get_student_info(self):
            '''
            查询单个学生信息
            :return:
            '''
            n = input('请输入你要查询信息的学生名字')
            if not self.students:
                print('没有找到该学生!')
                return
            flag = False
            for s in self.students:
                if s.name == n:
                    print('-' * 30)
                    print(s)
                    flag = True
            if not flag:
                print('-' * 30)
                print('没有找到该学生!')
    

    6.get_students_info

        def get_students_info(self):
            '''
            查询所有学生信息
            :return:
            '''
            if not self.students:
                print('当前没有任何学生信息!')
                return
            for i in self.students:
                print(i)
    

    7 save_info():

     def save_info(self):
            w = open('data.txt', 'w')
            for s in self.students:
                # w.write(f'{s.name},{s.gender},{s.age},{s.mobile},{s.des}\n')
                data = s.__dict__
                w.write(str(data) + '\n')  # 转为json字符串
            w.close()
            print('信息已保存!')
    

    8.load_info()

     def load_info(self):
            if not os.path.isfile('data.txt'):
                n = open('data.txt', 'w')
                n.close()
            r = open('data.txt', 'r')
            for line in r:
                line = eval(line)
                name, gender, age, mobile, des = line['name'], line['gender'], line['age'], line['mobile'], line['des']
                s = Student(name, gender, int(age), mobile, des)
                self.students.append(s)
            print('信息已读取')
            r.close()
    

    9.run()

     def run(self):
            '''
            主函数
            :return:
            '''
            self.load_info()  # 读取数据
            while True:
                time.sleep(1)
                self.show_info()
                choice = input('请选择操作(0-6): ')
                if choice == '0':
                    n = input('你确定要退出吗,y确定 : ')
                    if n.lower() == 'y':
                        print('已退出系统!')
                        break
                elif choice == '1':
                    self.add_student()
                elif choice == '2':
                    self.update_student()
                elif choice == '3':
                    self.delete_student()
                elif choice == '4':
                    self.get_student_info()
                elif choice == '5':
                    self.get_students_info()
                elif choice == '6':
                    self.save_info()
                else:
                    print('输入有误,请重新输入!')
    

    完整带注释版本

    import os
    import time
     
    from Student import Student
     
    # 学生信息管理系统类
    class StudentCMS:
       def __init__(self):
           # 初始化一个空的学生列表
           self.students = []
     
       @staticmethod
       def show_info():
           '''
           显示操作界面
           :return:
           '''
           # 打印系统界面信息
           print('-' * 30)
           print('\t学生信息管理系统')
           print('\t1. 添加学生信息')
           print('\t2. 更新学生信息')
           print('\t3. 删除学生信息')
           print('\t4. 查询学生信息')
           print('\t5. 显示所有学员信息')
           print('\t6. 保存信息')
           print('\t0. 退出系统')
           print('-' * 30)
     
       def add_student(self):
           '''
           添加学生信息
           :return:
           '''
           # 打印添加学生信息的提示
           print('-' * 30)
           # 获取用户输入的学生信息
           name = input('请输入姓名: ')
           gender = input('请输入性别: ')
           age = int(input('请输入年龄: '))
           mobile = input('请输入手机号: ')
           des = input('请输入描述信息: ')
           # 创建学生对象并添加到学生列表中
           s = Student(name, gender, age, mobile, des)
           self.students.append(s)
           # 提示用户添加成功
           print(f'添加学生 {name} 信息成功')
     
       def update_student(self):
           '''
           更新学生信息
           :return:
           '''
           # 获取用户输入的要更新的学生姓名
           n = input('请输入你要修改学生的姓名')
           # 如果学生列表为空,提示没有找到学生并返回
           if not self.students:
               print('没有找到该学生!')
               return
           # 遍历学生列表,找到要更新的学生
           for s in self.students:
               if s.name == n:
                   # 打印更新学生信息的提示
                   print('-' * 30)
                   # 获取用户输入的更新后的学生信息
                   name = input('请输入姓名: ')
                   gender = input('请输入性别: ')
                   age = int(input('请输入年龄: '))
                   mobile = input('请输入手机号: ')
                   des = input('请输入描述信息: ')
                   # 更新学生对象的属性
                   s.name = name
                   s.gender = gender
                   s.age = age
                   s.mobile = mobile
                   s.des = des
                   # 提示用户更新成功
                   print(f'修改学生 {n} 信息成功')
                   return
           # 如果没有找到学生,提示没有找到
           print('没有找到该学生!')
     
       def delete_student(self):
           '''
           删除学生信息
           :return:
           '''
           # 获取用户输入的要删除的学生姓名
           n = input('请输入要删除学生的名字: ')
           # 如果学生列表为空,提示没有找到学生并返回
           if not self.students:
               print('没有找到该学生!')
               return
           # 遍历学生列表,找到要删除的学生
           for s in self.students:
               if s.name == n:
                   # 从学生列表中删除该学生
                   self.students.remove(s)
                   # 提示用户删除成功
                   print(f'删除学生 {n} 信息成功')
                   return
           # 如果没有找到学生,提示没有找到
           print('没有找到该学生!')
     
       def get_student_info(self):
           '''
           查询单个学生信息
           :return:
           '''
           # 获取用户输入的要查询的学生姓名
           n = input('请输入你要查询信息的学生名字')
           # 如果学生列表为空,提示没有找到学生并返回
           if not self.students:
               print('没有找到该学生!')
               return
           flag = False
           # 遍历学生列表,找到要查询的学生
           for s in self.students:
               if s.name == n:
                   # 打印查询到的学生信息
                   print('-' * 30)
                   print(s)
                   flag = True
           # 如果没有找到学生,提示没有找到
           if not flag:
               print('-' * 30)
               print('没有找到该学生!')
     
       def get_students_info(self):
           '''
           查询所有学生信息
           :return:
           '''
           # 如果学生列表为空,提示当前没有学生信息并返回
           if not self.students:
               print('当前没有任何学生信息!')
               return
           # 遍历学生列表,打印所有学生信息
           for i in self.students:
               print(i)
     
       def save_info(self):
           # 打开
          w = open('data.txt', 'w')
          # 遍历学生列表,将每个学生的信息写入文件
          for s in self.students:
              # 将学生对象转换为字典,然后转换为字符串写入文件
              data = s.__dict__
              w.write(str(data) + '\n')
          w.close()
          # 提示用户保存成功
          print('信息已保存!')
     
      def load_info(self):
          # 判断文件是否存在,如果不存在则创建一个空文件
          if not os.path.isfile('data.txt'):
              n = open('data.txt', 'w')
              n.close()
          # 打开文件,读取学生信息
          r = open('data.txt', 'r')
          for line in r:
              # 将字符串转换为字典,然后创建学生对象并添加到学生列表中
              line = eval(line)
              name, gender, age, mobile, des = line['name'], line['gender'], line['age'], line['mobile'], line['des']
              s = Student(name, gender, int(age), mobile, des)
              self.students.append(s)
          # 提示用户读取成功
          print('信息已读取')
          r.close()
     
      def run(self):
          '''
          主函数
          :return:
          '''
          # 读取学生信息
          self.load_info()
          while True:
              # 等待用户输入操作
              time.sleep(1)
              self.show_info()
              choice = input('请选择操作(0-6): ')
              if choice == '0':
                  n = input('你确定要退出吗,y确定 : ')
                  if n.lower() == 'y':
                      print('已退出系统!')
                      break
              elif choice == '1':
                  self.add_student()
              elif choice == '2':
                  self.update_student()
              elif choice == '3':
                  self.delete_student()
              elif choice == '4':
                  self.get_student_info()
              elif choice == '5':
                  self.get_students_info()
              elif choice == '6':
                  self.save_info()
              else:
                  print('输入有误,请重新输入!')
     
    if __name__ == '__main__':
       cms = StudentCMS()
       cms.run()
    

    作者:丕羽

    物联沃分享整理
    物联沃-IOTWORD物联网 » [python]面向对象示例:学生管理系统

    发表回复