文章详情

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

请输入下面的图形验证码

提交验证

短信预约提醒成功

基于Python 课程设计-学生管理系统(附源码+可执行程序)

2023-09-14 20:51

关注

前言

基于Python 课程设计-学生管理系统(附源码+可执行程序)

非常完整的一个项目,可以作为课程设计去学习。

本系统的完整源码在文章结尾处,大家自行获取即可。

开发环境要求

本系统的软件开发及运行环境具体如下。
操作系统:Windows 7、Windows 10。
Python版本:Python 3.7.0。
开发工具:Python IDLE。
Python内置模块:os、re。

运行方法

在项目文件studentsystem.py上单击鼠标右键,在弹出快捷菜单中选择“Edit with IDLE\Edit with IDLE 3.7(64-bit)”菜单项,如图1所示。
在这里插入图片描述

图1 选择IDLE打开项目文件
在打开的Python Shell窗口中,按下F5键运行程序即可。运行效果如图2所示。
在这里插入图片描述

图2 项目主界面

# _*_ coding:utf-8   _*_# 文件名称:studentsystem.py# 开发工具:PyCharmimport re  # 导入正则表达式模块import os  # 导入操作系统模块filename = "students.txt"  # 定义保存学生信息的文件名def menu():    # 输出菜单    print('''    ╔———————学生信息管理系统————————╗    │                  │    │   =============== 功能菜单 ===============   │    │                  │    │   1 录入学生信息 │    │   2 查找学生信息 │    │   3 删除学生信息 │    │   4 修改学生信息 │    │   5 排序         │    │   6 统计学生总人数                           │    │   7 显示所有学生信息                         │    │   0 退出系统     │    │  ==========================================  │    │  说明:通过数字或↑↓方向键选择菜单          │    ╚———————————————————————╝    ''')def main():    ctrl = True  # 标记是否退出系统    while (ctrl):        menu()  # 显示菜单        option = input("请选择:")  # 选择菜单项        option_str = re.sub("\D", "", option)  # 提取数字        if option_str in ['0', '1', '2', '3', '4', '5', '6', '7']:            option_int = int(option_str)            if option_int == 0:  # 退出系统                print('您已退出学生成绩管理系统!')                ctrl = False            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()'''1 录入学生信息'''def insert():    stdentList = []        # 保存学生信息的列表    mark = True  # 是否继续添加    while mark:        id = input("请输入ID(如 1001):")        if not id:  # ID为空,跳出循环            break        name = input("请输入名字:")        if not name:  # 名字为空,跳出循环            break        try:            english = int(input("请输入英语成绩:"))            python = int(input("请输入Python成绩:"))            c = int(input("请输入C语言成绩:"))        except:            print("输入无效,不是整型数值....重新录入信息")            continue        stdent = {"id": id, "name": name, "english": english, "python": python, "c": c}  # 将输入的学生信息保存到字典        stdentList.append(stdent)  # 将学生字典添加到列表中        inputMark = input("是否继续添加?(y/n):")        if inputMark == "y":  # 继续添加            mark = True        else:  # 不继续添加            mark = False    save(stdentList)  # 将学生信息保存到文件    print("学生信息录入完毕!!!")# 将学生信息保存到文件def save(student):    try:        students_txt = open(filename, "a")  # 以追加模式打开    except Exception as e:        students_txt = open(filename, "w")  # 文件不存在,创建文件并打开    for info in student:        students_txt.write(str(info) + "\n")  # 按行存储,添加换行符    students_txt.close()  # 关闭文件'''2 查找学生成绩信息'''def search():    mark = True    student_query = []  # 保存查询结果的学生列表    while mark:        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') as file:  # 打开文件                student = file.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()  # 清空列表                inputMark = input("是否继续查询?(y/n):")                if inputMark == "y":                    mark = True                else:                    mark = False        else:            print("暂未保存数据信息...")            return'''3 删除学生成绩信息'''def delete():    mark = True  # 标记是否循环    while mark:        studentId = input("请输入要删除的学生ID:")        if studentId is not "":  # 判断要删除的学生是否存在            if os.path.exists(filename):  # 判断文件是否存在                with open(filename, 'r') as rfile:  # 打开文件                    student_old = rfile.readlines()  # 读取全部内容            else:                student_old = []            ifdel = False  # 标记是否删除            if student_old:  # 如果存在学生信息                with open(filename, 'w') as wfile:  # 以写方式打开文件                    d = {}  # 定义空字典                    for list in student_old:                        d = dict(eval(list))  # 字符串转字典                        if d['id'] != studentId:wfile.write(str(d) + "\n")  # 将一条学生信息写入文件                        else:ifdel = True  # 标记已经删除                    if ifdel:                        print("ID为 %s 的学生信息已经被删除..." % studentId)                    else:                        print("没有找到ID为 %s 的学生信息..." % studentId)            else:  # 不存在学生信息                print("无学生信息...")                break  # 退出循环            show()  # 显示全部学生信息            inputMark = input("是否继续删除?(y/n):")            if inputMark == "y":                mark = True  # 继续删除            else:                mark = False  # 退出删除学生信息功能'''4 修改学生成绩信息'''def modify():    show()  # 显示全部学生信息    if os.path.exists(filename):  # 判断文件是否存在        with open(filename, 'r') as rfile:  # 打开文件            student_old = rfile.readlines()  # 读取全部内容    else:        return    studentid = input("请输入要修改的学生ID:")    with open(filename, "w") as wfile:  # 以写模式打开文件        for student in student_old:            d = dict(eval(student))  # 字符串转字典            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 + "\n")   # 将修改的信息写入到文件                print("修改成功!")            else:                wfile.write(student)  # 将未修改的信息写入到文件    mark = input("是否继续修改其他学生信息?(y/n):")    if mark == "y":        modify()  # 重新执行修改操作'''5 排序'''

源码获取方法:

需要完整源码的朋友,希望你能点赞+收藏+评论,然后私信我即可~

来源地址:https://blog.csdn.net/weixin_51624736/article/details/128999090

阅读原文内容投诉

免责声明:

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

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

软考中级精品资料免费领

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

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

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

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

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

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

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