Python连接Mysql建立简易客户管理系统(附源码)

具备基本的增删查功能的客户管理系统

import pymysql.cursors
from tkinter import ttk
import tkinter as tk
import tkinter.font as tkFont
from tkinter import *  # 图形界面库
import tkinter.messagebox as messagebox
import time
connect=pymysql.Connect(
    host='localhost',
    port=3306,
    user='root',
    passwd='***',
    db='管理系统',
    charset='utf8'
)
class startpage:
    def __init__(self,parent_window):
        parent_window.update()
        parent_window.destroy()
        self.window=tk.Tk()
        self.window.title("客户管理系统")
        self.window.geometry('700x600+70+50')
        def getTime():
            timeStr=time.strftime('%H:%M:%S')
            Rtime.configure(text=timeStr)
            self.window.after(1000, getTime)
        Rtime= Label(self.window,text='')
        Rtime.pack(pady=25)
        getTime()
        label= Label(self.window,text="客户管理系统",font=("楷体",30))
        label.pack(pady=10)
        Button(self.window,text="添加客户",font=tkFont.Font(size=16),command=lambda: xinjian(self.window),width=20,height=2,fg='white',bg='gray').place(x=100,y=300)
        Button(self.window,text="查询",font=tkFont.Font(size=16), command=lambda: cangkucha(self.window), width=20,height=2, fg='white', bg='gray').place(x=400, y=300)
        Button(self.window, text="删除", font=tkFont.Font(size=16), command=lambda:shanchu(self.window), width=20,height = 2, fg = 'white', bg = 'gray').place(x=100, y=400)
        Button(self.window, text="退出系统", font=tkFont.Font(size=16), command=self.window.destroy, width=20,height=2, fg='white', bg='gray').place(x=400, y=400)

        self.window.mainloop()
class xinjian:
    def __init__(self,parent_window):
        parent_window.destroy()
        self.window=tk.Tk()
        self.window.title("添加客户")
        self.window.geometry('700x600+70+50')
        self.top_title=Label(self.window,text="添加客户",bg='SkyBlue', font=('楷体', 20), width=70, height=2)
        self.top_title.pack()

        self.var_id = StringVar()
        self.var_name = StringVar()
        self.var_gender = StringVar()
        self.var_age = StringVar()

        self.right_top_id_label = Label(text="客户ID号:", font=('楷体', 15)).pack(pady=15)
        self.right_top_id_entry = Entry(textvariable=self.var_id, font=('楷体', 15)).pack()

        self.right_top_name_label =Label(text="客户姓名:", font=('楷体', 15)).pack(pady=15)
        self.right_top_name_entry = Entry(textvariable=self.var_name, font=('楷体', 15)).pack()

        self.right_top_gender_label = Label(text="客户性别:", font=('楷体', 15)).pack(pady=15)
        self.right_top_gender_entry = Entry(textvariable=self.var_gender, font=('楷体', 15)).pack()

        self.right_top_age_label = Label(text="客户年龄:", font=('楷体', 15)).pack(pady=15)
        self.right_top_age_entry = Entry(textvariable=self.var_age, font=('楷体', 15)).pack()

        self.right_top_button1 = ttk.Button(text='确定', width=20, command=self.new_row).pack(pady=30)
        self.right_top_button2 = ttk.Button(text='返回', width=20, command=self.back).pack()
        self.window.protocol("WM_DELETE_WINDOW", self.back)  # 捕捉右上角关闭点击

        self.id=[]
        self.name=[]
        self.gender=[]
        self.age=[]
        db = pymysql.connect(host="localhost", user="root", passwd="***", db="管理系统")
        cursor = db.cursor()  # 使用cursor()方法获取操作游标
        sql = "SELECT * FROM 添加"  # SQL 查询语句
        try:
            cursor.execute(sql)
            results=cursor.fetchall()
            for row in results:
                self.id.append(row[0])
                self.name.append(row[1])
                self.gender.append(row[2])
                self.age.append(row[3])
        except:
            print("Error: unable to fetch data")
            messagebox.showinfo('警告!', '数据库连接失败!')
        db.close()

    def back(self):
        startpage(self.window)
    def new_row(self):
        if self.var_id.get() != '' and self.var_name.get() != '' and self.var_gender.get() != '' and self.var_age.get() != '':
            db=pymysql.connect(host="localhost", user="root", passwd="***", db="管理系统")
            cursor = db.cursor()  # 使用cursor()方法获取操作游标
            sql= "INSERT INTO 添加(客户ID号,客户姓名,客户性别,客户年龄) VALUES('%s','%s','%s','%s')"%(self.var_id.get(), self.var_name.get(),self.var_gender.get(), self.var_age.get())
            try:
                cursor.execute(sql)  # 执行sql语句
                db.commit()  # 提交到数据库执行
                messagebox.showinfo('提示!', '添加成功!')
            except:
                db.rollback()  # 发生错误时回滚
                messagebox.showinfo('警告!', '数据库连接失败!')
            db.close()  # 关闭数据库连接
        else:
            messagebox.showinfo('提示!', '请填写客户信息')
