python-study-day1-(病人管理系统-带sql)

news2025/2/25 21:03:25

MainWindow代码

from tkinter import *
from tkinter import messagebox
from tkinter.ttk import Combobox


class MianWindow(Frame):
    def __init__(self, master=None):
        super().__init__(master, padx=30, pady=20)
        self.flag = 0
        self.pack(expand=True, fill=BOTH)
        self.id = StringVar(value=' ')
        self.name = StringVar(value=' ')
        self.style = StringVar(value='')
        self.number = StringVar(value=' ')
        self.text_box = StringVar(value=' ')

        self.Xu_setup()


    def Xu_setup(self):
        container = Frame(self)
        container.pack(side=TOP, fill=X, expand=YES, pady=10)
        Button(master=container, text='增    加', width=10, command=self.Yao_add).pack(side=LEFT, padx=20, expand=YES)
        Button(master=container, text='更    改', width=10, command=self.Yao_update).pack(side=LEFT, padx=20, expand=YES)
        Button(master=container, text='删    除', width=10, command=self.Yao_del).pack(side=LEFT, padx=20, expand=YES)
        Button(master=container, text='查    询', width=10, command=self.Yao_select).pack(side=LEFT, padx=20, expand=YES)

        container = Frame(self)
        container.pack(side=TOP, fill=X, expand=YES, pady=20)
        lbl1 = Label(master=container, text="编     号", width=10, font=("微软雅黑", 11))
        lbl1.pack(side=LEFT, padx=5)

        self.ent1 = Entry(master=container, textvariable=self.id)
        self.ent1.pack(ipady=8, side=LEFT, padx=5)

        lbl2 = Label(master=container, text="姓      名", width=10, font=("微软雅黑", 11))
        lbl2.pack(side=LEFT, padx=5)

        self.ent2 = Entry(master=container, textvariable=self.name)
        self.ent2.pack(ipady=8, side=LEFT, padx=5, fill=X)

        lbl_box = Label(master=container, text="性       别", width=10, font=("微软雅黑", 11))
        lbl_box.pack(side=LEFT, padx=5)
        self.comboxlist = Combobox(master=container, textvariable=self.text_box, width=5)
        self.comboxlist["values"] = ("男", "女")
        self.comboxlist.current(0)
        self.comboxlist.bind("<<ComboboxSelected>>", self.func)
        self.comboxlist.pack(ipady=8, side=RIGHT, fill=X)

        container = Frame(self)
        container.pack(side=TOP, fill=X, expand=YES, pady=20)
        lbl3 = Label(master=container, text="病      型", width=10, font=("微软雅黑", 11))
        lbl3.pack(side=LEFT, padx=5)

        self.ent3 = Entry(master=container, textvariable=self.style)
        self.ent3.pack(ipady=8, side=LEFT, padx=5, fill=X, expand=YES)

        lbl4 = Label(master=container, text="年      龄", width=10, font=("微软雅黑", 11))
        lbl4.pack(side=LEFT, padx=5)

        self.ent4 = Entry(master=container, textvariable=self.number)
        self.ent4.pack(ipady=8, side=LEFT, padx=5, fill=X, expand=YES)

        container = Frame(self)
        container.pack(side=TOP, fill=X, expand=YES, pady=20)

        self.text = Text(master=container)
        scroll = Scrollbar()
        scroll.pack(side=RIGHT, fill=Y)

        scroll.config(command=self.text.yview)
        self.text.config(yscrollcommand=scroll.set)

        self.text.pack(fill=X, expand=YES)

        self.text.insert(INSERT, "")

    def func(self, *args):
        self.flag = 1
        print(self.flag)
        return self.flag

    def clear(self):
        self.ent1.delete(0, "end")
        self.ent2.delete(0, "end")
        self.ent3.delete(0, "end")
        self.ent4.delete(0, "end")

    def Yao_add(self):
        if len(self.id.get()) == 0:
            messagebox.askokcancel("确定/退出对话框", "插入失败,编号为空")
            self.clear()
            return
        if len(self.name.get()) == 0:
            messagebox.askokcancel("确定/退出对话框", "插入失败,名称为空")
            self.clear()
            return
        if len(self.style.get()) == 0:
            messagebox.askokcancel("确定/退出对话框", "插入失败,病型为空")
            self.clear()
            return
        if len(self.number.get()) == 0:
            messagebox.askokcancel("确定/退出对话框", "插入失败,年龄为空")
            self.clear()
            return
        if self.flag == 0:
            messagebox.askokcancel("确定/退出对话框", "插入失败,性别未选")
            self.clear()
            return
        else:

            from Patient.db import Connect
            con = Connect()
            con.Zhou_insert(int(self.id.get()),
                            self.name.get(),
                            self.text_box.get(),
                            self.style.get(),
                            self.number.get())
            messagebox.showinfo("打印信息对话框", "插入成功")
            self.clear()
            from Patient.db import Connect
            con= Connect()
            all_ = con.Print_result()
            for data in all_:
                s = "编号:%d \t姓名:%s\t性别:%s\t病型:%s\t年龄:%s\n\n" % data
                self.text.insert(INSERT, s)

    def Yao_update(self):
        if len(self.id.get()) != 0 and len(self.name.get()) != 0 and len(self.number.get()) != 0:
            from Patient.db import Connect
            con = Connect()
            re = con.Zhou_update(int(self.id.get()), self.name.get(), self.number.get())
            if re:
                messagebox.askokcancel("确定/退出对话框", "执行成功")
                self.clear()
                from Patient.db import Connect
                con = Connect()
                all_ = con.Print_result()
                for data in all_:
                    s = "编号:%d \t姓名:%s\t性别:%s\t病型:%s\t年龄:%s\n\n" % data
                    self.text.insert(INSERT, s)
            else:
                messagebox.askokcancel("确定/退出对话框", "执行失败,或数据不存在")
                self.clear()
                return
            return
        elif len(self.id.get()) != 0 and len(self.name.get()):
            from Patient.db import Connect
            con = Connect()
            re = con.update_name(int(self.id.get()), self.name.get())
            if re:
                messagebox.askokcancel("确定/退出对话框", "执行成功")
                self.clear()
                from Patient.db import Connect
                con = Connect()
                all_ = con.Print_result()
                for data in all_:
                    s = "编号:%d \t姓名:%s\t性别:%s\t病型:%s\t年龄:%s\n\n" % data
                    self.text.insert(INSERT, s)
            else:
                messagebox.askokcancel("确定/退出对话框", "执行失败,或数据不存在在")
                self.clear()
                return
            return
        elif len(self.id.get()) != 0 and len(self.number.get()) != 0:
            from Patient.db import Connect
            con = Connect()
            re = con.update_number(int(self.id.get()), self.number.get())
            if re:
                messagebox.askokcancel("确定/退出对话框", "执行成功")
                self.clear()
                from Patient.db import Connect
                con = Connect()
                all_ = con.Print_result()
                for data in all_:
                    s = "编号:%d \t姓名:%s\t性别:%s\t病型:%s\t年龄:%s\n\n" % data
                    self.text.insert(INSERT, s)
            else:
                messagebox.askokcancel("确定/退出对话框", "执行失败,或数据不存在在")
                self.clear()
                return
            return
        else:
            messagebox.askokcancel("确定/退出对话框", "执行失败,或数据不存在在")
            self.clear()
            return

    def Yao_del(self):
        from Patient.db import Connect
        con = Connect()
        re = con.delete_id(int(self.id.get()))
        if re:
            messagebox.askokcancel("确定/退出对话框", "执行成功")
            self.clear()
            from Patient.db import Connect
            con = Connect()
            all_ = con.Print_result()
            for data in all_:
                s = "编号:%d \t姓名:%s\t性别:%s\t病型:%s\t年龄:%s\n\n" % data
                self.text.insert(INSERT, s)
        else:
            messagebox.askokcancel("确定/退出对话框", "执行失败,或数据不存在在")
            self.clear()
            return

    def Yao_select(self):
        self.clear()
        from Patient.db import Connect
        con = Connect()
        all_ = con.Print_result()
        for data in all_:
            s = "编号:%d \t姓名:%s\t性别:%s\t病型:%s\t年龄:%s\n\n" % data
            self.text.insert(INSERT, s)


