Python实战项目之MySQL tkinter pyinstaller实现学生管理系统

yizhihongxing

Python实战项目之MySQL tkinter pyinstaller实现学生管理系统是一个完整的项目,主要包含以下步骤:

  1. 数据库设计与创建
    在MySQL中创建一个学生表,包含学生编号、学生姓名、性别、年龄和联系方式等字段,可以使用下面的SQL语句实现:
DROP TABLE IF EXISTS student;
CREATE TABLE student (
  id INT AUTO_INCREMENT PRIMARY KEY,
  name VARCHAR(255) NOT NULL,
  gender CHAR(1) NOT NULL,
  age INT NOT NULL,
  phone VARCHAR(20) NOT NULL
);
  1. 使用Python连接MySQL数据库
    利用pymysql模块连接MySQL数据库,示例代码如下:
import pymysql

conn = pymysql.connect(host='localhost', port=3306, user='root', password='123456', db='test')
cur = conn.cursor()
cur.execute('SELECT * FROM student')
result = cur.fetchall()
print(result)
cur.close()
conn.close()
  1. 使用tkinter实现GUI界面
    使用tkinter模块实现学生管理系统的GUI界面,包括学生信息的录入、查询、修改和删除等功能,示例代码如下:
import tkinter as tk

class StudentGUI:
    def __init__(self, master):
        self.master = master
        self.master.title('学生管理系统')
        self.master.geometry('800x600')

        tk.Label(self.master, text='学生编号:').grid(row=0, column=0)
        tk.Entry(self.master).grid(row=0, column=1)

        tk.Label(self.master, text='学生姓名:').grid(row=1, column=0)
        tk.Entry(self.master).grid(row=1, column=1)

        tk.Label(self.master, text='学生性别:').grid(row=2, column=0)
        tk.Entry(self.master).grid(row=2, column=1)

        tk.Label(self.master, text='学生年龄:').grid(row=3, column=0)
        tk.Entry(self.master).grid(row=3, column=1)

        tk.Label(self.master, text='联系方式:').grid(row=4, column=0)
        tk.Entry(self.master).grid(row=4, column=1)

        tk.Button(self.master, text='录入').grid(row=5, column=0)
        tk.Button(self.master, text='查询').grid(row=5, column=1)
        tk.Button(self.master, text='修改').grid(row=6, column=0)
        tk.Button(self.master, text='删除').grid(row=6, column=1)

if __name__ == '__main__':
    root = tk.Tk()
    gui = StudentGUI(root)
    root.mainloop()
  1. 实现数据库操作功能
    在程序中实现对学生表的操作,例如查询所有学生、根据学生编号查询学生、添加学生、修改学生和删除学生等功能,示例代码如下:
import pymysql

class StudentDB:
    def __init__(self):
        self.conn = pymysql.connect(host='localhost', port=3306, user='root', password='123456', db='test')
        self.cur = self.conn.cursor()

    def select_all(self):
        sql = 'SELECT * FROM student'
        self.cur.execute(sql)
        result = self.cur.fetchall()
        return result

    def select_by_id(self, id):
        sql = 'SELECT * FROM student WHERE id = %s'
        self.cur.execute(sql, (id,))
        result = self.cur.fetchone()
        return result

    def insert(self, name, gender, age, phone):
        sql = 'INSERT INTO student (name, gender, age, phone) VALUES (%s, %s, %s, %s)'
        self.cur.execute(sql, (name, gender, age, phone))
        self.conn.commit()

    def update_by_id(self, id, name, gender, age, phone):
        sql = 'UPDATE student SET name = %s, gender = %s, age = %s, phone = %s WHERE id = %s'
        self.cur.execute(sql, (name, gender, age, phone, id))
        self.conn.commit()

    def delete_by_id(self, id):
        sql = 'DELETE FROM student WHERE id = %s'
        self.cur.execute(sql, (id,))
        self.conn.commit()

    def __del__(self):
        self.cur.close()
        self.conn.close()
  1. 打包程序
    使用pyinstaller模块将程序打包成可执行文件,示例命令如下:
pyinstaller -F student_gui.py

其中,-F参数表示打包成单个可执行文件。

整个项目的代码实现和使用步骤详见博客文章:Python实战项目之MySQL tkinter pyinstaller实现学生管理系统

示例说明1:查询所有学生信息

在GUI界面中点击“查询”按钮,调用StudentDB类的select_all方法查询所有学生信息,然后将查询结果显示在界面上,示例代码如下:

class StudentGUI:
    def __init__(self, master):
        # ...

        self.db = StudentDB()

        tk.Button(self.master, text='查询', command=self.select_all).grid(row=5, column=1)

    def select_all(self):
        result = self.db.select_all()
        # 显示查询结果

