数据库系统概论(实验)期末实验代码部分

这是一个基于Python的高考信息查询系统,它包括登录、注册、查询、删除和插入等功能。系统连接到MySQL数据库,涉及多个表如大学、省份、考生人数、最低分数线、学校等级、招生类型、招生人数等。用户可以按不同条件查询高校信息,如高校名称、省份、年份等,并进行数据的插入和删除操作。此外,系统还具备一些隐藏功能和错误处理机制,如密码格式验证和完整性约束检查。
摘要由CSDN通过智能技术生成

在数据库已经构建完成的状态下结合Python进行编程,写一个高考信息查询系统

此处仅展示代码部分,数据库的结构和E-R图也附上,便于理解代码,代码很长(一千四百多行),我只对每个功能区进行了划分标注,具体的注释没有写,我相信代码不是无聊的,至少,可以加一些彩蛋。

希望有人能看完全部的代码,就算只有一个人也行,代码没有分区,因此想找到自己需要的部分,估计只能往下划了……不过可以简单说一下,进行表查询的代码是从第290行开始的换算过来差不多是五分之一的长度处,查询代码的顺序与我给的表上面是完全一样的。

需要用的知识,CSDN上都有,建议就事论事去查找学习。

大学(collage)表(主码为collage_no)

高校编号(collage_no)

高校名称(collage_name)

官方URL(official_URL)

省份名(province_name)(FK)

学校类型(school_type_name)(FK)

省份(province)表(主码为province_name)

省份名(province name)

省教育招生考试院(PEAEI_URL)

考生人数(student_num)表(主码为province_name与year)

省份名(provience_name)(FK)

年份(year)

参加考试人数(student_in_total)

最低分数线(min_score_line)表(主码为collage_no与province_name)

高校编号(collage_no)(FK)

省份名(province_name)(FK)

最低分数线(min_score)

用户(user)表(主码为user_name)

用户名(user_name)

用户密码(user_password)

用户电子邮箱(user_e_mail)

省份名(province_name)(FK)

高考分数(score)

学校等级(school_level)表(主码为school_level)

学校等级名(school_level_name)

学校等级介绍(school_level_intro)

招生类型(enrollment_type)表(主码为enrollment_type_name)

招生类型名(enrollment_type_name)

招生类型介绍(enrollment_type_intro)

招生人数(enrollment)表(主码为collage_no与province_name与year)

高校编号(collage_no)(FK)

省份名(province_name)(FK)

年份(year)

招生人数(enrollment_in_total)

学校类型(school_type)表(主码为school_type_name)

高校类型名(school_type_name)

高校类型介绍(school_type_intro)

各高校等级(collage_school_level)表(主码为collage_no)

高校编号(collage_no)(FK)

高校等级名(school_level_name)(FK)

各高校招生类型(collage_province_enrollment_type)(主码为collage_no与enrollment_type_name与province_name)

高校编号(collage_no)(FK)

招生类型名(enrollment_type_name)(FK)

省份名(province_name)(FK)

E-R图:

上代码

import tkinter as tk
from tkinter import ttk
from tkinter import messagebox
import pymysql as py
import re
import turtle
import random
import time


# 随时随地配置IP
ip = "127.0.0.1"


# 窗口
window = tk.Tk()
window.title("欢迎使用本系统")
window.geometry("450x300")


# 背景图片
canvas = tk.Canvas(window, height=1450, width=1300)
image0 = tk.PhotoImage(file="樱顶1.png")
image = canvas.create_image(0, 0, anchor="nw", image=image0)
canvas.pack(side="top")


# 标签
tk.Label(window, text="高校报考信息查询系统").place(x=170, y=60)
tk.Label(window, text="请切记务必在使用本系统前仔细阅读使用说明,不然保证无法使用").place(x=60, y=90)
tk.Label(window, text="用户名:").place(x=100, y=150)
tk.Label(window, text="密码:").place(x=100, y=190)


# 输入框
username_input = tk.StringVar()
frame_username_input = tk.Entry(window, textvariable=username_input)
frame_username_input.place(x=160, y=150)
password_input = tk.StringVar()
frame_password_input = tk.Entry(window, textvariable=password_input, show="*")
frame_password_input.place(x=160, y=190)


# 登录函数
def log_in():
    username = username_input.get()
    password = password_input.get()
    conn = py.connect(host='%s' % ip, user='lzx', password='lzx', port=3306, database='dbms_report',
                      charset='utf8')
    cursor = conn.cursor()
    a = cursor.execute("select * from user")
    b = cursor.fetchall()
    list_usernames = []
    list_passwords = []
    for i in range(0, a):
        list_usernames.append(b[i][0])
        list_passwords.append(b[i][1])
    dict_users = dict(zip(list_usernames, list_passwords))
    if username in list_usernames:
        if password == dict_users[username]:
            tk.messagebox.showinfo(title="welcome", message=username+",欢迎您")
            choose()
        else:
            tk.messagebox.showerror(message="密码错误")
    elif username == "":
        tk.messagebox.showerror(message="用户名不能为空")
    elif password == "":
        tk.messagebox.showerror(message="密码不能为空")
    else:
        sign_up_ask = tk.messagebox.askyesno("提醒", "您尚未注册,是否注册?")
        if sign_up_ask is True:
            sign_up()
    conn.commit()
    conn.close()


