免费分享一套PyQt6学生信息管理系统 Python管理系统 Python源码,挺漂亮的

news2025/1/20 5:48:41

大家好,我是java1234_小锋老师,看到一个不错的PyQt6学生信息管理系统 Python管理系统 Python源码,分享下哈。

项目视频演示

【免费】PyQt5 学生信息管理系统 Python管理系统 Python源码 Python毕业设计_哔哩哔哩_bilibili【免费】PyQt5 学生信息管理系统 Python管理系统 Python源码 Python毕业设计项目来自互联网,免费开源分享,严禁商业。更多Python源码:http://www.java1234.com/a/bysj/python/, 视频播放量 67、弹幕量 0、点赞数 2、投硬币枚数 0、收藏人数 3、转发人数 1, 视频作者 java1234官方, 作者简介 公众号:java1234 微信:java9266,相关视频:【免费】javaweb物业管理系统毕业设计,【免费】javaweb固定资产管理系统毕业设计,2024版 PyQt6 Python桌面开发 视频教程(无废话版) 玩命更新中~,【免费】javaweb高校教务管理系统毕业设计,【免费】javaweb实验室管理系统毕业设计,【免费】javaweb机房管理系统毕业设计,2024 1小时学会 Python操作Mysql数据库之pymysql模块技术(无废话版),【免费】springboot+vue学生选课管理系统毕业设计演示,【免费】javaweb企业人事管理系统毕业设计,【免费】javaweb学生信息管理系统毕业设计icon-default.png?t=N7T8https://www.bilibili.com/video/BV1Ep4y1R7WD/

项目介绍

期末作业要求用Qt做一个学生管理系统,笔者这段时间在自学Python,本项目主要实现了PyQt5的增删改查。因为学习PyQt5的时间短,写代码时遇到了很多困难,笔者在CSDN与Github上我查阅了大量的资料,最终做了一个半成品出来。但笔者认为,以这个小项目作为一个入门练手项目十分合适,现将其分享,希望能够帮助到新手入门的人。 本项目主要用到了PyQt5、pymysql、xlwt模块、Mysql数据库、QtDesigner和pyuic。PyQt5用于构建GUI界面,pymysql用于与MySQL数据库连接,xlwt用于操作excel。 MySQL数据库笔者采用了navicat数据库管理工具。MySQL具体使用方法此文不作详细解释。

系统展示

部分代码

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'login.ui'
#
# Created by: PyQt5 UI code generator 5.13.2
#
# WARNING! All changes made in this file will be lost!


from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtCore import qInstallMessageHandler, QtCriticalMsg
from PyQt5.QtWidgets import QMessageBox
import sys  # 导入sys模块
import main
from service import service

