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

发布时间 2023-09-16 23:05:48作者: 七落安歌

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

1、需求分析:包含哪些学生信息
学号、姓名、班级、性别,联系电话
2、学生的信息用什么保存起来(列表、字典)
使用列表 + 字典 吗 还是 字典 + 列表
使用列表 + 字典形式吧,列表的每一个索引值代表一个学生
3、为什么要使用文件保存数据?
因为变量不能持久保存数据,每次运行结束之后,变量中保存的数据都会随之消失
# 定义一个menu菜单函数,专门用于打印学生管理系统的菜单
def menu():
    print('-' * 25)
    print('-----学生管理系统  v1.0------')
    print('【1】添加学生信息')
    print('【2】删除学生信息')
    print('【3】修改学生信息')
    print('【4】查询学生信息')
    print('【5】遍历所有学生信息')
    print('【6】退出学生管理系统')
    print('-' * 25)


#
# 学生信息: students = [{'name':'Tom', 'id':3120006884, 'gender':'male', 'grade':'高三1班'}]
# students = [{'name': '小七', 'id': 3120006884, 'gender': '男', 'grade': '20信计4班'},
#             {'name': '莫航', 'id': 3120006883, 'gender': '男', 'grade': '20应数1班'}]

students = []


# 定义add_student函数,实现添加学生信息功能
def add_student():
    student = {}  # 先定义一个空字典字典接收学生信息
    student['name'] = input('请您输入学生的姓名:')
    student['id'] = int(input('请您输入学生的学号:'))
    student['gender'] = input('请你输入学生的性别:')
    student['grade'] = input('请您输入学生的班级:')
    print(f'您已经导入学生信息:{student}')
    students.append(student)  # 将这名学生的信息添加到学生列表
    print('成功录入学生信息!')
    print(students)


# 定义一个函数,删除学生的信息
def del_student():
    # 根据学生的学号来删除学生信息,因为学号是唯一的
    ID = int(input('请您输入要删除的学生的学号:'))
    for i in students:
        if i['id'] == ID:
            students.remove(i)
            print('成功删除学生信息!')
            print(students)
            break
    else:
        print(f'很抱歉,未找到学号为{ID}的学生')


# 定义函数 edit_student 用于修改学生的信息
def edit_student():
    ID = int(input('请您输入要修改的学生的学号:'))
    for i in students:
        if i['id'] == ID:
            i['name'] = input('请您输入修改后的姓名:')
            i['id'] = int(input('请您输入修改后的学号:'))
            i['gender'] = input('请您输入修改后的性别:')
            i['grade'] = input('请您输入修改后的班级:')
            print('已经修改成功!')  # 提示一下
            print(students)
            break
    else:
        print(f'很抱歉,未找到学号为{ID}的学生!')


# 定义一个函数 inquire_student 用于查询学生的信息
def find_student():
    ID = int(input('请您输入要查询的学生的学号:'))
    for i in students:
        if ID == i['id']:
            print(f'学生信息:{i}')
            break
    else:
        print(f'很抱歉,未找到学号为:{ID}的学生!')


# 定义一个函数  all_students 用于遍历查询所有学生信息
def show_students():
    for i in range(len(students)):
        print(f'{i + 1}:{students[i]}')


# 定义一个函数save_file(),每次运行完系统将最新的学生信息保存进文件中
def save_file():
    file = open('学生信息.txt', 'w', encoding='utf-8')  # mode使用’w‘ 将最新的信息保存
    for i in students:
        # file.write(str(i)) 效果等同
        file.write(f'{i}\n')
    file.close()


# 定义一个函数load_student() 加载学生信息到student列表

def load_student():
    file1 = open('学生信息.txt', 'r', encoding='utf-8')
    global students  # 声明一下为全局变量,但是不声明也可以,因为list为可变数据类型
    while True:
        content = file1.readline()
        if not content:  # 判断内容是否非空 当content为空时,退出,否则添加到students列表中
            break
        else:
            students.append(eval(content))
    file1.close()

# 加载数据
load_student()

if __name__ == '__main__':   
    while True:
        menu()
        choice_num = int(input('请输入您的功能选择:'))
        if choice_num == 1:
            add_student()
        elif choice_num == 2:
            del_student()
        elif choice_num == 3:
            edit_student()
        elif choice_num == 4:
            find_student()
        elif choice_num == 5:
            show_students()
        elif choice_num == 6:
            print('已经退出学生管理系统,欢迎下次使用!')
            save_file()  # 每次退出系统时 更改与保存学生信息
            break
        else:
            print('请输入正确的功能编号!:')