ATM-core-src
from interface import bank, shopping, user
from lib import common user_data = {
'name': None
} def logout():
if user_data['name']:
print('退出成功')
user_data['name'] = None
else:
print('你从来就没有登陆过') def login():
'''
登录
:return:
'''
print('欢迎来到登陆界面:')
if user_data['name']:
print('你已经登陆过了!')
return
count = 0
while True:
name = input('用户名:')
if name == 'q': break
password = input('密码:')
flag, msg = user.login_interface(name, password)
if flag:
user_data['name'] = name
print(msg)
break
else:
print(msg)
count += 1
if count == 3:
print('失败过多已锁定')
user.locked_interface(name)
break def register():
'''
注册:
:return:
'''
if user_data['name']:
print('你已经登陆过了!')
return
print('注册:')
while True:
name = input('用户名:')
if name == 'q': break
password = input('密码:')
conf_password = input('密码:')
if password == conf_password:
flag, msg = user.register_interface(name, password)
if flag:
print(msg)
break
else:
print(msg) else:
print('两次不一致') @common.login_auth
def check_balance():
'''
查询
:return:
'''
print('查询:')
balance = bank.check_balance(user_data['name'])
print(balance) @common.login_auth
def transfer():
'''
转账
:return:
'''
print('转账:')
while True:
toname = input('请输入需要转给的账户名:')
if toname == 'q': break
balance = input('转账金额:')
if balance == 'q': break
if balance.isdigit():
balance = int(balance)
falg, msg = bank.transfer_interface(user_data['name'], toname, balance)
if falg:
print(msg)
break
else:
print(msg)
else:
print('输入非法') @common.login_auth
def repay():
'''
还款
:return:
'''
print('还款界面:')
balance = input('请输入还款金额:')
if balance.isdigit():
balance = int(balance)
flag, msg = bank.repay_interface(user_data['name'], balance)
print(msg)
else:
print('必须数字') @common.login_auth
def withdraw():
'''
还款界面
:return:
'''
print('取款界面:')
balance = input('请输入取款金额:')
if balance.isdigit():
balance = int(balance)
falg, msg = bank.withdraw_interface(user_data['name'], balance)
if falg:
print(msg)
else:
print(msg) @common.login_auth
def check_record():
'''
查看流水
:return:
'''
print('查看流水:')
flow = bank.check_record_interface(user_data['name'])
for i in flow:
print(i)
# print(bank.check_record_interface(user_data['name'])) @common.login_auth
def shop():
'''
购物
:return:
'''
print('购物:')
goods = [
['coffee', 10],
['chicken', 20],
['iphone', 8000],
['macPro', 15000],
['car', 100000],
]
shoppingcart = {}
cost = 0
user_balance = bank.check_balance(user_data['name'])
while True:
for i, j in enumerate(goods):
print('%s:%s' % (i, j))
choice = input('请输入购买的编码:')
if choice.isdigit():
choice = int(choice)
if choice >= len(goods): continue
goods_name = goods[choice][0]
goods_price = goods[choice][1]
if user_balance >= goods_price:
if goods_name in shoppingcart:
shoppingcart[goods_name]['count'] += 1
else:
shoppingcart[goods_name] = {'price': goods_price, 'count': 1}
user_balance -= goods_price
cost += goods_price
else:
print('余额不足')
elif choice == 'q':
if cost == 0: break
print(shoppingcart)
buy = input('确认购买(y/n)')
if buy == 'y':
flg, msg = shopping.shopping_interface(user_data['name'], cost, shoppingcart)
if flg:
print(msg)
break
else:
print(msg)
else:
print('购物车为空')
break
else:
print('输入非法') def check_shopping_cart():
'''
查看购物车
:return:
'''
print(shopping.check_shoppingcart(user_data['name'])) func_dic = {
'1': login,
'2': register,
'3': check_balance,
'4': transfer,
'5': repay,
'6': withdraw,
'7': check_record,
'8': shop,
'9': check_shopping_cart,
'10': logout
} def run():
while True:
print('''
1、登陆
2、注册
3、查询余额
4、转账
5、还款
6、取款
7、查看流水
8、购物
9、查看购物车
10、退出登陆
11、退出系统
''')
choice = input('请输入需要选择的操作编码:')
if choice == '11': break
if choice in func_dic:
func_dic[choice]()
ATM-core-src的更多相关文章
- First Project -用函数写的ATM+购物商城程序
作业需求:模拟实现一个ATM + 购物商城程序 额度15000或自定义 实现购物商城,买东西加入 购物车,调用信用卡接口结账 可以提现,手续费5% 每月22号出账单,每月10号为还款日,过期未还,按欠 ...
- ATM机小程序
用规范化项目录的格式模拟一个ATM系统. 项目功能: 登录(可支持多个账户(非同时)登录) 注册 查看余额 存钱 转账(给其他用户转钱) 查看账户流水 退出 提供的思路:ATM直译就是取款机,但是咱们 ...
- 软件开发目录规范 ATM框架构建
软件开发的目录规范 建立文件夹 为了提高程序的可读性与可维护性,我们应该为软件设计良好的目录结构,这与规范的编码风格同等重要.软件的目录规范并无硬性标准,只要清晰可读即可 以ATM购物车项目为例: 首 ...
- 18、Python模块基础
一.模块 模块可以看成是一堆函数的集合体. 一个py文件内部就可以放一堆函数,因此一个py文件就可以看成一个模块. 如果这个py文件的文件名为module.py,模块名则是module. 1.模块的四 ...
- python以ATM+购物车剖析一个项目的由来及流程
ATM+购物车 一个项目是如何从无到有的 ''' 项目的由来,几个阶段 0.采集项目需求 1.需求分析 2.程序的架构设计 3.分任务开发 4.测试 5.上线运行 ''' 需求分析: # 对项目需求进 ...
- Python实战之ATM+购物车
ATM + 购物车 需求分析 ''' - 额度 15000或自定义 - 实现购物商城,买东西加入 购物车,调用信用卡接口结账 - 可以提现,手续费5% - 支持多账户登录 - 支持账户间转账 - 记录 ...
- 阶段性项目 ATM+购物车项目
ATM + 购物车https://www.cnblogs.com/kermitjam/articles/10687180.html readme 内容前戏: 一个项目是如何从无到有的. 一 需求分析 ...
- ATM购物车+三层结构项目设计
ATM购物车项目 模拟实现一个ATM + 购物商城程序. 该程序实现普通用户的登录注册.提现充值还款等功能,并且支持到网上商城购物的功能. 账户余额足够支付商品价格时,扣款支付:余额不足时,无法支付, ...
- day26 作业(ATM第二版)
目录 start.py conf.settings.py core.src.py db.db_handler.py interface.bank_interface.py interface.shop ...
- day25 作业(ATM第一版)
目录 conf.setting.py core.src.py db.db_handler.py interface.admin_interface interface.bank_interface i ...
随机推荐
- jquery——下载、使用
jQuery是目前使用最广泛的javascript函数库. 怎样安装? 这是下载地址:https://code.jquery.com/ minified是压缩版的 新建一个网页打开上面这个网址,ctr ...
- OpenStack Weekly Meeting 2015.07.17
Reviews(Company) 1 Mirantis 11562 HP 1653 Huawei 15 Reviews(Persons) 1 Ekaterina Chernova ✻ 2852 Kir ...
- 1.- Netty设计理念-异步和事件驱动
0. 关键点 a). 非阻塞网络调用,异步方法立即返回 b). 选择器(Selector)使得单一线程就可监控很多连接上的事件. <dependency> <groupId>i ...
- cucumber的疑问解答
在cucumber的自动化测试框架下面,在一个steps文件中定义的@page对象,可以在其他的不同的steps文件中调用,在整个的场景生命周期中都是有效的 原因:cucumber开始执行时,一次性把 ...
- JAVA基础系列(一) 概述与相关概念
万事开头难,来这个平台上已经有一段时间了,看到了很多高质量的文章,也很喜欢这种简约的风格.一直也想把自己的零散的知识体系组织起来,但苦于自己拙劣的文笔和不成流派的风格让大家笑话,直到现在才开始.可是从 ...
- 面向对象(OOP)二
一.“魔术”函数 - 自动调用 魔术方法 在面向对象有一些特别的方法,无需特别定义,已自动具备某些功能,例如构造函数__construt,这些方法统称魔术方法,在日后的编程中,可以使用这些方法的特性设 ...
- C#高性能Socket服务器IOCP实现
引言我一直在探寻一个高性能的Socket客户端代码.以前,我使用Socket类写了一些基于传统异步编程模型的代码(BeginSend.BeginReceive,等等)也看过很多博客的知识,在linux ...
- redis在Windows下以后台服务一键搭建集群(多机器)
redis在Windows下以后台服务一键搭建集群(多机器) 一.概述 此教程介绍如何在windows系统中多台机器之间布置redis集群,同时要以后台服务的模式运行.布置以脚本的形式,一键完成.多台 ...
- Webstrom使用手册小记
全手打原创,转载请标明出处:https://www.cnblogs.com/dreamsqin/p/10883350.html,多谢~=.= 1.从git上拉取项目 或者 2.切换分支(webstro ...
- ASP.NET MVC网站学习问题积累(一)
最近工作压力比较大,不得已开始自学C#.同时网站开发业务开展迫在眉睫,只能先从ASP.NET学起.回想一下,连C#和ASP.NET的关系都没有明白,就被赶鸭子上架了...我觉得这将是我工作以来最具有戏 ...