GUI程序設計--班級信息收集系


#創建數據庫
import pymysql
db =pymysql.connect(host='localhost',user='root',password='L3918374',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.execute(sql)
db.close()

界面

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='L3918374',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()
                message ='保存成功'                                   #保存成功
            except:
                #發生錯誤時回滾
                db.rollback()
                #關閉連接
        db.close()
        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='L3918374',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]
                if username_sql == username:
                    message ="班級:{}\n姓名:{}\n學號:{}\n".format(classname,username_sql,number_sql)
                else:
                    message ="姓名與學號不匹配"
            except:
                message = "沒有該學號"
            
        elif username !="" and number =="":
            sql ="SELECT * FROM ACCOUNTPASSWORD \
                  WHERE NAME = %s"                               #找到該名字
            try:
                #執行sql語句
                cursor.execute(sql,username)
                #獲取記錄
                results =cursor.fetchall()
                #輸出對應的信息
                for row in results:
                    classname = row[0]
                    username =row[1]
                    number =row[2]
                message ="班級:{}\n姓名:{}\n學號:{}\n".format(classname,username,number)
            except:
                message ="沒有這個名字"              #數據錯誤--
        elif number !="" and username =="":
            sql ="SELECT * FROM ACCOUNTPASSWORD \
                  WHERE NUMBER = %s"                              #查找學號,同上
            try:
                #執行sql語句
                cursor.execute(sql,number)
                #獲取記錄
                results =cursor.fetchall()
                for row in results:
                    classname = row[0]
                    username =row[1]
                    number =row[2]
                message ="班級:{}\n姓名:{}\n學號:{}\n".format(classname,username,number)
            except:
                message ="沒有這個學號"
        else:
            message ="班級或名字或密碼不能為空"
        #關閉數據庫
        db.close()
        wx.MessageBox(message)
if __name__ =='__main__':
    app = wx.App()                                               #初始化應用
    frame = MyFrame(parent=None, id=-1)                          #實例MyFrame類,並傳遞參數
    frame.Show()                                                 #顯示窗口
    app.MainLoop()                                               #調用主循環方法
    

 

 

 

結果:

              

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM