学生管理系统的所有代码以及注释内容:
源代码:
https://download.csdn.net/download/wtt234/59254564
源代码:(193条消息) Studen_managerSystem.zip-互联网文档类资源-CSDN文库https://download.csdn.net/download/wtt234/59254564
"""
学生信息管理系统:
学生管理系统涉及7个模块
1.录入学生信息模块
2.查找学生信息模块
3.删除学生信息模块
4.修改学生信息模块
5.学生成绩排名模块
6.统计学生总人数模块
7.显示全部学生信息模块
-------------
学生信息维护:
录入学生信息
删除学生信息
修改学生信息
查询/统计
按照学生姓名查找
按照学生ID查找
查询并显示所有学生信息
统计学生总人数
排序
根据英语成绩进行排序
python成绩排序
英语成绩排序
java成绩paixu
总成绩排序
降序
根据英语成绩进行排序
python成绩排序
英语成绩排序
java成绩paixu
总成绩排序
"""
# filename="student.txt"
# filename="student.db"
#把数据存放到data目录下的办法
cwd=os.getcwd()
# pmabspath=os.path.abspath(cwd)
filedb="student.db"
filename="{}data{}".format(cwd,filedb)
# print(pmabspath)
# 保存学生数据信息到本地的文件名称
import os
#filename="student.txt"
# filename="student.db"
# 录入学生信息
# 录入学生模块,从控制台录入学生信息,并且把它们保存到硬盘文件汇总
# 保存文件格式:{'id':'1001','name':张三",‘english’:‘81’,‘python’:‘99’,‘java’:‘100’}
# {'id':'1001','name':张三",‘english’:‘81’,‘python’:‘99’,‘java’:‘100’}
# save(student)函数,用于将学生信息保存到文件
def insert():
student_list=[]
while True:
id=input("请输出ID(如1009):")
if not id: #id中没有输入数字,直接输入空格或者回车后,退出
break
name=input("请输入姓名:")
if not name:
break
# 如果输入的成绩存在错误的话,重新输入
try:
english=int(input("请输入英语成绩:"))
python=int(input("请输入python成绩:"))
java=int(input("请输入java成绩:"))
except:
print("输入的成绩存在错误,不是整数类型,请重新输入")
continue
#将录入的学生信息保存到字典中
studentoneDict={'id':id,'name':name,'english':english,'python':python,'java':java}
#将学生信息添加到列表中
student_list.append(studentoneDict)
answer=input("是否继续添加?y/nn")
if answer=='y':
continue
else:
break
# 调用保存到本地的函数save,进行本地保存
save(student_list)
print("学生信息录入完毕")
# 如果有文件‘filename’,就是直接以‘a'的追加模式添加数据,如果一开始,没有文件就是
# 执行下面’w‘模式的文件,新创建文件
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') # 转换字符形式存入,后续取出的时候,采用eval函数
stu_txt.close()
# 查询函数,涉及两个函数
# search
# 定义显示查询结果的函数 show_student(query_student)
#
def search():
student_queryn=[]
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_queryn.append(d) #把查找到的id相等添加到列表中
elif name!="":
if d['name']==name:
student_queryn.append(d)
# 显示查询结果
show_student(student_queryn)
#清空列表
student_queryn.clear()
answer=input("是否要继续查询?y/nn")
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}'
print(format_title.format('ID','姓名','英语成绩','python成绩','java成绩','总成绩'))
# 定义内容显示格式
format_data = '{:^6}t{:^12}t{:^8}t{:^8}t{:^8}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'))
))
# 从控制台录入学生id,到磁盘文件中找到对应的学生信息,删除
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)) #将文件中的字符串转换成字典
# 输入的编号’student_id‘与遍历的字典中的字典的id进行比较
if d['id']!=student_id:
wfile.write(str(d)+"n") #不是要删除的字典项,就是还是保存到文件中,将一条学生信息写入文件
else:
# 这个相反就是,找到了’d['id']=student_id‘的项,也就是要删除的项
flag=True #先做下标记,一会下面统计进行处理
if flag:
print(f'id为{student_id}的学生信息已经被删除')
# 为什么提示信息被删除,也就是d['id']=student_id‘的信息,
# 我们没有进行处理,也没有保存到文件中,所以可以间接的说是删除了
else:
print(f'没有找到id为{student_id}的学生信息')
else:
print("无学生信息")
break
show() # 删除之后要重新显示所有学生信息,调用个函数。
answer=input('是否继续删除?y/nn')
if answer=='y':
continue
else:
break
#修改学生信息
# 编写主函数中调用的修改学生信息的函数modify()
# 调用了show()函数显示学生信息,该函数的功能将在后面完成
def modify():
show()
if os.path.exists(filename):
with open(filename,"r",encoding='utf-8') as rfile:
student_old=rfile.readlines()
else:
return #没有filename文件,就是结束
student_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['engilish']=input("请输入英语成绩:")
d['python']=input("请输入python成绩:")
d['java']=input("请输入java成绩:")
except:
print("您输入的有误,请重新输入!")
else:
break # try,excep,else..如果输入的内容没有报错,就是到else这里,结束修改程序
wfile.write(str(d)+'n')
print("修改成功")
else:
wfile.write(str(d)+"n")
answer=input("是否继续修改其他学生信息?y/nn")
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_bool = None
asc_or_desc=input("请选择(0.升序 1.降序):")
if asc_or_desc=='0':
asc_or_desc_bool=True
elif asc_or_desc=='1':
asc_or_desc_bool = False
else:
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['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("一共有{}名学生。".format(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("暂未保存数据信息!!!!")
def mainfun():
while True:
menu()
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 menu():
print("==============学生管理系统================")
print("---------------功能菜单-------------------")
print('tttttt1.录入学生信息')
print('tttttt2.查找学生信息')
print('tttttt3.删除学生信息')
print('tttttt4.修改学生信息')
print('tttttt5.排序')
print('tttttt6.统计学生总人数')
print('tttttt7.显示所有学生信息')
print('tttttt0.退出系统')
print("-----------------------------------------")
if __name__ == '__main__':
mainfun()



