文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2023-07-06 10:33

关注

本篇内容主要讲解“python如何实现简易的学生信息管理系统”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“python如何实现简易的学生信息管理系统”吧!

一、系统功能

录入学生信息

查找学生信息

修改学生信息

删除学生信息

成绩排序

统计学生总人数

显示所有学生信息

0.退出系统

二、系统开发环境

操作系统:win7

开发工具:PyCharm

Python内置模块:os,re

三、实现代码

import osfilename='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可执行文件

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

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

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

到此,相信大家对“python如何实现简易的学生信息管理系统”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