码迷,mamicode.com
首页 > 其他好文 > 详细

ATM 练习

时间:2015-12-17 15:53:23      阅读:231      评论:0      收藏:0      [点我收藏+]

标签:

bank.py

__author__ = zhaobin022
import json
import  tools
import getpass
import  datetime

class DatabaseHelper:
    def __init__(self):
        self.database = db.json
        ‘‘‘
        self.accountDic = {‘zhangsan‘:
                              {‘total‘:0,
                               ‘password‘:tools.getMd5Password(‘123‘),
                               ‘status‘:True
                               },
                          ‘lisi‘:
                              {‘total‘:0,
                                ‘password‘:tools.getMd5Password(‘456‘),
                                ‘status‘:True
                               }
                         }
        ‘‘‘
        self.accountDic =  self.readJson()
       # self.__writeJson()
    def readJson(self):
        with open(self.database) as f:
            return  json.load(f)

    def writeJson(self):
        with open(self.database,w) as f:
            json.dump(self.accountDic,f)

class Bank:
    def __init__(self):
        self.dh = DatabaseHelper()
    def __login(f):
        def inner(self,*args, **kwargs):
            username = raw_input("username : ")
            username = username.strip()
            accountDic = self.dh.accountDic
            if  accountDic.get(username):
                self.username = username
                count = 0
                if not accountDic[username][status]: return False,You account has been locked !
                while True:
                    password = raw_input("passowrd : ")
                    if accountDic[username][password] == tools.getMd5Password(password):
                        return  f(self,*args,**kwargs)
                    else:
                        print "Please input the right password :"
                        count += 1
                        if count == 3:
                            accountDic[username][status] = False
                            self.dh.writeJson()
                            return False,Your account have been locked ! You have inputed wrong password  three times 
            else:
                return False , ‘‘‘Don‘t have this account‘‘‘
        return inner
    def logout(self,username,password):
        pass

    @__login
    def getMoney(self,  number):
        #number = kwargs[‘number‘]
        if number <= 0: return False,"Please input the right number"
        accountDic = self.dh.accountDic.get(self.username)
        if accountDic[total] >= number:
            accountDic[total]-=float(%0.2f%number)
            accountDic[total]=float(%0.2f%accountDic[total])
            self.dh.writeJson()
            return True,get %0.2f money , your balance is %0.2f  % (number,accountDic[total])
        else:
            return False, """You don‘t have enough money !"""

    @__login
    def queryMoney(self):
        if self.dh.accountDic.get(self.username):
            return True,self.dh.accountDic.get(self.username).get(total)

    @__login
    def returnMoney(self,number):
        number = float(%s% number)
        if number <= 0: return False,"Please input the right number"
        accountDic = self.dh.accountDic.get(self.username)
        accountDic[total]+=float(%0.2f%number)
        self.dh.writeJson()
        return True,You change %0.2f , and your balance is %0.2f  % (number,accountDic[total])

    @__login
    def forwardMoney(self):
        destinationnAccount = raw_input("destinationnAccount")
        destinationnAccount = self.dh.accountDic.get(destinationnAccount.strip())
        account = self.dh.accountDic.get(self.username)
        if destinationnAccount:
            number = raw_input("number :")
            number = float(%s% number.strip())
            if account[total] >= number:
                account[total]-=number
                account[total]=float(%0.2f%account[total])
                destinationnAccount[total]+=number
                self.dh.writeJson()
                return True,your balance is %0.2f  % (account[total])
            else:
                return False,"You don‘t have money to transfer accounts !"
        else:
            return False,The destinationn account not exist !

    @__login
    def flushCard(self,number):
        if number <= 0: return False,"Please input the right number"
        account = self.dh.accountDic.get(self.username)
        if account[total] >= number:
            account[total]-=float(%0.2f%number)
            account[total]=float(%0.2f%account[total])
            self.dh.writeJson()
            return True,flush  %0.2f money , your balance is %0.2f  % (number,account[total])
        else:
            return False, """You don‘t have enough money !"""

db.json

{"lisi": {"status": true, "password": "250cf8b51c773f3f8dc8b4be867a9a02", "total": 2950.0}, "zhangsan": {"status": true, "password": "202cb962ac59075b964b07152d234b70", "total": 11000.0}}

goods.json

{"Python": {"count": 2, "price": 50}, "TV": {"count": 10, "price": 1500}, "Bike": {"count": 3, "price": 500}}

main.py

__author__ = zhaobin022

from bank import Bank
from shop import Shop
from prettytable import PrettyTable



