小白的的操作
纯python代码构成
点赞的终将成为大牛
import os
filename='stduent.txt'
def main():
while True:
caidan()
choice=int(input('请输入选项对应的数字:'))
if choice in [1,2,3,4,5,6,7,8]:
if choice==8:
b=input('您真的要退出系统吗?(y/n)')
if b=='y' or b=='Y':
print('谢谢您的使用')
break
else:
continue
elif choice==1:
luru()
elif choice==2:
chazhao()
elif choice==3:
shanchu()
elif choice==4:
xiugai()
elif choice==5:
paixu()
elif choice==6:
tongji()
elif choice==7:
xianshi()
def caidan():
print('=======================学生信息管理系统=============================')
print('-----------------------------------------------------------------')
print('\t\t\t\t\t\t1.录入学生信息')
print('\t\t\t\t\t\t2.查找学生信息')
print('\t\t\t\t\t\t3.删除学生信息')
print('\t\t\t\t\t\t4.修改学生信息')
print('\t\t\t\t\t\t5.排序')
print('\t\t\t\t\t\t6.统计学生总人数')
print('\t\t\t\t\t\t7.显示所有学生信息')
print('\t\t\t\t\t\t8.退出系统')
print('-----------------------------------------------------------------')
def luru():
while True:
studentlist=[]
id = input('请输入学号:')
if not id: #空字符的返回值是flase
break
name = input('请输入学生姓名:')
if not name:
break
try:
english = int(input('请输入英语成绩:'))
java = int(input('请输入java成绩:'))
python = int(input('请输入python成绩:'))
except:
print('输入无效,请重新输入')
continue
student = {'id': id, 'name': name, 'english': english, 'java': java, 'python': python}
studentlist.append(student)
baocun(studentlist)
answer = input('是否继续录入(y/n):')
if answer == 'y':
continue
else:
break
print('学生信息录入完毕')
def baocun(lst):
try:
stutxt=open(filename,'a',encoding='utf-8')
except:
stutxt=open(filename,'w',encoding='utf-8')
for i in lst:
stutxt.write(str(i) + '\n')
stutxt.close()
def chazhao():
student=[]
while True:
if os.path.exists(filename):
with open(filename,'r',encoding='utf-8')as rfile:
c=rfile.readlines()
id=''
nmae=''
a = input('请问采取什么方式查找,学号按1,姓名按2:')
if a == '1':
id= input('请输入学号:')
elif a=='2':
name = input('请输入姓名:')
else:
print('你的输入结果错误,请重新输入')
continue
with open(filename,'r',encoding='utf-8')as rfile:
for i in c:
d=dict(eval(i))
if id!='':
if d['id'] == id:
student.append(d)
elif name!='':
if d['name']==name:
student.append(d)
show(student)
student.clear()
answer = input('是否继续查找(y/n):')
if answer == 'y':
continue
else:
break
def show(lst):
if len(lst)==0:
print('没有查到学生信息,无数据显示')
return
title='{:^6}\t{:^12}\t{:^8}\t{:^12}\t{:^10}\t{:^8}'
print(title.format('学号','姓名','英语成绩','Python成绩','Java成绩','总成绩'))
data='{:^6}\t{:^12}\t{:^8}\t{:^12}\t{:^10}\t{:^12}'
for i in lst:
print(data.format(i.get('id'),
i.get('name'),
i.get('english'),
i.get('java'),
i.get('python'),
int(i.get('english'))+int(i.get('java'))+int(i.get('python'))
))
def shanchu():
while True:
a=input('请输入要被删除学生的id:')
if a!='':
if os.path.exists(filename):
with open(filename,'r',encoding='utf-8')as file:
b=file.readlines() #返回值是列表
else:
b=[]
flag=False
if b:
with open(filename,'w',encoding='utf-8')as wfile:
d={}
for i in b:
d=dict(eval(i)) #将在字符串转换成字典
if d['id']!=a:
wfile.write(str(d)+'\n')
else:
flag=True
if flag:
print('该学生的信息已被删除')
else:
print('未找到id')
else:
print('无学生信息')
break
xianshi()
c=input('请问还要继续删除学生信息吗(y/n):')
if c=='y' or c=='Y':
continue
else:
break
def xiugai():
xianshi()
while True:
a=input('请输入要修改信息的学生的学号:')
if a!='':
if os.path.exists(filename):
with open(filename,'r',encoding='utf-8')as file:
b=file.readlines()
else:
b=[]
flag=False
if b:
with open(filename,'w',encoding='utf-8')as wfile:
for i in b:
d=dict(eval(i))
if d['id']==a:
print('找到相关学生的信息了!')
while True:
try:
d['name'] = input('请输入姓名:')
d['english'] = int(input('请输入英语成绩:'))
d['java'] = int(input('请输入java成绩:'))
d['python'] = int(input('请输入python成绩:'))
except:
print('输入有错误,请重新输入')
continue
else:
wfile.write(str(d) + '\n')
flag=True
break
else:
wfile.write(str(d) + '\n')
else:
print('无学生信息')
break
if flag:
print('修改成功')
else:
print('未找到该id的同学')
xianshi()
c=input('请问还要进行修改吗(y/n):')
if c=='y':
continue
else:
break
def paixu():
if os.path.exists(filename):
with open(filename,'r',encoding='utf-8')as rfile:
students=rfile.readlines()
student_list=[]
for i in students:
student_list.append(eval(i))
else:
return
arr=input('请选择(0.升序/1.降序):')
if arr=='0':
brr=False
elif arr=='1':
brr=True
else:
print('您的输入有错误')
paixu()
mode=input('请输入排序依据(0.按英语成绩/1.按java成绩/2.按python成绩/3.按总成绩):')
if mode=='o':
student_list.sort(key=lambda x:int(x['english']),reverse=brr)
elif mode=='1':
student_list.sort(key=lambda x: int(x['java']), reverse=brr)
elif mode=='2':
student_list.sort(key=lambda x: int(x['python']), reverse=brr)
elif mode=='3':
student_list.sort(key=lambda x: int(x['english'])+int(x['java'])+ int(x['python']), reverse=brr)
else:
print('您的输入有错误!!!')
paixu()
show(student_list)
def tongji():
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 xianshi():
student_list=[]
if os.path.exists(filename):
with open(filename,'r',encoding='utf-8')as rfile:
students=rfile.readlines()
for i in students:
student_list.append(eval(i))
if student_list:
show(student_list)
else:
print('暂未保存过信息!!!')
main()