python面向对象版学员管理系统

1. 系统需求

  • 对学员信息存储
  • 实现对学员信息的增、删、改、查、存储、显示及退出系统

2. 程序文件准备

2.1 分析对象

  • 学员
  • 管理系统

工作注意事项

  1. 一个对象一个文件,便于维护
  2. 程序入口一般定为:main.py

2.2 创建程序文件

  • 文件夹名称:StudentManagerSystem
  • 程序文件:
    • 入口:main.py
    • 学员:student.py
    • 管理系统:managerSystem.py

3. 书写程序

3.1 学员

需求:

  1. 初始化属性:姓名、性别、手机号
  2. 通过__str__()返回学员信息
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 管理系统

需求

  1. 存储数据为文件(student.data)
  2. 数据存储方式:列表存储对象
  3. 系统功能
    1. 增加学员
    2. 删除学员
    3. 修改学员
    4. 显示所有学员信息
    5. 查询学员
    6. 保存学员
    7. 退出系统
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. 加载学员信息

        while True:
            # 2. 显示菜单
            self.show_menu()

            # 3. 用户输入功能序号
            num = int(input('请输入功能序号:'))

            # 4. 根据序号执行相应功能

            if num == 1:
                self.add_stu()
            elif num == 2:
                self.del_stu()
            elif num == 3:
                self.update_stu()
            elif num == 4:
                self.ser_stu()
            elif num == 5:
                self.show_stu()
            elif num == 6:
                self.save_stu()
            elif num == 7:
                break


# 二:系统功能函数

    # 显示菜单
    @staticmethod
    def show_menu():
        print('欢迎登陆学员管理系统!!!')
        print('1. 增加学员')
        print('2. 删除学员')
        print('3. 修改学员')
        print('4. 查询学员')
        print('5. 显示所有学员')
        print('6. 存储学员')
        print('7. 退出系统')

    # 1. 增加学员
    def add_stu(self):
        print('增加学员')

    # 2. 删除学员
    def del_stu(self):
        print('删除学员')

    # 3. 修改学员
    def update_stu(self):
        print('修改学员')

    # 4. 查询学员
    def ser_stu(self):
        print('查询学员')

    # 5. 显示所有学员
    def show_stu(self):
        print('显示所有学员')

    # 6. 存储学员
    def save_stu(self):
        print('存储学员')

3.2.3 函数入口
# 导入managerSystem模块
from managerSystem import *

# 保证只有直接通过main模块进入函数才能生效
if __name__ == '__main__':

    stu_manager = StudentManager()
    stu_manager.run()

4 系统函数功能

4.1 添加学员

  • 需求:输入学员的姓名、性别、手机号
  • 实现步骤:
    • 输入信息
    • 创建学员对象
    • 将学员对象添加到学员列表
  • 代码
# 1. 增加学员
    def add_stu(self):
        name = input('输入姓名:')
        gender = input('输入性别:')
        tel = input('输入手机号:')
        stu =Student(name, gender, tel)
        self.student_list.append(stu)

4.2 删除学员

# 2. 删除学员
    def del_stu(self):
        self.name = input('请输入姓名:')
        for i in self.student_list:
            if i.name == self.name:
                self.student_list.remove(i)
                print('删除成功!')
                break
        else:
            print('不存在%s' % self.name)

4.3 修改学员

    # 3. 修改学员
    def update_stu(self):
        self.name = input('请输入姓名:')
        for i in self.student_list:
            if i.name == self.name:
                self.gender = input('请输入需要修改性别:')
                self.tel = input('请输入电话号码;')
                print(f'姓名:{i.name},性别:{i.gender},电话号码为:{i.tel} 已修改为:')
                i.gender = self.gender
                i.tel = self.tel
                print(f'姓名:{i.name},性别:{i.gender},电话号码为:{i.tel}')
                break
        else:
            print('不存在%s' % self.name)

4.4 查询学员

    # 4. 查询学员
    def ser_stu(self):
        self.name = input('请输入姓名:')
        for i in self.student_list:
            if i.name == self.name:
                print(f'姓名:{i.name},性别:{i.gender},电话号码为:{i.tel}')
                break
        else:
            print('不存在学员%s' % self.name)

4.5 显示所有学员

 # 5. 显示所有学员
    def show_stu(self):
        if len(self.student_list) == 0:
            print('暂无学员信息')
        else:
            print('姓名\t性别\t电话号')
            for i in self.student_list:
                print(f'{i.name}\t{i.gender}\t{i.tel}')

4.6 保存学员数据

4.6.1 __dict__方法
  • 将对象的实例属性生成字典
  • 将类的属性生成字典
  • 代码
class A(object):
    b = 2
    def __init__(self):
        self.a = 1

aa = A()   # 生成对象
print(aa.__dict__)  # 对象的实例属性 {'a': 1}
print(A.__dict__)   # 类的属性 {'__module__': '__main__', ..., 'b': 2} 
4.6.2 保存到文件中
  • 将对象通过__dict__生成字典并且通过列表生成式将所有学员信息生成列表
  • 对文件保存时注意将列表转化为str存储
  • 代码
# 6. 存储学员
    def save_stu(self):
        # 打开文件
        f = open('student.data','w')

        # 生成列表并存入
        stu_list = [i.__dict__ for i in self.student_list]  # i.__dict__ 对象转化为字典,不能直接存入对象 i
        f.write(str(stu_list))    # 注意需要转化为str型

        # 关闭文件
        f.close()

4.7 加载文件

  • 打开文件:如果存在则r,否则不存在则 w
  • 读取:如果文件存在则读取文件:字符串转化为列表,列表再转化为对象,添加到对象列表
  • 关闭
  • 代码解释
    # 7. 加载学员信息
    def load_stu(self):
        # 打开文件:如果存在则r,否则不存在则 w
        try:
            f = open('student.data','r')
        except:
            f = open('student.data','w')
        # 如果文件存在则读取文件:字符串转化为列表,列表再转化为对象,添加到对象列表
        else:
            stu = eval(f.read())
            self.student_list = [Student(i['name'], i['gender'], i['tel']) for i in stu]
        # 关闭文件
        finally:
            f.close()

5. 总结

  • 函数
    • 定义和调用
    • 参数的使用
  • 面向对象
    • 定义类
    • 创建对象
    • 定义和调用实例属性
    • 定义和调用实例方法
  • 数据类型
    • 列表
      • 增加删除数据
      • 列表推导式
    • 字典
    • 字符串
  • 文件操作
    • 打开文件
    • 读取或写入
      • 关闭文件
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值