import os
import json
filename = 'student.txt'
lst = []
def main():
while True:
menm ()
choice = int (input ('请选择'))
if choice in [0, 1, 2, 3, 4, 5, 6, 7]:
if choice == 0:
answer = input ('您要退出系统吗?y/n')
if answer == 'y' or answer == 'Y':
print ('感谢您的使用!')
break
else:
continue
elif choice == 1:
insert ()
elif choice == 2:
search ()
elif choice == 3:
delete ()
elif choice == 4:
modify ()
elif choice == 5:
sort ()
elif choice == 6:
total ()
elif choice == 7:
show ()
def menm():
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\t0.退出系统')
def insert():
student_list = []
while True:
id = input ('请输入学号:')
if not id:
break
name = input ('请输入姓名:')
if not name:
break
try:
englist = int (input ('请输入英语成绩:'))
python = int (input ('请输入python成绩:'))
java = int (input ('请输入java成绩:'))
except:
print ('输入错误,请从新输入。')
continue
student = {'id': id, 'name': name, 'englist': englist, 'python': python, 'java': java}
student_list.append (student)
answer = input ('是否继续添加?y/n:')
if answer == 'y':
continue
else:
break
save (student_list)
print ('学生信息录入完毕。')
def save(lst):
try:
stu_txt = open (filename, 'a', encoding='utf-8')
except:
stu_txt = open (filename, 'w', encoding='utf-8')
for item in lst:
stu_txt.write (str (item) + '\n')
stu_txt.close ()
def search():
student_query = []
while True:
id = ''
name = ''
if os.path.exists (filename):
mode = input ('按照学号查找请输入1,按照姓名查找请输入2:')
if mode == '1':
id = input ('请输入学号')
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_query.append (d)
elif name != '':
if d['name'] == name:
student_query.append (d)
show_student (student_query)
student_query.clear ()
answer = input ('是否继续查询?y/n')
if answer == 'y':
continue
else:
break
else:
print ('暂无学生信息')
return
def show_student(lst):
if len (lst) == 0:
print ('无学生信息。')
return
format_title = '{:^6}\t{:^12}\t{:^8}\t{:^10}\t{:^10}\t{:^8}\t'
print (format_title.format ('id', '姓名', '英语成绩', 'python', 'java', '总成绩'))
format_data = '{:^6}\t{:^12}\t{:^8}\t{:^10}\t{:^10}\t{:^8}\t'
for dic in lst:
print (format_data.format( dic['id'],
dic['name'],
dic['englist'],
dic['python'],
dic['java'],
int (dic ['englist']) + int (dic ['python']) + int (dic ['java'])
))
def delete():
while True:
student_id = input ('请输入要删除学生id:')
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 = input ('是否继续删除?y/n')
if answer == 'y':
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 ('找到学生信息,可以进行修改了!')
while True:
try:
d['name'] = input ('请输入姓名')
d['english'] = input ('请输入英语成绩')
d['python'] = input ('请输入python成绩')
d['java'] = input ('请输入Java成绩')
except:
print ('输入有误,请从新输入')
else:
break
wfile.write (str (d) + '\n')
print ('修改成功')
else:
wfile.write (str (d) + '\n')
answer = input ('是否继续修改其他学生信息?y/n')
if answer == 'y':
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_desc = input ('请选择(0.升序 1.降序):')
if asc_or_desc == '0':
asc_or_desc_bool = False
elif asc_or_desc == '1':
asc_or_desc_bool = True
else:
print ('输入有误,请从新输入。')
sort ()
mode=input('请选择排序方式(1.英语 2.pytho 3.java 4.总成绩)')
if mode=='1':
student_new.sort(key=lambda x:int(x['english']),reverse=asc_or_desc_bool)
elif mode=='2':
student_new.sort(key=lambda x:int(x['python']),reverse=asc_or_desc_bool)
elif mode == '3':
student_new.sort(key=lambda x:int(x['java']),reverse=asc_or_desc_bool)
elif mode== '4':
student_new.sort(key=lambda x:int(x['english'])+int(x['python'])+int(x['java']),reverse=asc_or_desc_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_lst = []
if os.path.exists (filename):
with open (filename, 'r', encoding='utf-8') as rfile:
students = rfile.readlines ()
for item in students:
student_lst.append (eval (item))
if student_lst:
show_student (student_lst)
else:
print ('暂未保存过数据!')
if __name__ == '__main__':
main ()
学生信息管理系统
最新推荐文章于 2024-08-10 10:46:00 发布