class kehudan:
    def __init__(self,parent_window):
        parent_window.destroy()  # 销毁子界面
        self.window = tk.Tk()
        self.window.title('客户清单')
        self.window.geometry('1200x600+70+50')
        db = pymysql.connect(host="localhost", user="root", passwd="***", db="管理系统")
        cursor = db.cursor()  # 使用cursor()方法获取操作游标
        sql = "SELECT * FROM 添加"
        try:
            cursor.execute(sql)  # 执行sql语句
            results = cursor.fetchall()
            for row in results:
                self.id = '客户ID号:' + row[0]
                self.name = '客户名称:' + row[1]
                self.gender = '客户性别' + row[2]
                self.age = '客户年龄' + row[3]

                db.commit()
                Label(self.window, text=self.id + "\t" + self.name + "\t" + self.gender + "\t" +self.age, font=('楷体', 18)).pack(pady=5)
        except:
            db.rollback()  # 发生错误时回滚
            messagebox.showinfo('警告!', '数据库连接失败!')
        db.close()  # 关闭数据库连接
        self.right_top_button4 = ttk.Button(text='返回', width=20, command=self.back).pack()
        self.window.protocol("WM_DELETE_WINDOW", self.back)
    def back(self):
        cangkucha(self.window)

class cangkucha:
    def __init__(self, parent_window):
        parent_window.destroy()  # 销毁子界面
        self.window = tk.Tk()
        self.window.title('客户查询')
        self.window.geometry('700x600+70+50')

        self.student_id = StringVar()
        self.id = '客户ID号:' + ''
        self.name = '客户姓名:' + ''
        self.gender = '客户性别:' + ''
        self.age = '年龄:' + ''

        Button(self.window, text="客户清单", font=tkFont.Font(size=12), command=lambda: kehudan(self.window), width=20,
               height=2, fg='white', bg='gray').place(x=20, y=70)
        self.right_top_name_label = Label(text="客户查询", font=('楷体', 15)).pack(pady=15)
        self.right_top_name_entry = Entry(textvariable=self.student_id, font=('楷体', 15)).pack(pady=30)

        self.right_top_button3 = ttk.Button(text='确定', width=20, command=self.new_row).pack(pady=30)
        self.right_top_button4 = ttk.Button(text='返回', width=20, command=self.back).pack()
        self.window.protocol("WM_DELETE_WINDOW", self.back)

        # 打开数据库连接
        db = pymysql.connect(host="localhost", user="root", passwd="***", db="管理系统")
        cursor = db.cursor()  # 使用cursor()方法获取操作游标
        sql = "SELECT * FROM 添加 WHERE 客户ID号='%s'" % (self.student_id.get()) # SQL 查询语句
        try:
            # 执行SQL语句
            cursor.execute(sql)
            # 获取所有记录列表
            results = cursor.fetchall()
            for row in results:
                self.id = '客户ID号:' + row[0]
                self.name = '客户姓名:' + row[1]
                self.gender = '客户性别:' + row[2]
                self.age = '客户年龄:' + row[3]
        except:
            print("Error: unable to fetch data")
        db.close()  # 关闭数据库连接

    def back(self):
        startpage(self.window)

    def new_row(self):
        if self.student_id.get() != '':
            db = pymysql.connect(host="localhost", user="root", passwd="***", db="管理系统")
            cursor = db.cursor()  # 使用cursor()方法获取操作游标
            sql = "SELECT * FROM 添加 where 客户ID号 = '%s'" % (self.student_id.get())  # SQL 插入语句
            try:
                cursor.execute(sql)  # 执行sql语句
                results = cursor.fetchall()
                for row in results:
                    self.id = '客户ID号:' + row[0]
                    self.name = '客户姓名:' + row[1]
                    self.gender = '客户性别:' + row[2]
                    self.age = '客户年龄:' + row[3]
                db.commit()  # 提交到数据库执行
                label = tk.Label(self.window, text='客户信息查看', bg='SkyBlue', font=('楷体', 20), width=70, height=2)
                label.pack(pady=20)
                Label(self.window, text=self.id, font=('楷体', 18)).pack(pady=5)
                Label(self.window, text=self.name, font=('楷体', 18)).pack(pady=5)
                Label(self.window, text=self.gender, font=('楷体', 18)).pack(pady=5)
                Label(self.window, text=self.age, font=('楷体', 18)).pack(pady=5)
                Button(self.window, text="返回首页", width=8, font=tkFont.Font(size=12), command=self.back_1).pack(pady=150)
                self.window.protocol("WM_DELETE_WINDOW", self.back_1)
                self.window.mainloop()
            except:
                db.rollback()  # 发生错误时回滚
                messagebox.showinfo('提示', '数据库连接失败!')

            db.close()  # 关闭数据库连接
        else:
            messagebox.showinfo('提示', '请填写客户信息!')


    def back_1(self):
        cangkucha(self.window)
