文章目录

  • 1、需求分析
  • 2、系统设计
  • 3、系统开发必备
  • 4、主函数设计
  • 5、学生信息维护模块设计
    • 录入学生信息功能
    • 删除学生信息功能
    • 修改学生信息功能
  • 6、查询/统计模块设计
    • 查询设计模块
      • 查询信息
    • 统计学生总人数功能
    • 显示所有学生信息
  • 7、排序模块设计
  • 最终代码,改了很多bug之后的代码
  • 8、项目打包

11111111111

1、需求分析


2、系统设计


3、系统开发必备


re正则表达式

4、主函数设计



def main():while True:menum()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:continueelif choice==1:insert()#录入学生信息elif choice==2:search()elif choice==3:delete()elif choice==4:modify()elif choice==5:sort()elif choice==6:tital()elif choice==7:show
def menum():print('====================学生管理系统==========================')print('----------------------功能菜单------------------------------------')print('--------------------\t\t\t\t\t\t\t\t\t1、录入学生信息------------------------')print('----------------\t\t\t\t\t\t\t\t\t2、查找学生信息----------------')print('----------------\t\t\t\t\t\t\t\t\t3、删除学生信息----------------')print('----------------\t\t\t\t\t\t\t\t\t4、修改学生信息----------------')print('----------------\t\t\t\t\t\t\t\t\t5、排序----------------')print('----------------\t\t\t\t\t\t\t\t\t6、统计学生总人数----------------')print('----------------\t\t\t\t\t\t\t\t\t7、显示所有学生信息----------------')print('----------------\t\t\t\t\t\t\t\t\t0、退出系统----------------')
def insert():pass
def search():pass
def delete():pass
def modify():pass
def sort():pass
def total():pass
def show():passif __name__ == '__main__':main()

这时运行结果

====================学生管理系统==========================
----------------------功能菜单------------------------------------
--------------------                                    1、录入学生信息------------------------
----------------                                    2、查找学生信息----------------
----------------                                    3、删除学生信息----------------
----------------                                    4、修改学生信息----------------
----------------                                    5、排序----------------
----------------                                    6、统计学生总人数----------------
----------------                                    7、显示所有学生信息----------------
----------------                                    0、退出系统----------------
请选择1
====================学生管理系统==========================
----------------------功能菜单------------------------------------
--------------------                                    1、录入学生信息------------------------
----------------                                    2、查找学生信息----------------
----------------                                    3、删除学生信息----------------
----------------                                    4、修改学生信息----------------
----------------                                    5、排序----------------
----------------                                    6、统计学生总人数----------------
----------------                                    7、显示所有学生信息----------------
----------------                                    0、退出系统----------------
请选择2
====================学生管理系统==========================
----------------------功能菜单------------------------------------
--------------------                                    1、录入学生信息------------------------
----------------                                    2、查找学生信息----------------
----------------                                    3、删除学生信息----------------
----------------                                    4、修改学生信息----------------
----------------                                    5、排序----------------
----------------                                    6、统计学生总人数----------------
----------------                                    7、显示所有学生信息----------------
----------------                                    0、退出系统----------------
请选择0
您确定要退出系统吗?y/ny
谢谢您的使用!!!

5、学生信息维护模块设计

录入学生信息功能




py格式