if __name__ == '__main__':
    root = Tk()
    root.geometry('800x500')
    root.title("病人信息登记")
    MianWindow(root)
    root.mainloop()

db代码

import pymysql.cursors

class Connect:
    def get_connect(self):
        self.connect = pymysql.Connect(
            host='localhost',
            port=3306,
            user='root',
            password='admin123',
            database='person',
            charset='utf8')
        self.cursor = self.connect.cursor()

    def Print_result(self):
        self.get_connect()
        sql = "select * from person"
        self.cursor.execute(sql)
        all_ = self.cursor.fetchall()
        for data in all_:
            print("编号:%d \t名称:%s \t性别:%s\t类型:%s\t数值:%s\n" % data)
        self.connect.commit()
        self.connect.close()
        return all_

    def Zhou_insert(self, id, name, sex, style, number):
        self.get_connect()
        sql = "insert into person (id,name ,sex,style,number) values (%d,'%s','%s','%s','%s')"

        self.cursor.execute(sql % (id, name, sex, style, number))
        self.connect.commit()
        self.connect.close()

    def Zhou_update(self, number, name, id):
        self.get_connect()
        sql = "UPDATE person SET number ='%s',name ='%s' WHERE id = %d;"

        re = self.cursor.execute(sql % (id, name, number))

        self.connect.commit()
        self.connect.close()
        return re

    def update_name(self, name, id):  #
        self.get_connect()
        try:
            sql = "UPDATE person SET name ='%s' WHERE id = %d;"
            re = self.cursor.execute(sql % (id, name))
        except pymysql.err:
            self.connect.commit()
            print("执行错误")
        finally:
            self.connect.close()
            return re

    def update_number(self, id, number):
        self.get_connect()
        sql = "UPDATE person SET number ='%s'WHERE id = %d;"
        re = self.cursor.execute(sql % (number, id))
        self.connect.commit()
        self.connect.close()
        return re

    def delete_id(self, id):
        self.get_connect()
        sql = "DELETE FROM person WHERE id = %d"
        re = self.cursor.execute(sql % id)
        self.connect.commit()
        self.connect.close()
        return re


