first commit

main
unknown 6 months ago
parent abcabd757a
commit 483fc9e741

@ -0,0 +1,99 @@
import wx
import pymysql
from MySQL import Make_bill, function
import threading
import time
class Deposit1(wx.App):
def doClose(self, j):
time.sleep(j)
self.frame.Close()
def __init__(self, YuanZhangH):
self.YuanZhangH = YuanZhangH
wx.App.__init__(self)
self.frame = wx.Frame(parent=None, title='存 款', size=(535, 450),
style=wx.DEFAULT_FRAME_STYLE ^ wx.RESIZE_BORDER ^ wx.MAXIMIZE_BOX)
panel = wx.Panel(self.frame, -1)
panel.Bind(wx.EVT_ERASE_BACKGROUND, self.OnEraseBack)
label_pass = wx.StaticText(panel, -1, "存款金额:", pos=(80, 200))
# style 为设置输入
self.JinE = wx.TextCtrl(panel, -1, size=(250, 35), pos=(140, 190))
self.QueDing_button = wx.Button(panel, -1, "确 认", size=(80, 60), pos=(120, 280))
self.QuXiao_button = wx.Button(panel, -1, "返 回", size=(80, 60), pos=(340, 280))
self.QueDing_button.SetBackgroundColour('#0a74f7')
self.QuXiao_button.SetBackgroundColour('#0a74f7')
self.Bind(wx.EVT_BUTTON, self.CunK, self.QueDing_button)
self.Bind(wx.EVT_BUTTON, self.QU, self.QuXiao_button)
self.frame.Center()
self.frame.Show(True)
def show_message(self, word=""):
dlg = wx.MessageDialog(None, word, u"错误", wx.YES_NO | wx.ICON_QUESTION)
if dlg.ShowModal() == wx.ID_YES:
# self.Close(True)
pass
dlg.Destroy()
def show_check(self, word=""):
dlg = wx.MessageDialog(None, word, u"提示", wx.YES_NO | wx.ICON_QUESTION)
if dlg.ShowModal() == wx.ID_YES:
# self.Close(True)
pass
dlg.Destroy()
def QU(self, event):
t = threading.Thread(target=self.doClose, args=(0.05,))
t.start()
jie = function.Jiemian(self.YuanZhangH)
jie.MainLoop()
def CunK(self, event):
# 连接到本地数据库
z2 = self.JinE.GetValue()
YuanZhangH = self.YuanZhangH
# sql = """ UPDATE card set 余额=余额+z2 WHERE Card_Number= '%s' """ % (z1)
sql = "update card set 余额 = 余额+'{}' where Card_Number = '{}'".format(float(z2), YuanZhangH)
# 判断,查看用户名和密码名是否为空
# 不为空之后在进行查询和判断
# 不然当密码或用户名为空时会出现会导致出错
if z2:
db = pymysql.connect(host="localhost", user="root",
password="lwh20021210...", db="atm", port=3306)
# 使用cursor()方法获取操作游标
cur = db.cursor()
try:
cur.execute(sql) # 执行sql语句
db.commit()
Make_bill.Make_Bill(YuanZhangH, "存款", float(z2), "")
self.show_check(word='存款成功')
except Exception as e:
db.rollback()
finally:
db.close() # 关闭连接
else:
self.show_message(word='存款金额不能为空')
def OnEraseBack(self, event):
dc = event.GetDC()
if not dc:
dc = wx.ClientDC(self)
rect = self.GetUpdateRegion().GetBox()
dc.SetClippingRect(rect)
dc.Clear()
bmp = wx.Bitmap('img\\instagram.jpg')
dc.DrawBitmap(bmp, 0, 0)