filename='student.txt'
def main():while True:menum()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:continueelif choice==1:insert()#录入学生信息elif choice==2:search()elif choice==3:delete()elif choice==4:modify()elif choice==5:sort()elif choice==6:tital()elif choice==7:show
def menum():print('====================学生管理系统==========================')print('----------------------功能菜单------------------------------------')print('--------------------\t\t\t\t\t\t\t\t\t1、录入学生信息------------------------')print('----------------\t\t\t\t\t\t\t\t\t2、查找学生信息----------------')print('----------------\t\t\t\t\t\t\t\t\t3、删除学生信息----------------')print('----------------\t\t\t\t\t\t\t\t\t4、修改学生信息----------------')print('----------------\t\t\t\t\t\t\t\t\t5、排序----------------')print('----------------\t\t\t\t\t\t\t\t\t6、统计学生总人数----------------')print('----------------\t\t\t\t\t\t\t\t\t7、显示所有学生信息----------------')print('----------------\t\t\t\t\t\t\t\t\t0、退出系统----------------')print('----------------------------------------------------------------')
def insert():student_list=[]while True:id=input('请输入ID(如2002):')if not id:breakname=input('请输入姓名')if not name:breaktry:english=int(input('请输入英语成绩:'))python=int(input('请输入python成绩:'))java=int(input('请输入Java成绩:'))except:print('输入无效,不是整数类型,请重新输入')continue#将录入的学生信息保存到字典当中student={'id':id,'name':name,'english':english,'python':python,'java':java}#将学生信息添加到列表中student_list.append(student)answer=input('是否继续添加?y/n \n') #\n换行if answer=='y':continueelse:break#调用save()函数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')passfor item in lst:stu_txt.write(str(item)+'\n')stu_txt.close()def search():pass
def delete():pass
def modify():pass
def sort():pass
def total():pass
def show():passif __name__ == '__main__':main()

运行区

哈哈哈,不复制粘贴了,就按照指示输入就行

然后就会自动出现txt

删除学生信息功能




判断磁盘:先import os
实现效果

代码如下

import os
filename='student.txt'
def main():while True:menum()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:continueelif choice==1:insert()#录入学生信息elif choice==2:search()elif choice==3:delete()elif choice==4:modify()elif choice==5:sort()elif choice==6:tital()elif choice==7:show
def menum():print('====================学生管理系统==========================')print('----------------------功能菜单------------------------------------')print('--------------------\t\t\t\t\t\t\t\t\t1、录入学生信息------------------------')print('----------------\t\t\t\t\t\t\t\t\t2、查找学生信息----------------')print('----------------\t\t\t\t\t\t\t\t\t3、删除学生信息----------------')print('----------------\t\t\t\t\t\t\t\t\t4、修改学生信息----------------')print('----------------\t\t\t\t\t\t\t\t\t5、排序----------------')print('----------------\t\t\t\t\t\t\t\t\t6、统计学生总人数----------------')print('----------------\t\t\t\t\t\t\t\t\t7、显示所有学生信息----------------')print('----------------\t\t\t\t\t\t\t\t\t0、退出系统----------------')print('----------------------------------------------------------------')
def insert():student_list=[]while True:id=input('请输入ID(如2002):')if not id:breakname=input('请输入姓名')if not name:breaktry:english=int(input('请输入英语成绩:'))python=int(input('请输入python成绩:'))java=int(input('请输入Java成绩:'))except:print('输入无效,不是整数类型,请重新输入')continue#将录入的学生信息保存到字典当中student={'id':id,'name':name,'english':english,'python':python,'java':java}#将学生信息添加到列表中student_list.append(student)answer=input('是否继续添加?y/n \n') #\n换行if answer=='y':continueelse:break#调用save()函数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')passfor item in lst:stu_txt.write(str(item)+'\n')stu_txt.close()def search():pass
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')#\n换行else:flag=Trueif flag:print(f'id为{student_id}的学生信息已被删除')else:print(f'没有找到ID为{student_id}的学生信息')else:print('无学生信息')breakshow()#删除之后重新显示所有学生信息answer=input('是否继续删除?y/n\n')if answer=='y':continueelse:break
def modify():pass
def sort():pass
def total():pass
def show():passif __name__ == '__main__':main()
请选择3
请输入要删除的学生的ID:2002
id为2002的学生信息已被删除
是否继续删除?y/n
n

修改学生信息功能

业务流程

