首页 > 编程语言 >GUI程序设计--班级信息收集系..

GUI程序设计--班级信息收集系..

时间:2024-06-03 17:54:36浏览次数:20  
标签:.. -- GUI number hsizer cursor sql self wx

`#创建数据库
import pymysql
db =pymysql.connect(host='localhost',user='root',password='Lwq020330',database="xinji_inf",charset='utf8')

使用cursor()方法创建一个游标对象

cursor = db.cursor()

如果存在则删除

cursor.execute("DROP TABLE IF EXISTS AccountPassword")
sql ="""
CREATE TABLE AccountPassword(
class VARCHAR(50) NOT NULL,
name VARCHAR(50) NOT NULL,
number VARCHAR(50) NOT NULL
)
"""

执行sql语句

cursor.execut
import pymysql
import wx
class MyFrame(wx.Frame):
def init(self,parent,id):
wx.Frame.init(self,parent,id,'班级信息收集',size=(400,300))
#创建面板
panel = wx.Panel(self)

#创建“保存”和“查询”按钮,并绑定事件
    self.bt_storage = wx.Button(panel,label="保存")
    self.bt_storage.Bind(wx.EVT_BUTTON,self.OnclickStorage)
    self.bt_inquire = wx.Button(panel,label ='查询')
    self.bt_inquire.Bind(wx.EVT_BUTTON,self.OnclickInquire)
    #创建文本,左对齐
    self.title =wx.StaticText(panel,label ="保存信息请输入用户的学号班级和姓名\n\t查询请输入姓名或学号")
    self.label_class =wx.StaticText(panel,label ="班级:")
    self.text_class =wx.TextCtrl(panel,style =wx.TE_LEFT)
    self.label_user =wx.StaticText(panel,label ="姓名:")
    self.text_user =wx.TextCtrl(panel,style =wx.TE_LEFT)
    self.label_number = wx.StaticText(panel,label ="学号:")
    self.text_number = wx.TextCtrl(panel,style =wx.TE_LEFT)
    #添加容器,容器中控件横向排列
    hsizer_class =wx.BoxSizer(wx.HORIZONTAL)
    hsizer_class.Add(self.label_class,proportion=0,flag=wx.ALL,border=5)
    hsizer_class.Add(self.text_class,proportion=1,flag=wx.ALL,border=5)
    hsizer_user = wx.BoxSizer(wx.HORIZONTAL)
    hsizer_user.Add(self.label_user,proportion=0,flag=wx.ALL,border=5)
    hsizer_user.Add(self.text_user,proportion=1,flag =wx.ALL,border=5)
    hsizer_number =wx.BoxSizer(wx.HORIZONTAL)
    hsizer_number.Add(self.label_number,proportion=0,flag=wx.ALL,border=5)
    hsizer_number.Add(self.text_number,proportion=1,flag=wx.ALL,border=5)
    hsizer_button =wx.BoxSizer(wx.HORIZONTAL)
    hsizer_button.Add(self.bt_storage,proportion=0,flag=wx.ALIGN_CENTER,border=5)
    hsizer_button.Add(self.bt_inquire,proportion=0,flag=wx.ALIGN_CENTER,border=5)
    #添加容器,容器中的控件纵向排列
    vsizer_all = wx.BoxSizer(wx.VERTICAL)
    vsizer_all.Add(self.title,proportion=0,flag=wx.BOTTOM |wx.TOP |wx.ALIGN_CENTER,border=15)
    vsizer_all.Add(hsizer_class,proportion=0,flag=wx.EXPAND |wx.LEFT |wx.RIGHT,border=45)
    vsizer_all.Add(hsizer_user,proportion=0,flag=wx.EXPAND |wx.LEFT |wx.RIGHT,border=45)
    vsizer_all.Add(hsizer_number,proportion=0,flag=wx.EXPAND |wx.LEFT |wx.RIGHT,border=45)
    vsizer_all.Add(hsizer_button,proportion=0,flag=wx.ALIGN_CENTER |wx.TOP,border=15)
    panel.SetSizer(vsizer_all)
    
def OnclickStorage(self,event):
    "单击保存按钮"
    #连接数据库
    db =pymysql.connect(host='localhost',user='root',password='Lwq020330',database="xinji_inf",charset='utf8')
    message =""
    classname =self.text_class.GetValue()                   #获取输入的班级
    username =self.text_user.GetValue()                     #获取输入的用户名
    number =self.text_number.GetValue()                     #获取输入的学号
    #使用cursor()方法创建一个游标对象
    cursor = db.cursor()
    #判断是否为空
    if classname =="" or username =="" or number =="":
        message ='班级或名字或密码不能为空'
    else:
        
        #数据列表
        data = [(classname,username,number)]
        try:
            #执行sql语句,插入数据
            sql="insert into accountpassword(class, name, number) values(%s,%s,%s)"
            cursor.executemany(sql,data)
            #提交数据
            db.commit()
        except:
            #发生错误时回滚
            db.rollback()
            #关闭连接
            db.close()
            message ='保存成功'                                   #用户名或密码错误
    wx.MessageBox(message)                                   #弹出提示框
    
def OnclickInquire(self,event):
    "单击查询按钮"
    username =self.text_user.GetValue()                     #获取输入的用户名
    number =self.text_number.GetValue()                     #获取输入的学号
    db =pymysql.connect(host='localhost',user='root',password='Lwq020330',database="xinji_inf",charset='utf8')
    #使用cursor()方法创建一个游标对象
    cursor = db.cursor()
    sql =""
    message =""
    if username and number:
        sql ="SELECT * FROM ACCOUNTPASSWORD \
              WHERE NUMBER = %s"                              #查找学号
        try:
            #执行sql语句
            cursor.execute(sql,number)
            #获取记录
            results =cursor.fetchall()
            if results:
                for row in results:
                    classname = row[0]
                    username_sql =row[1]
                    number_sql =row[2]
        except:
            print("Error: unable to fecth data")
        if username_sql == username:
            message ="班级:{}\n姓名:{}\n学号:{}\n".format(classname,username_sql,number_sql)
        else:
            message ="姓名与学号不匹配"
    elif username:
        sql ="SELECT * FROM ACCOUNTPASSWORD \
              WHERE NAME = %s"                               #找到该名字
        try:
            #执行sql语句
            cursor.execute(sql,username)
            #获取记录
            results =cursor.fetchall()
            if results:                                      #若找到不为空,输出对应的信息
                for row in results:
                    classname = row[0]
                    username =row[1]
                    number =row[2]
                message ="班级:{}\n姓名:{}\n学号:{}\n".format(classname,username,number)
            else:
                message ="没有这个名字"
        except:
            print("Error: unable to fecth data")              #数据错误--
    elif number:
        sql ="SELECT * FROM ACCOUNTPASSWORD \
              WHERE NUMBER = %s"                              #查找学号,同上
        try:
            #执行sql语句
            cursor.execute(sql,number)
            #获取记录
            results =cursor.fetchall()
            if results:
                for row in results:
                    classname = row[0]
                    username =row[1]
                    number =row[2]
                message ="班级:{}\n姓名:{}\n学号:{}\n".format(classname,username,number)
            else:
                message ="没有这个学号"
        except:
            print("Error: unable to fecth data")
    else:
        message ="班级或名字或密码不能为空"
    #关闭数据库
    db.close()
    wx.MessageBox(message)

if name =='main':
app = wx.App() #初始化应用
frame = MyFrame(parent=None, id=-1) #实例MyFrame类,并传递参数
frame.Show() #显示窗口
app.MainLoop() #调用主循环方法
`