if __main__ == __name__:
    while True:
        print ‘‘‘
           1 . Shoping
           2 . ATM
           3 . Quit
           ‘‘‘
        choice = raw_input("input your choice")
        choice = int(choice)
        if choice == 1:
            s = Shop()
            while True:
                goodDic = s.listGoods()
                print go to make deal input (commit) exit input exit
                good_choice = raw_input("input your choice")


                if good_choice in goodDic.keys():
                    count = raw_input("please input the count")
                    print goodDic[good_choice]
                    print s.addCart(goodDic[good_choice],count)
                    print Cart List
                    s.listCart()
                elif good_choice.strip() == commit:
                    print s.makeDeal(lisi)
                elif good_choice.strip() == exit:
                    break

        elif choice == 2:
            b = Bank()
            while True:
                print ‘‘‘
                1 . getMoney
                2 . queryMoney
                3 . returnMoney
                4 . forwardMoney
                5 . quit
                ‘‘‘
                choice = raw_input("input your choice :")
                if choice.strip() == 1:
                    #username =  raw_input("input your username  :")
                    number = raw_input("input your number :")
                    print b.getMoney(number=int(number))
                elif choice.strip() == 2:
                   # username =  raw_input("input your username  :")
                    print b.queryMoney()
                elif choice.strip() == 3:
                    number = raw_input("input your number :")
                    print b.returnMoney(number=number)
                elif choice.strip() == 4:
                    print b.forwardMoney()
                elif choice.strip() == 5:
                    break
        elif choice == 3:
            break



   # b = Bank()
#  s = Shop()
#  print ‘goods list‘
#  s.listGoods()
#  print ‘cart list‘
#  s.listCart()
#  print s.addCart(‘Bike‘,2)

#  s.listCart()
#  s.makeDeal(username=‘lisi‘)#


#    status , obj = b.queryMoney(username=‘lisi‘)
   #print b.getMoney(username=‘zhangsan‘,number=5.23)
 #   print b.returnMoney(username=‘zhangsan‘,number=0.77)
  #  print b.forwardMoney(username=‘zhangsan‘,number=0.77,destinationnAccount=‘lisi‘)

shop.py

__author__ = zhaobin022

import bank
import json
import copy
from prettytable import PrettyTable

class DatabaseHelper:
    def __init__(self):
        self.database = goods.json
        ‘‘‘
        self.goods = {
            ‘Bike‘:{‘price‘:500,‘count‘:4},
            ‘Python‘:{‘price‘:50,‘count‘:2},
            ‘TV‘:{‘price‘:1500,‘count‘:3},
            }
        ‘‘‘
        self.goods = self.readJson()
     #   self.__writeJson()
    def readJson(self):
       # f = open(self.database)
        with open(self.database) as f:
            self.goods = json.load(f)
            return self.goods


    def writeJson(self):
      #  f = open(self.database,‘w‘)
        with open(self.database,w) as f:
            json.dump(self.goods,f)

class Shop:
    def __init__(self):
        self.dh = DatabaseHelper()
        self.shopCart = {}

    def addCart(self,name,count):
        if self.dh.goods.has_key(name):
            v = copy.deepcopy(self.dh.goods.get(name))
            if v.get(count) >= int(count):
                v[count] = int(count)
                self.shopCart[name]=v
                return True,‘‘‘add cart successfull‘‘‘
            else:
                return False,‘‘‘don‘t have enough goods ‘‘‘


    def delFromCart(self,name,count):
        if self.shopCart.get(name):
            v = self.shopCart.get(name)
            if count <= v[count]:
                v[count] -= count
                self.shopCart[name]=v
                return True , ‘‘‘del Cart successfull‘‘‘
            else:
                return False,‘‘‘cart don‘t have enough good ‘‘‘

    def listCart(self):
        x = PrettyTable(["Name", "Count", "UnitPrice"])
        sum = 0
        for k,v in self.shopCart.items():
            x.add_row([k,v[count], v[price]])
            sum += v[price]*v[count]

        print x
        print Total : %s % sum
    def listGoods(self):
        tempDic = {}
        print "Goods List"
        x = PrettyTable(["Id", "Name", "Count"])
        x.padding_width = 1
        for k,v in enumerate(self.dh.goods.items()):
            x.add_row([k,v[0], v[1][count]])
          #  print k,‘----------‘,v[0],‘---------‘,v[1][‘count‘]
            tempDic[str(k)]=v[0]
        print x
        return tempDic
    def makeDeal(self,username):
        sum = 0
        for k,v in self.shopCart.items():
            sum += v.get(price) * v.get(count)
        b = bank.Bank()
        status,obj = b.flushCard(number=sum)
        if status:
            for k,v in self.shopCart.items():
                self.dh.goods[k][count] -= v[count]
            self.dh.writeJson()
            return status,obj
        else:
            return False,obj

tools.py

__author__ = zhaobin022


import hashlib

def getMd5Password(password):
     m = hashlib.md5()
     m.update(password)
     return m.hexdigest()

 

ATM 练习

标签:

原文地址:http://www.cnblogs.com/zhaobin022/p/5054200.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!