import os
filename='student.txt'
def main():while True:menum()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:continueelif choice==1:insert()#录入学生信息elif choice==2:search()elif choice==3:delete()elif choice==4:modify()elif choice==5:sort()elif choice==6:tital()elif choice==7:show
def menum():print('====================学生管理系统==========================')print('----------------------功能菜单------------------------------------')print('--------------------\t\t\t\t\t\t\t\t\t1、录入学生信息------------------------')print('----------------\t\t\t\t\t\t\t\t\t2、查找学生信息----------------')print('----------------\t\t\t\t\t\t\t\t\t3、删除学生信息----------------')print('----------------\t\t\t\t\t\t\t\t\t4、修改学生信息----------------')print('----------------\t\t\t\t\t\t\t\t\t5、排序----------------')print('----------------\t\t\t\t\t\t\t\t\t6、统计学生总人数----------------')print('----------------\t\t\t\t\t\t\t\t\t7、显示所有学生信息----------------')print('----------------\t\t\t\t\t\t\t\t\t0、退出系统----------------')print('----------------------------------------------------------------')
def insert():student_list=[]while True:id=input('请输入ID(如2002):')if not id:breakname=input('请输入姓名')if not name:breaktry:english=int(input('请输入英语成绩:'))python=int(input('请输入python成绩:'))java=int(input('请输入Java成绩:'))except:print('输入无效,不是整数类型,请重新输入')continue#将录入的学生信息保存到字典当中student={'id':id,'name':name,'english':english,'python':python,'java':java}#将学生信息添加到列表中student_list.append(student)answer=input('是否继续添加?y/n \n') #\n换行if answer=='y':continueelse:break#调用save()函数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')passfor item in lst:stu_txt.write(str(item)+'\n')stu_txt.close()def search():pass
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')#\n换行else:flag=Trueif flag:print(f'id为{student_id}的学生信息已被删除')else:print(f'没有找到ID为{student_id}的学生信息')else:print('无学生信息')breakshow()#删除之后重新显示所有学生信息answer=input('是否继续删除?y/n\n')if answer=='y':continueelse:break
def modify():show()if os.path.exists(filename):with open(filename,'r',encoding='utf-8') as rfile:student_old=rfile.readlines()else:returnstudent_id=input('请输入要修改的学员的ID:')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:breakwfile.write(str(d)+'\n')print('修改成功')else:wfile.write(str(d)+'\n')answer=input('是否继续修改其他学生信息?y/n\n')if answer=='y':modify()
def sort():pass
def total():pass
def show():passif __name__ == '__main__':main()

6、查询/统计模块设计

查询设计模块




想想eval是干啥的,查询的成功实现,一直在改代码中,都是小错误惹的祸

import os
filename='student.txt'
def main():while True:menum()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:continueelif choice==1:insert()#录入学生信息elif choice==2:search()elif choice==3:delete()elif choice==4:modify()elif choice==5:sort()elif choice==6:tital()elif choice==7:show
def menum():print('====================学生管理系统==========================')print('----------------------功能菜单------------------------------------')print('--------------------\t\t\t\t\t\t\t\t\t1、录入学生信息------------------------')print('----------------\t\t\t\t\t\t\t\t\t2、查找学生信息----------------')print('----------------\t\t\t\t\t\t\t\t\t3、删除学生信息----------------')print('----------------\t\t\t\t\t\t\t\t\t4、修改学生信息----------------')print('----------------\t\t\t\t\t\t\t\t\t5、排序----------------')print('----------------\t\t\t\t\t\t\t\t\t6、统计学生总人数----------------')print('----------------\t\t\t\t\t\t\t\t\t7、显示所有学生信息----------------')print('----------------\t\t\t\t\t\t\t\t\t0、退出系统----------------')print('----------------------------------------------------------------')
def insert():student_list=[]while True:id=input('请输入ID(如2002):')if not id:breakname=input('请输入姓名')if not name:breaktry:english=int(input('请输入英语成绩:'))python=int(input('请输入python成绩:'))java=int(input('请输入Java成绩:'))except:print('输入无效,不是整数类型,请重新输入')continue#将录入的学生信息保存到字典当中student={'id':id,'name':name,'english':english,'python':python,'java':java}#将学生信息添加到列表中student_list.append(student)answer=input('是否继续添加?y/n \n') #\n换行if answer=='y':continueelse:break#调用save()函数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')passfor 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('按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_query.append(d)elif name!='':if d['name']==name:student_query.append(d)#显示查询结果show_student(student_query)#清空列表student_query.clear()answer=input('是否要继续查询?y/n\n')if answer=='y':continueelse:breakelse: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}'print(format_title.format('ID','姓名','英语成绩','python成绩','java成绩','总成绩'))#定义内容的显示格式format_data='{:^6}\t{:^12}\t{:^8}\t{:^10}\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'))))
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')#\n换行else:flag=Trueif flag:print(f'id为{student_id}的学生信息已被删除')else:print(f'没有找到ID为{student_id}的学生信息')else:print('无学生信息')breakshow()#删除之后重新显示所有学生信息answer=input('是否继续删除?y/n\n')if answer=='y':continueelse:break
def modify():show()if os.path.exists(filename):with open(filename,'r',encoding='utf-8') as rfile:student_old=rfile.readlines()else:returnstudent_id=input('请输入要修改的学员的ID:')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:breakwfile.write(str(d)+'\n')print('修改成功')else:wfile.write(str(d)+'\n')answer=input('是否继续修改其他学生信息?y/n\n')if answer=='y':modify()
def sort():pass
def total():pass
def show():passif __name__ == '__main__':main()

