python-mysql期末实验:六、province(省份)表的增删改查界面的制作

本专栏目录:

一、实验综述

二、基于MySQL进行的数据库的搭建

三、程序登录、注册界面的制作

四、数据导入界面的制作

五、collage(大学)表的增删改查界面的制作

六、province(省份)表的增删改查界面的制作(即本篇)

七、student_num(考生人数)表的增删改查界面以及数据可视化的制作

八、min_score_line(最低分数线)表的增删改查界面以及数据可视化的制作

九、collage_level(学校等级)表的增删改查界面的制作

十、enrollment_type(招生类型)表的增删改查界面的制作

十一、enrollment(招生人数)表的增删改查界面以及数据可视化的制作

十二、school_type(学校类型)表的增删改查界面的制作

十三、collage_school_level(各高校等级)表的增删改查界面的制作

十四、collage_province_enrollment_type(各高校招生类型)表的增删改查界面的制作

如果需要整个代码文件,以及数据库中的数据,或者有较为复杂的问题,请添加QQ:3095631599(CSDN-山河之书),添加时请备注:CSDN。

本部分将叙述省份表增删改查界面函数(即本专栏第三篇文章中的province_use函数)的制作过程

这部分主要包括一个界面:collage表增删改查界面

可以实现的功能包括:支持关键词搜索,支持多元组查询,支持不完全关键词查询(即关键词有多个,可以只输入任意一个检索出符合其的全部结果),支持模糊关键词查询,支持无筛选条件的全表查询,支持单个元组的删除和插入,支持输入数据字符类型检查,支持插入或删除数据的完整性检查。

(有没有觉得这篇文章的开头跟连载的上一篇有亿点相似?相似就对了,这部分代码的逻辑结构和上一个几乎可以说是完全一样)

接下来将舞台交给代码段,所有的解释都将以注释的形式呈现(当然,由于这个和上一个相似度太高,因此注释啥的就是增量注释,具体的可以去python-mysql期末实验:五、collage(大学)表的增删改查界面的制作_山河之书的博客-CSDN博客里面看):

import tkinter as tk  # 本代码段需用
import pymysql as py  # 本代码段需用
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from tkinter import ttk  # 本代码段需用
from tkinter import messagebox  # 本代码段需用
import re
import turtle
import random
import time


def province_use():
    province_window = tk.Tk()
    province_window.title("province表(省份表)操作界面")
    province_window.geometry("450x500")
    tk.Label(province_window, text="高校报考信息查询系统").place(x=300, y=20)

    tree = ttk.Treeview(province_window)
    tree["column"] = ("province_name", "province_intro")
    tree.column("province_name", width=240)
    tree.heading("province_name", text="省份名全称")
    tree.column("province_intro", width=240)
    tree.heading("province_intro", text="教育招生考试院链接")
    tree.grid(row=4, column=0, columnspan=20)

    province_name = tk.Label(province_window, text="省份名(关键字)")
    province_name.grid(row=1, column=0)
    province_name_str = tk.StringVar()
    province_name_input = tk.Entry(province_window, width=20, textvariable=province_name_str)
    province_name_input.grid(row=1, column=1)

    province_intro = tk.Label(province_window, text="教育招生考试院链接")
    province_intro.grid(row=2, column=0)
    province_intro_str = tk.StringVar()
    province_intro_input = tk.Entry(province_window, width=20, textvariable=province_intro_str)
    province_intro_input.grid(row=2, column=1)

    def select():
        province_name_info = province_name_input.get()
        conn = py.connect(host='%s' % ip, user='lzx', password='lzx', port=3306, database='dbms_report',
                          charset='utf8')  # 此处IP(host)可以用localhost,亦可以用127.0.0.1,如果共享运行还可以用自定义的IP,这里我用的%传参,ip的值在连载的第一篇文章里面有,用的是127.0.0.1
        cursor = conn.cursor()
        if len(province_name_info) == 0:
            cursor.execute("select * from province")
        else:
            cursor.execute("select * from province where province_name like '%%%s%%'" % province_name_info)
        list_result = cursor.fetchall()
        x = tree.get_children()
        for item in x:
            tree.delete(item)
        for i in range(len(list_result)):
            tree.insert("", i, text=str(i), values=(list_result[i][0], list_result[i][1]))
        conn.commit()
        conn.close()

    def insert():
        province_name_info = province_name_input.get()
        province_intro_info = province_intro_input.get()
        conn = py.connect(host='%s' % ip, user='lzx', password='lzx', port=3306, database='dbms_report',
                          charset='utf8')
        cursor = conn.cursor()
        try:
            cursor.execute("insert into province values('%s','%s')" % (province_name_info, province_intro_info))
            # 套路都一样
            conn.commit()
            tk.messagebox.showinfo("正确", "数据插入成功")
            conn.close()
        except py.err.IntegrityError:
            tk.messagebox.showerror("错误", "受到完整性约束限制,数据插入失败,请重新检查数据,然后插入")

    def delete():
        province_name_info = province_name_input.get()
        conn = py.connect(host='%s' % ip, user='lzx', password='lzx', port=3306, database='dbms_report',
                          charset='utf8')
        cursor = conn.cursor()
        try:
            if len(province_name_info) == 0:
                tk.messagebox.showerror("错误", "请输入执行删除的筛选条件")
            else:
                cursor.execute("delete from province where province_name='%s'" % province_name_info)
                conn.commit()
                tk.messagebox.showinfo("正确", "删除数据成功")
            conn.close()
        except py.err.IntegrityError:
            tk.messagebox.showerror("错误", "受到完整性约束限制,数据删除失败,请先删除外键数据")

    tk.Button(province_window, text="查询", command=select).grid(row=3, column=0)
    tk.Button(province_window, text="插入", command=insert).grid(row=3, column=1)
    tk.Button(province_window, text="删除", command=delete).grid(row=3, column=2)

    def quit_province_use():
        province_window.destroy()
    tk.Button(province_window, text="返回", command=quit_province_use).grid(row=3, column=3)

喜闻乐见的运行截图:

 

 

 

 

 (对于最后一张图,我申明我不是某某分子,我只是把台湾省删去,改成了台湾特别行政区,我做的没毛病吧?)

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

山河之书Liu_Zixin

不要打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值