if __name__ == '__main__':
    c = Connect()

效果图

 部署

需要的私,v:13053025350

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

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

相关文章

C语言面试题之合法二叉搜索树

合法二叉搜索树 实例要求 实现一个函数&#xff0c;检查一棵二叉树是否为二叉搜索树&#xff1b; 示例 1: 输入:2/ \1 3 输出: true 示例 2: 输入:5/ \1 4/ \3 6 输出: false 解释: 输入为: [5,1,4,null,null,3,6]。根节点的值为 5 &#xff0c;但是其右子节点值为 4 …

pmp就是智商税?

首先要明白的是&#xff0c;证书的价值并不在于证书本身&#xff0c;而在于学习过程中所获得的知识和经验&#xff0c;这才是证书真正的价值&#xff0c;是无法被复制的个人能力。 学习和考证都是经验的积累&#xff0c;通过这个过程可以不断地获取所需的知识&#xff0c;并加…

Day36|贪心算法part05:435. 无重叠区间、763.划分字母区间、56. 合并区间

435. 无重叠区间 有了上题射气球的因子&#xff0c;这题也就有思路了&#xff0c;反正无脑排序就行了&#xff1a; 首先将所有区间按照end的大小从小到大排序&#xff1b;选取最早end为起始x_end遍历所有区间&#xff0c;如果该区间的start比end大&#xff08;可重叠&#xf…

“揭秘性能测试工具:优化软件性能的关键秘籍“

性能测试工具的设计宗旨是为了模拟用户对软件应用程序或系统的各种操作&#xff0c;旨在评估关键的性能指标&#xff0c;包括响应时间、吞吐量、并发能力和资源利用率。 通过这些工具模拟的多用户环境&#xff0c;我们能够产生与实际工作负载相似的条件&#xff0c;并监测系统…

算法打卡day32

今日任务&#xff1a; 1&#xff09;738.单调递增的数字 2&#xff09;968.监控二叉树 738.单调递增的数字 题目链接&#xff1a;738. 单调递增的数字 - 力扣&#xff08;LeetCode&#xff09; 文章讲解&#xff1a;代码随想录 (programmercarl.com) 视频讲解&#xff1a;贪…

smnpwalk

安装&#xff1a; sudo yum install net-snmp net-snmp-utils 设备MIB文件查看OID&#xff1b; [rootzabbix ~]$snmpwalk -v 2c -c public 192.168.1.100 1.3.6.1.4.1.2011.6.139.12.1.5.7 SNMPv2-SMI::enterprises.2011.6.139.12.1.5.7.0 INTEGER: 62 所以命令也可以写成…

SpringBoot+Vue,轻松实现网页版人脸登录与精准识别

目录 1、技术介绍 2、技术原理 2.1、人脸检测 ①参考模板法 ②人脸规则法 2.2、人脸跟踪 2.3、人脸比对 ①特征向量法 ②面纹模板法 识别过程 案例 一、springboot后端项目 1&#xff0c;拉取项目后&#xff0c;导入相关依赖jar包 2&#xff0c;执行sql文件夹下面…

Lora 串口透传开发 5

1 简介 串口转usb、转wifi等很多应用 2 设计原理 2.1 设计需求 1将LoRa终端定义成两种角色:Master和Slave 2一个模块发送任意字节长度&#xff08;小于128Byte&#xff09;数据&#xff0c;另一模块都可以接收到 3PC机上通过串口调试助手实现接收和发送 4终端在LCD屏幕上显…

【matlab】如何解决打开缓慢问题(如何让matlab在十几秒内打开)

