信用卡atm python_python---信用卡ATM

#__author__:小辉#DATE:2018/7/4

importjson,os,time

BASE_DIR= os.path.dirname(os.path.dirname(os.path.abspath(__file__)))'''数据库文件相对路径'''

__db_product = BASE_DIR + r"\db\product_list"

__db_shoping_car = BASE_DIR + r"\db\shopping_car"

__db_users_dict = BASE_DIR + r"\db\users_dict"

__db_creditcard_dict = BASE_DIR + r"\db\creditcard_dict"

__db_shopping_record = BASE_DIR + r"\db\shopping_record"

__db_creditcard_record = BASE_DIR + r"\db\creditcard_record"

'''购物商城'''

defShopping_mall():

shopping_list,pro_list=[],[]

with open(__db_product, "r", encoding="utf-8") as f_product:for item inf_product:

pro_list.append(item.strip("\n").split())defpro_inf():print("编号\t商品\t\t价格")for index, item inenumerate(pro_list):print("%s\t\t%s\t\t%s" % (index, item[0], item[1]))whileTrue:print(("\33[32;0m目前商城在售的商品信息\33[0m").center(40, "-"))

pro_inf()

choice_id= input("\n\33[34;0m选择要购买的商品编号 【购买 ID】/【返回 b】\33[0m:")ifchoice_id.isdigit():

choice_id=int(choice_id)if choice_id < len(pro_list) and choice_id >=0:

pro_item=pro_list[choice_id]print("\33[31;0m商品%s加入购物车 价格%s\33[0m"%(pro_item[0],pro_item[1]))

shopping_list.append(pro_item)#商品在shopping__list当中

else:print("\33[31;0m错误:没有相应的编号 请重新输入:\33[0m\n")elif choice_id == "b":

with open(__db_shoping_car, "r+") as f_shopping_car:

list=json.loads(f_shopping_car.read())

list.extend(shopping_list)

f_shopping_car.seek(0)

f_shopping_car.truncate(0)

list=json.dumps(list)

f_shopping_car.write(list)break

else:print("\33[31;0m错误:没有相应的编号 请重新输入:\33[0m\n")'''清空购物车'''

defEmpty_shopping_car():

with open(__db_shoping_car, "w") as f_shopping_car:

list=json.dumps([])

f_shopping_car.write(list)'''购物车'''

defShopping_car():whileTrue:

with open(__db_shoping_car, "r+") as f_shopping_car:

list=json.loads(f_shopping_car.read())

sum=0print("\33[32;0m购物车信息清单\33[0m".center(40,"-"))for index,item inenumerate(list):print(index,item[0],item[1])

sum+=int(item[1])print("\33[31;1m商品总额共计: %s\33[0m"%(sum))

if_buy= input("\n\33[34;0m选择要进行的操作 返回【b】/清空【f】\33[0m:")if if_buy == "b":break

if if_buy == "f":

Empty_shopping_car()'''购物记录'''

defShoppingcar_record(current_user,value):

with open(__db_shopping_record, "r+") as f_shoppingcar_record:

record_dict=json.loads(f_shoppingcar_record.read())

month= time.strftime('%Y-%m-%d', time.localtime())

times= time.strftime("%H:%M:%S")if str(current_user) not inrecord_dict.keys():

record_dict[current_user]={month:{times:value}}else:if month not inrecord_dict[current_user].keys():

record_dict[current_user][month]={times: value}else:

record_dict[current_user][month][times]=value

dict=json.dumps(record_dict)

f_shoppingcar_record.seek(0)

f_shoppingcar_record.truncate(0)

f_shoppingcar_record.write(dict)'''查看购物记录'''

defCatcar_record(current_user):whileTrue:print("\33[32;0m用户 %s 购物记录\33[0m".center(40, "-")%(current_user))

with open(__db_shopping_record, "r+") as f_shoppingcar_record:

record_dict=json.loads(f_shoppingcar_record.read())if current_user not inrecord_dict.keys():print("\33[31;0m用户 %s 还没有进行过消费\33[0m\n" %(current_user))else:

data= sorted(record_dict[current_user])#排序

for d indata:

times=sorted(record_dict[current_user][d])for t intimes:print("\33[31;0m【时间】 %s %s\33[0m"%(d, t))

items=record_dict[current_user][d][t]print("\33[31;0m【商品】 【价格】\33[0m")for v initems:print("\33[31;0m %s\t\t%s\33[0m"%(v[0],v[1]))

if_back= input("\n\33[34;0m是否返回 返回【b】\33[0m:")if if_back == "b":break

#信用卡记录

defCreditcard_record(creditcard,value):

with open(__db_creditcard_record, "r+") as f_creditcard_record:

record_dict=json.loads(f_creditcard_record.read())

month= time.strftime('%Y-%m-%d', time.localtime())

times= time.strftime("%H:%M:%S")if str(creditcard) not inrecord_dict.keys():

record_dict[creditcard]={month:{times:value}}else:if month not inrecord_dict[creditcard].keys():

record_dict[creditcard][month]={times: value}else:

record_dict[creditcard][month][times]=value

dict=json.dumps(record_dict)

f_creditcard_record.seek(0)

f_creditcard_record.truncate(0)

f_creditcard_record.write(dict)'''信用卡密码认证'''

defAuth_creditcard(creditcard):

with open(__db_creditcard_dict, "r+") as f_creditcard_dict:

creditcard_dict=json.loads(f_creditcard_dict.read())

