设为首页 收藏本站
查看: 956|回复: 0

[经验分享] Python ATM小程序 v1

[复制链接]

尚未签到

发表于 2018-8-8 11:24:14 | 显示全部楼层 |阅读模式
##################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

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-548606-1-1.html 上篇帖子: [翻译] python Tutorial 之一 下篇帖子: python的变量
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表