【matlab】如何解决打开缓慢问题&#xff08;如何让matlab在十几秒内打开&#xff09; 找到我们解压缩时Crack中的license_standalone.lic文件&#xff0c;将其拷贝 在安装matlab的路径下新建一个文件&#xff0c;粘贴上面的license_standalone.lic文件 在桌面鼠标移动到matl…

K3 BOS单据中父子字段的问题

因业务需求新增了一张BOS单据&#xff0c;其中涉及到装配工序有两级&#xff0c;需要在选好“一级工序”后&#xff0c;“二级工序”跳出来的是一级工序下的内容&#xff0c;经过咨询分析研究&#xff0c;解决办法如下。 设置过程 在核算项目中原有的工序中先增加“一级工序”…

【电控笔记5】电流环pi参数整定

旋转坐标系下的电压方程&#xff0c;由id和iq计算出ud和uq Lq&#xff1a;q轴电感 Ld&#xff1a;d轴电感 输入是电流&#xff0c;输出是电压&#xff1f; 把常数项&#xff08;上面两个红框&#xff09;拿出来解耦合&#xff0c;作为前馈&#xff0c;如下 电流环传递函数 …

Ansys 结构 | 从力学学科体系说起

“力学是研究物质机械运动的科学” 力学有着悠久的历史&#xff0c;最早可追溯到古希腊的阿基米德(约公元前287 - 212)&#xff0c;并且在欧洲文艺复兴运动以后&#xff0c;人们逐步对力和运动之间的关系有了正确的认识。 英国科学家牛顿继承和发展了前人的研究成果&#xff0…

Navicat的详细下载步骤

第一步&#xff0c;打开百度&#xff0c;找到Navicat官网 第二步&#xff0c;点击产品然后进去 第三步&#xff0c;点击直接下载然后跟着步骤来就OK啦

uniapp 轮播列表一排展示3个,左右滑动,滑动到中间放大

一、效果展示 二、代码实现 1.html代码&#xff1a; <!-- 轮播 --><view class"heade"><swiper class"swiper" display-multiple-items3 circulartrue previous-margin1rpx next-margin1rpxcurrent0 change"swiperChange">&l…

EasyExcel用模版导出动态表格

在工作中有这么一个需求就是导出一个表格&#xff0c;上面有学生的信息下面有一个表格记录学生每科的成绩&#xff0c;要导出这样一个表格我们要怎么做呢&#xff1f;其实很简单&#xff0c;可以用导出模版做到&#xff0c;Easyexcel已经有实现方法了&#xff0c;下面我们来一步…

【Python数据分析】让工作自动化起来,无所不能的Python

这里写目录标题 前言一、Python是办公自动化的重要工具二、Python是提升职场竞争力的利器三、Python是企业数字化的重要平台四、Python是AI发展的重要通道之一编辑推荐内容简介作者简介前言读者对象如何阅读本书目录 前言 随着我国企业数字化和信息化的深入&#xff0c;企业对…

3dmax2024渲染大图高清参数,3dmax效果图渲染设置

2024版的3ds Max带来了更为强大的渲染工具和优化的参数设置&#xff0c;使得设计师能够创造出令人惊叹的视觉作品&#xff0c;何利用3ds Max 2024的先进功能&#xff0c;精心调整渲染参数&#xff0c;以实现高分辨率、高质量的效果图输出&#xff0c;满足专业设计和视觉表现的需…

4.Spring IoCDI

文章目录 1.Ioc - 控制反转(解耦)1.1传统开发1.2批量生产车轮(修改代码) - 传统方式&#xff0c;繁琐1.3解耦1.3.1使用Ioc方法后1.3.2添加变量颜色 只需要修改Tire即可 1.4Bean的存储1.4.1Controller(控制器存储)1.4.2Service(服务存储)1.4.2.1根据context来获取bean1.4.2.2根据…

实战篇06:更新用户头像

实战篇06&#xff1a;更新用户头像 一、接口信息 1.1 基本信息 请求路径&#xff1a;/user/updateAvatar 请求方式&#xff1a;PATCH 接口描述&#xff1a;该接口用于更新已登录用户的头像 1.2 请求参数 请求参数格式&#xff1a;queryString 请求参数说明&#xff1a; 参…

【C语言】万字讲解函数栈帧的创建与销毁

目录 前言 一、什么是函数栈帧&#xff1f; 二、理解函数栈帧能解决什么问题呢 三、函数栈帧的创建和销毁解析 3.1 什么是栈&#xff1f; 3.2 认识相关寄存器和汇编指令 3.3 剖析函数栈帧的创建和销毁 3.3.1 esp寄存器与ebp寄存器的重要性 3.3.2 函数的调用堆栈 3.3.…