# 注册函数
def sign_up():
    # 写入函数
    def save_user():
        try:
            conn = py.connect(host='%s' % ip, user='lzx', password='lzx', port=3306, database='dbms_report',
                              charset='utf8')
            cursor = conn.cursor()
            save_username = str(new_username.get())
            save_password = str(new_password.get())
            save_password_confirm = str(new_password_confirm.get())
            save_user_e_mail = str(user_e_mail.get())
            save_province_name = str(province_name.get())
            save_score = int(score.get())
            # 密码等检查
            try:
                pattern_password = r"^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[0-9a-zA-Z]{8,12}$"
                pattern_e_mail = r"^[0-9a-zA-Z]+(@)[0-9a-zA-Z]+\.(com)$"
                result_password = re.match(pattern_password, save_password)
                result_e_mail = re.match(pattern_e_mail, save_user_e_mail)
                if save_username == "" or save_password == "":
                    tk.messagebox.showerror("错误", "用户名或密码不能为空")
                elif not result_password:
                    tk.messagebox.showerror("错误", "请输入8到12位由数字、大小写字母构成的密码")
                elif not result_e_mail:
                    tk.messagebox.showerror("错误", "请输入正确的电子邮箱")
                elif save_password_confirm != save_password:
                    tk.messagebox.showerror("错误", "密码前后不一致")
                else:
                    sql = "insert into user(user_name,user_password,user_e_mail,province_name,score)\
                        values('%s','%s','%s','%s',%d)"\
                        % (save_username, save_password, save_user_e_mail, save_province_name, save_score)
                    cursor.execute(sql)
                    cursor.execute("select * from user")
                    list_sql2 = cursor.fetchall()
                    row_sql2 = len(list_sql2)
                    conn.commit()
                    conn.close()
                    tk.messagebox.showinfo("欢迎", "您是第%d位用户" % row_sql2)
                    window_sign_up.destroy()
            except py.err.IntegrityError:
                tk.messagebox.showerror("错误", "用户名已存在或省份输入格式不正确")
        except ValueError:
            tk.messagebox.showerror("错误", "成绩应为数字")
    # 注册界面
    window_sign_up = tk.Toplevel(window)
    window_sign_up.geometry("350x320")
    window_sign_up.title("注册")
    # 新建用户名
    new_username = tk.StringVar()
    tk.Label(window_sign_up, text="请输入用户名:").place(x=10, y=10)
    tk.Entry(window_sign_up, textvariable=new_username).place(x=150, y=10)
    # 新建密码
    new_password = tk.StringVar()
    tk.Label(window_sign_up, text="请输入8-12位包含\n大小写字母和数字的密码:").place(x=10, y=40)
    tk.Entry(window_sign_up, textvariable=new_password, show="*").place(x=150, y=50)
    # 再次输入密码
    new_password_confirm = tk.StringVar()
    tk.Label(window_sign_up, text="请再次输入密码:").place(x=10, y=90)
    tk.Entry(window_sign_up, textvariable=new_password_confirm, show="*").place(x=150, y=90)
    # 输入邮箱
    user_e_mail = tk.StringVar()
    tk.Label(window_sign_up, text="请输入邮箱:").place(x=10, y=130)
    tk.Entry(window_sign_up, textvariable=user_e_mail).place(x=150, y=130)
    # 输入省份
    province_name = tk.StringVar()
    tk.Label(window_sign_up, text="请输入省份:").place(x=10, y=170)
    tk.Entry(window_sign_up, textvariable=province_name).place(x=150, y=170)
    # 输入分数
    score = tk.StringVar()
    tk.Label(window_sign_up, text="请输入分数:").place(x=10, y=210)
    tk.Entry(window_sign_up, textvariable=score).place(x=150, y=210)
    # 确认注册按钮
    confirm_sign_up = tk.Button(window_sign_up, text="注册", command=save_user)
    confirm_sign_up.place(x=150, y=250)
    # 返回按钮


# 退出的函数
def quit_windows():
    window.destroy()
    main()


# 彩蛋函数三连
def trees(branch_len, t):
    time.sleep(0.00005)
    if branch_len > 3:
        if 8 <= branch_len <= 12:
            if random.randint(0, 2) == 0:
                t.color('snow')
            else:
                t.color('light coral')
            t.pensize(branch_len / 3)
        elif branch_len < 8:
            if random.randint(0, 1) == 0:
                t.color('snow')
            else:
                t.color('light coral')
            t.pensize(branch_len / 2)
        else:
            t.color('sienna')
            t.pensize(branch_len / 10)  # 6
        t.forward(branch_len)
        a = 1.5 * random.random()
        t.right(20 * a)
        b = 1.5 * random.random()
        trees(branch_len - 10 * b, t)
        t.left(40 * a)
        trees(branch_len - 10 * b, t)
        t.right(20 * a)
        t.up()
        t.backward(branch_len)
        t.down()


def petal(m, t):
    for i in range(m):
        a = 200 - 400 * random.random()
        b = 10 - 20 * random.random()
        t.up()
        t.forward(b)
        t.left(90)
        t.forward(a)
        t.down()
        t.color('light coral')
        t.circle(1)
        t.up()
        t.backward(a)
        t.right(90)
        t.backward(b)


def main():
    t = turtle.Turtle()
    w = turtle.Screen()
    t.hideturtle()
    t.getscreen().tracer(5, 0)
    w.screensize(bg='wheat')
    t.left(90)
    t.up()
    t.backward(150)
    t.down()
    t.color('sienna')
    trees(60, t)
    petal(200, t)
    w.exitonclick()


# 使用手册界面函数
def for_users():
    window_user_page = tk.Tk()
    window_user_page.geometry("450x300")
    window_user_page.title("使用指南")
    tk.Label(window_user_page, text="1.使用前请现将随程序附带的数据库dbms_report安装至MySQL中并保持原名").place(x=0, y=0)
    tk.Label(window_user_page, text="2.该系统默认的MySQL连接信息为IP:127.0.0.1,账户密码均为lzx,字符集为utf8").\
        place(x=0, y=30)
    tk.Label(window_user_page, text="2.本系统配置了查询、插入和修改数据三个主要功能,但未设置级联操作").place(x=0, y=60)
    tk.Label(window_user_page, text="3.插入和删除均受到外键限制,为保护数据库,每次删除仅能删除一条至数条数据").place(x=0, y=90)
    tk.Label(window_user_page, text="4.本系统基于DBMS MySQL搭建,使用MySQL自带的并发控制机制").place(x=0, y=120)
    tk.Label(window_user_page, text="5.标注有“关键词”字样的输入框是查询所需的关键词,如果不予限制将输出整表").place(x=0, y=150)
    tk.Label(window_user_page, text="6.当点击查询却无返回结果时,请检查您的关键词使用是否正确完整").place(x=0, y=180)
    tk.Label(window_user_page, text="7.大部分表格支持不完全关键字查询").place(x=0, y=210)
    tk.Label(window_user_page, text="8.请勿删库,已备份,删库无用,删库封号").place(x=0, y=240)


# 登录、注册、退出、使用指南按钮
login = tk.Button(window, text="登录", command=log_in)
login.place(x=140, y=230)
logup = tk.Button(window, text="注册", command=sign_up)
logup.place(x=210, y=230)
logdown = tk.Button(window, text="退出", command=quit_windows)
logdown.place(x=280, y=230)
user_page = tk.Button(window, text="使用指南", command=for_users)
user_page.place(x=199, y=270)


