Python练习程序(三)函数练习--ATM模拟,,功能要求:额度150


功能要求:

额度15000

可以提现,手续费5%

记录消费流水

支持每月账单查询

提供还款接口

调用的相关模块:

importtime#time模块,提供各种操作时间的函数time.strftime("%Y-%m-%d%X",time.localtime())‘2015-12-1523:35:26‘
importgetpass#getpass模块->命令行下输入密码的方法pwd=getpass.getpass(‘password:‘)printpwd
importpickle#pickle模块,序列化Python对象#保存数据到Pickle文件>>>dic={}>>>importpickle>>>withopen(‘dic.pickle‘,‘wb‘)asf:...pickle.dump(dic,f)...#从Pickle文件读取数据>>>importpickle>>>withopen(‘dic.pickle‘,‘rb‘)asf:...dic=pickle.load(f)...

1、用户数据通过字典序列化存入account.pickle

cataccount.py#!/usr/bin/envpython#coding=utf-8importpickleaccount={‘1001‘:{‘name‘:‘fgf‘,‘pw‘:123,‘money‘:15000,‘balance‘:15000},‘1002‘:{‘name‘:‘user‘,‘pw‘:123,‘money‘:15000,‘balance‘:15000}}f=file(‘account.pickle‘,‘wb‘)pickle.dump(account,f)f.close()withopen(‘account.pickle‘,‘rb‘)asf:dic=pickle.load(f)f.close()printdic

2、Python程序

#!/usr/bin/envpython#coding=utf-8importsys,pickle,getpass,time#日志函数deflog(user,describe,fee,balance,**userinfo):time1=time.strftime("%Y-%m-%d%X",time.localtime())f=file(‘account.log‘,‘a‘)f.write("%s%s%s¥%s¥%s\n"%(time1,user,describe,fee,balance))f.close()f1=file(‘account.pickle‘,‘wb‘)pickle.dump(userinfo,f1)f1.close()#提现函数defwithdraw(user,**userinfo):fee=int(raw_input("请输入提现金额:"))iffee%100==0andint(fee*1.05)<=userinfo[user][‘balance‘]:charge=fee*0.05balance=userinfo[user][‘balance‘]-fee-chargeuserinfo[user][‘balance‘]=balancelog(user,"取现(手续费%d)"%charge,fee,balance,**userinfo)print"你成功取现%d,收取手续费%s,剩余额度%s"%(fee,charge,balance)else:print"输入金额有误。"#还款函数defrepay(user,**usrinfo):fee=int(raw_input("请输入还款金额:"))userinfo[user][‘balance‘]+=feebalance=userinfo[user][‘balance‘]log(user,"信用卡还款",-fee,balance,**userinfo)print"你成功还款%d,当前可用额度%s"%(fee,balance)#账单查询defbills(user):f=file(‘account.log‘,‘r‘)time=raw_input("请输入查询的时间(格式:yyyy-mm):")match_yes=0#匹配标示forlineinf.readlines():ifuserinlineandtimeinline:printline,match_yes=1ifmatch_yes==0:print"没有查询月份账单"withopen(‘account.pickle‘,‘rb‘)asf:userinfo=pickle.load(f)f.close()whileTrue:user=raw_input("\33[1;32;40m请输入用户名:\33[0m")i=1whileuserinfo.has_key(user):passwd=int(getpass.getpass("\33[1;32;40m请输入密码:\33[0m"))whilepasswd==userinfo[user][‘pw‘]:i=1print"欢迎进入系统,请选择操作:"choice=int(raw_input("提现1\t还款2\t账单查询3\t额度查询4\t退出0\n"))ifchoice==1:withdraw(user,**userinfo)elifchoice==2:repay(user,**userinfo)elifchoice==3:bills(user)elifchoice==4:print"总额度:",userinfo[user][‘money‘],"当前额度",userinfo[user][‘balance‘]elifchoice==0:sys.exit()else:i=i+1print"密码错误!"ifi==4:breakelse:print"没有这个账户。"


本文出自 “凌风” 博客,请务必保留此出处http://fgf01.blog.51cto.com/3907069/1726922

Python练习程序(三)函数练习--ATM模拟

评论关闭