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

目录

本文实例为大家分享了python实现简易学生信息管理系统的具体代码,供大家参考,具体内容如下

一、系统功能

1.录入学生信息

2.查找学生信息

3.修改学生信息

4.删除学生信息

5.成绩排序

6.统计学生总人数

7.显示所有学生信息

0.退出系统

二、系统开发环境

1.操作系统:win7

2.开发工具:PyCharm

3.Python内置模块:os,re

三、实现代码

import os
filename=\'students.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 #退出while循环并退出系统
                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(\'请输入学生ID:\')
        if not id:
            break
        name=input(\'请输入学生姓名:\')
        if not name:
            break
        try:
            Englist=int(input(\'请输入英语成绩:\'))
            Python=int(input(\'请输入Python成绩:\'))
            Java=int(input(\'请输入Java成绩:\'))
        except:
            print(\'输入无效,不是整数类型,请重新输入!\')
            continue
        #将录入的学生信息保存到字典中
        student={\'id\':id,\'name\':name,\'English\':Englist,\'Python\':Python,\'Java\':Java}
        #将学生信息添加到列表中
        student_list.append(student)
        answer=input(\'是否继续添加?(y/n)\')
        if answer==\'y\' or answer==\'Y\':
            continue
        else:
            break
 
    #将学生信息保存在文件中
    save(student_list)
    print(\'学生信息录入完毕!\')
    pass
 
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)\')
            if answer==\'y\' or answer==\'Y\':
                continue
            else:
                break
        else:
            print(\'暂未保存学生信息。\')
            return
    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\')
                        else:
                            flag=True
                    if flag:
                        print(f\'id为{student_id}的学生信息已被删除\')
                    else:
                        print(f\'没有找到ID为{student_id}的学生信息\')
            else:
                print(\'无此学生信息\')
                break
            show() #删完之后重新显示所有学生信息
            answer=input(\'是否继续删除?(y/n)\')
            if answer==\'y\' or answer==\'Y\':
                continue
            else:
                break
    pass
 
def modify():
    show()
    if os.path.exists(filename): #判断文件是否存在
        with open(filename,\'r\',encoding=\'utf-8\') as rfile:
            student_old=rfile.readlines()
    else:
        return #结束函数
    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[\'English\']=input(\'请输入English成绩:\')
                        d[\'Python\']=input(\'请输入Python成绩:\')
                        d[\'Java\']=input(\'请输入Java成绩:\')
                    except:
                        print(\'您的输入有误请重新输入!\')
                    else:
                        break
                wfile.write(str(d)+\'\\n\')
                print(\'修改成功!\')
            else:
                wfile.write(str(d)+\'\\n\')
        answer=input(\'是否继续修改其他学生信息?(y/n)\')
        if answer==\'y\':
            modify()
    pass
 
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=input(\'请选择(0:升序,1:降序):\')
    if asc_or_desc==\'0\':
        asc_or_desc_bool=False
    elif asc_or_desc==\'1\':
        asc_or_desc_bool=True
    else:
        print(\'您的输入有误,请重新输入!\')
        sort()
    mode=input(\'请选择排序方式(0:按总成绩排序,1:按English成绩排序,2:按Python成绩排序,3:按Java成绩排序)\')
    if mode==\'0\':
        student_new.sort(key=lambda x: int(x[\'English\'])+int(x[\'Python\'])+int(x[\'Java\']), reverse=asc_or_desc_bool)
    elif 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)
    else:
        print(\'您的输入有误,请重新输入!\')
        sort()
    show_student(student_new)
    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(\'暂未保存学生信息......\')
    pass
 
def show():
    student_lst=[]
    if os.path.exists(filename):
        with open(filename,\'r\',encoding=\'utf-8\') as rfile:
            students=rfile.readlines()
            for item in students:
                student_lst.append(eval(item))
            if student_lst:
                show_student(student_lst)
    else:
        print(\'暂未保存过数据!\')
    pass
 
def save(stu_list):
    try:
        stu_txt=open(filename,\'a\',encoding=\'utf=8\')
    except:
        stu_txt=open(filename,\'w\',encoding=\'utf-8\')
    for item in stu_list:
        stu_txt.write(str(item)+\'\\n\')
    stu_txt.close()
 
def show_student(lst):
    if len(lst)==0:
        print(\'没有查到学生信息,无数据显示!\')
        return
    #定义标题显示格式
    format_title=\'{:^6}\\t{:^12}\\t{:^10}\\t{:^10}\\t{:^10}\\t{:^8}\'
    print(format_title.format(\'ID\',\'姓名\',\'English成绩\',\'Python成绩\',\'Java成绩\',\'总成绩\'))
    #定义内容显示格式
    format_data=\'{:^6}\\t{:^12}\\t{:^10}\\t{:^18}\\t{:^14}\\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\'),str(int(item.get(\'English\'))+int(item.get(\'Python\'))+int(item.get(\'Java\')))))
    pass
 
def menum():
    print(\'-------------------学生信息管理系统--------------------\')
    print(\'-----------------------功能菜单------------------------\')
    print(\'                    1.录入学生信息\')
    print(\'                    2.查找学生信息\')
    print(\'                    3.删除学生信息\')
    print(\'                    4.修改学生信息\')
    print(\'                    5.成绩排序\')
    print(\'                    6.统计学生总人数\')
    print(\'                    7.显示所有学生信息\')
    print(\'                    0.退出系统\')
    print(\'------------------------------------------------------\')
 
main()

四、项目打包并生成.exe可执行文件

1.安装第三方模块,打开dos窗口,输入:pip install PyInstaller并回车,

2.输入:pyinstaller -F 程序文件具体位置,

3.回车后即可在输出内容的倒数第二行看到.exe文件的位置。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容