昨天分享了低配版本的学生管理系统, 今天来个高级一丢丢的~
思路就不多说了, 想看的在我昨天的博客有https://blog.csdn.net/LanlanDeming/article/details/103414263, 就直接进入正题啦
import os
def show_menu():
"""显示菜单信息"""
print("-------学生管理系统 V 1.0 -------")
print('1. 添加学生')
print('2. 删除学生')
print('3. 修改学生')
print('4. 查询学生')
print('5. 查询所有学生')
print('6. 退出系统')
def insert_student():
# global students_list # 可以写,可以不写, 列表是可变类型,没有改变引用中
# 1. 获取学生的信息(通过 input()) name, age, gender
name = input("请输入姓名:")
# 4. 输入姓名之后,判断这个学生是否存在
# 4.1 遍历列表
for student in students_list: # []为空,不会进入循环
# student 是每一个学生,字典
if name == student['name']:
# 代表学生存在,不添加,直接退出
print("^^^^^^^^学生信息已经存在^^^^^^^^^^")
return
age = int(input("请输入年龄:"))
gender = input("请输入性别:")
# 2. 需要将学生保存一个字典中
student_dict = {'name': name, 'age': age, 'gender': gender}
# 3. 将这个学生添加到学生列表中
students_list.append(student_dict)
def show_info():
"""查看所有学生信息"""
for stu in students_list:
# stu 字典
print(stu['name'], stu['age'], stu['gender'])
def search_student():
"""查看单个学生"""
# 1. 确定查看那个学生, name = input()
name = input("请输入要查询的学生名字:")
# 2. 判断 学生是否存在
for stu in students_list: # [{}, {}, {}]
if stu['name'] == name:
# 相等,找到这个学生
print(f"姓名:{stu['name']}, 年龄:{stu['age']}, 性别:{stu['gender']}")
# break 结束的是循环
# retutn 直接结束函数的执行
break
else:
print('该学生信息不存在.........')
def modify_student():
"""修改学生"""
# 1. 确定修改那个学生, name = input()
name = input("请输入要修改的学生名字:")
# 2. 判断 学生是否存在
for stu in students_list:
if stu['name'] == name:
# 相等,找到这个学生, 修改学生信息
stu['age'] = int(input("请输入新的年龄:"))
# break 结束的是循环
# retutn 直接结束函数的执行
break
else:
print('该学生信息不存在.........')
def remove_student():
"""删除学生"""
# 1. 确定删除那个学生, name = input()
name = input("请输入要删除的学生名字:")
# 2. 判断 学生是否存在
for stu in students_list:
if stu['name'] == name:
# 相等,找到这个学生, 删除这个学生. 将这个学生的信息从列表中删除
students_list.remove(stu) # [{}, {}, {}]
# break 结束的是循环
# retutn 直接结束函数的执行
break
else:
print('该学生信息不存在.........')
def save_data():
"""保存学生信息"""
# 1. w 方式打开文件
f = open('student.data', 'w', encoding='utf-8')
f.write(str(students_list))
f.close()
def load_data():
"""从文件中读取内容"""
global students_list
# 判断文件是否存在
if os.path.exists('student.data'):
f = open('student.data', 'r', encoding='utf-8')
# "[{'name': 'isaac', 'age': 18, 'gender': 'm'}]"
buf = f.read() # ""
students_list = eval(buf)
# 定义学生列表
students_list = []
# 读取文件,只需要一次
load_data()
while True:
show_menu()
option = input("请输入要进行的操作编号:")
if option == '1':
print('******添加学生********')
insert_student()
# print("添加完成")
# print(students_list)
elif option == '2':
print('******删除学生********')
remove_student()
elif option == '3':
print('******修改学生********')
modify_student()
elif option == '4':
print('******查询学生********')
search_student()
elif option == '5':
print('******查询所有学生********')
show_info()
elif option == '6':
print("系统退出, 欢迎下次使用......")
save_data()
break
else:
print('输入有误,重新输入')