passwd= input("\33[34;0m当前信用卡【%s】 请输入支付密码:\33[0m:"%(creditcard))if passwd == creditcard_dict[creditcard]["password"]:returnTrueelse:print("\33[31;0m密码输入错误,支付失败\33[0m")'''购物结算'''

defPay_shopping(current_user):whileTrue:

sum=0print("\33[32;0m购物结算\33[0m".center(40, "-"))

with open(__db_shoping_car, "r+") as f_shopping_car:

list=json.loads(f_shopping_car.read())for item inlist:

sum+= int(item[1])

if_pay= input("\n\n\33[34;0m当前商品总额:%s 是否进行支付 确定【y】/返回【b】\33[0m:"%(sum))if if_pay == "y":

with open(__db_users_dict, "r+") as f_users_dict:

users_dict=json.loads(f_users_dict.read())

creditcard=users_dict[current_user]["creditcard"]if creditcard ==0:print("\33[31;0m账号 %s未绑定信用卡,请到个人中心里修改信用卡绑定\33[0m\n"%(current_user))else:

with open(__db_creditcard_dict, "r+") as f_creditcard_dict:

creditcard_dict=json.loads(f_creditcard_dict.read())

limit= creditcard_dict[creditcard]["limit"]

limit_new= limit -sumif limit_new >=0:

res= Auth_creditcard(creditcard) #信用卡认证

if res == True:#认证成功

creditcard_dict[creditcard]["limit"]=limit_new

dict=json.dumps(creditcard_dict)

f_creditcard_dict.seek(0)

f_creditcard_dict.truncate(0)

f_creditcard_dict.write(dict)

value= "购物支付 %s"%(sum)print("\33[31;om支付成功,当前余额 %s元\33[0m\n"%(limit_new))

Shoppingcar_record(current_user,list)

Creditcard_record(creditcard, value)

Empty_shopping_car()else:print("\33[31;0m当前信用卡额度 %s元 不足以支付购物款 可绑定其他信用卡支付\33[0m\n"%(limit))if if_pay == "b":break

'''修改信用卡绑定'''

defLink_creditcard(current_user):whileTrue:print("\33[32;0m修改信用卡绑定\33[0m".center(40, "-"))

with open(__db_users_dict, "r+") as f_users_dict:

users_dict=json.loads(f_users_dict.read())

creditcard= users_dict[current_user]["creditcard"]if creditcard ==0 :print("当前账号: \t%s"%(current_user))print("信用卡绑定:\33[31;0m未绑定\33[0m\n")else:print("当前账号: \t%s" %(current_user))print("绑定的信用卡: %s\n"%(creditcard))

if_updata= input("\33[34;0m是否要修改信用卡绑定 确定【y】/返回【b】\33[0m:")if if_updata == "y":

creditcard_new= input("\33[34;0m输入新的信用卡卡号(6位数字)\33[0m:")if creditcard_new.isdigit() and len(creditcard_new) ==6:

with open(__db_creditcard_dict, "r+") as f_creditcard_dict:

creditcard_dict=json.loads(f_creditcard_dict.read())if creditcard_new increditcard_dict.keys():

users_dict[current_user]["creditcard"]=creditcard_new

dict=json.dumps(users_dict)

f_users_dict.seek(0)

f_users_dict.truncate(0)

f_users_dict.write(dict)print("\33[31;1m信用卡绑定成功\33[0m\n")else:print("\33[31;0m输入信用卡卡号不存在(未发行)\33[0m\n")else:print("\33[31;0m输入信用卡格式错误\33[0m\n")if if_updata == "b":break

'''修改登录密码'''

defUpdata_password(current_user):whileTrue:print("\33[32;0m修改登录密码\33[0m".center(40, "-"))print("当前账号:\t%s\n当前密码:\t**\n"%(current_user))

if_updata= input("\33[34;0m是否要修改 % s登录密码 确定【y】/返回【b】\33[0m:"%(current_user))if if_updata == "y":

with open(__db_users_dict, "r+") as f_users_dict:

users_dict=json.loads(f_users_dict.read())

password= users_dict[current_user]["password"]

old_pwd= input("\33[34;0m输入原来的密码\33[0m:")if old_pwd ==password:

new_pwd= input("\33[34;0m输入新的密码\33[0m:")

agin_pwd= input("\33[34;0m再输入新的密码\33[0m:")if new_pwd ==agin_pwd:

users_dict[current_user]["password"]=new_pwd

dict=json.dumps(users_dict)

f_users_dict.seek(0)

f_users_dict.truncate(0)

f_users_dict.write(dict)print("\33[31;1m密码修改成功\33[0m\n")else:print("\33[31;0m两次密码不一致\33[0m\n")else:print("\33[31;0m密码不正确\33[0m\n")if if_updata == "b":break

'''修改收货地址'''

defUpdata_address(current_user):whileTrue:print("\33[32;0m修改个人资料\33[0m".center(40, "-"))

with open(__db_users_dict, "r+") as f_users_dict:

users_dict=json.loads(f_users_dict.read())

address= users_dict[current_user]["address"]print("当前账号:\t%s\n当前收货地址:\t%s\n" %(current_user,address))

if_updata= input("\33[34;0m是否要修改 % s收货地址 确定【y】/返回【b】\33[0m:" %(current_user))if if_updata == "y":

new_address= input("\33[34;0m输入新的收货地址\33[0m:")

users_dict[current_user]["address"]=new_address

dict=json.dumps(users_dict)

f_users_dict.seek(0)

f_users_dict.truncate(0)

f_users_dict.write(dict)print("\33[31;1m收货地址修改成功\33[0m\n")if if_updata == "b":break

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值