2023年最适合0基础上手的—学生管理系统制作,另赠福利:GUI学生管理系统源码

news2025/5/23 15:46:14

前言
嗨喽~大家好呀,这里是小曼呐 ❤ ~!
在这里插入图片描述
环境使用:

  • python3.8解释器
  • Pycharm 编辑器

可领取福利:
GUI学生管理系统源码

在这里插入图片描述
代码展示
从学生信息数据库<文本文件>里面读取数据

f = open('学生信息.txt', encoding='utf-8')
info_list = f.readlines()

创建一个空列表

student_info = []

for循环遍历, 把列表里面元素一个一个提取出来

遇到问题没人解答?可以加小曼vx:python10010 发送验证时记得备注 “M”噢(这样小曼才知道是我的粉丝哦)
寻找有志同道合的小伙伴,互帮互助,还给大家准备了有不错的视频学习教程和PDF电子书!
for info in info_list:
    """
    str.replace('\n', '') 字符串替换方法, 把\n替换成空的
    str.split(',') 字符串分割方法, 以 , 作为分割, 把字符串分割成列表
    """
    content = info.replace('\n', '').split(',')

创建字典

    dit = {
        '姓名': content[0],
        '语文': content[1],
        '数学': content[2],
        '英语': content[3],
        '总分': content[4],
    }

列表添加元素

    student_info.append(dit)

读取出来, 并且整理好数据内容, 列表数据容器, 把所有信息放到里面存储

# print(student_info)
msg = """**************************************************
欢迎使用【学生信息管理系统】V1.0
请选择你想要进行的操作
1. 新建学生信息
2. 显示全部信息
3. 查询学生信息
4. 删除学生信息
5. 修改学生信息

0. 退出系统
**************************************************"""

输出

while True:
    print(msg)
    # 输入相关指令, 让代码执行相关程序 等号左边是自定义变量名
    num = input('请选择你要进行操作: ') # input输入内容, 返回字符串数据类型
    # 判断, 判断输入内容是什么?
    if num == '1':
        print('新建学生信息')
        # 输入学生姓名, 成绩
        name = input('请输入学生姓名:')
        chinese = input('请输入学生语文成绩:')
        math = input('请输入学生数学成绩:')
        english = input('请输入学生英语成绩:')
        # 字符串用 + 拼接
        score = int(chinese) + int(math) + int(english)
        student_dit = {
            '姓名': name,
            '语文': chinese,
            '数学': math,
            '英语': english,
            '总分': str(score),
        }
        # 添加学生信息, 放到数据库里面
        student_info.append(student_dit)
    # 会看报错的同学 1 不会看报错 0
    elif num == '2':
        print('显示全部信息')
        # 排序的
        student_info.sort(key=lambda x:x["总分"], reverse=True)
        # \t 转义字符 制表符 一个tab键
        print('姓名\t\t语文\t\t数学\t\t英语\t\t总分')
        for student in student_info:
            # student['姓名'] --> 字符串
            # student['语文'] --> 整型
            # student['总分'] --> 整型
            # 数据类型不同, 不能直接相加
            print(
                student['姓名'] + '\t\t' +
                str(student['语文']) + '\t\t\t' +
                str(student['数学']) + '\t\t\t' +
                str(student['英语']) + '\t\t\t' +
                str(student['总分'])
            )

查询学生信息

    elif num == '3':
        print('查询学生信息')
        # 输入查询人 --> 在一整个数据库里面一一对比
        name = input('请输入你要查询学生姓名: ')
        # for循环 一一提取数据内容
        for student in student_info:
            # 判断人名对不对
            if name == student['姓名']:
                print('姓名\t\t语文\t\t数学\t\t英语\t\t总分')
                print(
                    student['姓名'] + '\t\t' +
                    str(student['语文']) + '\t\t\t' +
                    str(student['数学']) + '\t\t\t' +
                    str(student['英语']) + '\t\t\t' +
                    str(student['总分'])
                )
                break
        else:
            print('找不到')

删除学生信息

    elif num == '4':
        print('删除学生信息')
        name = input('请输入你要删除学生姓名: ')
        for student in student_info:
            if name == student['姓名']:
                print('姓名\t\t语文\t\t数学\t\t英语\t\t总分')
                print(
                    student['姓名'] + '\t\t' +
                    str(student['语文']) + '\t\t\t' +
                    str(student['数学']) + '\t\t\t' +
                    str(student['英语']) + '\t\t\t' +
                    str(student['总分'])
                )
                word = input('是否要真的开除这个学生, 不考虑一下吗? <Y/N>: ' )
                if word == 'Y' or word == 'y':
                    # remove() 移除列表元素
                    student_info.remove(student)
                    break
                elif word == 'N' or word == 'n':
                    break
                else:
                    print('操作失误')
        else:
            print('找不到人')

