首页 > 编程语言 >Python学生成绩管理系统

Python学生成绩管理系统

时间:2023-12-24 10:55:39浏览次数:41  
标签:管理系统 Python else item student print input 成绩 id

filename='student.txt'  
import os  
def menu():  
    print('--------------学生管理系统-----------')  
    print('--------------功能菜单--------------')  
    print('1.录入学生信息')  
    print('2.查找学生信息')  
    print('3.删除学生信息')  
    print('4.修改学生信息')  
    print('5.分数排序')  
    print('6.统计学生人数')  
    print('7.显示全部学生信息')  
    print('0.退出系统')  
    print('-------------------------------------')  
def main():  
    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':  
                    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 insert():      #录入学生信息  
    student_list=[]  
    while True:  
        id=input('请输入学号:')  
        if not id:  
            break  
        name=input('请输入姓名:')  
        if not name:  
            break  
        try:  
            python=int(input('请输入python成绩:'))  
            math=int(input('请输入高数成绩:'))  
            english=int(input('请输入英语成绩:'))  
        except:  
            print('成绩非整数类型,重新输入')  
            continue  
        student={'id':id,'name':name,'python':python,'math':math,'english':english}  
        #将学生信息添加到列表中  
        student_list.append(student)  
        answer=input('是否继续添加?(Y/N):')  
        if answer=='Y':  
            continue  
        else:  
            break  
    save(student_list)  
    print('学生信息录入完毕')  
  
def save(lst):  
    try:  
        student_txt=open(filename,'a')  #如果文件存在,则追加信息  
    except:  
        student_txt=open(filename,'w')  #如果文件不存在就以写入形式打开  
    for item in lst:  
        student_txt.write(str(item)+'\n')  
    student_txt.close()  
def search():         #查找学生信息  
    student_list=[]  
    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') as file:  
                student=file.readlines()  
                for item in student:  
                    d=dict(eval(item))  
                    if id!=' ':  
                        if d['id']==id:  
                            student_list.append(d)  
                    elif name!=' ':  
                        if d['name']==name:  
                            student_list.append(d)  
            show_res(student_list)  
            student_list.clear()  
            answer=input('是否要继续查找学生信息?(Y/N)')  
            if answer=='Y':  
                continue  
            else:  
                break  
        else:  
            print('没有保存学生信息')  
            return  
