# coding:utf-8
# author:ChenBaijing
# date:2022/4/6 11:08
'''
学生信息管理系统模块:
学生信息维护:
录入学生信息
删除学生信息
修改学生信息
查询统计:
按学生姓名查找
按学生ID查找
查询并显示所有学生信息
统计学生总人数
升序、降序排序:
按英语成绩排序
按Python成绩排序
按Java成绩排序
按总成绩排序
学生信息管理系统功能:
0:退出系统
1:录入学生信息 stu_insert()
2:查找学生信息 stu_search()
3:删除学生信息 stu_delete()
4:修改学生信息 stu_modify()
5:对学生成绩排序 stu_sort()
6:统计学生总人数 stu_total()
7:显示全部学生信息 stu_show()
8:将录入的学生信息保存至文件 stu_save(student_list)
9:将查找的学生信息按格式显示 stu_show_search(search_stu)
'''
import time
import os
import re
file_name='student.txt'
stu_id_file='stu_id.txt'
format_title='{:^6}\t{:^12}\t{:^8}\t{:^10}\t{:^10}\t{:^8}'
def menu():
print('=============================学生信息管理系统=============================')
print('1.录入学生信息')
print('2.查找学生信息')
print('3.删除学生信息')
print('4.修改学生信息')
print('5.对学生成绩排序')
print('6.统计学生总人数')
print('7.显示所有学生信息')
print('0.推出系统')
print('=======================================================================')
def stu_save(student_list):
try:
stu_txt=open(file_name,'a',encoding='utf-8')
for item in student_list:
stu_txt.write(str(item)+'\n')
except BaseException as err:
print('写入学生信息文件异常:',err)
else:
print('学生信息记录成功')
stu_txt.close()
def stu_insert():
student_list=[]
while True:
try:
with open(stu_id_file,'r',encoding='utf-8') as rfile:
student_id=int(rfile.read())
id=student_id
name=input('请输入录入学生姓名:')
if not name:
print('无效输入:姓名')
break
eng_score=int(input('请输入学生英语成绩:'))
py_score=int(input('请输入学生python成绩:'))
java_score=int(input('请输入学生java成绩:'))
student_info={'id':id,'name':name,'eng_score':eng_score,'py_score':py_score,'java_score':java_score,'tot_score':eng_score+py_score+java_score}
student_list.append(student_info)
student_id+=1
with open(stu_id_file,'w',encoding='utf-8') as wfile:
wfile.write(str(student_id))
except BaseException as err:
print('录入学生异常异常操作:',err)
else:
answer=input('录入学生信息成功,是否继续录入 Y/N: ').upper()
if not answer=='Y':
break
stu_save(student_list)
def stu_show_search(search_stu):
if len(search_stu)<=0:
print('没有数据传送')
return
print('-------------------------------')
print(format_title.format('ID','姓名','英语成绩','Python成绩','Java成绩','总成绩'))
for item in search_stu:
print(format_title.format(item.get('id'),item.get('name'),item.get('eng_score'),item.get('py_score'),item.get('java_score'),item.get('tot_score')))
print('-------------------------------')
def stu_search():
try:
mode=int(input('按照学生id查询请按0 按照学生姓名查询请按1 :'))
if mode in range(2):
if mode:
search_key=input('请输入要查询学生的姓名: ')
else:
search_key=int(input('请输入要查询学生的id: '))
search_stu=[]
if os.path.exists(file_name):
with open(file_name,'r',encoding='utf-8') as rfile:
student_saves=rfile.readlines()
for item in student_saves:
stu_info_dic=dict(eval(item))
if not mode and int(stu_info_dic['id']) == search_key:
search_stu.append(stu_info_dic)
elif mode and stu_info_dic['name'] == search_key:
search_stu.append(stu_info_dic)
if not search_stu:
print('未找到符合身份的学生')
else:
print('找到了符合身份的学生')
stu_show_search(search_stu)
else:
print('无效输入:查询模式')
except BaseException as err:
print('查询学生信息功能异常: ',err)
search_stu.clear()
answer=input('是否继续搜索学生? Y/N: ').upper()
if answer == 'Y':
stu_search()
def stu_delete():
while True:
student_id=input('请输入要删除的学生ID: ')
if student_id:
if os.path.exists(file_name):
with open(file_name,'r',encoding='utf-8') as file:
student_saves=file.readlines()
else:
student_saves=[]
flag=False
if student_saves:
with open(file_name,'w',encoding='utf-8') as wfile:
for item in student_saves:
stu_info_dic=dict(eval(item))
if stu_info_dic['id'] != int(student_id):
wfile.write(str(stu_info_dic)+'\n')
else:
flag=True
if flag:
print(f'id为{student_id}的学生信息已被删除')
else:
print(f'没有找到id为{student_id}的学生信息')
else:
print('没有创建该文件 学生数据为空')
break
print('删除后的学生信息为:')
stu_show()
else:
print('无效输入删除学生id')
answer = input('是否继续删除学生信息? Y/N: ').upper()
if answer != 'Y':
break
def stu_modify():
stu_show()
if os.path.exists(file_name):
with open(file_name,'r',encoding='utf-8') as rfile:
student_saves=rfile.readlines()
else:
print('没有创建该文件 学生数据为空')
return
try:
student_id=int(input('请输入要修改学生的id: '))
if student_id:
search_flag=False
for item in student_saves:
stu_info_dic=dict(eval(item))
if student_id==stu_info_dic['id']:
search_flag=True
if search_flag:
print(f'找到了id为{student_id}的学生,请输入修改数据:')
name = input('请输入录入学生姓名:')
if not name:
print('无效输入:姓名')
else:
eng_score = int(input('请输入学生英语成绩:'))
py_score = int(input('请输入学生python成绩:'))
java_score = int(input('请输入学生java成绩:'))
student_info = {'id': student_id, 'name': name, 'eng_score': eng_score, 'py_score': py_score,
'java_score': java_score, 'tot_score': eng_score + py_score + java_score}
with open(file_name,'w',encoding='utf-8') as wfile:
for item in student_saves:
stu_info_dic = dict(eval(item))
if student_id==stu_info_dic['id']:
wfile.write(str(student_info)+'\n')
else:
wfile.write(str(stu_info_dic)+'\n')
print(f'修改id为{student_id}的学生信息成功')
else:
print(f'未找到id为{student_id}的学生')
else:
print('无效输入删除学生id')
except BaseException as err:
print('修改学生异常操作:',err)
stu_show()
answer=input('是否继续修改学生信息? Y/N: ').upper()
if answer=='Y':
stu_modify()
def stu_sort():
if os.path.exists(file_name):
try:
with open(file_name, 'r', encoding='utf-8') as rfile:
student_saves = rfile.readlines()
stu_info_list = []
for item in student_saves:
stu_info_dic = dict(eval(item))
stu_info_list.append(stu_info_dic)
print('0.按照英语成绩排序\n1.按照Python成绩排序\n2.按照Java成绩排序\n3.按照总成绩排序')
mode_num = int(input('请输入排序模式序号: '))
mode_list=['eng_score','py_score','java_score','tot_score']
if mode_num in range(4):
mode_code=mode_list[mode_num]
asc_or_desc_bool=int(input('您选择升序排序或降序排序? 0/1: '))
if asc_or_desc_bool in [0,1]:
# lambda匿名函数 lambda 元素数据项: 函数
stu_info_list.sort(key=lambda item: int(item[mode_code]),reverse=asc_or_desc_bool)
stu_show_search(stu_info_list)
else:
print('排序选择模式2有误')
else:
print('排序选择模式1有误')
except BaseException as err:
print('排序操作异常: ',err)
else:
print('没有创建该文件 学生数据为空')
def stu_total():
if os.path.exists(file_name):
with open(file_name,'r',encoding='utf-8') as rfile:
student_saves=rfile.readlines()
tot_num=len(student_saves)
print(f'学生总人数为:{tot_num}')
else:
print('没有学生记录 学生总人数: 0')
def stu_show():
if os.path.exists(file_name):
with open(file_name,'r',encoding='utf-8') as rfile:
student_saves=rfile.readlines()
tot_num=len(student_saves)
print('-------------------------------')
print(format_title.format('ID', '姓名', '英语成绩', 'Python成绩', 'Java成绩', '总成绩'))
for item in student_saves:
stu_info_dic=dict(eval(item))
print(format_title.format(stu_info_dic.get('id'), stu_info_dic.get('name'), stu_info_dic.get('eng_score'), stu_info_dic.get('py_score'),
stu_info_dic.get('java_score'), stu_info_dic.get('tot_score')))
print('-------------------------------')
print(f'学生总人数为:{tot_num}')
else:
print('没有学生记录 学生总数为0')
input('输入任意字符返回继续: ')
def main():
while True:
menu()
try:
choice=int(input('请选择操作序号:'))
if choice in range(8):
if choice == 0:
answer=input('您确定要退出系统么? Y/N: ').upper()
if answer=='Y':
break
elif choice == 1:
stu_insert() # 录入学生信息
elif choice == 2:
stu_search() # 查找学生信息
elif choice == 3:
stu_delete() # 删除学生信息
elif choice == 4:
stu_modify() # 修改学生信息
elif choice == 5:
stu_sort() # 对学生进行排序
elif choice == 6:
stu_total() # 统计学生人数
elif choice == 7:
stu_show() # 显示所有学生信息
else:
print('请输入有效序列!')
except BaseException as err:
print('异常操作:',err)
time.sleep(1)
print('谢谢您的使用')
if __name__ == '__main__':
if not os.path.exists(stu_id_file):
with open(stu_id_file,'w',encoding='utf-8') as wfile:
wfile.write('1001')
main()
python 录入消息 python信息录入查询
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。

提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
python查询汉字函数
python查询汉字函数
数据集 机器学习 特征提取