飞行的猪哼哼

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
import os
# 1:首先显示功能菜单
# 2:接受用户输入
# 3:执行相应的操作
student_list = []
def show_menu():
    print("----------学生管理系统函数版----------")
    print("0:退出系统")
    print("1:增加学生信息")
    print("2:删除学生信息")
    print("3:修改学生的信息")
    print("4:显示学生信息")
    print("5:显示所有学生的信息")

def exit_menu():
    print("欢迎您的下次使用,再见!")
    save_list()
    exit()

def add_menu():
    student_id = input("请输入您的学号:")
    student_len = len(student_list)
    # 如果已经存在则退出
    for i in range(student_len):
        my_dict = student_list[i]
        if my_dict['student_id'] == student_id:
            print("您的信息已经存在,请重新操作")
            return
    name = input("请输入您的姓名:")
    sex = input("请输入您的性别:")
    tel = input("请输入您的电话:")
    student_dict = dict()
    student_dict['student_id'] = student_id
    student_dict['name'] = name
    student_dict['sex'] = sex
    student_dict['tel'] = tel
    print("您输入的信息是:", student_dict)
    student_list.append(student_dict)
    print("当前的列表内容是:", student_list)
    print("恭喜您,您的信息已经被存储")

def del_menu():
    student_id = input("请输入您要删除的学生的学号:")
    # 获取当前列表的长度
    student_len = len(student_list)
    flag = 0
    for i in range(student_len):
        # 取出列表的每一个集合
        my_dict = student_list[i]
        # 如果取出集合的学号和输入的学号相同
        if my_dict['student_id'] == student_id:
            flag = 1
            # 删除当前的列表中的集合
            del student_list[i]
            # 这个地方必须退出,因为删除一个后,长度就会发生了改变,最后一个就不能再进行循环
            print("恭喜您,您的信息已经被删除")
            break
    if flag == 0:
        print("您删除的信息在系统中查询不到,请重新操作")
    print("当前列表的内容:", student_list)


def mod_menu():
    student_id = input("请输入您要修改的学生的学号:")
    # 获取当前列表的长度
    student_len = len(student_list)
    flag = 0
    for i in range(student_len):
        # 取出列表的每一个集合
        my_dict = student_list[i]
        # 如果取出集合的学号和输入的学号相同
        if my_dict['student_id'] == student_id:
            flag = 1
            del student_list[i]
            name = input("请输入您的姓名:")
            sex = input("请输入您的性别:")
            tel = input("请输入您的电话:")
            my_dict['name'] = name
            my_dict['sex'] = sex
            my_dict['tel'] = tel
            student_list.append(my_dict)
            print("恭喜您,您的信息已经被修改")
    if flag == 0:
        print("您要修改的信息在系统中不存在")
    print("当前列表的内容:", student_list)

def show_student():
    student_id = input("请输入您要查询的学生的学号:")
    student_len = len(student_list)
    flag = 0
    for i in range(student_len):
        # 取出列表的每一个集合
        my_dict = student_list[i]
        # 如果取出集合的学号和输入的学号相同

        if my_dict['student_id'] == student_id:
            flag = 1
            print("恭喜您,您的信息已经查询完成")
            print(my_dict)
    if flag == 0:
         print("您要查询的信息,在系统不存在")
    print("当前列表的内容:", student_list)

def show_all_student():
    student_len = len(student_list)
    for i in range(student_len):
        my_dict = student_list[i]
        print(my_dict)
    print("恭喜您,当前学生所有信息已经显示完成")


def your_choose(num):
    if num == 0:
        exit_menu()

    elif num == 1:
       add_menu()

    elif num == 2:
        del_menu()

    elif num == 3:
        mod_menu()
    elif num == 4:
        show_student()
    elif num == 5:
        show_all_student()

def save_list():
    file = open("学生管理系统.txt", 'w', encoding='utf-8')
    # 将列表转化成字符串再进行写入
    my_str = str(student_list)
    file.write(my_str)
    file.close()

def load_list():
    if os.path.exists("学生管理系统.txt"):
        # 打开文件,指定文件的操作模式: r
        file = open("学生管理系统.txt", "r", encoding="utf-8")
        # 读取文件中的数据
        content = file.read()
        # 由于我们从文件中读取的数据是字符串,而全局变量使用的数据列表类型,需要把字符串转列表
        new_list = eval(content)
        print("从文件中获取的历史数据为:", new_list, type(new_list))
        # 1.方式
        # global student_list
        # student_list = new_list
        # 2.方式,把文件中的列表数据扩展到全局变量里面, 这里不需要加上global,因为列表是可变类型
        student_list.extend(new_list)
        # 关闭文件
        file.close()

def run():
    load_list()
    while True:
        show_menu()
        num = int(input("请输入您的操作:"))
        your_choose(num)
run()
posted on 2020-02-28 23:51  飞行的猪哼哼  阅读(54)  评论(0)    收藏  举报