165 lines
4.8 KiB
Python
165 lines
4.8 KiB
Python
|
import functions as fc
|
|||
|
from student import Student
|
|||
|
import os
|
|||
|
import pickle
|
|||
|
|
|||
|
# 变量名缩写:
|
|||
|
# stu(s) = student(s)
|
|||
|
# info = information
|
|||
|
stu_names_list, stu_info_list = [], []
|
|||
|
active = True
|
|||
|
input_message = "输入数字以执行对应操作:"
|
|||
|
stu_info_data = "students info.json"
|
|||
|
stu_names_data = "students names.json"
|
|||
|
|
|||
|
|
|||
|
def _load_data():
|
|||
|
global stu_info_list, stu_names_list
|
|||
|
if os.path.exists(stu_info_data): # 判断数据文件是否存在
|
|||
|
with open(stu_info_data, "rb") as info_data:
|
|||
|
stu_info_list = pickle.load(info_data) # 如果存在则导入数据
|
|||
|
print("已找到文件students info.json!")
|
|||
|
else:
|
|||
|
print(
|
|||
|
"""找不到文件students info.json!
|
|||
|
不过这不影响系统的正常运行,系统退出后会自动生成"""
|
|||
|
)
|
|||
|
|
|||
|
if os.path.exists(stu_names_data):
|
|||
|
with open(stu_names_data, "rb") as name_data:
|
|||
|
stu_names_list = pickle.load(name_data)
|
|||
|
print("已找到文件students names.json!")
|
|||
|
else:
|
|||
|
print(
|
|||
|
"""找不到文件students names.json!
|
|||
|
不过这不影响系统的正常运行,系统退出后会自动生成"""
|
|||
|
)
|
|||
|
|
|||
|
|
|||
|
def _show_list():
|
|||
|
if stu_info_list:
|
|||
|
print(f"\n学生列表共 {len(stu_info_list)} 名学生:")
|
|||
|
for stu_info in stu_info_list:
|
|||
|
print(stu_info)
|
|||
|
else:
|
|||
|
print("\n无学生")
|
|||
|
|
|||
|
|
|||
|
def _add_student():
|
|||
|
new_stu_name = input("请输入要添加的学生的姓名:")
|
|||
|
if new_stu_name:
|
|||
|
while True:
|
|||
|
new_stu_gender = input("0 男\n1 女\n请选择新学生的性别:")
|
|||
|
if new_stu_gender == "0":
|
|||
|
fc.add_student(new_stu_name, "男")
|
|||
|
break
|
|||
|
elif new_stu_gender == "1":
|
|||
|
fc.add_student(new_stu_name, "女")
|
|||
|
break
|
|||
|
else:
|
|||
|
print("别瞎jb乱搞")
|
|||
|
else:
|
|||
|
print("别瞎jb乱搞")
|
|||
|
|
|||
|
|
|||
|
def _del_student():
|
|||
|
while True:
|
|||
|
del_stu_name = input("请输入要删除的学生的姓名:")
|
|||
|
del_stu_info = fc.return_student_info(del_stu_name)
|
|||
|
if del_stu_info:
|
|||
|
fc.delete_student(del_stu_info, del_stu_name)
|
|||
|
print(f"学生{del_stu_name}已被删除!")
|
|||
|
break
|
|||
|
elif not del_stu_name:
|
|||
|
print("已退出!")
|
|||
|
break
|
|||
|
else:
|
|||
|
print(f"未找到学生{del_stu_name}!请检查输入是否正确")
|
|||
|
|
|||
|
|
|||
|
def _find_student():
|
|||
|
while True:
|
|||
|
find_stu_name = input("请输入要查找的学生的姓名:(按回车退出)")
|
|||
|
find_stu_info = fc.return_student_info(find_stu_name)
|
|||
|
if find_stu_info:
|
|||
|
print("\n查询结果如下:")
|
|||
|
print(find_stu_info)
|
|||
|
way1 = input(f'''
|
|||
|
0 修改信息 1 退出
|
|||
|
{input_message}
|
|||
|
''')
|
|||
|
if way1 == '0':
|
|||
|
changed_name,changed_gender = input('请依次输入修改后的姓名、性别:\n').split()
|
|||
|
find_stu_info.change_info(changed_name,changed_gender)
|
|||
|
print('修改成功!')
|
|||
|
if way1 == '1':
|
|||
|
None
|
|||
|
_show_list()
|
|||
|
break
|
|||
|
elif not find_stu_name:
|
|||
|
print("已退出!")
|
|||
|
break
|
|||
|
else:
|
|||
|
print(f"未找到学生{find_stu_name}!请检查输入是否正确")
|
|||
|
|
|||
|
|
|||
|
def _save_data():
|
|||
|
pickle.dump(stu_info_list, file=open(stu_info_data, "wb"))
|
|||
|
pickle.dump(stu_names_list, open(stu_names_data, "wb"))
|
|||
|
print("数据保存成功!")
|
|||
|
|
|||
|
if __name__ == "__main__":
|
|||
|
_load_data()
|
|||
|
fc.share_lists(stu_names_list, stu_info_list) # 向模块传递列表
|
|||
|
|
|||
|
# 简介
|
|||
|
print(
|
|||
|
"""
|
|||
|
——————学生管理系统Beta——————
|
|||
|
By Billts_noo"""
|
|||
|
)
|
|||
|
|
|||
|
# 主程序
|
|||
|
while active:
|
|||
|
main_way = input(
|
|||
|
f"""
|
|||
|
——————————主菜单——————————
|
|||
|
0 显示学生列表
|
|||
|
1 保存并退出
|
|||
|
{input_message}"""
|
|||
|
)
|
|||
|
|
|||
|
# 主菜单
|
|||
|
# 显示学生列表
|
|||
|
if main_way == "0":
|
|||
|
_show_list()
|
|||
|
while True:
|
|||
|
way = input(
|
|||
|
f"""
|
|||
|
——学生列表菜单——
|
|||
|
0 添加学生
|
|||
|
1 删除学生
|
|||
|
2 查找学生
|
|||
|
任意输入 回到主菜单
|
|||
|
{input_message}"""
|
|||
|
)
|
|||
|
|
|||
|
# 学生列表菜单
|
|||
|
if way == "0":
|
|||
|
_add_student()
|
|||
|
|
|||
|
if way == "1":
|
|||
|
_del_student()
|
|||
|
|
|||
|
if way == "2":
|
|||
|
_find_student()
|
|||
|
|
|||
|
else:
|
|||
|
break
|
|||
|
# 退出
|
|||
|
if main_way == "1":
|
|||
|
# 保存数据
|
|||
|
_save_data()
|
|||
|
|
|||
|
active = False
|