soyizi 发表于 2018-8-8 11:24:14

Python ATM小程序 v1

##################atm_login.py  
#!/usr/bin/python
  
# -*- coding: utf-8 -*-
  

  
__author__ = 'gaogd'
  

  
importdatetime
  
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() == '':
  
                printu'银行卡号不能为空!'
  
                Flag = False
  
                return Flag
  
            if not self.card_id.isdigit():
  
                printu'用户卡号必须为数字!'
  
                Flag = False
  
                return Flag
  

  
            if self.password.strip() == '':
  
                printu'密码不能为空!'
  
                Flag = False
  
                return Flag
  

  
            ## select err_timefrom loginuser where user='xiaoming';
  
            get_err_time_sql = "select err_timefrom 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
  
            if get_err_time == None:
  
                print 'ok pass'
  
                #pass
  
            else:
  
                print 'get_err_time::', get_err_time, '=======', addtime
  
                err_time = get_err_time
  
                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
  
                  ##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() == '':
  
            printu'用户名不能为空!'
  

  
      if not username.isalnum():
  
            print u'用户名不能包含特殊字符'
  
            return False
  

  
      if password_one.strip() == '':
  
            printu'密码不能为空!'
  
            return False
  

  
      if not password_one.strip() == password_two.strip():
  
            print u'你两次输入的密码不一致'
  
            return False
  

  
      ##生成银行卡号
  
      ##select * from back_cardORDER BY card_id desc limit 1;
  
      card_last_id_sql = "select * from back_cardORDER BY card_id desc limit 1;"
  
      self.cur.execute(card_last_id_sql)
  
      card_last_id = self.cur.fetchall()
  
      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() == '':
  
            printu'输入的用户名不能为空!'
  
            return False
  

  
      if card_id.strip() == '':
  
            printu'信用卡号不能为空!'
  
            return False
  

  
      if not card_id.isdigit():
  
            printu'信用卡号输入有误,卡号只能是数字!'
  
            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() == '' :
  
            printu'输入的用户名不能为空!'
  
            return False
  

  
      if card_id.strip() == '':
  
            printu'银行卡不能为空!'
  
            return False
  

  
      if not card_id.isdigit():
  
            printu'信用卡号输入有误,卡号只能是数字!'
  
            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.strip():
  
                ##删除用户
  
                ##DELETE FROM loginuserWHERE user='gao1';
  
                select_deluser_sql = "DELETE FROM back_cardwhere 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.退出查询
  

  
      '''
  
      printselect_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
  

  
            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
  

  
      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)
  
            # 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) - 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) - 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()
  
            iflen(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
  
            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
页: [1]
查看完整版本: Python ATM小程序 v1