@ -0,0 +1,95 @@
import wx
import pymysql, threading, time
from MySQL import function
class Gaim1(wx.App):
def doClose(self, j):
time.sleep(j)
self.frame.Close()
def __init__(self, YuanZhangH):
self.YuanZhangH = YuanZhangH
wx.App.__init__(self)
self.frame = wx.Frame(parent=None, title='修改密码', size=(535, 450),
style=wx.DEFAULT_FRAME_STYLE ^ wx.RESIZE_BORDER ^ wx.MAXIMIZE_BOX)
panel = wx.Panel(self.frame, -1)
panel.Bind(wx.EVT_ERASE_BACKGROUND, self.OnEraseBack)
label_user = wx.StaticText(panel, -1, "密 码:", pos=(80, 160))
label_pass = wx.StaticText(panel, -1, "确认密码:", pos=(80, 215))
self.mim = wx.TextCtrl(panel, -1, size=(250, 35), pos=(140, 150), style=wx.TE_PASSWORD)
# style 为设置输入
self.qmim = wx.TextCtrl(panel, -1, size=(250, 35), pos=(140, 205), style=wx.TE_PASSWORD)
self.QueDing_button = wx.Button(panel, -1, "修 改", size=(80, 60), pos=(120, 280))
self.QuXiao_button = wx.Button(panel, -1, "返 回", size=(80, 60), pos=(340, 280))
self.QueDing_button.SetBackgroundColour('#0a74f7')
self.QuXiao_button.SetBackgroundColour('#0a74f7')
self.Bind(wx.EVT_BUTTON, self.Xiu, self.QueDing_button)
self.Bind(wx.EVT_BUTTON, self.QU, self.QuXiao_button)
self.frame.Center()
self.frame.Show(True)
def show_message(self, word=""):
dlg = wx.MessageDialog(None, word, u"错误", wx.YES_NO | wx.ICON_QUESTION)
if dlg.ShowModal() == wx.ID_YES:
# self.Close(True)
pass
dlg.Destroy()
def show_check(self, word=""):
dlg = wx.MessageDialog(None, word, u"提示", wx.YES_NO | wx.ICON_QUESTION)
if dlg.ShowModal() == wx.ID_YES:
# self.Close(True)
pass
dlg.Destroy()
def Xiu(self, event):
YuanZhangH = self.YuanZhangH
z1 = self.mim.GetValue()
z2 = self.qmim.GetValue()
sql = "update card set password = '{}' where Card_Number = '{}'".format(z1, YuanZhangH)
if z1 and z2:
db = pymysql.connect(host="localhost", user="root",
password="lwh20021210...", db="atm", port=3306)
# 使用cursor()方法获取操作游标
cur = db.cursor()
try:
if z1 == z2:
cur.execute(sql) # 执行sql语句
db.commit()
self.show_check(word='密码修改成功')
results = cur.fetchall() # 获取查询的所有记录
# 返回值是一个元组的形式
else:
self.show_message(word='请确保两次输入密码相同')
except Exception as e:
db.rollback()
finally:
db.close() # 关闭连接
pass
def OnEraseBack(self, event):
dc = event.GetDC()
if not dc:
dc = wx.ClientDC(self)
rect = self.GetUpdateRegion().GetBox()
dc.SetClippingRect(rect)
dc.Clear()
bmp = wx.Bitmap('img\\instagram.jpg')
dc.DrawBitmap(bmp, 0, 0)
def QU(self, event):
t = threading.Thread(target=self.doClose, args=(0.05,))
t.start()
jie = function.Jiemian(self.YuanZhangH)
jie.MainLoop()

@ -0,0 +1,38 @@
import random
import time
import pymysql
class Make_Bill():
def __init__(self, Num, stt, val, Mnum):
self.Num = Num
self.stt = stt
self.val = val
self.Mnum = Mnum
self.Make(self.Num)
def makeid(self):
return int(random.uniform(10000001, 10999999))
def Make(self, Num):
sql = "SELECT card类型,Card_Number FROM card WHERE Card_Number = %s" % (self.Num)
db = pymysql.connect(host="localhost", user="root",
password="lwh20021210...", db="atm", port=3306)
cur = db.cursor()
try:
cur.execute(sql) # 执行sql语句
results = cur.fetchall()
print(type(results))
YH = results[0][0]
YC = results[0][1]
tim = time.strftime('%Y-%m-%d %H:%M:%S ', time.localtime(time.time()))
sql2 = "INSERT INTO bill VALUES ('%s',%s, '%s','%s', %s,'%s','%s')" % (
tim, self.makeid(), YH, self.stt, self.val, YC, self.Mnum)
cur.execute(sql2)
db.commit()
except Exception as e:
db.rollback()
finally:
db.close() # 关闭连接
# MM=Make_Bill("62155504510128","转账",1000,"62155504510112")

