学员信息管理系统(用文本文件存储的方式来对学员信息进行一个增删改查)

学员信息管理系统2.0

首先,我们在这里来介绍一下python的文件操作

  • 文件的基本操作(打卡,读写,关闭)

文件操作

首先我们需要了解一下几个模式:(非常重要)

模式描述
r以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
rb以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。一般用于非文本文件如图片等。
r+打开一个文件用于读写。文件指针将会放在文件的开头。
rb+以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。一般用于非文本文件如图片等。
w打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。
w+打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb+以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。
a打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
ab以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
a+打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
ab+以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。

1.打开文件

在python中,使用open函数可以打开一个已经存在的文件,或者创建一个新文件,使用方法如下:

open(name,mode)
  • name:是要打开目标文件名的字符串
  • mode:设置打开文件的模式(读,写,追加等)

2.文件的写入操作

w–写入:案例如下:

# 在这里我们是没有创建文件的
file_name = open("诗歌.txt", 'w',encoding="utf-8")
file_name.write("将敬酒,杯莫停")
file_name.close()

结果如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HT59pEpZ-1686656510789)(C:\Users\管勤\Desktop\QQ截图20230612200241.png)]

注意:写入后光标是在文件的前方。

3.文件的追加写入

a – 追加写入:案例如下:

file_name = open("诗歌.txt", 'a',encoding="utf-8")
file_name.write("与君歌一曲")
file_name.close()

会在后面紧接着写入”与君歌一曲”

注意:追加写入后光标也是在文件的开头。

4.文件的读取操作

  • read(num)

num表示要从文件中读取的数据长度,默认是全部读写


# 在这里我们是没有创建文件的
file_name = open("诗歌.txt", 'r',encoding="utf-8")
# 读取信息
content = file_name.read()
# 将信息打印到控制台
print(content)
file_name.close()
  • readlines()和readline()

    readline:是一行一行的读,每次就读取一行。

    readlines:是一次性将所有的数据都读过来,而且返回的是一个列表,其中每一行的数据为一个元素。

在掌握以上知识后,我们就可以开始进行以文本文件存储的方式来写一个学员信息管理系统啦

学员信息管理系统的流程图如下:

我们具体来实现的功能有增,删,改,查。此外,我们使用文本文件存储的方式来存储学员信息,流程图如下:

a=1
a=2
a=3
a=4
a=5
开始
进入学员信息管理系统
输入操作指令
添加学员信息
删除学员信息
查找学员信息
修改学员信息
退出学员管理系统

代码如下:


class Student_manger(object):
    def __init__(self):
        self.student_list = {}

    def add_student_info(self):
        self.student_list["学号"] = input("请输入学生学号:")
        self.student_list["姓名"] = input("请输入学生姓名:")
        self.student_list["年龄"] = input("请输入学生年龄:")
        self.student_list["性别"] = input("请输入学生性别:")
        self.student_list["爱好"] = input("请输入学生爱好:")
        with open("./学员信息.txt", 'a', encoding="utf-8") as file:
            file.write(str(self.student_list))
            file.write("\n")
        print("学员信息添加成功!")

    def del_student_info(self):
        with open("./学员信息.txt", "r", encoding="utf-8") as f:
            student_list = f.readlines()
            student_ID = input("请输入您需要删除的学员的ID:")
            for data in student_list:
                if student_ID == eval(data)["学号"]:
                    student_list.remove(data)

            with open("./学员信息.txt", "w", encoding="utf-8") as file_path:
                file_path.write("".join(student_list))
        print("删除学员信息成功!")

    def find_student_info(self):
        # 定义一个变量来设置该学员是否在系统中
        flag = 1
        with open("./学员信息.txt", "r", encoding="utf-8") as f:
            student_list = f.readlines()
            student_ID = input("请输入您需要查找的学员的ID:")
            for data in student_list:
                if student_ID == eval(data)["学号"]:
                    flag = 1
                    i = eval(data)
                    for value in i.values():
                        print(value, end="\t")
                    print("\n")
                else:
                    flag = 0
            if flag == 0:
                print("查找的学员信息不在该系统中,请重新输入!")
            else:
                print("学员信息查找成功!")

    def modif_student_info(self):
        with open("./学员信息.txt", "r", encoding="utf-8") as file:
            student_list = file.readlines()
            new_student_list = []
            student_ID = input("请输入您需要修改的学员ID:")
            for data in student_list:
                if student_ID == eval(data)["学号"]:
                    new_dict = {}
                    new_dict["学号"] = input("请输入新的学生学号:")
                    new_dict["姓名"] = input("请输入新的学生姓名:")
                    new_dict["年龄"] = input("请输入新的学生年龄:")
                    new_dict["性别"] = input("请输入新的学生性别:")
                    new_dict["爱好"] = input("请输入新的学生爱好:")
                    new_student_list.append(str(new_dict) + "\n")

                if student_ID != eval(data)["学号"]:
                    new_student_list.append(str(data))
            #     new_student_list.append(data)
            # print(new_student_list)

            with open("./学员信息.txt", "w", encoding="utf-8") as f:
                f.write("".join(new_student_list))
        print("学员信息修改成功!")

    def run(self):
        while True:
            print("========学员信息管理系统========")
            print("********|1.添加学员信息|********")
            print("********|2.删除学员信息|********")
            print("********|3.查找学员信息|********")
            print("********|4.修改学员信息|********")
            print("********|5.退出管理系统|********")
            f = int(input("请输入您的选择: "))
            if f == 1:
                self.add_student_info()
            elif f == 2:
                self.del_student_info()
            elif f == 3:
                self.find_student_info()
            elif f == 4:
                self.modif_student_info()
            else:
                print("欢迎下次继续使用!")
                break


if __name__ == '__main__':
    resp = Student_manger()
    resp.run()




以上就是一个简单学员信息管理系统,不足之处,欢迎大家指正!!

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大杯奶绿加少冰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值