# 表格选择函数
def choose():
    window_choose = tk.Tk()
    window_choose.title("表格选择")
    window_choose.geometry("450x300")
    tk.Label(window_choose, text="高校报考信息查询系统").place(x=160, y=0)
    tk.Label(window_choose, text="请选择表格").place(x=190, y=20)
    collage = tk.Button(window_choose, text="大学", command=collage_use)
    collage.place(x=0, y=50)
    province = tk.Button(window_choose, text="省份", command=province_use)
    province.place(x=0, y=80)
    student_num = tk.Button(window_choose, text="考生人数", command=student_num_use)
    student_num.place(x=0, y=110)
    min_score_line = tk.Button(window_choose, text="最低分数线", command=min_score_line_use)
    min_score_line.place(x=0, y=140)
    school_level = tk.Button(window_choose, text="学校等级", command=school_level_use)
    school_level.place(x=0, y=170)
    enrollment_type = tk.Button(window_choose, text="招生类型", command=enrollment_type_use)
    enrollment_type.place(x=225, y=50)
    enrollment = tk.Button(window_choose, text="招生人数", command=enrollment_use)
    enrollment.place(x=225, y=80)
    school_type = tk.Button(window_choose, text="学校类型", command=school_type_use)
    school_type.place(x=225, y=110)
    collage_school_level = tk.Button(window_choose, text="各高校等级", command=collage_school_level_use)
    collage_school_level.place(x=225, y=140)
    collage_province_enrollment_type = tk.Button(window_choose, text="各高校招生类型",
                                                 command=collage_province_enrollment_type_use)
    collage_province_enrollment_type.place(x=225, y=170)

    # 返回函数
    def quit_window_choose():
        window_choose.destroy()
    quit_window_choose = tk.Button(window_choose, text="返回", command=quit_window_choose)
    quit_window_choose.place(x=280, y=230)


# collage 表增删改查——————————————————————————————————————————————————————————————————————————————————————————————————————
def collage_use():
    collage_window = tk.Tk()
    collage_window.title("collage表(高校表)操作界面")
    collage_window.geometry("450x500")
    tk.Label(collage_window, text="高校报考信息查询系统").place(x=300, y=20)

    tree = ttk.Treeview(collage_window)
    tree["column"] = ("collage_no", "collage_name", "official_URL", "province_name", "school_type_name")
    tree.column("collage_no", width=120)
    tree.heading("collage_no", text="高校招生代码")
    tree.column("collage_name", width=120)
    tree.heading("collage_name", text="高校全称")
    tree.column("official_URL", width=240)
    tree.heading("official_URL", text="官网链接")
    tree.column("province_name", width=120)
    tree.heading("province_name", text="省份全称")
    tree.column("school_type_name", width=120)
    tree.heading("school_type_name", text="高校类型全称")
    tree.grid(row=8, column=0, columnspan=60)

    collage_no = tk.Label(collage_window, text="高校招生代码")
    collage_no.grid(row=1, column=0)
    collage_no_str = tk.StringVar()
    collage_no_input = tk.Entry(collage_window, width=20, textvariable=collage_no_str)
    collage_no_input.grid(row=1, column=1)

    collage_name = tk.Label(collage_window, text="高校全称(关键字)")
    collage_name.grid(row=2, column=0)
    collage_name_str = tk.StringVar()
    collage_name_input = tk.Entry(collage_window, width=20, textvariable=collage_name_str)
    collage_name_input.grid(row=2, column=1)

    official_url = tk.Label(collage_window, text="官网链接")
    official_url.grid(row=3, column=0)
    official_url_str = tk.StringVar()
    official_url_input = tk.Entry(collage_window, width=20, textvariable=official_url_str)
    official_url_input.grid(row=3, column=1)

    province_name = tk.Label(collage_window, text="省份全称")
    province_name.grid(row=4, column=0)
    province_name_str = tk.StringVar()
    province_name_input = tk.Entry(collage_window, width=20, textvariable=province_name_str)
    province_name_input.grid(row=4, column=1)

    school_type_name = tk.Label(collage_window, text="高校类型全称")
    school_type_name.grid(row=5, column=0)
    school_type_name_str = tk.StringVar()
    school_type_name_input = tk.Entry(collage_window, width=20, textvariable=school_type_name_str)
    school_type_name_input.grid(row=5, column=1)

    def select():
        collage_name_info = collage_name_input.get()
        conn = py.connect(host='%s' % ip, user='lzx', password='lzx', port=3306, database='dbms_report',
                          charset='utf8')
        cursor = conn.cursor()
        if len(collage_name_info) == 0:
            cursor.execute("select * from collage")
        else:
            cursor.execute("select * from collage where collage_name='%s'" % collage_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],
                                                    list_result[i][2], list_result[i][3], list_result[i][4]))
        conn.commit()
        conn.close()

    def insert():
        collage_no_info = int(collage_no_input.get())
        collage_name_info = collage_name_input.get()
        official_url_info = official_url_input.get()
        province_name_info = province_name_input.get()
        school_type_name_info = school_type_name_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 collage values(%d,'%s','%s','%s','%s')"
                           % (collage_no_info, collage_name_info, official_url_info, province_name_info,
                              school_type_name_info))
            conn.commit()
            tk.messagebox.showinfo("正确", "数据插入成功")
            conn.close()
        except py.err.IntegrityError:
            tk.messagebox.showerror("错误", "受到完整性约束限制,数据插入失败,请重新检查数据,然后插入")

    def delete():
        collage_name_info = collage_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(collage_name_info) == 0:
                tk.messagebox.showerror("错误", "请输入执行删除的筛选条件")
            else:
                cursor.execute("delete from collage where collage_name='%s'" % collage_name_info)
                conn.commit()
                tk.messagebox.showinfo("正确", "删除数据成功")
            conn.close()
        except py.err.IntegrityError:
            tk.messagebox.showerror("错误", "受到完整性约束限制,数据删除失败,请先删除外键数据")

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

    def quit_collage_use():
        collage_window.destroy()
    tk.Button(collage_window, text="返回", command=quit_collage_use).grid(row=6, column=3)


