# -*- 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()