python案例7-学生管理系统

这是一个实现了学生信息管理功能的程序,包括查看、录入、修改、查找和删除等操作。用户可以对学生信息进行增删改查,程序通过读写文本文件来存储数据。当尝试录入已存在的学生编号时,系统会提示编号已存在;修改学生信息时,会检查新编号是否已存在;删除学生信息则直接从文件中移除相应记录。
def check_select():
    print(
"""------欢迎进入学生管理系统------
            1.查看
            2.录入
            3.修改
            4.查找
            5.删除
            0.退出 """)


def chack_date():
    r = open("students.txt", "r", encoding="utf-8")
    print("       ------学生信息------")
    for line in r:
        q = line.split(",")
        print("学生编号:%s,名字:%s,年龄:%s,性别:%s" % (q[0], q[1], q[2], q[3]), end="")
    r.close()


def add_date1():
    r = open("students.txt", "r", encoding="utf-8")
    a = open("students.txt", "a", encoding="utf-8")
    print("请输入学生信息")
    id = input("编号:")
    if id in (i.split(",")[0] for i in r.readlines()):
        print("输入的编号存在!!!")
        r.close()
        a.close()
        return 0

    name = input("姓名:")
    age = input("年龄:")
    sex = input("性别:")
    if not all([id, name, age, sex]):
        print("缺失参数!!!")
        return 0
    w = id + "," + name + "," + age + "," + sex + "\n"
    a.write(w)
    a.close()
    r.close()


def change_date1(file, old_str, new_str1, new_str2, new_str3, new_str4):
    data = ""
    with open(file, "r", encoding="utf-8") as f:
        for line in f:
            s = line.split(",")
            if s[0] == old_str:
                line = line.replace(s[0], new_str1)
                line = line.replace(s[1], new_str2)
                line = line.replace(s[2], new_str3)
                line = line.replace(s[3], new_str4)
                line += "\n"
            data += line
    with open(file, "w", encoding="utf-8") as f:
        f.write(data)


def change_date():
    r = open("students.txt", "r", encoding="utf-8")
    a = open("students.txt", "a", encoding="utf-8")
    print("请输入学生信息")
    id = input("编号:")
    id1 = input("编号:")
    if id1 not in (i.split(",")[0] for i in r.readlines()) or id == id1:
        name = input("姓名:")
        age = input("年龄:")
        sex = input("性别:")
        if not all([id, name, age, sex]):
            print("缺失参数!!!")
            return 0
        change_date1("students.txt", id, id1, name, age, sex)
        print("修改成功!!!")
        r.close()
        a.close()
    else:
        print("编号已存在!!!")


def delete(file, old_str):
    data = ""
    with open(file, "r", encoding="utf-8") as f:
        for line in f:
            s = line.split(",")
            if s[0] == old_str:
                continue
            else:
                data += line
    with open(file, "w", encoding="utf-8") as f:
        f.write(data)


def select(i):
    while i not in ["1", "2", "3", "4", "5", "0"]:
        i = input("请选择:")
    if i == "1":
        chack_date()

    elif i == "2":
        add_date1()

    elif i == "3":
        change_date()

    elif i == "4":
        rf = open("students.txt", "r", encoding="utf-8")
        id = input("请输入编号:")
        for i in rf.readlines():
            q = i.split(",")
            if id == q[0]:
                print("学生编号:%s,名字:%s,年龄:%s,性别:%s" % (q[0], q[1], q[2], q[3]), end="")
                break
        else:
            print("输入的编号不存在!!!")

    elif i == "5":
        rf = open("students.txt", "r", encoding="utf-8")
        id = input("编号:")
        for line in rf.readlines():
            line.split(",")
            if id == line[0]:
                delete("students.txt", id)
                print("删除成功!!!")
                rf.close()
                break
        else:
            print("输入的编号不存在!!!")
            rf.close()
    else:
        return 0


def main():
    f = open("students.txt", "a", encoding="utf-8")
    f.close()
    while True:
        check_select()
        s = select(input("请输入选择:"))
        if s == 0:
            print("欢迎下次再来!!!")
            break


if __name__ == '__main__':
    main()

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值