案例:pychon学生信息管理系统


import json
"""
学生信息管理系统
功能:查看学生数据列表,能修改学生数据,能删除数据,能新增数据,能退出管理系
"""

# 学生信息的存储列表
student_list = []

"""先到文件中读取数据保存变量student_list中"""
import os
if os.path.isfile("student.txt"):
    # 注意:第一次使用,手动创建这个文件,以后可以通过 os模块提供的操作,就可以判断该文件是否存在
    with open("student.txt", "r") as f:
        content = f.read()
        if content:
            student_list = json.loads(content)
else:
    # 如果文件不存在,则使用w模式创建文件
    with open("student.txt", "w") as f:
        pass

while True:
    """1. 显示菜单"""
    print("* " * 15)
    print("*  欢迎来到XX学生信息管理系统。")
    print("*")
    print("*  1. 添加学生信息")
    print("*  2. 查看学生信息")
    print("*  3. 修改学生信息")
    print("*  4. 删除学生信息")
    print("*  5. 退出信息系统")
    print("* " * 15)
    print()
    action = int(input("请输入要进行的操作序号(1·5):"))
    if action == 1:
        """添加"""
        print("请输入要录入系统的学生信息...")
        name   = input("姓名:")
        age    = input("年龄:")
        sex    = input("性别:")
        mobile = input("联系电话:")
        # 把学生信息往student_list进行追加
        student_list.append({
            "name": name,
            "age": age,
            "sex": sex,
            "mobile": mobile,
        })
        print(f"student_list={student_list}")
        # 添加学生数据以后,自动保存一份到文件中
        if len(student_list) > 0:
            content = json.dumps(student_list) # 把列表转换成字符串
            with open("student.txt", "w") as file:
                file.write(content)

    elif action == 2:
        """查看"""
        for index, item in enumerate(student_list):
            print(f"序号: {index+1}\t\t姓名: {item['name']}\t\t年龄: {item['age']}\t\t性别: {item['sex']}\t\t联系电话: {item['mobile']}")
            print("- " * 15)

    elif action == 3:
        """修改"""
        for index, item in enumerate(student_list):
            print(f"序号: {index+1}\t\t姓名: {item['name']}\t\t年龄: {item['age']}\t\t性别: {item['sex']}\t\t联系电话: {item['mobile']}")
            print("- " * 15)
        num = int(input("请输入要更新的学生信息序号(如果部分信息不修改,可以不填写留空):"))
        name   = input(f"姓名({student_list[num-1]['name']}):")
        age    = input(f"年龄({student_list[num-1]['age']}):")
        sex    = input(f"性别({student_list[num-1]['sex']}):")
        mobile = input(f"联系电话({student_list[num-1]['mobile']}):")
        # 更新数据
        data = student_list[num-1] # data与student_list[num-1]是引用关系,所以data被改动,就表示student_list[num-1]被改动了
        if name:
            data["name"] = name
        if age:
            data["age"] = age
        if sex:
            data["sex"] = sex
        if mobile:
            data["mobile"] = mobile

        if len(student_list) > 0:
            content = json.dumps(student_list) # 把列表转换成字符串
            with open("student.txt", "w") as file:
                file.write(content)

    elif action == 4:
        for index, item in enumerate(student_list):
            print(f"序号: {index+1}\t\t姓名: {item['name']}\t\t年龄: {item['age']}\t\t性别: {item['sex']}\t\t联系电话: {item['mobile']}")
            print("- " * 15)
        text = input("请输入要删除的学生信息序号(如果要一次性删除多个,序号之间使用空格隔开):")
        if text:
            num_list = text.split(" ")

            # 删除成员
            num_list.sort(reverse=True)
            for num in num_list:
                num = int(num)
                student_list.pop(num - 1)

            # 删除操作会导致数据减少,最少的情况是没有数据,所以这里不能判断student_list
            content = json.dumps(student_list) # 把列表转换成字符串
            with open("student.txt", "w") as file:
                file.write(content)

    else:
        print("成功退出系统中....")
        break
    print()
    print()

相关