# province 表增删改查—————————————————————————————————————————————————————————————————————————————————————————————————————
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')
        cursor = conn.cursor()
        if len(province_name_info) == 0:
            cursor.execute("select * from province")
        else:
            cursor.execute("select * from province where province_name='%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)


# student_num_use 表增删改查——————————————————————————————————————————————————————————————————————————————————————————————
def student_num_use():
    student_num_window = tk.Tk()
    student_num_window.title("student_num表(考生人数表)操作界面")
    student_num_window.geometry("450x300")
    tk.Label(student_num_window, text="高校报考信息查询系统").place(x=300, y=20)

    tree = ttk.Treeview(student_num_window)
    tree["column"] = ("province_name", "year", "student_in_total")
    tree.column("province_name", width=120)
    tree.heading("province_name", text="省份名全称")
    tree.column("year", width=60)
    tree.heading("year", text="年份")
    tree.column("student_in_total", width=120)
    tree.heading("student_in_total", text="考生总人数")
    tree.grid(row=5, column=0, columnspan=20)

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

    year = tk.Label(student_num_window, text="年份(关键字)")
    year.grid(row=2, column=0)
    year_str = tk.StringVar()
    year_input = tk.Entry(student_num_window, width=20, textvariable=year_str)
    year_input.grid(row=2, column=1)

    student_in_total = tk.Label(student_num_window, text="考生总人数")
    student_in_total.grid(row=3, column=0)
    student_in_total_str = tk.StringVar()
    student_in_total_input = tk.Entry(student_num_window, width=20, textvariable=student_in_total_str)
    student_in_total_input.grid(row=3, column=1)

    def select():
        province_name_info = province_name_input.get()
        year_info = year_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 and len(year_info) != 0:
                cursor.execute("select * from student_num where year=%d" % int(year_info))
            elif len(province_name_info) != 0 and len(year_info) == 0:
                cursor.execute("select * from student_num where province_name='%s'" % province_name_info)
            elif len(province_name_info) == 0 and len(year_info) == 0:
                cursor.execute("select * from student_num")
            else:
                cursor.execute("select * from student_num where province_name='%s' and year=%d"
                               % (province_name_info, int(year_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], list_result[i][2]))
            conn.commit()
            conn.close()
        except ValueError:
            tk.messagebox.showerror("错误", "年份需为整数")

    def insert():
        try:
            province_name_info = province_name_input.get()
            year_info = int(year_input.get())
            student_in_total_info = student_in_total_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 student_num values('%s',%d,'%s')"
                               % (province_name_info, year_info, student_in_total_info))
                conn.commit()
                tk.messagebox.showinfo("正确", "数据插入成功")
                conn.close()
            except py.err.IntegrityError:
                tk.messagebox.showerror("错误", "受到完整性约束限制,数据插入失败,请重新检查数据,然后插入")
        except ValueError:
            tk.messagebox.showerror("错误", "年份需为整数")

    def delete():
        try:
            province_name_info = province_name_input.get()
            year_info = year_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 or len(year_info) == 0:
                    tk.messagebox.showerror("错误", "请输入两个执行删除的筛选条件")
                else:
                    cursor.execute("delete from student_num where province_name='%s' and year=%d"
                                   % (province_name_info, int(year_info)))
                    conn.commit()
                    tk.messagebox.showinfo("正确", "删除数据成功")
                conn.close()
            except py.err.IntegrityError:
                tk.messagebox.showerror("错误", "受到完整性约束限制,数据删除失败,请先删除外键数据")
        except ValueError:
            tk.messagebox.showerror("错误", "年份需为整数")

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

    def quit_student_num_use():
        student_num_window.destroy()
    tk.Button(student_num_window, text="返回", command=quit_student_num_use).grid(row=4, column=3)


# min_score_line 表增删改查———————————————————————————————————————————————————————————————————————————————————————————————
def min_score_line_use():
    min_score_line_window = tk.Tk()
    min_score_line_window.title("min_score_line表(最低分数线表)操作界面")
    min_score_line_window.geometry("450x500")
    tk.Label(min_score_line_window, text="高校报考信息查询系统").place(x=325, y=20)

    tree = ttk.Treeview(min_score_line_window)
    tree["column"] = ("collage_no", "province_name", "min_score")
    tree.column("collage_no", width=240)
    tree.heading("collage_no", text="高校名全称(查询)或高校招生代码(插入删除)")
    tree.column("province_name", width=240)
    tree.heading("province_name", text="省份名全称")
    tree.column("min_score", width=120)
    tree.heading("min_score", text="最低分数线")
    tree.grid(row=5, column=0, columnspan=20)

    collage_no = tk.Label(min_score_line_window, text="高校名全称(关键字,查询)或\n高校招生代码(插入删除)")
    collage_no.grid(row=1, column=0)
    collage_no_str = tk.StringVar()
    collage_no_input = tk.Entry(min_score_line_window, width=20, textvariable=collage_no_str)
    collage_no_input.grid(row=1, column=1)

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

    min_score = tk.Label(min_score_line_window, text="最低分数线")
    min_score.grid(row=3, column=0)
    min_score_str = tk.StringVar()
    min_score_input = tk.Entry(min_score_line_window, width=20, textvariable=min_score_str)
    min_score_input.grid(row=3, column=1)

    def select():
        collage_no_info = collage_no_input.get()
        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()
        if len(province_name_info) == 0 and len(collage_no_info) != 0:
            cursor.execute("select collage_name,min_score_line.province_name,min_score \
            from min_score_line,collage \
            where collage.collage_no=min_score_line.collage_no and collage_name='%s'"
                           % collage_no_info)
        elif len(province_name_info) != 0 and len(collage_no_info) == 0:
            cursor.execute("select collage_name,min_score_line.province_name,min_score \
                        from min_score_line,collage \
                        where collage.collage_no=min_score_line.collage_no and min_score_line.province_name='%s'"
                           % province_name_info)
        elif len(province_name_info) == 0 and len(collage_no_info) == 0:
            cursor.execute("select collage_name,min_score_line.province_name,min_score from min_score_line,collage \
            where collage.collage_no=min_score_line.collage_no")
        else:
            cursor.execute("select collage_name,min_score_line.province_name,min_score \
                        from min_score_line,collage \
                        where collage.collage_no=min_score_line.collage_no and collage_name='%s' \
                        and min_score_line.province_name='%s'"
                           % (collage_no_info, 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], list_result[i][2]))
        conn.commit()
        conn.close()

    def insert():
        try:
            collage_no_info = int(collage_no_input.get())
            province_name_info = province_name_input.get()
            min_score_info = int(min_score_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 min_score_line values(%d,'%s',%d)"
                               % (collage_no_info, province_name_info, min_score_info))
                conn.commit()
                tk.messagebox.showinfo("正确", "数据插入成功")
                conn.close()
            except py.err.IntegrityError:
                tk.messagebox.showerror("错误", "受到完整性约束限制,数据插入失败,请重新检查数据,然后插入")
        except ValueError:
            tk.messagebox.showerror("错误", "高校招生代码与最低分数线需为整数")

    def delete():
        try:
            collage_no_info = int(collage_no_input.get())
            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 min_score_line where collage_no=%d and province_name='%s'"
                                   % (collage_no_info, province_name_info))
                    conn.commit()
                    tk.messagebox.showinfo("正确", "删除数据成功")
                conn.close()
            except py.err.IntegrityError:
                tk.messagebox.showerror("错误", "受到完整性约束限制,数据删除失败,请先删除外键数据")
        except ValueError:
            tk.messagebox.showerror("错误", "高校招生代码与最低分数线需为整数")

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

    def quit_min_score_line_use():
        min_score_line_window.destroy()
    tk.Button(min_score_line_window, text="返回", command=quit_min_score_line_use).grid(row=4, column=3)


