搜索功能模块:
核心思路:
1.每次选择id或者name查询的时候,并不是同时进行的,每次只能查询一个,也就是一次你只能查询id或者name进行查询,查询的信息存入列表中,使用完毕后,清除列表
2. # 显示查询结果
show_student(student_queryn),调用的这个函数
# 查询函数,涉及两个函数
# search
# 定义显示查询结果的函数 show_student(query_student)
#
def search():
student_queryn=[]
while True:
id=''
name=''
if os.path.exists(filename):
mode=input("按ID查找请输入1,按姓名查找请输入2:")
if mode=='1':
id=input("请输入学生ID")
elif mode == '2':
name=input("请输入学生姓名")
else:
print("你输入有误,请重新输入")
search() #输入错误的话,重新调用函数自己
with open(filename,'r',encoding="utf-8") as rfile:
student=rfile.readlines()
for item in student:
d=dict(eval(item))
if id!="":
if d['id']==id:
student_queryn.append(d) #把查找到的id相等添加到列表中
elif name!="":
if d['name']==name:
student_queryn.append(d)
# 显示查询结果
show_student(student_queryn)
#清空列表
student_queryn.clear()
answer=input("是否要继续查询?y/nn")
if answer=='y':
continue
else:
break
else:
print("暂未保存学生信息")
return
show_student(student_queryn)
调用的函数;------>目的把每个内容以规定格式的方式打印出来。
def show_student(lst):
if len(lst)==0:
print("没有查询到学生信息,无数据显示!!!")
return
# 定义标题显示格式
format_title='{:^6}t{:^12}t{:^8}t{:^10}t{:^10}t{:^8}'
print(format_title.format('ID','姓名','英语成绩','python成绩','java成绩','总成绩'))
# 定义内容显示格式
format_data = '{:^6}t{:^12}t{:^8}t{:^8}t{:^8}t{:^8}'
for item in lst:
print(format_data.format(item.get('id'),
item.get('name'),
item.get('english'),
item.get('python'),
item.get('java'),
int(item.get('english'))+int(item.get('python'))+int(item.get('java'))
))