修改学生信息

    elif num == '5':
        print('修改学生信息')
        name = input('请输入你要删除学生姓名: ')
        for student in student_info:
            if name == student['姓名']:
                print('姓名\t\t语文\t\t数学\t\t英语\t\t总分')
                print(
                    student['姓名'] + '\t\t' +
                    str(student['语文']) + '\t\t\t' +
                    str(student['数学']) + '\t\t\t' +
                    str(student['英语']) + '\t\t\t' +
                    str(student['总分'])
                )
                word = input('就这, 成绩还有问题? <Y/N>: ')
                if word == 'Y' or word == 'y':
                    # 输入学生姓名, 成绩
                    name = input('请输入学生姓名:')
                    chinese = input('请输入学生语文成绩:')
                    math = input('请输入学生数学成绩:')
                    english = input('请输入学生英语成绩:')
                    # 字符串用 + 拼接
                    score = int(chinese) + int(math) + int(english)
                    # 字典值修改
                    student['姓名'] = name
                    student['语文'] = chinese
                    student['数学'] = math
                    student['英语'] = english
                    student['总分'] = score
                    break
                elif word == 'N' or word == 'n':
                    break
                else:
                    print('操作失误')
        else:
            print('找不到人')

退出系统

    elif num == '0':
        print('退出系统')
        # 退出的时候, 要做数据保存
        with open('学生信息.txt', mode='w', encoding='utf-8') as f:
            for student in student_info:
                f.write(f'{student["姓名"]},{student["语文"]},{student["数学"]},{student["英语"]},{student["总分"]}')
                f.write('\n')
        exit() # 退出

    else:
        print('输入有误')

尾语
最后感谢你观看我的文章呐~本次航班到这里就结束啦 🛬

希望本篇文章有对你带来帮助 🎉,有学习到一点知识~

夜色难免黑凉,前行必有曙光(让我们一起努力叭)
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1010775.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

代码随想录算法训练营第48天|198. 打家劫舍,213. 打家劫舍 II,337. 打家劫舍 III

198. 打家劫舍 你是一个专业的小偷&#xff0c;计划偷窃沿街的房屋。每间房内都藏有一定的现金&#xff0c;影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统&#xff0c;如果两间相邻的房屋在同一晚上被小偷闯入&#xff0c;系统会自动报警。 给定一个代表每个…

ubuntu 安装截图软件 flameshot 和微信 electronic-wechat

目录 一、截图工具flameshot 二、微信electronic-wechat 2.1 法一 2.2 法二 一、截图工具flameshot linux安装flameshot 1、去github下载对应deb版本 Releases flameshot-org/flameshot GitHub 2、先更新一次依赖 sudo apt-get install -f 3、安装依赖 # Compile-t…

OceanBase杨传辉传递亚运火炬:国产数据库为“智能亚运”提供稳稳支持

9 月 14 日&#xff0c;亚运火炬传递到了浙江台州&#xff0c;OceanBase 的 CTO 杨传辉作为火炬手交接了第 89 棒火炬。 2010 年&#xff0c;杨传辉作为创始成员之一参与自研原生分布式数据库 OceanBase。十年磨一剑&#xff0c;国产数据库 OceanBase 交出了一张优秀的成绩单&a…

JavaScript Iterator 迭代器:简化集合遍历的利器

&#x1f3ac; 岸边的风&#xff1a;个人主页 &#x1f525; 个人专栏 :《 VUE 》 《 javaScript 》 ⛺️ 生活的理想&#xff0c;就是为了理想的生活 ! 目录 引言 1. 迭代器的概念 2. 迭代器的属性 3. 迭代器的应用场景 3.1 数组遍历 3.2 对象遍历 3.3 Map 遍历 #3.4…

pandas-profiling一键生成探索性数据分析报告

安装库 1、先升级pip python.exe -m pip install --upgrade pip -i https://pypi.tuna.tsinghua.edu.cn/simple 2、安装pandas-profiling pip install pandas-profiling -i https://pypi.tuna.tsinghua.edu.cn/simple 代码演示 # 导入相关库 import numpy as np import pand…

端游防截帧解决方案

对于一款游戏而言&#xff0c;玩家第一眼关注到的美术表现&#xff0c;会在很大程度上决定了玩家是否会产生兴趣并继续了解游戏内容。想要在激烈的市场竞争中占据一席之地&#xff0c;游戏美术的重要程度已不言而喻。 如被奉为“国产3A游戏之光”的《黑神话&#xff1a;悟空》…

由于找不到vcruntime140_1.dll文件的解决方法,带你了解vcruntime140_1.dll这个dll

vcruntime140_1.dll是Microsoft Visual C Redistributable for Visual Studio 2019的动态链接库文件之一。它提供了许多基本的运行时功能&#xff0c;使得使用Visual Studio 2019编译的应用程序能够正常运行。然而&#xff0c;在运行或启动一些应用程序时&#xff0c;可能会出现…

每天一道leetcode:剑指 Offer 68 - I. 二叉搜索树的最近公共祖先(适合初学者)

