"""
学生信息管理系统
需求:进入系统显示系统功能界面,功能如下
1.添加学生信息
2.删除学生信息
3.修改学生信息
4.查询学生信息
5.显示所有学生信息
6.退出系统
"""
import sys
def print_line():
"""打印横线"""
print("-"*15)
def start_system():
"""显示功能界面"""
global fun_num #声明全局变量
print_line()#打印横线
print("1.添加学生信息\n2.删除学生信息\n3.修改学生信息\n4.查询学生信息\n5.显示所有学生信息\n6.退出系统")#功能列表
print_line()
fun_num = input("\n输入你需要的功能编号:")#输入功能需求
judge_input_result()#调用判断函数判断输入是否合法
def fun_switch():
"""功能开关"""
global fun_num # 声明全局变量
while True:#循环显示功能界面,直到退出系统
if fun_num == 1:#输入“1”添加学生信息函数
add_stu_info()
elif fun_num == 2:#输入“2”删除学生信息函数
delete_stu_info()
elif fun_num == 3:#输入“3”修改学生信息函数
change_stu_info()
elif fun_num == 4:#输入“4”查询学生信息函数
check_stu_info()
elif fun_num == 5:#输入“5”显示所有学生信息函数
show_all_stu_info_dict()
start_system()#显示所有学生信息之后要返回功能界面,否则因为while True会无限循环显示所有学生信息
elif fun_num == 6:#输入“6”退出系统
print("\n感谢使用,再见!")
sys.exit()#退出整个系统,用break只能退出本循环
def add_stu_info():
"""增加学生信息"""
global stu_info_dict#声明全局变量
add_list = []#定义一个局部空列表
add_name = input("姓名:")
if add_name == "quit":#输入quit的时候退出本功能,回到功能界面
start_system()
for existing_name in stu_info_dict:#如果字典里已有需要加入的学生信息,则提示
if add_name==existing_name:
add_name_2=input("此学生信息已存在,如需修改请输入:1,取消录入请输入:2\n")
if add_name_2=="1":
change_stu_info()
elif add_name_2=="2":
start_system()
#把各种信息录入到列表
add_list.append("性别:" + input("性别:"))
if add_list[0]=="性别:quit":
start_system()
add_list.append("年龄:" + input("年龄:"))
if add_list[1]=="年龄:quit":
start_system()
add_list.append("电话:" + input("电话:"))
if add_list[2]=="电话:quit":
start_system()
stu_info_dict[add_name] = add_list#姓名作为key,与各信息列表存储入全局字典
# print(stu_info_dict)
def delete_stu_info():
"""删除学生信息"""
i=0#定义一个触发器,当遍历所有字典都没此人时用下一下提示
if stu_info_dict == {}:#先检查是否空字典
print("\n无任何学生信息,请先录入!")
start_system()
# print(stu_info_dict)
delet_name=input("\n输入要删除学生信息的姓名:")
if delet_name=="quit":#当输入quit时退出本功能,回到主界面
start_system()
else:
for key_name in stu_info_dict:#遍历字典,找到需要删除学生并删除其信息
if delet_name==key_name:
del stu_info_dict[key_name]
# print(stu_info_dict)
print("\n该学生信息已删除!")
delete_stu_info()
elif delet_name!=key_name:#遍历整个字典信息,如果都找不到相关人物,记录下来
i+=1
if i==len(stu_info_dict):#遍历整个字典者没此人时提示,并回到功能界面
print("\n查无此人!")
delete_stu_info()
def change_stu_info():
"""修改学生信息"""
change_list = [] # 定义一个局部空列表
i=0#定义一个触发器,当遍历所有字典都没此人时用下一下提示
if stu_info_dict == {}:#先检查是否空字典
print("\n无任何学生信息,请先录入!")
start_system()
change_name=input("\n输入要修改学生信息的姓名:")
if change_name=="quit":#当输入quit时退出本功能,回到主界面
start_system()
else:
for key_name in stu_info_dict:#遍历字典,找到需要修改学生并进入修改功能
if change_name==key_name:
# 把各种信息录入到列表
change_list.append("性别:" + input("性别:"))
if change_list[0] == "性别:quit":
start_system()
change_list.append("年龄:" + input("年龄:"))
if change_list[1] == "年龄:quit":
start_system()
change_list.append("电话:" + input("电话:"))
if change_list[2] == "电话:quit":
start_system()
stu_info_dict[change_name]=change_list
change_stu_info()
elif change_name!=key_name:#遍历整个字典信息,如果都找不到相关人物,记录下来
i+=1
if i==len(stu_info_dict):#遍历整个字典者没此人时提示,并回到功能界面
print("\n查无此人!")
change_stu_info()
def check_stu_info():
"""查询学生信息"""
i=0#定义一个触发器,当遍历所有字典都没此人时用下一下提示
if stu_info_dict == {}:#先检查是否空字典
print("\n无任何学生信息,请先录入!")
start_system()
check_name=input("\n输入要查询学生信息的姓名:")
if check_name=="quit":#当输入quit时退出本功能,回到主界面
start_system()
else:
for key_name,value in stu_info_dict.items():#遍历字典,找到需要查询学生并进入查询功能
if check_name==key_name:
#遍历查询
print_line()
print(f'{check_name}的个人信息如下:\n{value[0]}\n{value[1]}\n{value[2]}')
change_stu_info()
elif check_name!=key_name:#遍历整个字典信息,如果都找不到相关人物,记录下来
i+=1
if i==len(stu_info_dict):#遍历整个字典者没此人时提示,并回到功能界面
print("\n查无此人!")
change_stu_info()
def show_all_stu_info_dict():
"""显示所有学生信息"""
if stu_info_dict == {}:#先检查是否空字典
print("\n无任何学生信息,请先录入!")
start_system()
for stu_name,value in stu_info_dict.items():#遍历字典内容并输出信息
print_line()
print(f'{stu_name}的个人信息如下:\n{value[0]}\n{value[1]}\n{value[2]}')
def judge_input_result():
"""判断输入是否合法,如合法则运行功能,如不合法则一直循环输入直到输入正确,或者强制退出"""
global fun_num # 声明全局变量
if (fun_num.isdigit() and 1 <= int(fun_num) <= 6): # 如果输入的是全数字字符串,而且在功能编号范围内,则继续执行功能
fun_num = int(fun_num) # 把数字字符串转换为整数
fun_switch()
else:
print_line()
print("1.添加学生信息\n2.删除学生信息\n3.修改学生信息\n4.查询学生信息\n5.显示所有学生信息\n6.退出系统")
print_line()
fun_num = input("\n输入有误,请重新输入:")
judge_input_result()#输入不正确递归直致输入正确为止
stu_info_dict={}#定义一个全局字典存储学生信息
start_system()#启动系统,显示功能界面