class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.setWindowFlags(QtCore.Qt.MSWindowsFixedSizeDialogHint)  # 只显示最小化和关闭按钮
        MainWindow.resize(360, 196)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.label = QtWidgets.QLabel(self.centralwidget)
        self.label.setGeometry(QtCore.QRect(0, 0, 360, 80))
        self.label.setStyleSheet("border-image: url('./images/login.jpg');")
        self.label.setText("")
        self.label.setObjectName("label")
        self.label_2 = QtWidgets.QLabel(self.centralwidget)
        self.label_2.setGeometry(QtCore.QRect(120, 100, 61, 21))
        font = QtGui.QFont()
        font.setPointSize(11)
        self.label_2.setFont(font)
        self.label_2.setObjectName("label_2")
        self.editName = QtWidgets.QLineEdit(self.centralwidget)
        self.editName.setGeometry(QtCore.QRect(193, 100, 141, 20))
        self.editName.setObjectName("editName")
        self.editPwd = QtWidgets.QLineEdit(self.centralwidget)
        self.editPwd.setGeometry(QtCore.QRect(192, 130, 141, 20))
        self.editPwd.setEchoMode(QtWidgets.QLineEdit.Password)
        self.editPwd.setObjectName("editPwd")
        self.label_3 = QtWidgets.QLabel(self.centralwidget)
        self.label_3.setGeometry(QtCore.QRect(119, 130, 61, 21))
        font = QtGui.QFont()
        font.setPointSize(11)
        self.label_3.setFont(font)
        self.label_3.setObjectName("label_3")
        self.btnLogin = QtWidgets.QPushButton(self.centralwidget)
        self.btnLogin.setGeometry(QtCore.QRect(200, 160, 61, 23))
        self.btnLogin.setObjectName("btnLogin")
        self.btnExit = QtWidgets.QPushButton(self.centralwidget)
        self.btnExit.setGeometry(QtCore.QRect(270, 160, 61, 23))
        self.btnExit.setObjectName("btnExit")
        MainWindow.setCentralWidget(self.centralwidget)

        self.retranslateUi(MainWindow)
        self.btnExit.clicked.connect(MainWindow.close) # 关闭登录窗体
        QtCore.QMetaObject.connectSlotsByName(MainWindow)
        # 输入密码后按回车键执行登录操作
        self.editPwd.editingFinished.connect(self.openMain)
        # 单击“登录”按钮执行登录操作
        self.btnLogin.clicked.connect(self.openMain)

    # 打开主窗体
    def openMain(self):
        service.userName=self.editName.text() # 全局变量,记录用户名
        self.userPwd=self.editPwd.text() # 记录用户密码
        if service.userName != "" and self.userPwd != "": # 判断用户名和密码不为空
            # 根据用户名和密码查询数据
            result=service.query("select * from tb_user where userName = %s and userPwd = %s",service.userName,self.userPwd)
            if len(result)>0: # 如果查询结果大于0,说明存在该用户,可以登录
                self.m = main.Ui_MainWindow()  # 创建主窗体对象
                self.m.show()  # 显示主窗体
                MainWindow.hide() # 隐藏当前的登录窗体
            else:
                self.editName.setText("") # 清空用户名文本
                self.editPwd.setText("") # 清空密码文本框
                QMessageBox.warning(None, '警告', '请输入正确的用户名和密码!', QMessageBox.Ok)
        else:
            QMessageBox.warning(None, '警告', '请输入用户名和密码!', QMessageBox.Ok)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "系统登录"))
        self.label_2.setText(_translate("MainWindow", "用户名:"))
        self.label_3.setText(_translate("MainWindow", "密  码:"))
        self.btnLogin.setText(_translate("MainWindow", "登录"))
        self.btnExit.setText(_translate("MainWindow", "退出"))




# 主方法
if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)
    MainWindow = QtWidgets.QMainWindow() # 创建窗体对象
    ui = Ui_MainWindow() # 创建PyQt5设计的窗体对象
    ui.setupUi(MainWindow) # 调用PyQt5窗体的方法对窗体对象进行初始化设置

    MainWindow.show() # 显示窗体
    sys.exit(app.exec_()) # 程序关闭时退出进程
# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'main.ui'
#
# Created by: PyQt5 UI code generator 5.13.2
#
# WARNING! All changes made in this file will be lost!


from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import *
from service import service
from baseinfo import student
from query import studentinfo
from settings import classes,grade
from system import user

