python实现学生管理系统(文件管理)

def print_menue():
    print("----------")
    print("学生管理系统")
    print("1:添加学生")
    print("2:删除学生")
    print("3:修改学生")
    print("4:查询学生")
    print("5:显示所有学生")
    print("6:退出系统")
    print("-----------")


# 列表存储多个学生字典
student_info = []
# 字典存储一个学生信息
student_message = {}


def add_info():
    name = input("输入姓名:")
    tel = input("输入电话:")
    qq = input("输入QQ号:")
    global student_message
    student_message["name"] = name
    student_message["tel"] = tel
    student_message["QQ"] = qq
    global student_info
    # 查重
    for i in student_info:
        # 通过i取出列表中的每个元素
        if i["name"] == name and i["tel"] == tel:
            print("信息重复!")
            return
    # 将信息添加到列表中
    student_info.append(student_message)
    print("添加成功!")


def search_info():
    name = input("输入姓名:")
    flag = 0
    for i in student_info:
        if i["name"] == name:
            print("name:", i["name"])
            print("tel:", i["tel"])
            print("QQ:", i["QQ"])
            flag = 1
        if flag == 0:
            print("未查询到相关信息!")


def del_info():
    name = input("输入待删除人姓名:")
    tel = input("输入待删除人电话号码:")
    # for-else用法
    for i in student_info:
        if i["name"] == name and i["tel"] == tel:
            # remove是按照值删除
            student_info.remove(i)
            break
    # 此处的else和for对应使用
    # for循环使用break退出后就不执行else了
    else:
        print("未查询到对应学员!")


def modifty_info():
    name = input("输入姓名:")
    tel = input("输入电话号码:")
    flag = 0
    for i in student_info:
        # 因为地址一样所以可以牵连列表内数据一起改动。
        if i["name"] == name and i["tel"] == tel:
            name = input("输入修改后的姓名:")
            tel = input("输入修改后的电话号码:")
            i["name"] = name
            i["tel"] = tel
            print("修改成功")
            break
    else:
        print("查无此人!")


def print_all_info():
    for i in student_info:
        print("name  tel  QQ")
        print("%s  %s  %s" % (i["name"], i["tel"], i["QQ"]))


def load_data():
    file_path = open("./student.txt", "r", encoding="utf8")
    data = file_path.read()
    file_path.close()
    if len(data) == 0:
        return
    # eval可以将字符串还原为原始数据类型
    # 相当于去掉前后的“,还原为原始情况
    data = eval(data)
    for i in data:
        student_info.append(i)


def save_data():
    file_path = open("./student.txt", "w", encoding="utf8")
    # 将列表转化为字符串存入.txt文件中。
    data = str(student_info)
    file_path.write(data)
    file_path.close()


def main():
    # 程序入口
    # 从文件中读取数据
    load_data()
    while True:
        print_menue()
        num = int(input("输入需要的功能:"))
        if num == 1:
            add_info()
        elif num == 2:
            del_info()
        elif num == 3:
            modifty_info()
        elif num == 4:
            search_info()
        elif num == 5:
            print_all_info()
        elif num == 6:
            print("再见!")
            break
        else:
            print("输入错误")
        input("~~~~输入回车继续~~~~")
    # 保存数据到文件中
    save_data()


# 程序开始
main()

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值