查询信息

统计学生总人数功能



import os
filename='student.txt'
def main():while True:menum()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:continueelif 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 menum():print('====================学生管理系统==========================')print('----------------------功能菜单------------------------------------')print('--------------------\t\t\t\t\t\t\t\t\t1、录入学生信息------------------------')print('----------------\t\t\t\t\t\t\t\t\t2、查找学生信息----------------')print('----------------\t\t\t\t\t\t\t\t\t3、删除学生信息----------------')print('----------------\t\t\t\t\t\t\t\t\t4、修改学生信息----------------')print('----------------\t\t\t\t\t\t\t\t\t5、排序----------------')print('----------------\t\t\t\t\t\t\t\t\t6、统计学生总人数----------------')print('----------------\t\t\t\t\t\t\t\t\t7、显示所有学生信息----------------')print('----------------\t\t\t\t\t\t\t\t\t0、退出系统----------------')print('----------------------------------------------------------------')
def insert():student_list=[]while True:id=input('请输入ID(如2002):')if not id:breakname=input('请输入姓名')if not name:breaktry:english=int(input('请输入英语成绩:'))python=int(input('请输入python成绩:'))java=int(input('请输入Java成绩:'))except:print('输入无效,不是整数类型,请重新输入')continue#将录入的学生信息保存到字典当中student={'id':id,'name':name,'english':english,'python':python,'java':java}#将学生信息添加到列表中student_list.append(student)answer=input('是否继续添加?y/n \n') #\n换行if answer=='y':continueelse:break#调用save()函数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')passfor 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('按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_query.append(d)elif name!='':if d['name']==name:student_query.append(d)#显示查询结果show_student(student_query)#清空列表student_query.clear()answer=input('是否要继续查询?y/n\n')if answer=='y':continueelse:breakelse: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}'print(format_title.format('ID','姓名','英语成绩','python成绩','java成绩','总成绩'))#定义内容的显示格式format_data='{:^6}\t{:^12}\t{:^8}\t{:^10}\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'))))
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')#\n换行else:flag=Trueif flag:print(f'id为{student_id}的学生信息已被删除')else:print(f'没有找到ID为{student_id}的学生信息')else:print('无学生信息')breakshow()#删除之后重新显示所有学生信息answer=input('是否继续删除?y/n\n')if answer=='y':continueelse:break
def modify():show()if os.path.exists(filename):with open(filename,'r',encoding='utf-8') as rfile:student_old=rfile.readlines()else:returnstudent_id=input('请输入要修改的学员的ID:')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:breakwfile.write(str(d)+'\n')print('修改成功')else:wfile.write(str(d)+'\n')answer=input('是否继续修改其他学生信息?y/n\n')if answer=='y':modify()
def sort():pass
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():passif __name__ == '__main__':main()