今日份题目&#xff1a; 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为&#xff1a;“对于有根树 T 的两个结点 p、q&#xff0c;最近公共祖先表示为一个结点 x&#xff0c;满足 x 是 p、q 的祖先且 x 的深度尽可能大&#xf…

常见音视频、流媒体开源编解码库及官网(四十一)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药. 更多原创,欢迎关注:Android…

大麦订单生成器最新版 大麦订单一键生成截图

1.可以一键添加&#xff0c;生成的假订单没有水印&#xff0c;界面也很真实。 2.在软件中输入生成的信息&#xff0c;这是产品信息&#xff0c;选择生成的产品图像&#xff0c;最后生成它。 后台一键生成&#xff0c;独立后台管理 教程&#xff1a;解压源码&#xff0c;修改数…

电子学会C++编程等级考试2023年05月(二级)真题解析

C/C编程&#xff08;1~8级&#xff09;全部真题・点这里 第1题&#xff1a;数字放大 给定一个整数序列以及放大倍数x&#xff0c;将序列中每个整数放大x倍后输出。 时间限制&#xff1a;1000 内存限制&#xff1a;65536 输入 包含三行&#xff1a; 第一行为N&#xff0c;表示整…

nginx实现路由重定向功能 避免服务器出现 404 Not Found

首先 到服务器上 vue react等项目路由的重定向已解决不了带后缀的访问 这个重定向需要 nginx 来实现 我们先执行 scp -r 用户名 如果没设置过就是root服务器公网地址:/etc/nginx/nginx.conf E:/拷贝地址这里 我将服务器上的nginx配置文件 拷贝到了本地的 E盘下的 拷贝地址目录…

CocosCreator3.8研究笔记(十六)CocosCreator 2D对象

CocosCreator 中&#xff0c;不涉及模型的图片渲染体统称为 2D 渲染对象。 所有的 2D渲染对象需在 RenderRoot 节点下&#xff08;带有 RenderRoot2D 组件的节点&#xff09;才可以被渲染&#xff0c;由于 Canvas 组件本身继承 RenderRoot2D 组件&#xff0c;所以 Canvas 组件一…

分享一个基于微信小程序的汽车租赁小程序 车辆出租小程序 汽车租借小程序源码 lw 调试

&#x1f495;&#x1f495;作者&#xff1a;计算机源码社 &#x1f495;&#x1f495;个人简介&#xff1a;本人七年开发经验&#xff0c;擅长Java、Python、PHP、.NET、微信小程序、爬虫、大数据等&#xff0c;大家有这一块的问题可以一起交流&#xff01; &#x1f495;&…

typescript环境搭建,及tsc命令优化

typescript typescript. 是一种由微软开发的 开源 、跨平台的编程语言。. 它是 JavaScript 的超集&#xff0c;最终会被编译为JavaScript代码。. TypeScript添加了可选的静态类型系统、很多尚未正式发布的ECMAScript新特性&#xff08;如装饰器 [1] &#xff09;。. 2012年10月…

华为HCIA(三)

链路本地地址接口标识64bit 当STP端口到了Forwarding状态后&#xff0c;会转发流量&#xff0c;也处理报文 在TCP/IP模型中&#xff0c;会话层&#xff0c;表示层和应用层&#xff0c;都规划成了应用层 路由表包含目的地址和掩码&#xff0c;优先级&#xff0c;cost,下一跳和…

2023/09/14 qtc++

仿照vector手动实现自己的myVector部分功能&#xff0c;最主要实现二倍扩容功能 #include <iostream>using namespace std; template <typename V> class myVector { private:V *data; //存放数据int size; //数组长度int capacity; //容量大小 public:m…

项目实战— pytorch搭建CNN处理MNIST数据集

项目文件夹介绍 项目文件夹 CNN_MNIST_practice文件夹是整个项目的文件夹&#xff0c;里面存放了六个子文件夹以及四个 .py 程序&#xff0c;接下来我们分别来介绍这些文件的内容。 其中 minist_all_CPU.py 是CPU版本的模型训练&#xff0b;测试程序&#xff0c;而 min…

Mongodb+NodeJS实现服务端架构

一、前言 使用Mogodb和Nodejs完成简单的服务端架构&#xff0c;读完此文章后你会学到&#xff1a;1. 如何安装Mongodb2. Mongodb命令行3. Mongodb的图形化工具Robomongo的使用4. 如何使用NodeJS指挥Mongodb二、安装Mongodb 1、Mongodb简介 官网: https://www.mongodb.com/源于…

2023最实用的订单管理软件有哪些?推荐这5款

订单管理软件是基于互联网技术和数据管理的信息化平台&#xff0c;用于维护和管理订单整个生命周期的系统&#xff0c;包括订单创建、订单修改、订单查询、订单管理、订单发货等一系列流程。 实用的订单管理软件&#xff0c;要具备基础功能的订单管理功能&#xff0c;包含订单…