day5 ATM+CreditCard+Shopping
2016-02-29 09:26 dribs 阅读(258) 评论(0) 收藏 举报直接调用了一次信用卡模块然后根据信用卡的额度做金钱的判断
看了alex的写法,感觉自己的瞬间low了不少,、
#!/usr/bin/env python # -*- encoding:utf-8 -*- import json import sys import os base_dir = os.path.dirname(os.path.abspath(__file__)) sys.path.append(base_dir) from clog import card_log #定义的绝对路径,不然在shopping执行时无法找到一下两个文件,涉及到大王讲的不同目录下的模块调用 basedir1 = os.path.dirname(os.path.abspath(__file__)) + "\\user.txt" basedir2 = os.path.dirname(os.path.abspath(__file__)) + "\\lock.txt" #print(basedir1) def card_API(cardnum,shopmoney=0): shopmoney = float(shopmoney) f3 = open(basedir1,'r+') data = json.loads(f3.read()) cardmoney =float(data[cardnum][1]) if shopmoney > cardmoney: print("账户余额不足") sys.exit() else: cardwritemoney = cardmoney - shopmoney cardwritemoney = float(cardwritemoney) data[cardnum][1] = cardwritemoney f3.seek(0) f3.truncate(0) f3.write(json.dumps(data)) f3.flush() f3.close() card_log(cardnum1=cardnum,caozuo="购物",qian=shopmoney) def cardlogin(shop): f = open(basedir1,'r+') f2 = open(basedir2,"r+") lockname = f2.readlines() data = json.loads(f.read()) count = 0 klist = [] locklist = [] for i in lockname: kk = i.strip('\n') locklist.append(kk) while count < 3: InputNum = input("输入卡号(00001):") InputPasswd = input("输入卡密码(123):") if InputNum in locklist: print("卡号已被锁定,请勾搭柜台小妹妹") sys.exit(0) datapasswd = data[InputNum][0] for k,v in data.items(): klist.append(k) if InputNum in klist and InputPasswd == datapasswd: card_API(InputNum,shop) break else: print("passwd error") count +=1 else: print("账户被锁定,请及时勾搭柜台MM") f2.write(InputNum + '\n') f.close() f2.close()
#!/usr/bin/env python # -*- encoding:utf-8 -*- import json def card_chaxun(cardnum): from clog import card_log f1 = open('user.txt','r') data = json.loads(f1.read()) datali = [] c = data[cardnum][1] print("账户总额为:",c) f1.close() card_log(cardnum1=cardnum,caozuo="查询",qian=None)
#!/usr/bin/env python import time import os basedir1 = os.path.dirname(os.path.abspath(__file__)) + "\\cardlog.txt" def card_log(cardnum1,caozuo,qian=None,shijian=time.strftime("%Y-%m-%d %H:%M:%S")): f = open(basedir1,'a') logdata = ("%s|%s|%s|%s"%(cardnum1,caozuo,qian,shijian)) f.write(logdata + "\n") f.flush() f.close()
#!/usr/bin/env python # -*- encoding:utf-8 -*- import json import sys def card_huankuan(cardnum): from clog import card_log f3 = open('user.txt','r+') data = json.loads(f3.read()) hk = input("还款金额:") hk = float(hk) toaljine = float(data[cardnum][1]) + hk data[cardnum][1] = float(toaljine) f3.seek(0) f3.truncate(0) f3.write(json.dumps(data)) # time.sleep(1) f3.flush() f3.close() card_log(cardnum1=cardnum,caozuo="还款",qian=hk)
#!/usr/bin/env python import json import re f = open("cardlog.txt","r") def log_CX(cardnum): data = f.readlines() for i in data: a = re.search("^"+cardnum+".*",i) if a: print(a.group()) f.close()
#!/usr/bin/env python # -*- encoding:utf-8 -*- import json import sys from chaxun import card_chaxun from quxian import card_quxian from zhuanzhang import card_zhuanzhang from huankuan import card_huankuan from logChaXun import log_CX f = open('user.txt','r+') f2 = open("lock.txt","r+") lockname = f2.readlines() data = json.loads(f.read()) count = 0 klist = [] locklist = [] for i in lockname: kk = i.strip('\n') locklist.append(kk) while count < 3: InputNum = input("输入卡号(00001):") InputPasswd = input("输入卡密码(123):") if InputNum in locklist: print("卡号已被锁定,请勾搭柜台小妹妹") sys.exit(0) datapasswd = data[InputNum][0] for k,v in data.items(): klist.append(k) if InputNum in klist and InputPasswd == datapasswd: flag = True while flag: print("======欢迎 %s 登录中国银行ATM系统======="%InputNum) print("输入 1 ----------->查询") print("输入 2 ----------->取现") print("输入 3 ----------->转账") print("输入 4 ----------->还款") print("输入 5 ----------->操作日志查询") print("输入 q ----------->退出") print("=======================================") bb = input("输入您的操作:") if bb == "1": card_chaxun(InputNum) elif bb == "2": card_quxian(InputNum) elif bb == "3": card_zhuanzhang(InputNum) elif bb == "4": card_huankuan(InputNum) elif bb == "5": log_CX(InputNum) elif bb == "q": flag = False else: print("输入错误") break else: print("passwd error") count +=1 else: print("账户被锁定,请及时勾搭柜台MM") f2.write(InputNum + '\n') f.close() f2.close()
#!/usr/bin/env python # -*- encoding:utf-8 -*- import json f = open('user.txt','r+') ff = open("lock.txt","a") fdata = json.loads(f.read()) userlist = [] for k in fdata.keys(): userlist.append(k) def add_user(edu=15000): while True: addname = input("输入添加的卡号(q)uit:") if addname in userlist: print("账户已存在,请重新输入!") elif addname =="q": break else: addpasswd = input("输入密码:") fdata[addname] = [addpasswd,edu] f.seek(0) f.truncate(0) f.write(json.dumps(fdata)) def freeze_user(): print("友情提示你可以冻结",userlist) fname = input("输入冻结的账户卡号:") if fname not in userlist: print("帐号不存在") else: ff.write(fname + '\n') print("以成功冻结",fname) if __name__ == "__main__": while True: print("============================") print("欢迎登录ATM管理系统") print("1-------->增加用户") print("2-------->冻结用户") print("q-------->退出") print("=============================") atm_choice = input("输入您的选择:") if atm_choice == "1": add_user(edu=15000) elif atm_choice == "2": freeze_user() elif atm_choice == "q": break else: print("输入错误请重新输入") f.close() ff.close()
#!/usr/bin/env python # -*- encoding:utf-8 -*- import json def card_quxian(cardnum): from clog import card_log f4 = open('user.txt','r+') data = json.loads(f4.read()) jine1 = input("输入取现金额:") jine1 = float(jine1) jine = float(jine1) edu = float(data[cardnum][1]) jine = float(jine1) + float((jine1*0.05)) if jine > edu/2: print("没有足够的金额,剩余额为",edu) else: money = float(edu) - float(jine) data[cardnum][1] = float(money) f4.seek(0) f4.truncate(0) f4.write(json.dumps(data)) print("已取出现金",jine1,"剩余金额",money,"手续费为",jine1*0.05) f4.close() card_log(cardnum1=cardnum,caozuo="取现",qian=jine1)
#!/usr/bin/env python import json f = open("user.txt",'w') info = { "00001":['123',150000], "00002":['123',150000] } f.write(json.dumps(info)) f.close()
#!/usr/bin/env python # -*- encoding:utf-8 -*- import json def card_zhuanzhang(cardnum): from clog import card_log f5 = open('user.txt','r+') data = json.loads(f5.read()) kahao = input("输入转存到的信用卡卡号(00002):") jine1 = input("输入转存到的信用卡的金额:") jine1 = float(jine1) c = float(data[cardnum][1]) if jine1 > c: print("没有足够的余额可转入,请查询余额后在转") else: cc = float(data[kahao][1]) + jine1 ccc = c - jine1 data[cardnum][1] = ccc data[kahao][1] = cc f5.seek(0) f5.truncate(0) f5.write(json.dumps(data)) print("转账成功,已转入",jine1) f5.close() card_log(cardnum1=cardnum,caozuo="转账",qian=jine1)
#!/usr/bin/env python #-*- coding:utf-8 -*- #author:lihonging #定义用户名密码 name = input("Please Input your name:") passwd = "123" count = 0 #已读写方式打开lock文件 lock = open('lock.txt','r+') lockname = lock.readlines() #循环lock内文件去除回车行,判断输入名字是否在lock文件内 for locknamelines in lockname: locknamelines = locknamelines.strip('\n') if name == locknamelines: print("Account Be Locked!!Please Change User!") quit() lock.close() #三次登录尝试,如果密码符合登录进入欢迎界面,三次尝试失败把用户追加到lock文件内锁定 while count <3: userpasswd = input("Please Input your passwd:") if userpasswd == passwd: print("Welcome Login!") break else: print("Login failed,Please again ,Try", 3-count, 'times') count += 1 else: lockinput = open('lock.txt','a') lockinputlist = lockinput.write(name + '\n') print("Name Be Locked,Please Change User") lockinput.close()
#!/usr/bin/env python import time import os def shop_log(shopl,amoney,shijian=time.ctime()): f = open('shop.log','a') logdata = ("%s|%s|%s"%(shopl,amoney,shijian)) f.write(logdata + "\n") f.flush() f.close()
#!/usr/bin/env python #author:lihongxing #功能:在Python3中对购物车的实现,购买商品,结账金额大于帐户余额则提示充值或者减少商品,最后结算 #日期:2016/1/26 import sys import onelogin import os from shoplog import shop_log base_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) sys.path.append(base_dir) from card.cardAPI import cardlogin goods = {'IPhone7':6000,'Mate8':5000,'Thinkpad':3000,'Mac':'8000'} hea = {'商品信息':'价格'} msg = ' Welcome to JD ' msg_we = msg.center(60,'#') #money = 10000 loop = True shoplist = [] buyshoplist = [] buyremovlist = [] shopmoneylist = [] print(msg_we) #print("您账户余额为:%s" %money) for k1,v1 in hea.items(): print(k1,v1) for k,v in goods.items(): print(k,v) shoplist.append(k) print("购物车内的商品为",buyshoplist) print(msg_we) while loop: shoplist1 = input("输入要买的商品(按Q退出)按任意键结账:") if shoplist1 in shoplist: print('您已成功购买商品',shoplist1) buyshoplist.append(shoplist1) print("购物车内商品为",buyshoplist) shopmoney = int(goods[shoplist1]) shopmoneylist.append(shopmoney) allmoney = sum(shopmoneylist) print("价格1总额为:",allmoney) elif shoplist1.capitalize() == 'Q': sys.exit() else: choise = input("是否结账退出(Y)es 结账退出,(N)o返回继续购买,R移除商品") if choise.capitalize() =='Y': cardlogin(shop = allmoney) print("已成功买入",buyshoplist) shop_log(buyshoplist,allmoney) # if allmoney > money: # c = input("余额不足,充值(Y)es,减少商品(R)emove") # if c.capitalize() == 'Y': # m = int(input("输入充值金额:")) # money += m # print(money) if choise.capitalize() == "R": allmoney = 0 shopmoney = 0 shopmoneylist = [] print('购物车2内的商品为:' , buyshoplist) removeshop = input("请输入要减掉的商品名称:") buyshoplist.remove(removeshop) print(buyshoplist) for i in buyshoplist: shopmoney = int(goods[i]) shopmoneylist.append(shopmoney) allmoney = sum(shopmoneylist) print("价格2总额为:",allmoney) cardlogin(shop = allmoney) shop_log(buyshoplist,allmoney) else: print("您已消费",allmoney)
readme
环境windows Py3 注:只可在Windows环境运行,linux不支持 一):ATM系统 测试用户:00001 密码123 00002 密码123 实现功能: ①:ATM系统的登录、查询、转账、还款、取现、查询操作日志等操作。 mainpro.py为ATM系统主程序,运行此程序即可 user_info.py为生成并初始化用户信息使用生成的用户信息存储到user.txt内 ATM mainpro主程序调用4个模块,分别为chaxun.py/huankuan.py/quxian.py/zhuanzhang.py/logChaXun.模块功能分别为查询、还款、取现、转账、日志查询 其中取现另收手续费 ②:ATM mainpro主程序调用4个模块又调用clog模块,clog模块为操作日志模块,当用户执行查询、还款、取现、转账、消费购物等操作时,会记录用户的行为,并保存到cardlog.txt内 ③:manageratm为ATM管理后台程序,功能为增加用户,冻结用户。冻结的用户放入到lock.txt内 ④:cardAPI为供购物系统调用的接口 二):购物系统 测试用户:haha 密码123 onelogin.py为购物系统验证 shopping.py为主程序,结账时调用card内的cardAPI模块,使用信用卡结账
浙公网安备 33010602011771号