Python实现超简易的学生信息管理系统

Python实现超简易的学生信息管理系统
这里直接用data里存储的信息做数据库,当然也可以另外从文件里读取数据,操作并存储会更好,这里就这样将(hu)就(nong)一下吧O(∩_∩)O~

import pandas as pd
data = [{
    
    "ID":1001,"Name":"Mary","English_score":100,"Python_score":99,"C_score":96},
        {
    
    "ID":1002,"Name":"Jack","English_score":98,"Python_score":92,"C_score":98},
        {
    
    "ID":1003,"Name":"Lily","English_score":93,"Python_score":96,"C_score":94},
        {
    
    "ID":1004,"Name":"Mike","English_score":95,"Python_score":96,"C_score":90},
        {
    
    "ID":1005,"Name":"Rose","English_score":97,"Python_score":94,"C_score":92}]
subject_dic = {
    
    '1':'English_score','2':'Python_score','3':'C_score','4':'Total_score'}

def insert():    #录入学生信息
    mark = True
    while mark:
        ID = int(input('请输入要添加的学生ID:'))
        if ID in [data[i]['ID'] for i in range(len(data))]:
            print('ID:{}已经存在,请重新输入!'.format(ID))
            res = input("是否继续添加学生信息?(Y/N):").title()
            if res == 'Y':
                continue
            elif res == 'N':
                break
            else:
                print('请输入正确的格式!')
                continue
        try:
            Name = input('请输入要添加的学生姓名:').title()
            English_score = int(input('请输入要添加的学生英语成绩:'))
            Python_score = int(input('请输入要添加的学生Python成绩:'))
            C_score = int(input('请输入要添加的学生C语言成绩:'))
        except:
            print('请输入正确的格式!')
            continue
        Total_score = English_score + Python_score + C_score
        data.append({
    
    "ID":ID,"Name":Name,"English_score":English_score,\
                     "Python_score":Python_score,"C_score":C_score,"Total_score":Total_score})
        print('{}号学生信息添加成功!'.format(ID))
               
        while True:
            res = input("是否继续添加学生信息?(Y/N):").title()
            if res == 'Y':
                break
            elif res == 'N':
                mark = False
                break
            else:
                print('请输入正确的格式!')
                continue
                  
def search():    #查找学生信息
    mark = True
    while mark:
        search_method = input('请输入查询方式:1-ID,2-姓名:')
        if search_method == '1':
            ID = input('请输入学生ID:')
            if ID not in [str(data[i]['ID']) for i in range(len(data))]:
                print('您查找的ID不存在!')
            else:
                search_lst = [item for item in data if str(item["ID"]) == ID]
                search_lst[0]['Total_score'] = search_lst[0]['English_score'] + search_lst[0]['Python_score'] +\
                    search_lst[0]['C_score']         
                print("您要查询的学生信息为:\n{}".format(search_lst[0]))
                search_lst.clear()
                
        elif search_method == '2':
            Name = input('请输入学生姓名:').title()
            if Name not in [data[i]['Name'] for i in range(len(data))]:
                print('您查找的姓名不存在!')
            else:
                search_lst = [item for item in data if item["Name"] == Name]
                      
                for item in search_lst:
                    item['Total_score'] = item['English_score'] + item['Python_score'] + item['C_score']
                    print("您要查询的学生信息为:\n{}".format(item))
                search_lst.clear()
                
        else:
            print("您输入的方式有误,请重新查询!")
         
        while True:
            res = input("是否继续查询学生信息?(Y/N):").title()
            if res == 'Y':
                break
            elif res == 'N':
                mark = False
                break
            else:
                print('请输入正确的格式!')
                continue    

def delete():   #删除学生信息
    mark = True
    while mark:
        ID = input('请输入要删除信息对应的学生ID:')
        if ID not in [str(data[i]['ID']) for i in range(len(data))]:
            print('您要删除的ID不存在!')
        else:
            delete_lst = [item for item in data if str(item["ID"]) == ID]
                   
            data.remove(delete_lst[0])
            print('{}号学生的信息删除成功!'.format(ID))
        
        while True:
            res = input("是否继续删除学生信息?(Y/N):").title()
            if res == 'Y':
                break
            elif res == 'N':
                mark = False
                break
            else:
                print('请输入正确的格式!')
                continue          

def modify():   #修改学生信息
    mark = True
    while mark:
        ID = input('请输入要修改信息对应的学生ID:')
        if ID not in [str(data[i]['ID']) for i in range(len(data))]:
            print('您要修改的ID不存在!')
        else:
            subject = input('请输入要修改的科目(1-English_score,2-Python_score,3-C_score):')
            modified_score = input('请输入修改后的分数:')
            if subject in ['1','2','3'] and modified_score.isdigit():
                modify_lst = [index for index,item in enumerate(data) if item['ID'] == int(ID)]
                data[modify_lst[0]][subject_dic[subject]] = int(modified_score)
                print('{}号学生的{}成绩修改成功!'.format(ID,subject_dic[subject]))
            else:
                print('请输入正确的科目代码或分数!')
                
        while True:
            res = input("是否继续修改学生信息?(Y/N):").title()
            if res == 'Y':
                break
            elif res == 'N':
                mark = False
                break
            else:
                print('请输入正确的格式!')
                continue  
         
def sort():   #成绩排序
    mark = True
    while mark:
        subject = input('请输入按哪一个科目排序(1-English_score,2-Python_score,3-C_score,4-Total_score):')
        data_ = pd.DataFrame(data)
        data_['Total_score'] = data_['English_score'] + data_['Python_score'] + data_['C_score']
        print(data_.sort_values(by = subject_dic[subject],ascending = False))
        
        while True:
            res = input("是否继续排序学生信息?(Y/N):").title()
            if res == 'Y':
                break
            elif res == 'N':
                mark = False
                break
            else:
                print('请输入正确的格式!')
                continue
            
def show():   #显示所有学生信息
    print(update())

def update():
    data_ = pd.DataFrame(data)
    data_['Total_score'] = data_['English_score'] + data_['Python_score'] + data_['C_score']
    return data_

Mark = True    #管理系统构架
while Mark:
    print('''

    ''')
    print('='*10,'功能菜单','='*10)
    print('''
    1、录入学生信息
    2、查找学生信息
    3、删除学生信息
    4、修改学生信息
    5、排序
    6、显示所有学生信息
    0、退出      
    ''')
    print('='*30)
    res = int(input('请输入您想要执行的功能:'))
    if res == 0:
        Mark = False
    elif res == 1:
        insert()
    elif res == 2:
        search()
    elif res == 3:
        delete()
    elif res == 4:
        modify()
    elif res == 5:
        sort()
    elif res == 6:
        show()
    else:
        print('请输入正确的功能!')

运行结果:

    
========== 功能菜单 ==========

    1、录入学生信息
    2、查找学生信息
    3、删除学生信息
    4、修改学生信息
    5、排序
    6、显示所有学生信息
    0、退出      
    
==============================

请输入您想要执行的功能:6
     ID  Name  English_score  Python_score  C_score  Total_score
0  1001  Mary            100            99       96          295
1  1002  Jack             98            92       98          288
2  1003  Lily             93            96       94          283
3  1004  Mike             95            96       90          281
4  1005  Rose             97            94       92          283

还有几个小练习,后面继续码出来!

猜你喜欢

转载自blog.csdn.net/weixin_44086712/article/details/109564675