# school_level 表增删改查—————————————————————————————————————————————————————————————————————————————————————————————————
def school_level_use():
    school_level_window = tk.Tk()
    school_level_window.title("school_level表(高校等级表)操作界面")
    school_level_window.geometry("450x500")
    tk.Label(school_level_window, text="高校报考信息查询系统").place(x=300, y=20)

    tree = ttk.Treeview(school_level_window)
    tree["column"] = ("school_level_name", "school_level_intro")
    tree.column("school_level_name", width=240)
    tree.heading("school_level_name", text="高校等级全称")
    tree.column("school_level_intro", width=1240)
    tree.heading("school_level_intro", text="高校等级介绍链接")
    tree.grid(row=4, column=0, columnspan=20)

    school_level_name = tk.Label(school_level_window, text="高校等级全称(关键字)")
    school_level_name.grid(row=1, column=0)
    school_level_name_str = tk.StringVar()
    school_level_name_input = tk.Entry(school_level_window, width=20, textvariable=school_level_name_str)
    school_level_name_input.grid(row=1, column=1)

    school_level_intro = tk.Label(school_level_window, text="高校等级介绍链接")
    school_level_intro.grid(row=2, column=0)
    school_level_intro_str = tk.StringVar()
    school_level_intro_input = tk.Entry(school_level_window, width=20, textvariable=school_level_intro_str)
    school_level_intro_input.grid(row=2, column=1)

    def select():
        school_level_name_info = school_level_name_input.get()
        conn = py.connect(host='%s' % ip, user='lzx', password='lzx', port=3306, database='dbms_report',
                          charset='utf8')
        cursor = conn.cursor()
        if len(school_level_name_info) == 0:
            cursor.execute("select * from school_level")
        else:
            cursor.execute("select * from school_level where school_level_name='%s'" % school_level_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():
        school_level_name_info = school_level_name_input.get()
        school_level_intro_info = school_level_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 school_level values('%s','%s')"
                           % (school_level_name_info, school_level_intro_info))
            conn.commit()
            tk.messagebox.showinfo("正确", "数据插入成功")
            conn.close()
        except py.err.IntegrityError:
            tk.messagebox.showerror("错误", "受到完整性约束限制,数据插入失败,请重新检查数据,然后插入")

    def delete():
        school_level_name_info = school_level_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(school_level_name_info) == 0:
                tk.messagebox.showerror("错误", "请输入执行删除的筛选条件")
            else:
                cursor.execute("delete from school_level where school_level_name='%s'" % school_level_name_info)
                conn.commit()
                tk.messagebox.showinfo("正确", "删除数据成功")
            conn.close()
        except py.err.IntegrityError:
            tk.messagebox.showerror("错误", "受到完整性约束限制,数据删除失败,请先删除外键数据")

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

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


# enrollment_type 表增删改查——————————————————————————————————————————————————————————————————————————————————————————————
def enrollment_type_use():
    enrollment_type_window = tk.Tk()
    enrollment_type_window.title("enrollment_type表(招生类型表)操作界面")
    enrollment_type_window.geometry("450x500")
    tk.Label(enrollment_type_window, text="高校报考信息查询系统").place(x=300, y=20)

    tree = ttk.Treeview(enrollment_type_window)
    tree["column"] = ("enrollment_type_name", "enrollment_type_intro")
    tree.column("enrollment_type_name", width=240)
    tree.heading("enrollment_type_name", text="招生类型全称")
    tree.column("enrollment_type_intro", width=1240)
    tree.heading("enrollment_type_intro", text="招生类型介绍链接")
    tree.grid(row=4, column=0, columnspan=20)

    enrollment_type_name = tk.Label(enrollment_type_window, text="招生类型全称(关键字)")
    enrollment_type_name.grid(row=1, column=0)
    enrollment_type_name_str = tk.StringVar()
    enrollment_type_name_input = tk.Entry(enrollment_type_window, width=20, textvariable=enrollment_type_name_str)
    enrollment_type_name_input.grid(row=1, column=1)

    enrollment_type_intro = tk.Label(enrollment_type_window, text="招生类型介绍链接")
    enrollment_type_intro.grid(row=2, column=0)
    enrollment_type_intro_str = tk.StringVar()
    enrollment_type_intro_input = tk.Entry(enrollment_type_window, width=20, textvariable=enrollment_type_intro_str)
    enrollment_type_intro_input.grid(row=2, column=1)

    def select():
        enrollment_type_name_info = enrollment_type_name_input.get()
        conn = py.connect(host='%s' % ip, user='lzx', password='lzx', port=3306, database='dbms_report',
                          charset='utf8')
        cursor = conn.cursor()
        if len(enrollment_type_name_info) == 0:
            cursor.execute("select * from enrollment_type")
        else:
            cursor.execute("select * from enrollment_type where enrollment_type_name='%s'" % enrollment_type_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():
        enrollment_type_name_info = enrollment_type_name_input.get()
        enrollment_type_intro_info = enrollment_type_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 enrollment_type values('%s','%s')"
                           % (enrollment_type_name_info, enrollment_type_intro_info))
            conn.commit()
            tk.messagebox.showinfo("正确", "数据插入成功")
            conn.close()
        except py.err.IntegrityError:
            tk.messagebox.showerror("错误", "受到完整性约束限制,数据插入失败,请重新检查数据,然后插入")

    def delete():
        enrollment_type_name_info = enrollment_type_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(enrollment_type_name_info) == 0:
                tk.messagebox.showerror("错误", "请输入执行删除的筛选条件")
            else:
                cursor.execute("delete from enrollment_type where enrollment_type_name='%s'"
                               % enrollment_type_name_info)
                conn.commit()
                tk.messagebox.showinfo("正确", "删除数据成功")
            conn.close()
        except py.err.IntegrityError:
            tk.messagebox.showerror("错误", "受到完整性约束限制,数据删除失败,请先删除外键数据")

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

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


