用 python 实现一个简单的学生管理系统

# -*- coding = utf-8 -*-
# @Time : 2021/10/29 9:08
# @Author : 海绵摆摆嘉心糖
# @File : 03.学生管理系统.py
# @Software : PyCharm

import os

# 定义一个存储学生的列表
stu_list = []
file_name = "student_info"


def show_meun():
    print("1.添加学生")
    print("2.删除学生")
    print("3.修改学生信息")
    print("4.查询单个学生信息")
    print("5.查询所有的学生信息")
    print("6.保存并退出")


def file_read():
    # 全局变量内部使用 需要全局化 之后 stu_list 在函数内部可以修改
    global stu_list
    # 判断这个文件是否存在
    if os.path.exists(file_name):
        # 打开这个文件
        f = open(file_name, "r", encoding="utf-8")
        # 读取文件
        while True:
            # 每次读一行
            stu_info = f.readline()
            # 判断文件中是否有数据
            if stu_info:
                # 将数据转换为字典,追加到 stu_list 中
                stu_list.append(eval(stu_info))
            else:
                break
        f.close()
    else:
        print(f"{file_name}不存在,是否需要创建?")
        while True:
            yn = input("创建请输入:y 不需要请输入 n")
            if yn == "y":
                f = open(file_name, "w")
                f.close()
                print("文件创建成功,请重新启动程序以继续操作")
                break
            elif yn == "n":
                print("再见!!!")
                break
            else:
                continue


def insert_student():
    name = input("请输入学生的姓名:")
    for stu in stu_list:
        if stu['name'] == name:
            print(f"{name}已存在")
            return
    age = input(f"请输入{name}的年龄:")
    sex = input(f"请输入{name}的性别:")
    # 将学生的信息转化为字典保存
    stu_dict = {'name': name, 'age': age, 'sex': sex}
    # 将 stu_dict 追加到 stu_list 中
    stu_list.append(stu_dict)


def remove_student():
    name = input("请输入你所要删除的学生的名字:")
    for stu in stu_list:
        if stu['name'] == name:
            stu_list.remove(stu)
        else:
            print(f"没有{name}这个信息")


def updata_student():
    name = input("请输入你要修改的学生的姓名:")
    for stu in stu_list:
        if stu['name'] == name:
            while True:
                number = int(input("请输入你要修改的内容:\n0.退出\t1.姓名\t2.年龄\t3.性别"))
                if number == 0:
                    break
                elif number == 1:
                    stu['name'] = input("请输入你要修改的名字:")
                elif number == 2:
                    stu['age'] = int(input("请输入你要修改的年龄:"))
                elif number == 3:
                    stu['sex'] = input("请输入你要修改的性别:")
                else:
                    print("你输入的信息有误")
        else:
            print(f"{name}不存在")


def search_student():
    name = input("请输入你要查询的学生的姓名:")
    for stu in stu_list:
        if stu['name'] == name:
            print(f"姓名:\t{stu['name']}\n年龄:\t{stu['age']}\n性别:\t{stu['sex']}")
        else:
            print(f"抱歉!没有{name}")


def show_all_student():
    print("姓名\t年龄\t性别")
    for stu in stu_list:
        print(f"{stu['name']}\t{stu['age']}\t\t{stu['sex']}")
    pass


def save_student():
    f = open(file_name, "w", encoding="utf-8")
    for stu in stu_list:
        f.write(f"{str(stu)}\n")
    f.close()


def load_file():
    pass


def main():
    # 将文件中的学生信息读取出来放入 stu_list 中
    file_read()
    while True:
        # 首页选项函数
        show_meun()
        # 按照提示进行操作
        opt = input("请输入你操作的序号:")
        if opt == "1":
            # 插入学生信息
            insert_student()
        elif opt == "2":
            # 删除学生信息
            remove_student()
        elif opt == "3":
            # 修改学生信息
            updata_student()
        elif opt == "4":
            # 查询单个学生信息
            search_student()
        elif opt == "5":
            # 查询所有学生信息
            show_all_student()
        elif opt == "6":
            # 保存并退出
            save_student()
            break
        else:
            print("你输入的信息有误,请重新输入")
            continue


# 表示只能当前程序执行下面代码
# 当本文件被其他文件执行,则不会执行这里的代码
# 起到保护本文件的作用
if __name__ == '__main__':
    main()

 

上一篇:mongodb查询出某个字段最大值


下一篇:spider RPC更新至2.0.0-RELEASE