|
##################atm_login.py
#!/usr/bin/python
# -*- coding: utf-8 -*-
__author__ = 'gaogd'
import datetime
import MySQLdb as mysql
import atm_select
import atm_main
class ATM(object):
def __init__(self):
self.db = mysql.connect(user="root", passwd="wdzj@2015", db="ATM", host="192.168.10.12") # 数据库连接信息
self.db.autocommit(True)
self.cur = self.db.cursor()
self.cur.execute('set names utf8')
def Login(self):
# addtime = datetime.datetime.now().__format__("%Y-%m-%d %H:%M:%S")
addtime = datetime.datetime.now()
self.card_id = raw_input(u'请输入你的银行卡号:')
err_count = 0
Flag = True
while Flag:
self.password = raw_input(u'请输入密码:')
if self.card_id.strip() == '':
print u'银行卡号不能为空!'
Flag = False
return Flag
if not self.card_id.isdigit():
print u'用户卡号必须为数字!'
Flag = False
return Flag
if self.password.strip() == '':
print u'密码不能为空!'
Flag = False
return Flag
## select err_time from loginuser where user='xiaoming';
get_err_time_sql = "select err_time from back_card where card_id='%s';" % self.card_id
self.cur.execute(get_err_time_sql)
get_err_time = self.cur.fetchall()
if len(get_err_time) == 0: ## 卡号不存在
print u'输入的用户卡或密码错误'
Flag = False
return Flag
print '1------',get_err_time
print '2------',get_err_time[0][0]
if get_err_time[0][0] == None:
print 'ok pass'
#pass
else:
print 'get_err_time::', get_err_time[0][0], '=======', addtime
err_time = get_err_time[0][0]
diff_time = (addtime - err_time).seconds
print 'diff_time::', diff_time
if not diff_time >= 100:
Flag = False
if Flag:
# sql = select user,passwd from loginuser where user='gao3'and passwd='gao3';
select_user_passwd_sql = "select card_id,card_user,card_passwd from back_card where card_id=%s and card_passwd='%s';" % (self.card_id, self.password)
#print select_user_passwd_sql
self.cur.execute(select_user_passwd_sql)
select_user_passwd = self.cur.fetchall()
if len(select_user_passwd) == 0:
print u'用户名或密码不正确!!'
err_count += 1
if err_count == 3:
print u'错误输入密码超过三次,程序自动退出!!'
##sql = update loginuser set err_time='2016-09-02 15:40:01' where user='gao1' ;
update_err_sql = "update back_card set err_time='%s' where card_id=%s " % (addtime, self.card_id)
self.cur.execute(update_err_sql)
Flag = False
else:
err_count = 0
self.card_user = select_user_passwd[0][1]
##sql = update loginuser set login_time='2016-09-02 15:40:01' where user='gao1' ;
update_login_sql = "update back_card set login_time='%s' where card_id='%s' " % (addtime, self.card_id)
self.cur.execute(update_login_sql)
print u'欢迎%s您来到中国银行网上银行!!' % self.card_user
#atm_main.atm_choose()
return True,self.card_id
else:
print u'%s在5分钟登陆错误超过3次,请三十分钟后登陆!!' % self.card_id
def Register(self):
username = raw_input(u'请输入你要申请的用户名:')
password_one = raw_input(u'请输入密码:')
password_two = raw_input(u'请再次输入密码:')
addtime = datetime.datetime.now()
if username.strip() == '':
print u'用户名不能为空!'
if not username.isalnum():
print u'用户名不能包含特殊字符'
return False
if password_one.strip() == '':
print u'密码不能为空!'
return False
if not password_one.strip() == password_two.strip():
print u'你两次输入的密码不一致'
return False
##生成银行卡号
##select * from back_card ORDER BY card_id desc limit 1;
card_last_id_sql = "select * from back_card ORDER BY card_id desc limit 1;"
self.cur.execute(card_last_id_sql)
card_last_id = self.cur.fetchall()[0][0]
card_id = int(card_last_id) + 1
## insert into back_card(card_id,card_passwd,card_user,card_balance,create_time) values(999990001,'asdasd','gao',0.0,addtime);
create_card_sql = "insert into back_card(card_id,card_passwd,card_user,card_balance,create_time) values(%s,'%s','%s',0.0,'%s');" % (card_id,password_one,username,addtime)
try:
print create_card_sql
self.cur.execute(create_card_sql)
except Exception as e:
print e
print u'创建用户失败!!'
return False
print u'创建用户成功:', username
def UpdatePasswd(self):
'''
修改信用卡密码
'''
card_id = raw_input(u'请输入你要修改密码的卡号: ')
username = raw_input(u'请输入用户名: ')
password = raw_input(u'请输入密码: ')
new_passwd = raw_input(u'请输入你的新密码: ')
new_passwd_two = raw_input(u'请输入你的新密码: ')
if username.strip() == '':
print u'输入的用户名不能为空!'
return False
if card_id.strip() == '':
print u'信用卡号不能为空!'
return False
if not card_id.isdigit():
print u'信用卡号输入有误,卡号只能是数字!'
return False
if not new_passwd.strip() == new_passwd_two.strip():
print u'您两次输入的新密码不一致,请重新输入!'
return False
# select card_id,card_passwd from back_card where card_id=999990005 and card_user='gao3'and card_passwd='gao33' ;
select_card_passwd_sql = "select card_id,card_passwd from back_card where card_id=%s and card_user='%s'and card_passwd='%s' ;" % (
card_id, username, password)
# print select_card_passwd_sql
self.cur.execute(select_card_passwd_sql)
select_card_passwd = self.cur.fetchall()
# print select_card_passwd,'lend2',len(select_card_passwd)
if len(select_card_passwd) == 0:
print u'用户名或密码不正确!!'
return False
else:
##修改密码
##update back_card set card_passwd='okokok' where card_id=999990001;
select_updatepasswd_sql = " update back_card set card_passwd='%s' where card_id=%s ;" % (new_passwd,card_id)
#print select_updatepasswd_sql
self.cur.execute(select_updatepasswd_sql)
print u'用户%s 密码已经修改成功!!!' % username
def Deleuser(self):
card_id = raw_input(u'请输入你要删除的卡号:')
username = raw_input(u'请输入你要删除的用户名:')
password = raw_input(u'请输入密码:')
if username.strip() == '' :
print u'输入的用户名不能为空!'
return False
if card_id.strip() == '':
print u'银行卡不能为空!'
return False
if not card_id.isdigit():
print u'信用卡号输入有误,卡号只能是数字!'
return False
# select card_id,card_passwd from back_card where card_id=999990005 and card_user='gao3'and card_passwd='gao33' ;
select_card_passwd_sql = "select card_id,card_passwd from back_card where card_id=%s and card_user='%s'and card_passwd='%s' ;" % (card_id,username,password)
#print select_card_passwd_sql
self.cur.execute(select_card_passwd_sql)
select_card_passwd = self.cur.fetchall()
#print select_card_passwd,'lend2',len(select_card_passwd)
if len(select_card_passwd) == 0:
print u'用户名或密码不正确!!'
return False
else:
if password.strip() == select_card_passwd[0][1].strip():
##删除用户
##DELETE FROM loginuser WHERE user='gao1';
select_deluser_sql = "DELETE FROM back_card where card_id=%s and card_user='%s' ;" % (card_id,username)
self.cur.execute(select_deluser_sql)
print u'已经成功删除%s用户' % username
def Select(self,card_id):
select_content = u'''
1.查询余额
2.查询消费记录
3.退出查询
'''
print select_content
select_content_num = raw_input(u'输入你要查询的项目:')
if select_content_num.strip() == '1':
#print 'card_id:::',card_id
#select card_balance from back_card where card_id=999990004 ;
card_balance_sql = "select card_balance from back_card where card_id=%s ;" % card_id
#print card_balance_sql
self.cur.execute(card_balance_sql)
self.card_balance = self.cur.fetchall()
print u'您的余额是::', self.card_balance[0][0]
return True
if select_content_num.strip() == '2':
return True
if select_content_num.strip() == '3':
return False
print u'您的输入有误,请重新输入!!'
return True
def PutGetMoney(self,card_id):
put_get_item = u'''
1. 存钱
2. 取钱
3. 转账
4. 退出存取转款
'''
print put_get_item
put_get_item_num = raw_input(u'输入你要查询的项目:')
## 查现在的存款
card_balance_sql = "select card_balance from back_card where card_id=%s ;" % card_id
self.cur.execute(card_balance_sql)
self.card_balance = self.cur.fetchall()
print u'您的余额是::', self.card_balance[0][0]
if put_get_item_num.strip() == '1':
'''
存钱
'''
put_money = raw_input(u'请您输入要存的款额: ') ##这里日后还可以添加输入小数的
if not put_money.isdigit():
print u'您的输入的存款有误!必须输入整数!!'
return True
new_money = float(put_money) + float(self.card_balance[0][0])
# update back_card set card_balance=610 where card_id=999990004 ;
put_money_sql = "update back_card set card_balance=%s where card_id=%s ;" % (new_money,card_id)
self.cur.execute(put_money_sql)
print u'已成功帮您存入%s元,您现在的余额是%s元!!' %(put_money,new_money)
return True
if put_get_item_num.strip() == '2':
'''
取钱
'''
get_money = raw_input(u'请您输入要存的款额: ') ##这里日后还可以添加输入小数的
if not get_money.isdigit():
print u'您的输入的取款有误!必须输入整数哦!!'
return True
new_money = float(self.card_balance[0][0]) - float(get_money)
if new_money < 0:
print u'您的输入的余额不足%s元,无法为您取款!!' % get_money
return True
put_money_sql = "update back_card set card_balance=%s where card_id=%s ;" % (new_money,card_id)
self.cur.execute(put_money_sql)
print u'已成功帮您取出%s元,您现在的余额是%s元!!' %(get_money,new_money)
return True
if put_get_item_num.strip() == '3':
'''
转账
'''
tranfer_money = raw_input(u'请您输入要存的款额: ') ##这里日后还可以添加输入小数的
tranfer_card_id = raw_input(u'请您输入转到目的卡号: ')
tranfer_card_user = raw_input(u'请您输入转到目的卡的用户名: ')
if not tranfer_money.isdigit():
print u'您的输入的转款有误!必须输入整数哦!!'
return True
new_my_money = float(self.card_balance[0][0]) - float(tranfer_money)
if new_my_money < 0:
print u'您的输入的余额不足%s元,无法为您转账!!' % tranfer_money
return True
if not tranfer_card_id.strip().isdigit():
print u'您的输入的目的卡号%s不正确,应为数字!!' % tranfer_card_id
return True
if not tranfer_card_user.strip().isalpha():
print u'您的输入的目的用户%s不正确,应为字母!!' % tranfer_card_id
return True
##
# select * from back_card where card_id=999990003 and card_user='gao1' ;
select_tranfer_card_user_sql = "select card_balance from back_card where card_id=%s and card_user='%s' ;" %(tranfer_card_id,tranfer_card_user)
print select_tranfer_card_user_sql
self.cur.execute(select_tranfer_card_user_sql)
peer_money = self.cur.fetchall()
if len(peer_money) == 0:
print u'您输入的目的卡号或用户名不一致,无法为您转账'
return True
#本卡操作
put_money_sql = "update back_card set card_balance=%s where card_id=%s ;" % (new_my_money,card_id)
self.cur.execute(put_money_sql)
#目的卡操作
peer_old_money = peer_money[0][0]
new_peer_money = float(peer_old_money) + float(tranfer_money)
get_money_sql = "update back_card set card_balance=%s where card_id=%s ;" % (new_peer_money,tranfer_card_id)
print get_money_sql
self.cur.execute(get_money_sql)
print u'已经成功为您转账%s元,到%s账户上!您现在的余额是%s元' %(tranfer_money,tranfer_card_user,new_my_money)
return True
if put_get_item_num.strip() == '4':
return False
print u'您输入的序号有误!'
return True |
|