def show_res(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成绩','高数成绩','英语成绩','总成绩'))  
    #定义内容显示格式  
    format_data='{:^6}\t{:^12}\t{:^8}\t{:^10}\t{:^14}\t{:^14}'  
    for item in lst:  
        print(format_data.format(item.get('id'),  
                                 item.get('name'),  
                                 item.get('python'),  
                                 item.get('math'),  
                                 item.get('english'),  
                                 int(item.get('python'))+int(item.get('math'))+int(item.get('english'))  
                                 ))  
def delete():     #删除学生信息  
    while True:  
        student_id=input('请输入删除学生的学号:')  
        if student_id!=' ':  
            if os.path.exists(filename):  
                with open(filename,'r') as file:  
                    student_massage=file.readlines()  
            else:  
                student_massage=[]  
            flag=False  
            if student_massage:  
                with open(filename,'w') as file:  
                    d={}  
                    for item in student_massage:  
                        d=dict(eval(item))  
                        if ['id']!=student_id:  
                            file.write(str(d)+'\n')  
                        else:  
                            flag=True    #表示删除  
                    if flag:  
                        print(f'学号{student_id}已经删除')  
                    else:  
  
                        print(f'没有找到学号为{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') as file:  
            student_massage=file.readlines()  
    else:  
        return  
    student_id=input('请输入要修改的学生学号:')  
    with open(filename,'w') as wfile:  
        for item in student_massage:  
            d=dict(eval(item))  
            if d['id']==student_id:  
                print('找到该学生信息,可以进行修改')  
                while True:  
                    try:  
                        d['name']=input('请输入姓名')  
                        d['python']=input('输入python成绩')  
                        d['math']=input('输入math成绩')  
                        d['english']=input('输入english成绩')  
                    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') as file:  
            student_lst=file.readlines()  
        student_new=[]  
        for item in student_lst:  
            d=dict(eval(item))  
            student_new.append(d)  
    else:  
        return  
    order=input('请选择0.升序 1.降序:')  
    if order=='0':  
        order_bool=False  #升序  
    elif order=='1':  
        order_bool=True   #降序  
    else:  
        print('输入有误,请重新输入')  
        sort()  
    mode=input('请选择排序方式1.按照python成绩,2.按照高数成绩,3.按照英语成绩,4.按照总成绩:')  
    if mode=='1':  
        student_new.sort(key=lambda x:int(x['python']),reverse=order_bool)   #使用python成绩进行排序  
    elif mode=='2':  
        student_new.sort(key=lambda x: int(x['math']), reverse=order_bool)  
    elif mode=='3':  
        student_new.sort(key=lambda x: int(x['english']), reverse=order_bool)  
    elif mode=='4':  
        student_new.sort(key=lambda x: int(x['python']+int(x['math'])+int(x['english'])), reverse=order_bool)  
    else:  
        print('输入有误,请重新输入')  
        sort()  
    show_res(student_new)  
def total():         #学生总人数  
    if os.path.exists(filename):  
        with open(filename,'r') as file:  
            students=file.readlines()  
            if students:  
                print(f'一共有{len(students)}名学生')  
            else:  
                print('还没有录入学生信息')  
    else:  
        print('暂未保存学生信息')  
def show():  
   student_list=[]  
   if os.path.exists(filename):  
       with open(filename,'r') as file:  
           students=file.readlines()  
           for item in students:  
               student_list.append(eval(item))  
           if student_list:  
                show_res(student_list)  
   else:  
       print('暂未保存数据信息')  
  
  
if __name__ == '__main__':  
    main()

标签:管理系统,Python,else,item,student,print,input,成绩,id
From: https://www.cnblogs.com/du463/p/17924159.html

相关文章

  • Python网络编程:掌握urllib包的妙用
    在Python的世界里,处理网络请求是日常任务之一。不论是爬取网页数据,还是调用网络API,一个好用的HTTP客户端库是必不可少的。Python标准库中的urllib包就是这样一个强大的工具,它提供了一个简单的界面来与网上资源互动。本文将带你深入了解urllib包,包括它的主要模块,以及如何使用它们完......
  • Python 潮流周刊第 32 期(摘要)
    本周刊由Python猫出品,精心筛选国内外的250+信息源,为你挑选最值得分享的文章、教程、开源项目、软件工具、播客和视频、热门话题等内容。愿景:帮助所有读者精进Python技术,并增长职业和副业的收入。周刊全文:https://pythoncat.top/posts/2023-12-23-weekly以下是本期摘要:......
  • 机动车合格证管理系统
    电子化机动车合格证管理系统定制化开发请加QQ:2601127485可管理全项、底盘合格证,合格证信息全纪录新增合格证,支持直接扫纸质二维码,方便快速录入可同时编辑多个合格证提供模拟打印(为了和真实区分,二维码位置为空)......
  • Python函数的使用和示例
    在Python中,函数是一种组织和复用代码的重要方式。函数可以帮助你将代码分解成小的、可管理的部分,并且可以在不同的地方重复使用这些代码。这里是一个简单的Python函数的示例:函数定义与使用定义一个函数:函数以def关键字开始,后跟函数名和圆括号()。圆括号内可以包含参数,也可以为空。......
  • 4. 分别给出 3 个学生的 4 门课程的成绩,求其中的最高成绩、各门课程的平 均成绩和总平
    #define_CRT_SECURE_NO_WARNINGS1#include<stdio.h>intmain(){ intmax1=0; intmax2=0; intmax3=0; intarr[3][4]={{59,66,78,98},{64,85,76,90},{9,95,95,96}};//定义一个三行四列的数组 printf("张三成绩:\n"); printf("语文\t数学\t英语\t道德......
  • python网站创建013:jQuery的下载安装
    jQuery:相当于别人做的一个库,模块,里面包含了DOM和BOM所需要的功能,既然有了DOM和BOM那为什么还会有jQuery呢?DOM和BOM是属于比较底层的代码,可以用,但是比较繁琐,所以出现了jQuery,代码更为简洁,之后也建议使用jQuery。jQuery下载:https://jquery.com/ ......
  • Python MongoDB 聚合管道操作符及使用
    ​ 1、$match筛选文档,类似于SQL的WHERE子句。可以使用$match来选择满足特定条件的文档。使用示例:PythonMongoDB聚合管道操作符及使用-CJavaPy2、$group分组和汇总数据,类似于SQL的GROUPBY子句。你可以使用$group来对文档进行分组,并进行聚合操作,如计算总和、......
  • Python JSON格式字符串与对象之间的转换多种方法
    ​ 1、json.dumps()和json.loads()方法使用 json.dumps() 方法将Python对象转换为JSON格式字符串。使用 json.loads() 方法将JSON格式字符串解析为Python对象。使用示例:PythonJSON格式字符串与对象之间的转换多种方法-CJavaPy2、json.dump()和json.load(......
  • python中能被注意到的异常
    异常分为编译性异常与运行性异常python中的try只能看见运行性异常第一种情况:pycharm看到异常,是编译时异常第二种情况:pycharm看到异常,但是是运行时异常第三种情况:pycharm看不到异常,是运行时异常......
  • Python各个列表交叉进行排列组合
    例v_list=[["1.mp4","2.mp4"],["3.mp4"],["6.mp4","7.mp4"],[],[]]我想把这个列表里面的各个列表,重新排列组合但是我不知道列表里套了几个列表,套的列表里有几个元素,这样就无法具体固定for循环后来使用exec()函数,间接解决了该问题不考虑顺序的问题,一共有212=4种排列方式下......