#  enrollment表增删改查—————————————————————————————————————————————————————————————————————————————————————————————————
def enrollment_use():
    enrollment_window = tk.Tk()
    enrollment_window.title("enrollment表(招生人数表)操作界面")
    enrollment_window.geometry("450x500")
    tk.Label(enrollment_window, text="高校报考信息查询系统").place(x=325, y=20)

    tree = ttk.Treeview(enrollment_window)
    tree["column"] = ("collage_no", "province_name", "year", "enrollment_in_total")
    tree.column("collage_no", width=240)
    tree.heading("collage_no", text="高校名全称(查询)或高校招生代码(插入删除)")
    tree.column("province_name", width=240)
    tree.heading("province_name", text="省份名全称")
    tree.column("year", width=120)
    tree.heading("year", text="年份")
    tree.column("enrollment_in_total", width=120)
    tree.heading("enrollment_in_total", text="招生人数")
    tree.grid(row=6, column=0, columnspan=20)

    collage_no = tk.Label(enrollment_window, text="高校名全称(关键字,查询)或\n高校招生代码(插入删除)")
    collage_no.grid(row=1, column=0)
    collage_no_str = tk.StringVar()
    collage_no_input = tk.Entry(enrollment_window, width=20, textvariable=collage_no_str)
    collage_no_input.grid(row=1, column=1)

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

    year = tk.Label(enrollment_window, text="年份(关键字)")
    year.grid(row=3, column=0)
    year_str = tk.StringVar()
    year_input = tk.Entry(enrollment_window, width=20, textvariable=year_str)
    year_input.grid(row=3, column=1)

    enrollment_in_total = tk.Label(enrollment_window, text="招生人数")
    enrollment_in_total.grid(row=4, column=0)
    enrollment_in_total_str = tk.StringVar()
    enrollment_in_total_input = tk.Entry(enrollment_window, width=20, textvariable=enrollment_in_total_str)
    enrollment_in_total_input.grid(row=4, column=1)

    def select():
        collage_no_info = collage_no_input.get()
        province_name_info = province_name_input.get()
        year_info = year_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 and len(collage_no_info) == 0 and len(year_info) == 0:
                cursor.execute("select collage_name,enrollment.province_name,year,enrollment_in_total \
                            from enrollment,collage \
                            where collage.collage_no=enrollment.collage_no \
                            and enrollment.province_name='%s'"
                               % province_name_info)
            elif len(province_name_info) == 0 and len(collage_no_info) != 0 and len(year_info) == 0:
                cursor.execute("select collage_name,enrollment.province_name,year,enrollment_in_total \
                            from enrollment,collage \
                            where collage.collage_no=enrollment.collage_no \
                            and collage_name='%s'"
                               % collage_no_info)
            elif len(province_name_info) == 0 and len(collage_no_info) == 0 and len(year_info) != 0:
                cursor.execute("select collage_name,enrollment.province_name,year,enrollment_in_total \
                            from enrollment,collage \
                            where collage.collage_no=enrollment.collage_no \
                            and year=%d"
                               % int(year_info))
            elif len(province_name_info) != 0 and len(collage_no_info) != 0 and len(year_info) == 0:
                cursor.execute("select collage_name,enrollment.province_name,year,enrollment_in_total \
                            from enrollment,collage \
                            where collage.collage_no=enrollment.collage_no \
                            and collage_name='%s' \
                            and enrollment.province_name='%s'"
                               % (collage_no_info, province_name_info))
            elif len(province_name_info) != 0 and len(collage_no_info) == 0 and len(year_info) != 0:
                cursor.execute("select collage_name,enrollment.province_name,year,enrollment_in_total \
                            from enrollment,collage \
                            where collage.collage_no=enrollment.collage_no \
                            and enrollment.province_name='%s' \
                            and year=%d"
                               % (province_name_info, int(year_info)))
            elif len(province_name_info) == 0 and len(collage_no_info) != 0 and len(year_info) != 0:
                cursor.execute("select collage_name,enrollment.province_name,year,enrollment_in_total \
                            from enrollment,collage \
                            where collage.collage_no=enrollment.collage_no \
                            and collage_name='%s' \
                            and year=%d"
                               % (collage_no_info, int(year_info)))
            elif len(province_name_info) == 0 and len(collage_no_info) == 0 and len(year_info):
                cursor.execute("select collage_name,enrollment.province_name,year,enrollment_in_total \
                from enrollment,collage \
                where collage.collage_no=enrollment.collage_no")
            else:
                cursor.execute("select collage_name,enrollment.province_name,year,enrollment_in_total \
                            from enrollment,collage \
                            where collage.collage_no=enrollment.collage_no \
                            and collage_name='%s' \
                            and enrollment.province_name='%s' \
                            and year=%d"
                               % (collage_no_info, province_name_info, int(year_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], list_result[i][2], list_result[i][3]))
            conn.commit()
            conn.close()
        except ValueError:
            tk.messagebox.showerror("错误", "年份须为整数")

    def insert():
        try:
            collage_no_info = int(collage_no_input.get())
            province_name_info = province_name_input.get()
            year_info = int(year_input.get())
            enrollment_in_total_info = int(enrollment_in_total_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 enrollment values(%d,'%s',%d,%d)"
                               % (collage_no_info, province_name_info, year_info, enrollment_in_total_info))
                conn.commit()
                tk.messagebox.showinfo("正确", "数据插入成功")
                conn.close()
            except py.err.IntegrityError:
                tk.messagebox.showerror("错误", "受到完整性约束限制,数据插入失败,请重新检查数据,然后插入")
        except ValueError:
            tk.messagebox.showerror("错误", "高校招生代码、年份、与招生人数需为整数")

    def delete():
        try:
            collage_no_info = collage_no_input.get()
            province_name_info = province_name_input.get()
            year_info = year_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 or len(collage_no_info) == 0 or len(year_info) == 0:
                    tk.messagebox.showerror("错误", "请输入三条执行删除的筛选条件")
                else:
                    cursor.execute("delete from enrollment where collage_no=%d and province_name='%s' and year=%d"
                                   % (int(collage_no_info), province_name_info, int(year_info)))
                    conn.commit()
                    tk.messagebox.showinfo("正确", "删除数据成功")
                conn.close()
            except py.err.IntegrityError:
                tk.messagebox.showerror("错误", "受到完整性约束限制,数据删除失败,请先删除外键数据")
        except ValueError:
            tk.messagebox.showerror("错误", "高校招生代码与年份需为整数")

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

    def quit_enrollment_use():
        enrollment_window.destroy()
    tk.Button(enrollment_window, text="返回", command=quit_enrollment_use).grid(row=5, column=3)