class Ui_MainWindow(QMainWindow):
    # 构造方法
    def __init__(self):
        super(Ui_MainWindow, self).__init__()
        self.setWindowFlags(QtCore.Qt.MSWindowsFixedSizeDialogHint)  # 只显示最小化和关闭按钮
        self.setupUi(self) # 初始化窗体设置

    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(792, 583)
        icon = QtGui.QIcon()
        icon.addPixmap(QtGui.QPixmap("./images/appstu.ICO"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        MainWindow.setWindowIcon(icon)
        MainWindow.setIconSize(QtCore.QSize(32, 32))
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setStyleSheet("border-image: url('./images/main.jpg');")
        self.centralwidget.setObjectName("centralwidget")
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 792, 23))
        self.menubar.setObjectName("menubar")
        self.menu = QtWidgets.QMenu(self.menubar)
        self.menu.setObjectName("menu")
        self.menu_2 = QtWidgets.QMenu(self.menubar)
        self.menu_2.setObjectName("menu_2")
        self.menu_3 = QtWidgets.QMenu(self.menubar)
        self.menu_3.setObjectName("menu_3")
        self.menu_4 = QtWidgets.QMenu(self.menubar)
        self.menu_4.setObjectName("menu_4")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)
        self.actiongrade = QtWidgets.QAction(MainWindow)
        self.actiongrade.setObjectName("actiongrade")
        self.actionclass = QtWidgets.QAction(MainWindow)
        self.actionclass.setObjectName("actionclass")
        self.actionstudent = QtWidgets.QAction(MainWindow)
        self.actionstudent.setObjectName("actionstudent")
        self.actionstudentinfo = QtWidgets.QAction(MainWindow)
        self.actionstudentinfo.setObjectName("actionstudentinfo")
        self.actionuserinfo = QtWidgets.QAction(MainWindow)
        self.actionuserinfo.setObjectName("actionuserinfo")
        self.actionexit = QtWidgets.QAction(MainWindow)
        self.actionexit.setObjectName("actionexit")
        self.menu.addAction(self.actiongrade)
        self.menu.addAction(self.actionclass)
        self.menu_2.addAction(self.actionstudent)
        self.menu_3.addAction(self.actionstudentinfo)
        self.menu_4.addAction(self.actionuserinfo)
        self.menu_4.addAction(self.actionexit)
        self.menubar.addAction(self.menu.menuAction())
        self.menubar.addAction(self.menu_2.menuAction())
        self.menubar.addAction(self.menu_3.menuAction())
        self.menubar.addAction(self.menu_4.menuAction())

        self.retranslateUi(MainWindow)
        self.actionexit.triggered.connect(MainWindow.close)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)
        datetime = QtCore.QDateTime.currentDateTime()  # 获取当前日期时间
        time = datetime.toString("yyyy-MM-dd HH:mm:ss")  # 对日期时间进行格式化
        # 状态栏中显示登录用户、登录时间,以及版权信息
        self.statusbar.showMessage("当前登录用户:" + service.userName + " | 登录时间:" + time + "  | www.python222.com 收藏整理",0)
        # 为基础设置菜单中的QAction绑定triggered信号
        self.menu.triggered[QtWidgets.QAction].connect(self.openSet)
        # 为基本信息管理菜单中的QAction绑定triggered信号
        self.menu_2.triggered[QtWidgets.QAction].connect(self.openBase)
        # 为系统查询菜单中的QAction绑定triggered信号
        self.menu_3.triggered[QtWidgets.QAction].connect(self.openQuery)
        # 为系统管理菜单中的QAction绑定triggered信号
        self.menu_4.triggered[QtWidgets.QAction].connect(self.openSys)

    # 基础设置菜单对应槽函数
    def openSet(self,m):
        if m.text()=="年级设置":
            self.m = grade.Ui_MainWindow()  # 创建年级设置窗体对象
            self.m.show()  # 显示窗体
        elif  m.text()=="班级设置":
            self.m = classes.Ui_MainWindow()  # 创建班级设置窗体对象
            self.m.show()  # 显示窗体

    # 基本信息管理菜单对应槽函数
    def openBase(self,m):
        if  m.text()=="学生管理":
            self.m = student.Ui_MainWindow()  # 创建学生管理窗体对象
            self.m.show()  # 显示窗体

    # 系统查询菜单对应槽函数
    def openQuery(self,m):
        if  m.text()=="学生信息查询":
            self.m = studentinfo.Ui_MainWindow()  # 创建学生信息查询窗体对象
            self.m.show()  # 显示窗体

    # 系统管理菜单对应槽函数
    def openSys(self,m):
        if  m.text()=="用户维护":
            self.m = user.Ui_MainWindow()  # 创建用户维护窗体对象
            self.m.show()  # 显示窗体

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "学生成绩管理系统"))
        self.menu.setTitle(_translate("MainWindow", "基础设置"))
        self.menu_2.setTitle(_translate("MainWindow", "基本信息管理"))
        self.menu_3.setTitle(_translate("MainWindow", "系统查询"))
        self.menu_4.setTitle(_translate("MainWindow", "系统管理"))
        self.actiongrade.setText(_translate("MainWindow", "年级设置"))
        self.actionclass.setText(_translate("MainWindow", "班级设置"))
        self.actionstudent.setText(_translate("MainWindow", "学生管理"))
        self.actionstudentinfo.setText(_translate("MainWindow", "学生信息查询"))
        self.actionuserinfo.setText(_translate("MainWindow", "用户维护"))
        self.actionexit.setText(_translate("MainWindow", "退出"))

源码下载

CSDN 1积分下载:https://download.csdn.net/download/caofeng891102/88680194

