python模拟购物车购物过程_python实现购物车+ATM机 第五天

模拟实现一个ATM + 购物商城程序

1.额度 15000或自定义

2.实现购物商城,买东西加入 购物车,调用信用卡接口结账

3.可以提现,手续费5%

4.每月22号出账单,每月10号为还款日,过期未还,按欠款总额 万分之5 每日计息

5.支持多账户登录

6.支持账户间转账

7.记录每月日常消费流水

8.提供还款接口

9.ATM记录操作日志

10.提供管理接口,包括添加账户、用户额度,冻结账户等。。。

11.用户认证用装饰器

功能:4,8,10 没有实现

参数解释:

购物车账户:admin 密码:123

信用卡转账账户:xinyongka 密码:456

流程图:

目录结构图:

代码:

start.py 模块def start_shop():

login()

while True:

print ('''

#################################################################

#           1.购物

#           2.余额查询

#           3.转账

#           4.还款

#           5.操作记录查询

#           6.账户流水

#           7.登录后台系统

#################################################################

''')

number=input('请输入您要执行的操作:').strip()

if number == "1":

buy_shop()

elif number == "2":

time.sleep(1)

money_query()

elif number == "3":

time.sleep(1)

Transfer()

elif number == "4":

time.sleep(1)

huankuan()

elif number == "5":

time.sleep(1)

log_sys()

elif number == "6":

time.sleep(1)

monye_logs()

elif number == "7":

Backstage()

else:

print ('您输入有误,请重新输入:')

time.sleep(3)

start_shop()

shop.py 模块

import time

import datetime

import os,sys

buy_shop_list=[]

shop_list= [{"name": "上衣", "price": 300},

{"name": "下衣", "price": 350},

{"name": "鞋子", "price": 270},

{"name": "帽子", "price": 150},

]

def buy_shop():

print('您的默认信用卡额度为:15000元')

wages = 15000

wages = int(wages)

print('您的账户额度为%s ' % wages)

# while True:

for index, item in enumerate(shop_list): #给商品列表增加序号

print ('以下是您可购买的商品列表,请输入商品号购买')

print (index,item)            #打印可以购买的商品列表

while True:                     # 输入商品ID进行购买

shop_number=input('请输入商品号: ').strip()     #商品购买

shop_number=int(shop_number)

buy_shop_list.append(shop_list[shop_number])     #将购买的商品添加到购物车

buy=input('输入Y/y继续购买,输入N/n进行结算: ')   #输入y/n是否继续购买

if buy == 'Y' or buy == 'y':

pass

else:

money=0

for i in buy_shop_list:

money_total=(i["price"])

money += money_total

# 当商品购买商品价格总额大于账户总额,进行账户充值或者直接退出

if money > wages:

print ('您的消费上商品清单%r \n您总共消费 %s 元 ,账户余额%s 元 ,余额不足请此卡转账或者充值' %(i,money,wages))

money_less=input('请输入Y/y 登录新账户对此购物车账号进行转账,输入N/n 不买了: ')

if money_less == Y or money_less == y:

log_other()

else:

if money_less == N or money_less == n:

sys.exit()

else:       # 当商品大于价格总额小于账户总额购买结束

print ('您购买了%s 物品,\n消费了%s 元' %(buy_shop_list,money))

# 存储账户的消费记录文件record.txt

with open(r'D:\python_version\python_dir\ATM\log\record.txt','a',encoding='utf-8') as f:       # 记录当天的消费流水

time_t=(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))

f.write(time_t)

f.write('    您消费人民币 %s 元 \n' %money )

with open(r'D:\python_version\python_dir\ATM\log\balance1.txt', 'w', encoding='utf-8') as k:

# 存储账户余额的文件balance.txt

xiaofei=(wages - money)

money=str(money)

k.write('{\'total_money\':%s,\'shengyu\':%s}'%(wages,xiaofei))

sys.exit()

转账模块:zhuangzhan.py

from ATM.core.shop import buy_shop

import time,sys,os

def Transfer():

while True:

