print( **************欢迎使用学生信息管理系统**************** )
print( --------功能菜单-------- )
print( 1. 录入学生信息 )
print( 2. 查找学生信息 )
print( 3. 删除学生信息 )
print( 4. 修改学生信息 )
print( 5. 排序 )
print( 6. 统计学生总人数 )
print( 7. 显示所有学生信息 )
print( 0. 退出系统 )
print( ------------------------------------------------------- )
def insert():
student_list []
while True:
id input( 请输入学号(如1001) )
if not id:
break
name input( 请输入姓名 )
if not name:
break
try:
english_gade int(input( 请输入英语成绩(成绩在0~100之间 ))
if english_gade 0 or english_gade 100:
print( 输入有误请重新输入 )
english_gade int(input( 请输入英语成绩(成绩在0~100之间 ))
python_gade int(input( 请输入pyton成绩(成绩在0~100之间 ))
if python_gade 0 or python_gade 100:
print( 输入有误请重新输入 )
python_gade int(input( 请输入pyton成绩(成绩在0~100之间 ))
java_gade int(input( 请输入java成绩(成绩在0~100之间 ))
if java_gade 0 or java_gade 100:
print( 输入有误请重新输入 )
java_gade int(input( 请输入java成绩(成绩在0~100之间 ))
except:
print( 输入无效 请重新输入 )
continue
#将录入的学生信息保存到字典中
student { id :id, name :name, english :english_gade, python :python_gade, java :java_gade}
#将学生信息添加到列表中
student_list.append(student)
answer input( 是否继续添加 ,是/否n )
if answer 是 :
continue
else:
break
#调用save函数保存学生信息
save(student_list)
print( 学生信息录入完全 )
def save(list):
try:
stu_txt open(filename, a ,encoding utf-8 )
except:
stu_txt open(filename, w ,encoding utf-8 )
for item in list:
stu_txt.write(str(item) n )
stu_txt.close()
def search():
student_query []
while True:
name
if os.path.exists(filename): #判断磁盘文件是否存在
id input( 请输入想要查询的学生的学号 )
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_query.append(d)
#显示查询结果
show_student(student_query)
#清空列表
student_query.clear()
answer input( 请问是否继续查询 是/否n )
if answer 是 :
continue
else:
break
else:
print( 没有此学生信息 )
return
def show_student(list):
if len(list) 0:
print( 没有查到学生信息 )
return
format_title {:^6}t{:^12}t{:^8}{:^8}{:^8}
print(format_title.format( id , 姓名 , 英语成绩 , python成绩 , java成绩 ))
format_data {:^6}t{:^12}t{:^8}{:^13}{:^11}
for item in list:
print(format_data.format(item.get( id ),
item.get( name ),
item.get( english ),
item.get( python ),
item.get( java ),
def delete():
while True:
student_id input( 请输入要删除 的学生的学号 )
if student_id! :
if os.path.exists(filename): #判断文件是否存在
with open(filename, r ,encoding utf-8 )as file:
student_old file.readlines()
else:
student_old []
flag False #标记是否删除
if student_old:
with open(filename, w ,encoding utf-8 )as wfile:
d {}
for item in student_old:
d dict(eval(item))
if d[ id ]! student_id:
wfile.write(str(d) n )
else:
flag True
if flag:
print(f id为{student_id}的学生信息已被删除 )
else:
print(f 没有找到id为{student_id}的学生信息 )
else:
print( 无学生信息 )
break
show() #删除之后显示学生信息
answer ( 是否继续删除 是/否 )
if answer 是 :
continue
else:
break
def modify():
show()
if os.path.exists(filename):
with open(filename, r , encoding utf-8 )as rfile:
student_old rfile.readlines()
else:
return
student_id input( 请输入要修改的学生的学号 )
with open(filename, w , encoding utf-8 )as wfile:
for item in student_old:
d dict(eval(item))
if d[ id ] student_id:
print( 找到学生信息 请修改 )
answer input( 请输入要修改的属性 )
while True:
try:
if answer id :
d[ id ] input( 请输入修改的学号(如1001) )
elif answer name :
d[ name ] input( 请输入修改的姓名 )
elif answer english :
d[ english ] int(input( 请输入修改的英语成绩(成绩在0~100之间 ))
if d[ english ] 0 or d[ english ] 100:
print( 输入有误请重新输入 )
d[ english ] int(input( 请输入英语成绩(成绩在0~100之间 ))
elif answer python :
d[ python ] int(input( 请输入修改的pyton成绩(成绩在0~100之间 ))
if d[ python ] 0 or d[ python ] 100:
print( 输入有误请重新输入 )
d[ python ] int(input( 请输入python成绩(成绩在0~100之间 ))
elif answer java :
d[ java ] int(input( 请输入修改的java成绩(成绩在0~100之间 ))
if d[ java ] 0 or d[ java ] 100:
print( 输入有误请重新输入 )
d[ java ] int(input( 请输入java成绩(成绩在0~100之间 ))
except:
print( 您输入有误 请重新输入 )
else:
break
wfile.write(str(d) n )
print( 修改成功 )
# while True:
# try:
# d[ name ] input( 请输入姓名 )
# d[ english ] input( 请输入英语成绩 )
# d[ python ] input( 请输入pyton成 )
# d[ java ] input( 请输入java成绩 )
# except:
# print( 您输入有误 请重新输入 )
# else:
# break
# wfile.write(str(d) n )
# print( 修改成功 )
else:
wfile.write(str(d) n )
answer input( 是否修改其他学生信息 是/否n )
if answer 是 :
modify()
def sort():
show()
if os.path.exists(filename):
with open(filename, r ,encoding utf-8 ) as rfile:
student_list rfile.readlines()
student_new []
for item in student_list:
d dict(eval(item))
student_new.append(d)
else:
return
asc_or_des input( 请选择(0.升序 1.降序) )
if asc_or_des 0 :
asc_or_des_bool False
elif asc_or_des 1 :
asc_or_des_bool True
else:
print( 您的输入有误 请重新输入 )
sort()
mode input( 请选择排序方式(1.按英语成绩排序 2.按python成绩排序 3.按java成绩排序) )
if mode 1 :
student_new.sort(key lambda x: int(x[ english ]),reverse asc_or_des_bool)
elif mode 2 :
student_new.sort(key lambda x: int(x[ python ]),reverse asc_or_des_bool)
elif mode 3 :
student_new.sort(key lambda x: int(x[ java ]),reverse asc_or_des_bool)
else:
print( 您的输入有误 请重新输入 )
sort()
show_student(student_new)
def total():
if os.path.exists(filename):
with open(filename, r , encoding utf-8 )as rfile:
students rfile.readlines()
if students:
print(f 一共有{len(students)}名学生 )
else:
print( 还没有录入学生 )
else:
print( 没有数据信息 )
def show():
student_list []
if os.path.exists(filename):
with open(filename, r , encoding utf-8 )as rfile:
students rfile.readlines()
for item in students:
student_list.append(eval(item))
if student_list:
show_student(student_list)
else:
print( 没有数据信息 )
main()