或者免费领取加小锋老师wx:java9266

热门推荐

免费分享一套Springboot+Vue前后端分离的停车场管理系统,挺漂亮的-CSDN博客

免费分享一套Springboot+Vue前后端分离的个人博客系统,挺漂亮的-CSDN博客

免费分享一套Springboot+Vue前后端分离的学生网上请假系统,挺漂亮的-CSDN博客

免费分享一套基于springboot的进销存(仓库)管理系统,挺漂亮的-CSDN博客

免费分享一套 SpringBoot + Vue + ElementUI 的人力资源管理系统,挺漂亮的_element+springboot员工工资管理-CSDN博客

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

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

相关文章

康熙字典的部首里为啥没有王字旁

很多汉字的偏旁部首,是“王”,但在康熙字典的部首列表里,却没有它。而新华字典是有的。 这不科学啊,于是我还通过Unicode编码查了下康熙部首的编码部分,确认了一下,发面里面确实没有。 康熙部首&#xff08…

顺序表、链表(ArrayList、LinkedList)

目录 前言: 顺序表(ArrayList): 顺序表的原理: ArrayList源码: 的含义:​编辑 ArrayList的相关方法:​编辑 向上转型List: 练习题(杨辉三角&#x…

单页404源码

<!doctype html> <html> <head> <meta charset"utf-8"> <title>简约 404错误页</title><link rel"shortcut icon" href"./favicon.png"><style> import url("https://fonts.googleapis.co…

Java中抽象类和接口的区别

抽象类和接口都是 Java 中多态的常见使用方式. 都需要重点掌握. 同时又要认清两者的区别(重要!!! 常见面试题)。 核心区别: 抽象类中可以包含普通方法和普通字段, 这样的普通方法和字段可以被子类直接使用(不必重写而重写抽象方法), 而接口中不能包含普通方法&#xff08;接口…

生成式人工智能(AIGC)之最全详解图解

生成式人工智能&#xff08;AIGC&#xff09;之最全详解图解 1. AIGC的发展历程1.1 AIGC演化重要时间节点AIGC发展历程图OpenAI大语言模型发展进程 1.2技术推进路线 2.AIGC技术场景2.1 技术场景 3.1AIGC相关应用4.AIGC未来发展前景 1. AIGC的发展历程 AIGC&#xff08;AI-Gene…

ClickHouse--04--数据库引擎、Log 系列表引擎、 Special 系列表引擎

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 1.数据库引擎1.1 Ordinary 默认数据库引擎1.2 MySQL 数据库引擎MySQL 引擎语法字段类型的映射 2.ClickHouse 表引擎3.Log 系列表引擎几种 Log 表引擎的共性是&#…

任务调度

1.学习目标 1.1 定时任务概述 1.2 jdk实现任务调度 1.3 SpringTask实现任务调度 1.4 Spring-Task 分析 1.5 Cron表达式 https://cron.qqe2.com/ 2. Quartz 基本应用 2.1 Quartz 基本介绍 2.2 Quartz API介绍 2.3 入门案例 <dependency> <groupId>org.springframe…

《Java 简易速速上手小册》第7章:Java 网络编程(2024 最新版)

文章目录 7.1 网络基础和 Java 中的网络 - 揭开神秘的面纱7.1.1 基础知识7.1.2 重点案例&#xff1a;实现一个简单的聊天程序7.1.3 拓展案例 1&#xff1a;使用 UDP 进行消息广播7.1.4 拓展案例 2&#xff1a;建立一个简单的 Web 服务器 7.2 创建客户端和服务器 - 构建沟通的桥…

Microsoft Word 清除格式

Microsoft Word 清除格式 References 选择文本&#xff0c;用快捷键 Ctrl Shift N&#xff0c;可以快速清除格式。 选择文本&#xff0c;清除格式。 References [1] Yongqiang Cheng, https://yongqiang.blog.csdn.net/

Java图形化界面编程—— ImageIO 笔记

2.8.4 ImageIO的使用 在实际生活中&#xff0c;很多软件都支持打开本地磁盘已经存在的图片&#xff0c;然后进行编辑&#xff0c;编辑完毕后&#xff0c;再重新保存到本地磁盘。如果使用AWT要完成这样的功能&#xff0c;那么需要使用到ImageIO这个类&#xff0c;可以操作本地磁…

【数据结构】二叉树先序、中序、后序及层次四种遍历(C语言版)

数据结构——二叉树先序、中序、后序三种遍历 一、图示展示&#xff1a; &#xff08;1&#xff09;先序遍历&#xff08;2&#xff09;中序遍历&#xff08;3&#xff09;后序遍历&#xff08;4&#xff09;层次遍历&#xff08;5&#xff09;口诀 二、代码展示&#xff1a; 一…

使用JNDI API

使用JNDI API Java EE应用程序使用JNDI API作为通用的名称查找服务来查找组件、外部资源和组件环境属性。JNDI API公开底层命名协议和实现的详细信息。 1. JNDI API的架构 JNDI架构由以下组件组成: JNDI API:它可让Java应用程序访问各种命名服务和目录服务。JNDI服务提供商接…

‘vue-cli-service‘ 不是内部或外部命令,也不是可运行的程序

遇到 vue-cli-service 不是内部或外部命令&#xff0c;也不是可运行的程序或批处理文件。 的错误时&#xff0c;通常意味着Vue CLI没有被正确安装或配置在项目中。这可能是因为node_modules目录缺失了必要的包&#xff0c;或者局部安装的Vue CLI没有被正确设置到系统的PATH环境…

理解JAVA命名和目录接口(JNDI)

理解JAVA命名和目录接口(JNDI) 考虑访问网站的场景,Web用户要求记住四字节的IP地址而不是有意义的名称。例如,假设Web用户用123.23.3.123而不是hotmail.com访问hotmail网站。在这种情形下,Web用户难以记住不同的IP地址来访问不同的网站。因此,要使其变得对Web用户简单方…

九、java 继承

文章目录 java 继承3.1 根父类Object3.2 方法重写3.3 继承案例&#xff1a;图形类继承体系3.4 继承的细节3.4.1 构造方法3.4.2 重名与静态绑定3.4.3 重载和重写3.4.4 父子类型转换3.4.5 继承访问权限protected3.4.6 可见性重写3.4.7 防止继承final 3.5 继承是把双刃剑3.5.1 继承…

lime-echart 一个基于 JavaScript 的开源可视化图表库 使echarts图表能跑在uniapp各端中的插件

Lime-echart 是一个基于 JavaScript 的开源可视化图表库&#xff0c;旨在使 ECharts 图表能够在 UniApp 各个端中运行。UniApp 是一个跨平台的应用程序开发框架&#xff0c;允许开发人员使用 Vue.js 开发一次&#xff0c;然后部署到多个平台&#xff0c;包括 iOS、Android、Web…

openGauss学习笔记-218 openGauss性能调优-确定性能调优范围-硬件瓶颈点分析-I/O

文章目录 openGauss学习笔记-218 openGauss性能调优-确定性能调优范围-硬件瓶颈点分析-I/O218.1 查看I/O状况218.2 性能参数分析 openGauss学习笔记-218 openGauss性能调优-确定性能调优范围-硬件瓶颈点分析-I/O 获取openGauss节点的CPU、内存、I/O和网络资源使用情况&#xf…

数据库基本操作2

一.DML&#xff08;Data Manipulation Language&#xff09; 用来对数据库中表的数据记录进行更新 关键字&#xff1a;增删改 插入insert 删除delete 更新update 1.数据插入 insert into 表&#xff08;列名1&#xff0c;列名2&#xff0c;列名3……&#xff09;values&a…

STM32Cubmax DAC 采集

一、概念 DMA&#xff0c;全称为&#xff1a; Direct Memory Access&#xff0c;即直接存储器访问&#xff0c; DMA 传输将数据从一个 地址空间复制到另外一个地址空间。 当 CPU 初始化这个传输动作&#xff0c;传输动作本身是由 DMA 控制器 来实行和完成。典型的例子就是移动…

谁再用Arrays.asList就开除谁

谁再用Arrays.asList就开除谁 hi&#xff0c;我是achang&#xff0c;今天说一个使用Arrays.asList后对应出现的一系列坑&#xff0c;因为他有那么多坑&#xff0c;所以会有开玩笑的说&#xff1a;谁再用Arrays.asList就开除谁 那Arrays.asList的作用很简单&#xff0c;就是把…