• 学生成绩信息管理系统


    #_author:来童星
    #date:2020/4/17
    import re
    import os
    def menu():
    print(
    """
    |----------学生信息管理系统----------|
    |1.录入学生信息
    |2.查找学生信息
    |3.删除学生信息
    |4.修改学生信息
    |5.排序
    |6.统计学生总人数
    |7.显示所有学生信息
    |8.退出系统
    |-----------------------------------|
    |说明:通过数字或者↑↓来选择菜单
    """
    )
    def save(student):
    try:
    student_txt=open("student.txt","a")
    except Exception as e:
    student_txt=open("student.txt","w")
    for s in student:
    student_txt.write(str(s)+" ")
    student_txt.close()

    def insert():
    student_list=[]
    mark=True
    while mark:
    id=input("请输入ID(如:1001):")
    if not id:
    break
    name=input("请输入名字:")
    if not name:
    break
    try:
    english=int(input("请输入英语成绩:"))
    py=int(input("请输入python成绩:"))
    c=int(input("请输入C语言成绩:"))
    except:
    print('输入无效,不是整数类型,请重新输入')
    continue
    #将输入的学生信息保存到字典
    student={"id":id,"name":name,"english":english,"python":py,"C语言":c}
    student_list.append(student)
    inputcont=input("是否继续添加:(y/n)")
    if inputcont=="y":
    mark=True
    else:
    mark=False
    save(student_list)#将学生信息保存到文件
    print("学生信息录入完毕!")



    def show_student(query):
    if not query:
    print("@__无数据信息__@")
    return
    format_title="{:^6}{:^12} {:^8} {:^10} {:^10} {:^10}"
    print(format_title.format("ID","名字","英语成绩","python成绩","C语言成绩","总成绩"))

    format_data="{:^6}{:^12} {:^12} {:^12} {:^12} {:^12}"
    for info in query:
    print(format_data.format(info.get('id',0),info.get('name',0),str(info.get('english',0)),str(info.get('python',0)),str(info.get('C语言',0)),str(info.get('english',0)+info.get('py',0)+info.get('c',0)).center(12)))

    def search():
    mark=True
    student_query=[]
    while mark:
    id=""
    name=""
    if os.path.exists('student.txt'):
    mode=input("按ID查找输入1,按姓名查找输入2")
    if mode=='1':
    id=input("请输入学生ID")
    elif mode=="2":
    name=input("请输入学生姓名")
    else:
    print("你的输入有误,请重新输入")
    search()
    with open("student.txt","r") as rfile:
    student=rfile.readlines()
    for list in student:
    d=dict(eval(list))
    if id is not "":#判断是否按照id查询
    if d["id"]==id:
    student_query.append(d)
    elif name is not "":
    if d['name']==name:
    student_query.append(d)
    show_student(student_query)
    student_query.clear()#清空列表
    inputsearch=input("是否继续查找(y/n)")
    if inputsearch=="y":
    search()
    else:
    mark=False
                return
    else:
    print("暂未保存数据信息")
    return



    def delete():
    mark=True
    while mark:
    studentId=input("请输入需要删除的学生ID:")
    if studentId is not "":
    if os.path.exists("student.txt"):
    with open("student.txt","r") as rfile:
    stu_old_news=rfile.readlines()
    else:
    stu_old_news=[]
    flag_del=False
    if stu_old_news: #如果存在学生信息
    with open("student.txt","w") as wfile:
    d={}
    for list in stu_old_news:
    d=dict(eval(list))#字符串转字典
    if d["id"]!=studentId:
    wfile.write(str(d)+" ")
    else:
    flag_del=False #标记已经删除,前面已经都出来了,此处不做操作就代表删除
    if flag_del:
    print("ID为%s的学生信息已经删除"%studentId)
    else:
    print("没有找到ID为%s的学生信息"%studentId)
    else:
    print("无学生信息")
    break
    show()
    inputdel=input("是否继续删除:(y/n)")
    if inputdel=="y":
    delete()
    else:
    mark=False
    def modify():
    show()
    if os.path.exists("student.txt"):
    with open("student.txt","r") as rfile:
    stu_old_news=rfile.readlines()
    else:
    return
    studentId=input("请输入修改的学生ID:")
    with open("student.txt","w") as wfile:
    for s in stu_old_news:
    d=dict(eval(s))
    if d["id"]==studentId:
    print("找到了这名学生,可以修改他的信息")
    while True:
    try:
    d['name']=input("请输入名字:")
    d['english']=int(input("请输入英语成绩:"))
    d['python']=int(input("请输入python成绩:"))
    d['C语言']=int(input("请输入C语言成绩:"))
    except:
    print("你的输入有误,请重新输入")
    else:
    break

    student=str(d)
    wfile.write(student+" ") #将已经修改的信息写入到文件
    print("修改成功")
    else:
    wfile.write(student)#将未修改的信息写入到文件
    inputmod=input("是否继续修改其他学生信息?(y/n)")
    if inputmod=="y":
    modify()



    def sort():
    show()
    if os.path.exists("student.txt"):
    with open("student.txt","r") as rfile:
    student_old=rfile.readlines()
    student_news=[]
    for list in student_old:
    d=dict(eval(list))
    student_news.append(d)
    else:
    return
    ascORdesc=input("请选择:(0:升序;1:降序)")
    if ascORdesc=="0":
    ascORdescbool=False
    elif ascORdesc=="1":
    ascORdescbool=True
    else:
    print("您的输入有误,请重新输入")
    sort()
    mode=input("请选择排序方式:1按英语成绩排序;2按python成绩排序;3按C语言成绩排序;4.按总成绩排序")
    if mode=="1":
    student_news.sort(key=lambda x:x['english'],reverse=ascORdescbool)
    elif mode=="2":
    student_news.sort(key=lambda x:x['python'],reverse=ascORdescbool)
    elif mode=="3":
    student_news.sort(key=lambda x:x['C语言'],reverse=ascORdescbool)
    elif mode=="4":
    student_news.sort(key=lambda x:x['english']+x['python']+x['C语言'],reverse=ascORdescbool)
    else:
    print("您的输入有误,请重新输入")
    sort()
    show_student(student_news)



    def total():
    if os.path.exists("student.txt"):
    with open("student.txt","r") as rfile:
    student_old=rfile.readlines()
    if student_old:
    print("一共有 %s 名学生"%len(student_old))
    else:
    print("还没有录入学生信息")
    else:
    print("暂未保存数据信息")

    def show():
    student_news=[]
    if os.path.exists('student.txt'):
    with open("student.txt","r") as rfile:
    student_old=rfile.readlines()
    for list in student_old:
    student_news.append(eval(list)) #将找到的学生信息保存到字典中
    if student_news:
    show_student(student_news)

    else:
    print("暂未保存数据信息")


    def main():
    flag=True
    while(flag):
    menu()
    option=input("请选择:")
    option_str=re.sub("D","",option)
    if option in ["0","1","2","3","4","5","6","7"]:
    option_int=int(option_str)
    if option_int==0:
    print("你已经退出学生管理系统")
    elif option_int==1:
    insert()
    elif option_int==2:
    search()
    elif option_int==3:
    delete()
    elif option_int==4:
    modify()
    elif option_int==5:
    sort()
    elif option_int==6:
    total()
    elif option_int==7:
    show()
    if __name__=="__main__":
    main()
    运行结果如下:

    
    
  • 相关阅读:
    PHP 语法
    PHP 变量
    为什么说PHP是个集中营
    简单介绍ThinkPHP3.1.3使用笔记
    PHP实现提交表单及输出例子
    linux 用户组以及权限
    linux vim学习
    linux基础指令学习
    pycharm
    Codeforces Round #346 (Div. 2) C题
  • 原文地址:https://www.cnblogs.com/startl/p/12728559.html
Copyright © 2020-2023  润新知