other_id=input('请输入你其他银行账户信息:')    # 其他银行账户信息

other_pwd=input('请输入你其他银行账户密码:')   #其他银行账户密码

if other_id == 'xinyongka'  and  other_pwd == '456':

print ('您已经成功登录,请输入你要像此admin 账户的转账金额:')

jine=input('转账额:').strip()           #登录后输入项admin账户的转账金额

jine=int(jine)               # 转化为×××(int)

print ('您需要转账的金额为 %s 元: ,正在转账中....' % jine)

time.sleep(3)

with open(r'D:\python_version\python_dir\ATM\log\balance.txt', 'r+', encoding='utf-8') as file:

file_name = eval(file.readline())

syje=(file_name['shengyu'])

syje=int(syje)

new_money=jine+syje             #将转账金额与剩余金额相加

print ('您想admin账户转账 %s 元' % jine)

file.write('\n')

file.write('{\'total_money\':%s,\'shengyu\':%s}\n'%(file_name['total_money'],new_money)

sys.exit()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/260047.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C#使用Cookie方法

代码Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--> //写入protected void Button1_Click(object sender, EventArgs e){HttpCookie cookienew HttpCookie("MyCook");//初使化并设置Cookie的名称DateTime…

智能手机计步算法c语言实现,【转载】智能手机计步器算法的实现

现在的智能手机嵌入了一些微小的传感器,比如重力传感器、光传感器、声音传感器等。如何有效地利用这些传感器来开发一些应用,是一个值得深入研究的课题。比如开发医疗健康的应用、运动量监视器等。本文采用htc Touch Pro智能手机的重力传感器来开发一款监…

vue点击按钮怎么跳转图片_vue-router组件里面点击一个按钮跳转到一个新的组件该怎么实现...

展开全部直接修改地址栏中的路由地址即可:{{msg}}var testLogin Vue.component("login",{template:这是我的登录页面})var testRegister Vue.component("register",{template:这是我的注册页面})//配置路由词典//对象数组const myRoutes [//…

Arduino教程资料汇总(8月22日悄悄跟新了一下)

http://www.geek-workshop.com/thread-985-1-1.html 本帖最后由 迷你强 于 2013-8-31 12:36 编辑 F-101 arduino基础套件使用资料 Arduino入门教程--课前准备--Arduino驱动安装及1.0 IDE菜单介绍Arduino入门教程--第一课--板载Led闪烁实验Arduino入门教程--第二课--第一次面包板…

HTML5/CSS3系列教程:HTML5 区域(Sectioning)的重要性

日期:2013-2-4 来源:GBin1.com 不管你以前在web页面布局中如何称呼它们 - “区域”还是“块”,我们一直都在布局中将页面分成可视的不同区域。但真正的问题在于我们并没有使用任何正确的工具来实现。一般情况下我们使用典型的网格来划分页头…

CoreAnimation —— CAReplicatorLayer(拷贝图层)

2019独角兽企业重金招聘Python工程师标准>>> CAReplicatorLayer是一个layer容器,会对其中的subLayer进行一些差异处理(它的子layer都可以拷贝) 属性: //拷贝的次数 property NSInteger instanceCount; //是否开启景深效…

c语言用数组写密码程序,想程序高手求助--用C语言来编辑一个输入密码的程序...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼/*--------实现密码的隐式输入-----------------*/inputpw(char *password,int len) /*len为密码长度*/{int i0; /*密码数组索引值,同时也表示记录已显示*的数目*/char ch;fflush(stdin); /*清洗流,以防妨碍密码正确输入…

ps流 转发_RTP协议全解析(H264码流和PS流)(转)

[LeetCode] Arranging Coins 排列硬币You have a total of n coins that you want to form in a staircase shape, where every k-th row must ha ...使用Jenkins可持续集成maven项目首先下载最新的Jenkins的war包,放在tomcat的webapps的目录下,然后运行,例…

android 接收短信代码,短信接收功能实现的代码

其中包含了widget必备的要素以及对应文件分别为:appwidgetprovider--------------------------SmsWidget.javawidget的config--------------------------SmsWidgetConfig.javawidget引发的app-------------------------SmsAider.javaappwidgetproviderinfo---------…

使用MeanJS Yeoman Generator

1、首先全局安装该生成器 sudo npm install -g generator-meanjs 2、为项目创建一个路径 mkdir xmen && cd xmen 3、创建app yo meanjs 根据提示,输入应用名,描述,关键词,是否创建crud例子。。 4、运行app sudo NODE_ENVd…

Entity Framework With Oracle

虽然EF6都快要出来了,但是对于Oracle数据库,仍然只能用DB first和Model First来编程,不能用Code First真是一个很大的遗憾啊。 好了,废话少说,我们来看看EF中是如何用DB first和Model First来对Oracle编程的。 首先我们…

(三)Maven仓库介绍与本地仓库配置

1.Maven本地仓库/远程仓库的基本介绍 示意图: 本地仓库是指存在于我们本机的仓库,在我们加入依赖时候,首先会跑到我们的本地仓库去找,如果找不到则会跑到远程仓库中去找。对于依赖的包大家可以从这个地址进行搜索:http…

大数据时代下的迁移学习_继深度学习后,下一个热点技术是迁移学习

最早提出大数据时代到来的是知名咨询公司麦肯锡,麦肯锡称:“数据,已经渗透到当今每一个行业和业务职能领域,成为重要的生产因素。人们对于海量数据的挖掘和运用,预示着新一波生产率增长和消费者盈余浪潮的到来。”其实…

手机广告投放(phone advertising)唯一标识

手机标示,为了识别用户,方面advertising。 使用设备id,相当于暴露用户隐私。慢慢已不允许使用。、 (长时间跟踪用户无异于暴露用户隐私,虽然大量数据适合兴趣建模,广告个性化推荐。但复杂多样会降低总体的准…

android分辨率比例成像,像素不是唯一 决定成像效果你必知的真相

像素并不是唯一如今不少人在选购一部手机时,非常重视手机摄像头的像素大小,因为一部高像素的手机可以为不少喜爱拍照的人省去买单反的费用,而且携带起来也非常方便。不过,手机并不能与专业的单反相机相比,成像效果并不…

vim——打开多个文件、同时显示多个文件、在文件之间切换

打开多个文件: 1.vim还没有启动的时候: 在终端里输入 vim file1 file2 ... filen便可以打开所有想要打开的文件 2.vim已经启动 输入 :open file 可以再打开一个文件,并且此时vim里会显示出file文件的内容。 同时显示多个文件: :s…

Android底部导航栏实现(一)之BottomNavigationBar

BottomNavigationBar这个控件的使用之前已经写过,这里不再赘述,详情请参考BottomNavigationBar的使用。 下面直接上代码: 初始化及相关设置: mBottomNavigationBar (BottomNavigationBar) view.findViewById(R.id.bottom_navigat…

jq 组装数组_Jquery 数组操作

1、数组的创建var arrayObj new Array(); //创建一个数组var arrayObj new Array([size]); //创建一个数组并指定长度,注意不是上限,是长度var arrayObj new Array([element0[, element1[, ...[, elementN]]]]); 创建一个数组并赋值要说明的是&…

android 官方说明文档,Android官方文档翻译-Accessibility

标签元素向用户提供解释每个可互动元素的意义和目的有用且形象的标签是非常重要的。这些标签允许屏幕阅读者(比如 TalkBack )正确向用户解释每个控制器的功能。你可以使用一下两个方法提供元素的标签:当展示在 Activity 的整个生命周期中都不会改变样式的静态元素时…

USACO 2.4.1 The Tamworth Two

牛和农夫按照固定的走法在10x10的地图中走,每分钟走一步,求经过几分钟相遇。永远不能相遇输出0. 纯模拟的题。 判断永远不能相遇的方法是如果遇到了一个先前的状态,那么肯定存在循环,必定不能相遇。 程序中把状态表示为牛和农夫的…