class shanchu:
    def __init__(self,parent_window):
        parent_window.destroy()

        self.window = tk.Tk()
        self.window.title('删除表')
        self.window.geometry('700x600+70+50')

        self.top_title = Label(self.window, text='删除', bg='SkyBlue', font=('楷体', 20), width=70, height=2)
        self.top_title.pack()

        self.var_id = StringVar()  # 声明
        self.var_name = StringVar()  # 声明
        self.var_gender = StringVar()  # 声明
        self.var_age = StringVar()  # 声明
        self.right_top_id_label = Label(text="客户ID号", font=('楷体', 15)).pack(pady=15)
        self.right_top_id_entry = Entry(textvariable=self.var_id, font=('楷体', 15)).pack()

        self.right_top_name_label = Label(text="客户姓名", font=('楷体', 15)).pack(pady=15)
        self.right_top_name_entry = Entry(textvariable=self.var_name, font=('楷体', 15)).pack()

        self.right_top_gender_label = Label(text="客户性别", font=('楷体', 15)).pack(pady=15)
        self.right_top_gender_entry = Entry(textvariable=self.var_gender, font=('楷体', 15)).pack()

        self.right_top_age_label = Label(text="客户年龄", font=('楷体', 15)).pack(pady=15)
        self.right_top_age_entry = Entry(textvariable=self.var_age, font=('楷体', 15)).pack()

        self.right_top_button1 = ttk.Button(text='确定', width=20, command=self.new_row).pack(pady=30)
        self.right_top_button2 = ttk.Button(text='返回', width=20, command=self.back).pack()
        self.window.protocol("WM_DELETE_WINDOW", self.back)  # 捕捉右上角关闭点击

        self.id = []
        self.name = []
        self.gender = []
        self.age = []
        # 打开数据库连接
        db = pymysql.connect(host="localhost", user="root", passwd="***", db="管理系统")
        cursor = db.cursor()  # 使用cursor()方法获取操作游标
        sql = "SELECT * FROM 添加"  # SQL 查询语句
        try:
            # 执行SQL语句
            cursor.execute(sql)
            # 获取所有记录列表
            results = cursor.fetchall()
            for row in results:
                self.id.append(row[0])
                self.name.append(row[1])
                self.gender.append(row[2])
                self.age.append(row[3])
        except:
            print("Error: unable to fetch data")
            messagebox.showinfo('提示', '数据库连接失败!')
        db.close()  # 关闭数据库连接

    def back(self):
            startpage(self.window)  # 显示主窗口 销毁本窗口

    def new_row(self):
            if self.var_id.get() != '' and self.var_name.get() != '':
                db = pymysql.connect(host="localhost", user="root", passwd="***", db="管理系统")
                cursor = db.cursor()  # 使用cursor()方法获取操作游标
                sql = "DELETE FROM 添加 WHERE 客户ID号 = '%s'" % (self.var_id.get())
                try:
                    cursor.execute(sql)  # 执行sql语句
                    db.commit()  # 提交到数据库执行
                    messagebox.showinfo('提示!', '删除成功!')
                except:
                    db.rollback()  # 发生错误时回滚
                    messagebox.showinfo('警告!', '数据库连接失败!')
                db.close()  # 关闭数据库连接
            else:
                messagebox.showinfo('警告!', '填写删除信息')

if __name__ == '__main__':
            window = tk.Tk()
            startpage(window)

这里附Mysql里的操作

先打开并运行mysql,

create database 管理系统;(这里分号用英文)

接着

create table 添加

客户ID号 VARCHAR(25),

客户姓名 VARCHAR(25),

客户性别 VARCHAR(25),

客户年龄 VARCHAR(25)

);

然后就可以运行了

  • 4
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值