@ -0,0 +1,95 @@
import wx, threading, time
import pymysql
from MySQL import function
class Query(wx.App):
def doClose(self, j):
time.sleep(j)
self.frame.Close()
def __init__(self, card):
self.card = card
wx.App.__init__(self)
self.frame = wx.Frame(parent=None, title='查询', size=(700, 600),
style=wx.DEFAULT_FRAME_STYLE ^ wx.RESIZE_BORDER ^ wx.MAXIMIZE_BOX)
self.panel = wx.Panel(self.frame, -1)
self.panel.Bind(wx.EVT_ERASE_BACKGROUND, self.OnEraseBack)
self.tex1 = wx.StaticText(self.panel, -1,
"交易时间 订 单 ID 所属银行 交易类型 交易金额 账户信息 目标账户",
pos=(70, 220))
# self.entry_tim = wx.TextCtrl(panel,-1,size=(150,35), pos=(120,120))
# self.entry_ztim = wx.TextCtrl(panel,-1, size=(150,35), pos=(370,120))
self.button = wx.Button(self.panel, -1, "查 询", size=(100, 35), pos=(210, 120))
self.button2 = wx.Button(self.panel, -1, "返 回", size=(100, 35), pos=(400, 120))
self.sampleList = []
self.Bind(wx.EVT_BUTTON, self.Query_transaction_records, self.button)
self.Bind(wx.EVT_BUTTON, self.QU, self.button2)
# listBox.SetSelection(3)
self.frame.Center()
self.frame.Show(True)
def QU(self, event):
t = threading.Thread(target=self.doClose, args=(0.05,))
t.start()
jie = function.Jiemian(self.card)
jie.MainLoop()
def Query_transaction_records(self, event):
sql = "SELECT * FROM bill where 银行卡号='{}'".format(self.card)
db = pymysql.connect(host="localhost", user="root",
password="lwh20021210...", db="atm", port=3306)
# 使用cursor()方法获取操作游标
cur = db.cursor()
try:
cur.execute(sql)
results = cur.fetchall()
print(len(results))
sampleList = []
# self.sampleList.extend(sample)
print(self.sampleList)
if results:
for i in range(len(results)):
wor = ""
for j in range(len(results[i])):
print(results[i][j], end=" ")
wor += str(results[i][j])
wor += " "
print("")
sampleList.append(wor)
listBox = wx.ListBox(self.panel, -1, (20, 250), (680, 350), sampleList, wx.LB_SINGLE)
listBox.SetSelection(3)
else:
self.show_message(word="交易记录为空")
except Exception as e:
db.rollback()
finally:
db.close() # 关闭连接
def show_message(self, word=""):
dlg = wx.MessageDialog(None, word, u"提示", wx.YES_NO | wx.ICON_QUESTION)
if dlg.ShowModal() == wx.ID_YES:
# self.Close(True)
pass
dlg.Destroy()
def OnEraseBack(self, event):
dc = event.GetDC()
if not dc:
dc = wx.ClientDC(self)
rect = self.GetUpdateRegion().GetBox()
dc.SetClippingRect(rect)
dc.Clear()
bmp = wx.Bitmap('img\\instagram.jpg')
dc.DrawBitmap(bmp, 0, 0)
# if __name__ == '__main__':
# app=Query("62155504510128")
# app.MainLoop()

@ -0,0 +1,97 @@
import wx
import pymysql, time, threading
from MySQL import Make_bill, function
class Withdrawal1(wx.App):
def doClose(self, j):
time.sleep(j)
self.frame.Close()
def __init__(self, YuanZhangH):
self.YuanZhangH = YuanZhangH
wx.App.__init__(self)
self.frame = wx.Frame(parent=None, title='取 款', size=(535, 450),
style=wx.DEFAULT_FRAME_STYLE ^ wx.RESIZE_BORDER ^ wx.MAXIMIZE_BOX)
panel = wx.Panel(self.frame, -1)
panel.Bind(wx.EVT_ERASE_BACKGROUND, self.OnEraseBack)
label_pass = wx.StaticText(panel, -1, "取款金额:", pos=(80, 200))
# style 为设置输入
self.JinE = wx.TextCtrl(panel, -1, size=(250, 35), pos=(140, 190))
self.QueDing_button = wx.Button(panel, -1, "确 认", size=(80, 60), pos=(120, 280))
self.QuXiao_button = wx.Button(panel, -1, "反 回", size=(80, 60), pos=(340, 280))
self.QueDing_button.SetBackgroundColour('#0a74f7')
self.QuXiao_button.SetBackgroundColour('#0a74f7')
self.Bind(wx.EVT_BUTTON, self.QuK, self.QueDing_button)
self.Bind(wx.EVT_BUTTON, self.QU, self.QuXiao_button)
self.frame.Center()
self.frame.Show(True)
def show_message(self, word=""):
dlg = wx.MessageDialog(None, word, u"错误", wx.YES_NO | wx.ICON_QUESTION)
if dlg.ShowModal() == wx.ID_YES:
# self.Close(True)
pass
dlg.Destroy()
def show_check(self, word=""):
dlg = wx.MessageDialog(None, word, u"提示", wx.YES_NO | wx.ICON_QUESTION)
if dlg.ShowModal() == wx.ID_YES:
# self.Close(True)
pass
dlg.Destroy()
def QuK(self, event):
# 连接到本地数据库
z2 = self.JinE.GetValue()
YuanZhangH = self.YuanZhangH
sql1 = "SELECT 余额 FROM card WHERE Card_Number = %s" % (YuanZhangH)
sql2 = "update card set 余额 = 余额-'{}' where Card_Number = '{}'".format(float(z2), YuanZhangH)
# 判断,查看用户名和密码名是否为空
# 不为空之后在进行查询和判断
# 不然当密码或用户名为空时会出现会导致出错
if z2:
db = pymysql.connect(host="localhost", user="root",
password="lwh20021210...", db="atm", port=3306)
# 使用cursor()方法获取操作游标
cur = db.cursor()
try:
cur.execute(sql1)
results = cur.fetchall()
if results[0][0] >= float(z2):
cur.execute(sql2)
db.commit()
Make_bill.Make_Bill(YuanZhangH, "取款", float(z2), "")
self.show_check(word='取款成功')
else:
self.show_message(word='余额不足')
except Exception as e:
db.rollback()
finally:
db.close() # 关闭连接
else:
self.show_message(word='取款金额不能为空')
def OnEraseBack(self, event):
dc = event.GetDC()
if not dc:
dc = wx.ClientDC(self)
rect = self.GetUpdateRegion().GetBox()
dc.SetClippingRect(rect)
dc.Clear()
bmp = wx.Bitmap('img\\instagram.jpg')
dc.DrawBitmap(bmp, 0, 0)
def QU(self, event):
t = threading.Thread(target=self.doClose, args=(0.05,))
t.start()
jie = function.Jiemian(self.YuanZhangH)
jie.MainLoop()