# school_level 表增删改查—————————————————————————————————————————————————————————————————————————————————————————————————
def school_type_use():
    school_type_window = tk.Tk()
    school_type_window.title("school_type表(高校类型表)操作界面")
    school_type_window.geometry("450x500")
    tk.Label(school_type_window, text="高校报考信息查询系统").place(x=300, y=20)

    tree = ttk.Treeview(school_type_window)
    tree["column"] = ("school_type_name", "school_type_intro")
    tree.column("school_type_name", width=240)
    tree.heading("school_type_name", text="高校类型全称")
    tree.column("school_type_intro", width=1240)
    tree.heading("school_type_intro", text="高校类型介绍链接")
    tree.grid(row=4, column=0, columnspan=20)

    school_type_name = tk.Label(school_type_window, text="高校类型全称(关键字)")
    school_type_name.grid(row=1, column=0)
    school_type_name_str = tk.StringVar()
    school_type_name_input = tk.Entry(school_type_window, width=20, textvariable=school_type_name_str)
    school_type_name_input.grid(row=1, column=1)

    school_type_intro = tk.Label(school_type_window, text="高校类型介绍链接")
    school_type_intro.grid(row=2, column=0)
    school_type_intro_str = tk.StringVar()
    school_type_intro_input = tk.Entry(school_type_window, width=20, textvariable=school_type_intro_str)
    school_type_intro_input.grid(row=2, column=1)

    def select():
        school_type_name_info = school_type_name_input.get()
        conn = py.connect(host='%s' % ip, user='lzx', password='lzx', port=3306, database='dbms_report',
                          charset='utf8')
        cursor = conn.cursor()
        if len(school_type_name_info) == 0:
            cursor.execute("select * from school_type")
        else:
            cursor.execute("select * from school_type where school_type_name='%s'" % school_type_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():
        school_type_name_info = school_type_name_input.get()
        school_type_intro_info = school_type_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 school_type values('%s','%s')"
                           % (school_type_name_info, school_type_intro_info))
            conn.commit()
            tk.messagebox.showinfo("正确", "数据插入成功")
            conn.close()
        except py.err.IntegrityError:
            tk.messagebox.showerror("错误", "受到完整性约束限制,数据插入失败,请重新检查数据,然后插入")

    def delete():
        school_type_name_info = school_type_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(school_type_name_info) == 0:
                tk.messagebox.showerror("错误", "请输入执行删除的筛选条件")
            else:
                cursor.execute("delete from school_type where school_type_name='%s'"
                               % school_type_name_info)
                conn.commit()
                tk.messagebox.showinfo("正确", "删除数据成功")
            conn.close()
        except py.err.IntegrityError:
            tk.messagebox.showerror("错误", "受到完整性约束限制,数据删除失败,请先删除外键数据")

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

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


