学生管理系统(一)——文本存储

代码说明

  • 此例仅模拟学生信息的保存读取添加功能。
  • 读文件时,用readline()逐行读取。注意调用 strip() 方法去掉末尾的换行符。
  • 写文件时,三个字段间用"&&&"分隔,末尾手动加上换行符。
  • 注意 读/写 文件操作要相互对应,以免出错。
import os

class StudentManager:
    def __init__(self):
        # __init__在创建类对象时调用,下边的”sm = StudentManger()“时会自动调用
        self.__file__ = "a.dat"
        # __data__列表用来存放学生数据
        # 类中的变量名或者方法前面加双下划线表示禁止外部调用。
        # 如:sm.save_data() 可以执行,而sm.__load_data__()会出错。
        self.__data__ = []
        # 程序运行初直接载入文件中的数据
        self.__load_data__()

    def __load_data__(self):
        if not os.path.exists(self.__file__):
            # 若文件不存在
            return
        fp = open(self.__file__, "r")       # 只读方式打开, 参数 "r" 等价于 "rt",,"t" 为默认方式
        while line := fp.readline().strip():
            _name, _sex, _age = line.split("&&&")
            self.__data__.append([_name, _sex, int(_age)])
        fp.close()      # 用完后记得关闭文件,否则下次打开时会出意外

    def save_data(self):
        fp = open(self.__file__, "w")
        for _name, _sex, _age in self.__data__:
            # 姓名、性别、年龄间用 ”&&&“ 分隔。
            fp.write("{}&&&{}&&&{}\n".format(_name, _sex, _age))
        fp.close()

    def append(self, name, sex, age):
        self.__data__.append([name, sex, age])

    def show(self):
        # 显示学生信息
        for name, sex, age in self.__data__:
            print(name, sex, age)


sm = StudentManager()
sm.append("张三", "男", 17)
sm.append("花木兰","女", 16)
sm.show()
sm.save_data()
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容