@ -0,0 +1,125 @@
/*
Navicat MySQL Data Transfer
Source Server : atm
Source Server Version : 80033
Source Host : localhost:3306
Source Database : atm
Target Server Type : MYSQL
Target Server Version : 80033
File Encoding : 65001
Date: 2024-05-31 14:54:56
*/
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for `bank`
-- ----------------------------
DROP TABLE IF EXISTS `bank`;
CREATE TABLE `bank` (
`bank_key` int NOT NULL,
`` char(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
PRIMARY KEY (`bank_key`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
-- ----------------------------
-- Records of bank
-- ----------------------------
INSERT INTO bank VALUES ('1', '中国银行');
-- ----------------------------
-- Table structure for `bill`
-- ----------------------------
DROP TABLE IF EXISTS `bill`;
CREATE TABLE `bill` (
`` datetime NOT NULL,
`ID` int NOT NULL,
`` char(50) NOT NULL,
`` char(50) NOT NULL,
`` float NOT NULL,
`` char(30) NOT NULL,
`` char(30) DEFAULT NULL,
PRIMARY KEY (``)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
-- ----------------------------
-- Records of bill
-- ----------------------------
INSERT INTO bill VALUES ('2024-05-31 11:05:53', '10744925', '中国银行', '取款', '111', '111', '');
INSERT INTO bill VALUES ('2024-05-31 11:09:08', '10788140', '中国银行', '存款', '1', '111', '');
INSERT INTO bill VALUES ('2024-05-31 11:09:39', '10939119', '中国银行', '存款', '111', '111', '');
INSERT INTO bill VALUES ('2024-05-31 11:09:42', '10613347', '中国银行', '取款', '1', '111', '');
INSERT INTO bill VALUES ('2024-05-31 11:10:57', '10946847', '中国银行', '转账', '0', '111', '222');
INSERT INTO bill VALUES ('2024-05-31 11:13:31', '10074488', '', '转账', '1', '222', '111');
INSERT INTO bill VALUES ('2024-05-31 11:19:10', '10516740', '中国银行', '存款', '33333', '111', '');
INSERT INTO bill VALUES ('2024-05-31 11:20:42', '10517518', '中国银行', '转账', '0', '111', '333');
INSERT INTO bill VALUES ('2024-05-31 11:22:47', '10019783', '中国银行', '存款', '22', '111', '');
INSERT INTO bill VALUES ('2024-05-31 11:23:47', '10431147', '中国银行', '存款', '3333', '333', '');
INSERT INTO bill VALUES ('2024-05-31 11:23:54', '10390544', '中国银行', '转账', '1', '333', '111');
INSERT INTO bill VALUES ('2024-05-31 11:24:03', '10284427', '中国银行', '转账', '22', '333', '111');
INSERT INTO bill VALUES ('2024-05-31 11:24:20', '10429608', '', '转账', '22', '222', '111');
INSERT INTO bill VALUES ('2024-05-31 11:24:42', '10548491', '中国银行', '转账', '111', '111', '333');
INSERT INTO bill VALUES ('2024-05-31 11:25:58', '10599121', '中国银行', '转账', '111', '333', '111');
INSERT INTO bill VALUES ('2024-05-31 11:27:57', '10451816', '', '转账', '111', '222', '333');
INSERT INTO bill VALUES ('2024-05-31 11:28:07', '10920179', '', '转账', '222', '222', '111');
INSERT INTO bill VALUES ('2024-05-31 11:28:10', '10317065', '', '转账', '2222', '222', '111');
INSERT INTO bill VALUES ('2024-05-31 11:30:29', '10919022', '中国银行', '转账', '1', '111', '222');
INSERT INTO bill VALUES ('2024-05-31 11:31:07', '10283188', '', '转账', '1', '444', '111');
INSERT INTO bill VALUES ('2024-05-31 11:31:20', '10528188', '', '存款', '111', '444', '');
INSERT INTO bill VALUES ('2024-05-31 11:31:27', '10851448', '', '取款', '11', '444', '');
INSERT INTO bill VALUES ('2024-05-31 11:31:41', '10858951', '', '转账', '1', '444', '111');
INSERT INTO bill VALUES ('2024-05-31 11:32:28', '10417171', '中国银行', '转账', '1', '111', '222');
INSERT INTO bill VALUES ('2024-05-31 11:36:32', '10530239', '中国银行', '转账', '11', '111', '222');
INSERT INTO bill VALUES ('2024-05-31 11:36:49', '10442202', '中国银行', '转账', '111', '111', '333');
INSERT INTO bill VALUES ('2024-05-31 11:37:23', '10051895', '中国银行', '转账', '111', '111', '222');
INSERT INTO bill VALUES ('2024-05-31 11:43:27', '10163236', '中国银行', '转账', '1', '111', '222');
INSERT INTO bill VALUES ('2024-05-31 11:44:37', '10549313', '中国银行', '转账', '111', '111', '222');
INSERT INTO bill VALUES ('2024-05-31 12:05:07', '10871814', '中国银行', '转账', '1', '111', '222');
INSERT INTO bill VALUES ('2024-05-31 13:36:13', '10654129', '', '转账', '1', '000', '111');
INSERT INTO bill VALUES ('2024-05-31 13:43:53', '10097456', '', '存款', '2999', '888', '');
INSERT INTO bill VALUES ('2024-05-31 13:43:57', '10663217', '', '取款', '2', '888', '');
INSERT INTO bill VALUES ('2024-05-31 13:44:12', '10549945', '', '转账', '11', '888', '111');
-- ----------------------------
-- Table structure for `card`
-- ----------------------------
DROP TABLE IF EXISTS `card`;
CREATE TABLE `card` (
`Card_Number` char(30) NOT NULL,
`` char(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT 'yonghu',
`` char(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
`` float NOT NULL DEFAULT '0',
`card` char(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
`password` int NOT NULL,
PRIMARY KEY (`Card_Number`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
-- ----------------------------
-- Records of card
-- ----------------------------
INSERT INTO card VALUES ('000', '用户', '37000000000', '-1', '', '0');
INSERT INTO card VALUES ('111', '小明', '111111', '1666', '中国银行', '111');
INSERT INTO card VALUES ('222', '小华', '333333', '2237', '', '222');
INSERT INTO card VALUES ('333', '小东', '666666', '2111', '中国银行', '333');
INSERT INTO card VALUES ('444', '用户', '37000000000', '98', '', '444');
INSERT INTO card VALUES ('777', '用户', '37000000000', '0', '', '777');
INSERT INTO card VALUES ('888', '用户', '37000000000', '2986', '', '888');
-- ----------------------------
-- Table structure for `user`
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`User_key` int NOT NULL,
`` char(50) NOT NULL,
`` char(20) NOT NULL,
`` char(30) NOT NULL,
PRIMARY KEY (`User_key`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
-- ----------------------------
-- Records of user
-- ----------------------------
INSERT INTO user VALUES ('1', '小明', '', '111111');

@ -0,0 +1,84 @@
import wx
from MySQL import transfer, Deposit, Withdrawal, Gaim, Make_bill, Query
import threading, time
class Jiemian(wx.App):
def doClose(self, j):
time.sleep(j)
self.frame.Close()
def __init__(self, Num):
wx.App.__init__(self)
self.Num = Num
self.frame = wx.Frame(parent=None, title='自助存取款机', size=(1000, 750),
style=wx.DEFAULT_FRAME_STYLE ^ wx.RESIZE_BORDER ^ wx.MAXIMIZE_BOX)
panel = wx.Panel(self.frame, -1)
# img=wx.Icon(name='logo.png',type=wx.BITMAP_TYPE_PNG)
# wx.StaticBitmap(panel,-1,bitmap=img,pos=(0,0))
# image = wx.Image("instagram.jpg", wx.BITMAP_TYPE_JPEG).ConvertToBitmap()
panel.Bind(wx.EVT_ERASE_BACKGROUND, self.OnEraseBack)
self.Query_transaction_records_button = wx.Button(panel, -1, "查询交易记录", size=(200, 60), pos=(0, 250))
self.transfer_accounts_button = wx.Button(panel, -1, "转 账", size=(200, 60), pos=(0, 375))
self.deposit = wx.Button(panel, -1, "存 款", size=(200, 60), pos=(800, 375))
self.withdrawal = wx.Button(panel, -1, "取 款", size=(200, 60), pos=(800, 250))
self.gaimi = wx.Button(panel, -1, "改 密", size=(200, 60), pos=(0, 500))
self.tuichu = wx.Button(panel, -1, "退 卡", size=(200, 60), pos=(800, 500))
self.Bind(wx.EVT_BUTTON, self.qery, self.Query_transaction_records_button)
self.Bind(wx.EVT_BUTTON, self.transf, self.transfer_accounts_button)
self.Bind(wx.EVT_BUTTON, self.depos, self.deposit)
self.Bind(wx.EVT_BUTTON, self.withdraw, self.withdrawal)
self.Bind(wx.EVT_BUTTON, self.gaim, self.gaimi)
self.Bind(wx.EVT_BUTTON, self.Tui, self.tuichu)
self.frame.Center()
self.frame.Show(True)
def OnEraseBack(self, event):
dc = event.GetDC()
if not dc:
dc = wx.ClientDC(self)
rect = self.GetUpdateRegion().GetBox()
dc.SetClippingRect(rect)
dc.Clear()
bmp = wx.Bitmap('img\\z.png')
dc.DrawBitmap(bmp, 0, 0)
def transf(self, event):
Num = self.Num
t = threading.Thread(target=self.doClose, args=(0.05,))
t.start()
app = transfer.Transfer(Num)
app.MainLoop()
def depos(self, event):
Num = self.Num
t = threading.Thread(target=self.doClose, args=(0.05,))
t.start()
app = Deposit.Deposit1(Num)
app.MainLoop()
def withdraw(self, event):
Num = self.Num
t = threading.Thread(target=self.doClose, args=(0.05,))
t.start()
app = Withdrawal.Withdrawal1(Num)
app.MainLoop()
def gaim(self, event):
Num = self.Num
t = threading.Thread(target=self.doClose, args=(0.05,))
t.start()
app = Gaim.Gaim1(Num)
app.MainLoop()
def Tui(self, event):
t = threading.Thread(target=self.doClose, args=(0.05,))
t.start()
def qery(self, event):
t = threading.Thread(target=self.doClose, args=(0.05,))
t.start()
app = Query.Query(self.Num)
app.MainLoop()

@ -0,0 +1,4 @@
from MySQL import t1 #从 MySQL 模块导入t1
if __name__=='__main__': #当前的文件作为主程序运行
app = t1.MyApp() #创建了一个名为 app 的对象,该对象是 t1 组件中 MyApp 类的一个实例,初始化一个应用程序
app.MainLoop() #应用程序的事件循环,使窗口保持打开并能够响应用户操作

@ -0,0 +1,162 @@
import wx
import random
import pymysql
import time
import threading
from MySQL import function
# 所系使用的是固定位置,导致窗口拉伸的效果不是很好
class MyApp(wx.App): #定义一个名为MyApp的类继承自wxPython的App类
def doClose(self, j):
time.sleep(j)
self.frame.Close()
def __init__(self):
wx.App.__init__(self)
self.frame = wx.Frame(parent=None, title='Login', size=(600, 460),
style=wx.DEFAULT_FRAME_STYLE ^ wx.RESIZE_BORDER ^ wx.MAXIMIZE_BOX)
# 设置窗口的左上角的图标 600, 460
# 其中参数type表示图片的类型还有icojpgm等类型
icon_1 = wx.Icon(name='img\\favicon.png', type=wx.BITMAP_TYPE_PNG)
self.frame.SetIcon(icon_1)
panel = wx.Panel(self.frame, -1)
# 向panel中添加图片
image = wx.Image("img\\登录背景.jpg", wx.BITMAP_TYPE_JPEG).ConvertToBitmap()
panel.Bind(wx.EVT_ERASE_BACKGROUND, self.OnEraseBack)
# 添加文本输入框
label_user = wx.StaticText(panel, label='用户:', pos=(120, 230))
label_user.SetBackgroundColour(wx.Colour(255, 255, 255))
self.entry_user = wx.TextCtrl(panel, -1, size=(225, 35), pos=(160, 225))
# style 为设置输入
label_pass = wx.StaticText(panel, label='密码:', pos=(120, 280))
label_pass.SetBackgroundColour(wx.Colour(255, 255, 255))
self.entry_pass = wx.TextCtrl(panel, -1, size=(225, 35), pos=(160, 270), style=wx.TE_PASSWORD)
# 添加按钮
self.but_login = wx.Button(panel, -1, "登陆", size=(130, 50), pos=(140, 340))
self.but_register = wx.Button(panel, -1, "注册", size=(130, 50), pos=(297, 340))
# 设置按钮的颜色
self.but_login.SetBackgroundColour("#0a74f7")
self.but_register.SetBackgroundColour("#0a74f7")
# 给按钮绑定事件
self.Bind(wx.EVT_BUTTON, self.on_but_login, self.but_login)
self.Bind(wx.EVT_BUTTON, self.on_but_register, self.but_register)
self.frame.Center()
self.frame.Show(True)
def OnEraseBack(self, event): #定义一个方法,用于处理窗口背景的擦除事件
dc = event.GetDC()
if not dc:
dc = wx.ClientDC(self)
rect = self.GetUpdateRegion().GetBox()
dc.SetClippingRect(rect)
dc.Clear()
bmp = wx.Bitmap("img\\登录背景.jpg")
dc.DrawBitmap(bmp, 0, 0)
# 定义一个消息弹出框的函数
def show_message(self, word=""):
dlg = wx.MessageDialog(None, word, u"错误", wx.YES_NO | wx.ICON_QUESTION)
if dlg.ShowModal() == wx.ID_YES:
# self.Close(True)
pass
dlg.Destroy()
def show_que(self, word=""): #定义一个方法,用于显示提示消息框,并在确认后关闭窗口
dlg = wx.MessageDialog(None, word, u"提示", wx.YES_NO | wx.ICON_QUESTION)
if dlg.ShowModal() == wx.ID_YES:
# self.Close(True)
t = threading.Thread(target=self.doClose, args=(0.5,))
t.start()
dlg.Destroy()
def on_but_login(self, event): #定义一个方法,用于处理登录按钮的点击事件,包括与数据库的连接和用户验证。
user_name = self.entry_user.GetValue()
pass_word = self.entry_pass.GetValue()
sql = """select password from card where Card_Number ='%s' """ % (user_name)
# 判断,查看用户名和密码名是否为空
# 不为空之后在进行查询和判断
# 不然当密码或用户名为空时会出现会导致出错
if user_name and pass_word:
print(user_name, " ", pass_word)
db = pymysql.connect(host="localhost", user="root",
password="lwh20021210...", db="atm", port=3306)
# 使用cursor()方法获取操作游标
cur = db.cursor()
try:
cur.execute(sql) # 执行sql语句
results = cur.fetchall() # 获取查询的所有记录
# 返回值是一个元组的形式
print(type(results))
if results:
# print(type(results[0][0]))
# print(results[0][0])
if results[0][0] == int(pass_word):
self.show_que(word="登陆成功")
jie = function.Jiemian(user_name)
jie.MainLoop()
# self.page1 = function.Jiemian()
# je=Jiemian()
# je.MainLoop()
# self.AddPage(self.page1, "xxpage")
else:
self.show_message(word="密码错误")
else:
self.show_message(word='用户名不存在')
except Exception as e:
db.rollback()
finally:
db.close() # 关闭连接
else:
self.show_message(word='账号和密码不能为空')
def on_but_register(self, event): #定义一个方法,用于处理注册按钮的点击事件,包括将新用户信息插入到数据库
user_name = self.entry_user.GetValue()
pass_word = self.entry_pass.GetValue()
sql = "INSERT INTO card (Card_Number, password,持卡人姓名,身份证号,余额,card类型) VALUES ('%s','%s','%s','%s','%s','%s')" % (
user_name, pass_word, '用户', 37000000000, 0, " ")
# 判断,查看用户名和密码名是否为空
# 不为空之后在进行查询和判断
# 不然当密码或用户名为空时会出现会导致出错
if user_name and pass_word:
print(user_name, " ", pass_word)
db = pymysql.connect(host="localhost", user="root",
password="lwh20021210...", db="atm", port=3306)
# 使用cursor()方法获取操作游标
cur = db.cursor()
try:
cur.execute(sql) # 执行sql语句
results = cur.rowcount # 获取查询的所有记录
# 返回值是一个元组的形式
db.commit()
print(type(results))
if results:
# print(type(results[0][0]))
if results > 0:
self.show_que(word="操作成功")
else:
self.show_message(word="操作失败")
else:
self.show_message(word='操作失败')
except Exception as e:
db.rollback()
finally:
db.close() # 关闭连接
else:
self.show_message(word='账号和密码不能为空')
# je=Jiemian()
# je.MainLoop()
# je=Jiemian()
# je.MainLoop()

@ -0,0 +1,148 @@
import wx
import pymysql, time, threading
from MySQL import Make_bill, function
class Transfer(wx.App):
def doClose(self, j):
time.sleep(j)
self.frame.Close()
def __init__(self, YuanZhangH):
self.YuanZhangH = YuanZhangH
wx.App.__init__(self)
self.frame = wx.Frame(parent=None, title='转 账', size=(535, 450),
style=wx.DEFAULT_FRAME_STYLE ^ wx.RESIZE_BORDER ^ wx.MAXIMIZE_BOX)
panel = wx.Panel(self.frame, -1)
panel.Bind(wx.EVT_ERASE_BACKGROUND, self.OnEraseBack)
label_user = wx.StaticText(panel, -1, "账 号:", pos=(80, 160))
label_pass = wx.StaticText(panel, -1, "转账金额:", pos=(80, 215))
self.ZhangHao = wx.TextCtrl(panel, -1, size=(250, 35), pos=(140, 150))
# style 为设置输入
self.JinE = wx.TextCtrl(panel, -1, size=(250, 35), pos=(140, 205))
self.YanZheng_button = wx.Button(panel, -1, "验证", size=(50, 35), pos=(400, 150))
self.QueDing_button = wx.Button(panel, -1, "转 账", size=(80, 60), pos=(120, 280))
self.QuXiao_button = wx.Button(panel, -1, "返 回", size=(80, 60), pos=(340, 280))
self.YanZheng_button.SetBackgroundColour('#0a74f7')
self.QueDing_button.SetBackgroundColour('#0a74f7')
self.QuXiao_button.SetBackgroundColour('#0a74f7')
self.Bind(wx.EVT_BUTTON, self.YanCard, self.YanZheng_button)
self.Bind(wx.EVT_BUTTON, self.ZhuanZhang, self.QueDing_button)
self.Bind(wx.EVT_BUTTON, self.QU, self.QuXiao_button)
self.frame.Center()
self.frame.Show(True)
def show_message(self, word=""):
dlg = wx.MessageDialog(None, word, u"错误", wx.YES_NO | wx.ICON_QUESTION)
if dlg.ShowModal() == wx.ID_YES:
# self.Close(True)
pass
dlg.Destroy()
def show_check(self, word=""):
dlg = wx.MessageDialog(None, word, u"提示", wx.YES_NO | wx.ICON_QUESTION)
if dlg.ShowModal() == wx.ID_YES:
# self.Close(True)
pass
dlg.Destroy()
def QU(self, event):
t = threading.Thread(target=self.doClose, args=(0.05,))
t.start()
jie = function.Jiemian(self.YuanZhangH)
jie.MainLoop()
def YanCard(self, event):
z1 = self.ZhangHao.GetValue()
sql = """select 持卡人姓名,card类型 from card where Card_Number ='%s' """ % (z1)
if z1 != self.YuanZhangH:
db = pymysql.connect(host="localhost", user="root",
password="lwh20021210...", db="atm", port=3306)
# 使用cursor()方法获取操作游标
cur = db.cursor()
try:
cur.execute(sql) # 执行sql语句
results = cur.fetchall() # 获取查询的所有记录
# 返回值是一个元组的形式
print(type(results))
if results:
# print(type(results[0][0]))
# print(results[0][0])
stt = "持卡人姓名:" + results[0][0] + " " + "银行类型:" + results[0][1]
self.show_check(stt)
print(results[0][0], " ", results[0][1])
else:
self.show_message(word='账号不存在')
except Exception as e:
db.rollback()
finally:
db.close() # 关闭连接
else:
self.show_message(word="转账账号不能与自己相同")
def ZhuanZhang(self, event):
# 连接到本地数据库
z1 = self.ZhangHao.GetValue()
z2 = self.JinE.GetValue()
YuanZhangH = self.YuanZhangH
# sql = """ UPDATE card set 余额=余额+z2 WHERE Card_Number= '%s' """ % (z1)
sql = "update card set 余额 = 余额+'{}' where Card_Number = '{}'".format(float(z2), z1)
sql1 = "SELECT 余额 FROM card WHERE Card_Number = %s" % (z1)
sql2 = "update card set 余额 = 余额-'{}' where Card_Number = '{}'".format(float(z2), YuanZhangH)
if z1 != self.YuanZhangH:
if z1 and z2:
db = pymysql.connect(host="localhost", user="root",
password="lwh20021210...", db="atm", port=3306)
# 使用cursor()方法获取操作游标
cur = db.cursor()
try:
cur.execute(sql1)
results = cur.fetchall()
if results[0][0] >= float(z2):
cur.execute(sql) # 执行sql语句
db.commit()
cur.execute(sql2)
db.commit()
Make_bill.Make_Bill(YuanZhangH, "转账", float(z2), z1)
self.show_check(word='转账成功')
else:
self.show_message(word='余额不足')
except Exception as e:
db.rollback()
finally:
db.close() # 关闭连接
else:
self.show_message(word='账号和转账金额不能为空')
else:
self.show_message(word="转账账号不能与自己相同")
def OnEraseBack(self, event):
dc = event.GetDC()
if not dc:
dc = wx.ClientDC(self)
rect = self.GetUpdateRegion().GetBox()
dc.SetClippingRect(rect)
dc.Clear()
bmp = wx.Bitmap('img\\instagram.jpg')
dc.DrawBitmap(bmp, 0, 0)
# if __name__=='__main__':
# app = Transfer("62155504510128")
# app.MainLoop()
Loading…
Cancel
Save