实现效果

====================学生管理系统==========================
----------------------功能菜单------------------------------------
--------------------                                    1、录入学生信息------------------------
----------------                                    2、查找学生信息----------------
----------------                                    3、删除学生信息----------------
----------------                                    4、修改学生信息----------------
----------------                                    5、排序----------------
----------------                                    6、统计学生总人数----------------
----------------                                    7、显示所有学生信息----------------
----------------                                    0、退出系统----------------
----------------------------------------------------------------
请选择6
一共有1名学生
====================学生管理系统==========================
----------------------功能菜单------------------------------------
--------------------                                    1、录入学生信息------------------------
----------------                                    2、查找学生信息----------------
----------------                                    3、删除学生信息----------------
----------------                                    4、修改学生信息----------------
----------------                                    5、排序----------------
----------------                                    6、统计学生总人数----------------
----------------                                    7、显示所有学生信息----------------
----------------                                    0、退出系统----------------
----------------------------------------------------------------
请选择0
您确定要退出系统吗?y/ny
谢谢您的使用!!!Process finished with exit code 0

显示所有学生信息



实现效果,我好奇我那个总成绩怎么没有写出来,

import os
filename='student.txt'
def main():while True:menum()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:continueelif 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 menum():print('===================================学生管理系统==========================')print('------------------------------------功能菜单------------------------------------')print('\t\t\t\t\t\t\t\t\t1、录入学生信息')print('\t\t\t\t\t\t\t\t\t2、查找学生信息')print('\t\t\t\t\t\t\t\t\t3、删除学生信息')print('\t\t\t\t\t\t\t\t\t4、修改学生信息')print('\t\t\t\t\t\t\t\t\t5、排序')print('\t\t\t\t\t\t\t\t\t6、统计学生总人数')print('\t\t\t\t\t\t\t\t\t7、显示所有学生信息')print('\t\t\t\t\t\t\t\t\t0、退出系统')print('----------------------------------------------------------------')
def insert():student_list=[]while True:id=input('请输入ID(如2002):')if not id:breakname=input('请输入姓名')if not name:breaktry:english=int(input('请输入英语成绩:'))python=int(input('请输入python成绩:'))java=int(input('请输入Java成绩:'))except:print('输入无效,不是整数类型,请重新输入')continue#将录入的学生信息保存到字典当中student={'id':id,'name':name,'english':english,'python':python,'java':java}#将学生信息添加到列表中student_list.append(student)answer=input('是否继续添加?y/n \n') #\n换行if answer=='y':continueelse:break#调用save()函数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')passfor 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('按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_query.append(d)elif name!='':if d['name']==name:student_query.append(d)#显示查询结果show_student(student_query)#清空列表student_query.clear()answer=input('是否要继续查询?y/n\n')if answer=='y':continueelse:breakelse: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}'print(format_title.format('ID','姓名','英语成绩','python成绩','java成绩','总成绩'))#定义内容的显示格式format_data='{:^6}\t{:^12}\t{:^8}\t{:^10}\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'))))
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')#\n换行else:flag=Trueif flag:print(f'id为{student_id}的学生信息已被删除')else:print(f'没有找到ID为{student_id}的学生信息')else:print('无学生信息')breakshow()#删除之后重新显示所有学生信息answer=input('是否继续删除?y/n\n')if answer=='y':continueelse:break
def modify():show()if os.path.exists(filename):with open(filename,'r',encoding='utf-8') as rfile:student_old=rfile.readlines()else:returnstudent_id=input('请输入要修改的学员的ID:')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:breakwfile.write(str(d)+'\n')print('修改成功')else:wfile.write(str(d)+'\n')answer=input('是否继续修改其他学生信息?y/n\n')if answer=='y':modify()
def sort():pass
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('暂未保存过数据!')if __name__ == '__main__':main()

7、排序模块设计

最后一个模块了


import os
filename='student.txt'
def main():while True:menum()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:continueelif 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 menum():print('===================================学生管理系统==========================')print('------------------------------------功能菜单------------------------------------')print('\t\t\t\t\t\t\t\t\t1、录入学生信息')print('\t\t\t\t\t\t\t\t\t2、查找学生信息')print('\t\t\t\t\t\t\t\t\t3、删除学生信息')print('\t\t\t\t\t\t\t\t\t4、修改学生信息')print('\t\t\t\t\t\t\t\t\t5、排序')print('\t\t\t\t\t\t\t\t\t6、统计学生总人数')print('\t\t\t\t\t\t\t\t\t7、显示所有学生信息')print('\t\t\t\t\t\t\t\t\t0、退出系统')print('----------------------------------------------------------------')
def insert():student_list=[]while True:id=input('请输入ID(如2002):')if not id:breakname=input('请输入姓名')if not name:breaktry:english=int(input('请输入英语成绩:'))python=int(input('请输入python成绩:'))java=int(input('请输入Java成绩:'))except:print('输入无效,不是整数类型,请重新输入')continue#将录入的学生信息保存到字典当中student={'id':id,'name':name,'english':english,'python':python,'java':java}#将学生信息添加到列表中student_list.append(student)answer=input('是否继续添加?y/n \n') #\n换行if answer=='y':continueelse:break#调用save()函数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')passfor 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('按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_query.append(d)elif name!='':if d['name']==name:student_query.append(d)#显示查询结果show_student(student_query)#清空列表student_query.clear()answer=input('是否要继续查询?y/n\n')if answer=='y':continueelse:breakelse: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}'print(format_title.format('ID','姓名','英语成绩','python成绩','java成绩','总成绩'))#定义内容的显示格式format_data='{:^6}\t{:^12}\t{:^8}\t{:^10}\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'))))
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')#\n换行else:flag=Trueif flag:print(f'id为{student_id}的学生信息已被删除')else:print(f'没有找到ID为{student_id}的学生信息')else:print('无学生信息')breakshow()#删除之后重新显示所有学生信息answer=input('是否继续删除?y/n\n')if answer=='y':continueelse:break
def modify():show()if os.path.exists(filename):with open(filename,'r',encoding='utf-8') as rfile:student_old=rfile.readlines()else:returnstudent_id=input('请输入要修改的学员的ID:')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:breakwfile.write(str(d)+'\n')print('修改成功')else:wfile.write(str(d)+'\n')answer=input('是否继续修改其他学生信息?y/n\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:returnasc_or_desc=input('请选择(0.升序 1.降序):')if asc_or_desc=='0':asc_or_desc_bool=Falseelif asc_or_desc=='1':asc_or_desc=Trueelse:print('您的输入有误,请重新输入')sort()mode=input('请选择排序方式(1.按英语成绩排序2.按python成绩排序3.按Java成绩排序0.按总成绩排序):')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=='0':student_new.sort(key=lambda x :int(x['english'])+int(x['python'])+int(x['python']),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_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('暂未保存过数据!')if __name__ == '__main__':main()

数据测试

===================================学生管理系统==========================
------------------------------------功能菜单------------------------------------1、录入学生信息2、查找学生信息3、删除学生信息4、修改学生信息5、排序6、统计学生总人数7、显示所有学生信息0、退出系统
----------------------------------------------------------------
请选择1
请输入ID(如2002):2003
请输入姓名HUAHUA
请输入英语成绩:666
请输入python成绩:999
请输入Java成绩:888
是否继续添加?y/n
N
学生信息录入完毕!!!
===================================学生管理系统==========================
------------------------------------功能菜单------------------------------------1、录入学生信息2、查找学生信息3、删除学生信息4、修改学生信息5、排序6、统计学生总人数7、显示所有学生信息0、退出系统
----------------------------------------------------------------
请选择5ID           姓名           英语成绩       python成绩     java成绩      总成绩   2002         mm            99           99         99   2003       HUAHUA         666          999        888
请选择(0.升序 1.降序):0
请选择排序方式(1.按英语成绩排序2.按python成绩排序3.按Java成绩排序0.按总成绩排序):1ID           姓名           英语成绩       python成绩     java成绩      总成绩   2002         mm            99           99         99   2003       HUAHUA         666          999        888

最终代码,改了很多bug之后的代码

import os
filename='student.txt'
def main():while True:menum()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:continueelif 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 menum():print('===================================学生管理系统==========================')print('------------------------------------功能菜单------------------------------------')print('\t\t\t\t\t\t\t\t\t1、录入学生信息')print('\t\t\t\t\t\t\t\t\t2、查找学生信息')print('\t\t\t\t\t\t\t\t\t3、删除学生信息')print('\t\t\t\t\t\t\t\t\t4、修改学生信息')print('\t\t\t\t\t\t\t\t\t5、排序')print('\t\t\t\t\t\t\t\t\t6、统计学生总人数')print('\t\t\t\t\t\t\t\t\t7、显示所有学生信息')print('\t\t\t\t\t\t\t\t\t0、退出系统')print('----------------------------------------------------------------')
def insert():student_list=[]while True:id=input('请输入ID(如2002):')if not id:breakname=input('请输入姓名')if not name:breaktry:english=int(input('请输入英语成绩:'))python=int(input('请输入python成绩:'))java=int(input('请输入Java成绩:'))except:print('输入无效,不是整数类型,请重新输入')continue#将录入的学生信息保存到字典当中student={'id':id,'name':name,'english':english,'python':python,'java':java}#将学生信息添加到列表中student_list.append(student)answer=input('是否继续添加?y/n \n') #\n换行if answer=='y':continueelse:break#调用save()函数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('按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_query.append(d)elif name!='':if d['name']==name:student_query.append(d)#显示查询结果show_student(student_query)#清空列表student_query.clear()answer=input('是否要继续查询?y/n\n')if answer=='y':continueelse:breakelse: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}'print(format_title.format('ID','姓名','英语成绩','python成绩','java成绩','总成绩'))#定义内容的显示格式format_data='{:^6}\t{:^12}\t{:^8}\t{:^10}\t{:^10}\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'))))
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')#\n换行else:flag=Trueif flag:print(f'id为{student_id}的学生信息已被删除')else:print(f'没有找到ID为{student_id}的学生信息')else:print('无学生信息')breakshow()#删除之后重新显示所有学生信息answer=input('是否继续删除?y/n\n')if answer=='y':continueelse:break
def modify():show()if os.path.exists(filename):with open(filename,'r',encoding='utf-8') as rfile:student_old=rfile.readlines()else:returnstudent_id=input('请输入要修改的学员的ID:')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:breakwfile.write(str(d)+'\n')print('修改成功')else:wfile.write(str(d)+'\n')answer=input('是否继续修改其他学生信息?y/n\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:returnasc_or_desc=input('请选择(0.升序 1.降序):')if asc_or_desc=='0':asc_or_desc_bool=Falseelif asc_or_desc=='1':asc_or_desc=Trueelse:print('您的输入有误,请重新输入')sort()mode=input('请选择排序方式(1.按英语成绩排序2.按python成绩排序3.按Java成绩排序0.按总成绩排序):')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=='0':student_new.sort(key=lambda x :int(x['english'])+int(x['python'])+int(x['python']),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_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('暂未保存过数据!')if __name__ == '__main__':main()

8、项目打包


windows+r
之后cmd

16python学生信息管理系统相关推荐

  1. 【VB】学生信息管理系统5——数据库代码

    这次学生信息管理系统在代码的理解过程中遇到了一些问题.总结如下: 1. sql server的安装过程各个步骤的意思.在安装SQL Server的时候按照网上的步骤,我觉得这个需要学完整个数据库再返回 ...

  2. 【VB】学生信息管理系统4——数据库的发展

    由于连接数据的时候出现了很多不懂得问题,为什么要连接,它是怎么连接的,查着查着,就越看越多.又不舍得就这么放过这些问题,所以就耐心看看究竟是怎么回事! 1.自从出现数据库,人们渴望用数据和应用程序做交 ...

  3. 【VB】学生信息管理系统3——连接数据库的前提

    在窗体设计和编写程序代码后,需要进行数据库的连接. 大概要做的:下载安装数据库--配置数据源ODBC--测试连接数据库--进行数据库中内容的添加. 关键是这些我都不会,这才是重点! 在学习数据库的过程 ...

  4. 【VB】学生信息管理系统2——窗体设计

    这次学生系统是照着书敲的,先敲完然后开始调试!中途遇到了很多问题,查了很多,这里不容易系统的总结!所以就针对各个问题,各个击破! 问题一:VB 6.0中,状态栏控件(sbstatusbar):右击选项 ...

  5. 【VB】学生信息管理系统1——系统设计怎样开始?

    历时两周完成用VB完成的学生信息管理系统.从刚开始只会敲好玩的小程序到现在完整的做出一个像样的系统.自己的编程思维进行了很大的跨越. 这次的学生信息管理系统让我从整体的角度看到了一个系统设计的过程. ...

  6. [置顶]完美简版学生信息管理系统(附有源码)管理系统

    简版学生信息管理系统 目前为止找到的简版系统中最新.最全的java类管理系统 点击进入简版系统 如果无法直接连接,请进入: https://blog.csdn.net/weixin_43419816/ ...

  7. c语言饭卡管理系统链表文件,C语言《学生信息管理系统》链表+文件操作

    今天带来的是一个链表版本的<学生信息管理系统>,功能包括:添加.显示.查询.删除.保存.读取,等功能模块,链表是C语言的进阶内容,希望大家好好学习,这里的代码可能会有一些瑕疵,希望大家提供 ...

  8. Python系列教程之学生信息管理系统

    1.上传图片/文件等资源 有时候需要添加一些附件,例如,新生刚入学,大家相互之间还不熟悉,希望能通过照片来加深印象,并且方便教学管理. 首先,对demo/urls.py文件进行改造,给urlpatte ...

  9. 教你如何运用python实现学生信息管理系统

    这篇文章主要为大家详细介绍了使用python实现学生信息管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 本文实例为大家分享了python实现学生信息管理系统的具 ...

最新文章

  1. 25.计算机和计算器的区别
  2. android word转html标签,如何将Word转换为网页html格式的方法(附代码清理方法)
  3. 混合模式程序集是针对“v2.0.50727”版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行时中加载该程序集...
  4. 火狐查cookie_Firefox 65默认会阻止跟踪Cookie
  5. android彻底关闭应用程序方法
  6. Numpy数据分析数值范围调整、计算
  7. 在Linux环境下搭建CCID测试环境
  8. 数据血缘关系图 工具_MCGS组态软件实现数据报表
  9. XAMPP最详细的安装及使用教程
  10. 抖音怎么上热门?这样发视频点赞过万!
  11. Vivado FIFO IP核设置
  12. 哔哩哔哩下载视频,教程,下载b站视频来就对了,下载b站 视频电脑 pc端
  13. SIM卡检测信号故障分析
  14. mongodb的java驱动_MongoDB的java版本驱动
  15. python禅语_42:对象、类、以及从属关系
  16. NANK南卡A2主动降噪耳机测评:长续航40dB深度降噪
  17. Linux中的TTY是什么意思
  18. 短路与()、短路或(||)和逻辑与()、逻辑或(|)的区别
  19. workflow、BPM及EAI的区别
  20. 什么是中台?企业为什么要建中台?从数据中台到AI中台。

热门文章

  1. 分享和推广产品是成功淘宝客的技巧
  2. Windows Update自动更新
  3. 被风吹过的冬天 ——2
  4. 压缩图片(java)
  5. ActiveX控件打包cab时INF文件的编写[转]
  6. YMIR2.0易用手册---视频教程
  7. 苏宁Java开发面试
  8. 最小自然数原理及其证明过程
  9. hive 转拼音udf_<Zhuuu_ZZ>HIVE(十二)UDF自定义函数
  10. 《程序员的自我修养》学习心得——第七章 动态链接※※※