# collage_school_level 表增删改查—————————————————————————————————————————————————————————————————————————————————————————
def collage_school_level_use():
    collage_school_level_window = tk.Tk()
    collage_school_level_window.title("collage_school_level表(各高校等级表)操作界面")
    collage_school_level_window.geometry("450x500")
    tk.Label(collage_school_level_window, text="高校报考信息查询系统").place(x=300, y=20)

    tree = ttk.Treeview(collage_school_level_window)
    tree["column"] = ("collage_no", "school_level_name")
    tree.column("collage_no", width=120)
    tree.heading("collage_no", text="高校名全称(查询)或高校招生代号(插入删除)")
    tree.column("school_level_name", width=120)
    tree.heading("school_level_name", text="高校等级全称")
    tree.grid(row=4, column=0, columnspan=20)

    collage_no = tk.Label(collage_school_level_window, text="高校名全称(关键字,查询)或高校招生代码(插入删除)")
    collage_no.grid(row=1, column=0)
    collage_no_str = tk.StringVar()
    collage_no_input = tk.Entry(collage_school_level_window, width=20, textvariable=collage_no_str)
    collage_no_input.grid(row=1, column=1)

    school_level_name = tk.Label(collage_school_level_window, text="高校等级全称")
    school_level_name.grid(row=2, column=0)
    school_level_name_str = tk.StringVar()
    school_level_name_input = tk.Entry(collage_school_level_window, width=20, textvariable=school_level_name_str)
    school_level_name_input.grid(row=2, column=1)

    def select():
        collage_no_info = collage_no_input.get()
        school_level_name_info = school_level_name_input.get()
        conn = py.connect(host='%s' % ip, user='lzx', password='lzx', port=3306, database='dbms_report',
                          charset='utf8')
        cursor = conn.cursor()
        if len(collage_no_info) == 0 and len(school_level_name_info) != 0:
            cursor.execute("select collage_name,school_level_name \
                        from collage_school_level,collage \
                        where collage.collage_no=collage_school_level.collage_no and school_level_name='%s'"
                           % school_level_name_info)
        elif len(collage_no_info) != 0 and len(school_level_name_info) == 0:
            cursor.execute("select collage_name,school_level_name \
                        from collage_school_level,collage \
                        where collage.collage_no=collage_school_level.collage_no and collage_name='%s'"
                           % collage_no_info)
        elif len(collage_no_info) == 0 and len(school_level_name_info) == 0:
            cursor.execute("select collage_name,school_level_name \
                        from collage_school_level,collage \
                        where collage.collage_no=collage_school_level.collage_no")
        else:
            cursor.execute("select collage_name,school_level_name \
                        from collage_school_level,collage \
                        where collage.collage_no=collage_school_level.collage_no and collage_name='%s' \
                        and school_level_name='%s'"
                           % (collage_no_info, school_level_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():
        try:
            collage_no_info = int(collage_no_input.get())
            school_level_name_info = school_level_name_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 collage_school_level values(%d,'%s')"
                               % (collage_no_info, school_level_name_info))
                conn.commit()
                tk.messagebox.showinfo("正确", "数据插入成功")
                conn.close()
            except py.err.IntegrityError:
                tk.messagebox.showerror("错误", "受到完整性约束限制,数据插入失败,请重新检查数据,然后插入")
        except ValueError:
            tk.messagebox.showerror("错误", "高校招生代码需为整数")

    def delete():
        collage_no_info = collage_no_input.get()
        school_level_name_info = school_level_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(collage_no_info) != 0 and len(school_level_name_info) == 0:
                cursor.execute("delete from collage_school_level where collage_no=%d" % int(collage_no_info))
            elif len(collage_no_info) == 0 and len(school_level_name_info) != 0:
                cursor.execute("delete from collage_school_level where school_level_name='%s'" % school_level_name_info)
            elif len(collage_no_info) == 0 and len(school_level_name_info) == 0:
                tk.messagebox.showerror("错误", "请输入执行删除的筛选条件")
            else:
                cursor.execute("delete from collage_school_level where collage_no=%d and school_type_name='%s'"
                               % (int(collage_no_info), school_level_name_info))
                conn.commit()
                tk.messagebox.showinfo("正确", "删除数据成功")
            conn.close()
        except py.err.IntegrityError:
            tk.messagebox.showerror("错误", "受到完整性约束限制,数据删除失败,请先删除外键数据")

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

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


# collage_province_enrollment_type 表增删改查—————————————————————————————————————————————————————————————————————————————
def collage_province_enrollment_type_use():
    collage_province_enrollment_type_window = tk.Tk()
    collage_province_enrollment_type_window.title("collage_province_enrollment_type表(各高校招生类型表)操作界面")
    collage_province_enrollment_type_window.geometry("450x500")
    tk.Label(collage_province_enrollment_type_window, text="高校报考信息查询系统").place(x=320, y=20)

    tree = ttk.Treeview(collage_province_enrollment_type_window)
    tree["column"] = ("collage_no", "province_name", "enrollment_type_name")
    tree.column("collage_no", width=120)
    tree.heading("collage_no", text="高校名全称(查询)或高校招生代码(插入删除)")
    tree.column("province_name", width=120)
    tree.heading("province_name", text="省份名全称")
    tree.column("enrollment_type_name", width=120)
    tree.heading("enrollment_type_name", text="招生类型全称")
    tree.grid(row=5, column=0, columnspan=20)

    collage_no = tk.Label(collage_province_enrollment_type_window, text="高校名全称(关键字,查询)或\n高校招生代码(插入删除)")
    collage_no.grid(row=1, column=0)
    collage_no_str = tk.StringVar()
    collage_no_input = tk.Entry(collage_province_enrollment_type_window, width=20, textvariable=collage_no_str)
    collage_no_input.grid(row=1, column=1)

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

    enrollment_type_name = tk.Label(collage_province_enrollment_type_window, text="招生类型全称")
    enrollment_type_name.grid(row=3, column=0)
    enrollment_type_name_str = tk.StringVar()
    enrollment_type_name_input = tk.Entry(collage_province_enrollment_type_window, width=20,
                                          textvariable=enrollment_type_name_str)
    enrollment_type_name_input.grid(row=3, column=1)

    def select():
        collage_no_info = collage_no_input.get()
        province_name_info = province_name_input.get()
        enrollment_type_name_info = enrollment_type_name_input.get()
        conn = py.connect(host='%s' % ip, user='lzx', password='lzx', port=3306, database='dbms_report',
                          charset='utf8')
        cursor = conn.cursor()
        if len(province_name_info) != 0 and len(collage_no_info) == 0 and len(enrollment_type_name_info) == 0:
            cursor.execute("select collage_name,collage_province_enrollment_type.province_name,enrollment_type_name \
                        from collage_province_enrollment_type,collage \
                        where collage.collage_no=collage_province_enrollment_type.collage_no \
                        and collage_province_enrollment_type.province_name='%s'"
                           % province_name_info)
        elif len(province_name_info) == 0 and len(collage_no_info) != 0 and len(enrollment_type_name_info) == 0:
            cursor.execute("select collage_name,collage_province_enrollment_type.province_name,enrollment_type_name \
                        from collage_province_enrollment_type,collage \
                        where collage.collage_no=collage_province_enrollment_type.collage_no \
                        and collage_name='%s'"
                           % collage_no_info)
        elif len(province_name_info) == 0 and len(collage_no_info) == 0 and len(enrollment_type_name_info) != 0:
            cursor.execute("select collage_name,collage_province_enrollment_type.province_name,enrollment_type_name \
                        from collage_province_enrollment_type,collage \
                        where collage.collage_no=collage_province_enrollment_type.collage_no \
                        and enrollment_type_name='%s'"
                           % enrollment_type_name_info)
        elif len(province_name_info) != 0 and len(collage_no_info) != 0 and len(enrollment_type_name_info) == 0:
            cursor.execute("select collage_name,collage_province_enrollment_type.province_name,enrollment_type_name \
                        from collage_province_enrollment_type,collage \
                        where collage.collage_no=collage_province_enrollment_type.collage_no \
                        and collage_name='%s' \
                        and collage_province_enrollment_type.province_name='%s'"
                           % (collage_no_info, province_name_info))
        elif len(province_name_info) != 0 and len(collage_no_info) == 0 and len(enrollment_type_name_info) != 0:
            cursor.execute("select collage_name,collage_province_enrollment_type.province_name,enrollment_type_name \
                        from collage_province_enrollment_type,collage \
                        where collage.collage_no=collage_province_enrollment_type.collage_no \
                        and collage_province_enrollment_type.province_name='%s' \
                        and enrollment_type_name='%s'"
                           % (province_name_info, enrollment_type_name_info))
        elif len(province_name_info) == 0 and len(collage_no_info) != 0 and len(enrollment_type_name_info) != 0:
            cursor.execute("select collage_name,collage_province_enrollment_type.province_name,enrollment_type_name \
                        from collage_province_enrollment_type,collage \
                        where collage.collage_no=collage_province_enrollment_type.collage_no \
                        and collage_name='%s' \
                        and enrollment_type_name='%s'"
                           % (collage_no_info, enrollment_type_name_info))
        elif len(province_name_info) == 0 and len(collage_no_info) == 0 and len(enrollment_type_name_info):
            cursor.execute("select collage_name,collage_province_enrollment_type.province_name,enrollment_type_name \
                        from collage_province_enrollment_type,collage \
                        where collage.collage_no=collage_province_enrollment_type.collage_no")
        else:
            cursor.execute("select collage_name,collage_province_enrollment_type.province_name,enrollment_type_name \
                        from collage_province_enrollment_type,collage \
                        where collage.collage_no=collage_province_enrollment_type.collage_no \
                        and collage_name='%s' \
                        and collage_province_enrollment_type.province_name='%s' \
                        and enrollment_type_name='%s'"
                           % (collage_no_info, province_name_info, enrollment_type_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], list_result[i][2]))
        conn.commit()
        conn.close()

    def insert():
        try:
            collage_no_info = int(collage_no_input.get())
            province_name_info = province_name_input.get()
            enrollment_type_name_info = enrollment_type_name_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 collage_province_enrollment_type values(%d,'%s','%s')"
                               % (collage_no_info, province_name_info, enrollment_type_name_info))
                conn.commit()
                tk.messagebox.showinfo("正确", "数据插入成功")
                conn.close()
            except py.err.IntegrityError:
                tk.messagebox.showerror("错误", "受到完整性约束限制,数据插入失败,请重新检查数据,然后插入")
        except ValueError:
            tk.messagebox.showerror("错误", "高校招生代码需为整数")

    def delete():
        try:
            collage_no_info = collage_no_input.get()
            province_name_info = province_name_input.get()
            enrollment_type_name_info = enrollment_type_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 or len(collage_no_info) == 0 or len(enrollment_type_name_info) == 0:
                    tk.messagebox.showerror("错误", "请输入执行删除的筛选条件")
                else:
                    cursor.execute("delete from collage_province_enrollment_type \
                    where collage_no=%d and province_name='%s' and enrollment_type_name='%s'"
                                   % (int(collage_no_info), province_name_info, enrollment_type_name_info))
                    conn.commit()
                    tk.messagebox.showinfo("正确", "删除数据成功")
                conn.close()
            except py.err.IntegrityError:
                tk.messagebox.showerror("错误", "受到完整性约束限制,数据删除失败,请先删除外键数据")
        except ValueError:
            tk.messagebox.showerror("错误", "高校招生代码需为整数")

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

    def quit_collage_province_enrollment_type_use():
        collage_province_enrollment_type_window.destroy()
    tk.Button(collage_province_enrollment_type_window, text="返回",
              command=quit_collage_province_enrollment_type_use).grid(row=4, column=3)


window.mainloop()

这代码写了我30个小时,属实是不容易,每个想从相关体系上找到东西的人都可以找到自己需要的

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

山河之书Liu_Zixin

不要打赏

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

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

打赏作者

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

抵扣说明:

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

余额充值