示例说明2:修改学生信息

在GUI界面中输入要修改的学生编号、姓名、性别、年龄和联系方式,然后点击“修改”按钮,调用StudentDB类的update_by_id方法修改学生信息,示例代码如下:

class StudentGUI:
    def __init__(self, master):
        # ...

        self.db = StudentDB()

        tk.Label(self.master, text='要修改的学生编号:').grid(row=7, column=0)
        self.id_entry = tk.Entry(self.master)
        self.id_entry.grid(row=7, column=1)

        tk.Button(self.master, text='修改', command=self.update).grid(row=8, column=1)

    def update(self):
        id = int(self.id_entry.get())
        name = self.name_entry.get()
        gender = self.gender_entry.get()
        age = int(self.age_entry.get())
        phone = self.phone_entry.get()
        self.db.update_by_id(id, name, gender, age, phone)
        # 显示修改成功提示

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python实战项目之MySQL tkinter pyinstaller实现学生管理系统 - Python技术站

(0)
上一篇 2023年5月30日
下一篇 2023年5月30日

相关文章

  • Python如何获取模块中类以及类的属性方法信息

    在Python中,我们可以使用dir()函数获取模块中类以及类的属性方法信息。以下是一个详细的攻略,包含两个示例。 1. 获取模块中类以及类的属性方法信息 我们可以使用dir()函数获取模块中类以及类的属性方法信息。dir()函数返回一个列表,包含了指定模块中定义的所有名称。以下是一个示例代码,演示如何使用dir()函数获取模块中类以及类的属性方法信息: i…

    python 2023年5月15日
    00
  • Python3列表内置方法大全及示例代码小结

    下面我将详细讲解“Python3列表内置方法大全及示例代码小结”的完整攻略。 Python3列表内置方法大全及示例代码小结 一、列表的数据结构 在 Python3 中,列表(List)是一种可变容器,可按照任意顺序存储同一种数据类型的元素。在 Python 中,列表是用方括号 [] 包含一系列逗号分隔的值来表示。例如: fruits = [‘apple’, …

    python 2023年5月19日
    00
  • 关于js中removeEventListener取消事件监听的坑

    下面我会详细讲解关于JS中removeEventListener取消事件监听的坑的攻略。 什么是removeEventListener? removeEventListener()是一个方法,它用于从指定元素中移除事件监听器。例如,对于一个按钮元素,我们可以使用addEventListener()方法为它添加鼠标点击事件监听器,然后使用removeEvent…

    python 2023年6月13日
    00
  • 在java中如何定义一个抽象属性示例详解

    下面是在Java中定义抽象属性的完整攻略: 在抽象类中定义抽象属性 第一步是定义一个抽象类,这个抽象类可以包含抽象属性。抽象属性是没有具体实现的,只有名称、类型和访问者权限。例如: public abstract class Shape { protected String name; protected int numberOfSides; public …

    python 2023年5月18日
    00
  • 对python中使用requests模块参数编码的不同处理方法

    以下是关于Python中使用requests模块参数编码的不同处理方法的攻略: 对Python中使用requests模块参数编码的不同处理方法 在Python中,requests是一个流行的HTTP库,可以用于向Web发送HTTP请求和接响应。在使用requests库发送HTTP请求时,有时需要对参数进行编码处理。以下是对Python中使用requests模…

    python 2023年5月14日
    00
  • 在这个非常基本的代码中,我无法弄清楚第 6 行的语法错误是什么(python)

    【问题标题】:In this very basic code i can’t figure out what’s the sytax error here in line 6 is (python)在这个非常基本的代码中,我无法弄清楚第 6 行的语法错误是什么(python) 【发布时间】:2023-04-06 05:38:01 【问题描述】: myName…

    Python开发 2023年4月7日
    00
  • Python正则表达式指南 推荐

    Python正则表达式指南推荐 正则表达式是一种用于描述字符串模式的语言,它可以用于匹配、查找、替换和割字符串。Python中的re模块供了对正则表达式的支持,可以方便进行字符串的处理。本文将推荐一些Python正则表达式的学习资源,并提供两个常用的匹实例。 学习资源推荐 1. Python官方文档 Python方文档提供了对re块的详细介绍和使用示例,是学…

    python 2023年5月14日
    00
  • Flask response响应的具体使用

    下面是关于Flask中响应的具体使用的完整攻略。 1. 使用Flask响应对象 当Flask应用需要返回响应时,可以使用Flask中自带的响应对象。常见的响应对象类型有: Response: 基础响应对象,可以设置状态码、响应头等。 make_response(): 使用Response对象创建响应。 jsonify(): 将字典或列表序列化成JSON格式的…

    python 2023年5月14日
    00
合作推广
合作推广
分享本页
返回顶部