标签:..,--,GUI,number,hsizer,cursor,sql,self,wx
From: https://www.cnblogs.com/linbaitong/p/18229374

相关文章

  • 设计模式学习(二)工厂模式——工厂方法模式+注册表
    目录工厂方法模式的瑕疵注册表工厂方法模式的瑕疵在前一篇笔记中我们介绍了工厂方法模式,示例的类图如下:考虑一种情况:现在要在程序运行时,根据外部资源,动态的实例化对象。也就是说在编译期我们无法知道要实例化的对象的类型。因此在实例化的过程中,就需要加以判断。例如,在我的例......
  • UniTask入门指南:简化Unity中的异步编程
    UniTask入门指南:简化Unity中的异步编程介绍:UniTask是一个轻量级、高性能的异步编程库,专门针对Unity开发进行了优化。与Unity标准的Task系统相比,UniTask提供了更加简洁和高效的异步编程方式。在Unity项目中使用UniTask可以大大提高开发效率,简化异步操作的编码过程。UniTask......
  • STM32系列--串口收发+基本定时器
      if(myusart.reflag>0){Com_Handle();myusart.recount=0;myusart.reflag=0;}main #define_maxbuf100typedefstruct{u8myadd;u8......
  • Oracle获取吞吐量和IOPS的脚本
     Oracle获取吞吐量和IOPS的脚本 数据底层存储要换盘,对新盘做IOPS压测。并花了点时间写了脚本获取数据库每秒的吞吐量和IOPS信息。可以将数据导成excel并绘制为折线图等统计图。  --获取IOPS(当前实例)selectto_char(t.begin_interval_time,'yyyy-mm-ddhh24:mi')......
  • ysyx:对数学表达式的理解
    数学表达式的递归分解顺序和日常的顺序是完全相反的。一方面,原本的高级运算符要后进行拆分,另一方面,原本的从左到右的运算顺序使得拆分运算符时要从最右侧进行拆分。要解析一个带有括号的长表达式并没有想象中那么容易我对括号处理的理解有问题,识别括号时,不是两侧有括号+括号匹配......
  • 实现流程化办公,可以相信拖拽表单设计器!
    当前,竞争压力越来越大,利用什么样优良的办公软件实现流程化办公?可以一起来了解低代码技术平台、拖拽表单设计器的优势特点,看看它们是如何助力企业降本、增效、提质的。低代码技术平台的优势特点多,可以助力企业用拖拽式搭积木的方式实现各种应用场景的定制,因此,深得大家的喜爱与支持......
  • 关于vue关闭页面时去除定时器失效问题解决
    1.先去除页面缓存,这个在路由部分 2.    ......
  • 瀑布流练习
    瀑布流练习题0.瀑布流的形成各种高度不同的方块平铺。需要注意的是,第二行开始,选高度最小的方块位置插入新的方块,即需要记住当前高度数组。1.父组件瀑布流的容器这里的number是为了验证是否如开头所言,插入选取位置最矮的<template><WaterFall:list="list"></WaterFall>......
  • FastAdmin 后端控制器与前端页面传参
    1.菜单让链接带参 2.控制器传参数到前端JS$this->assignconfig('tab',$tab); 3.JS传参回后端index_url:'contract/contract/index/tab/'+Config.tab, ......
  • 【微信小程序】bug解决:van-tab+ucharts多图显示问题
    这是一条价值30r的博客......