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('请输入正确的功能编号!:')