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 ...
随机推荐
- JD孔_20160912
1.买的 “航嘉(Huntkey)大白803 8位3米 总控开关 防过载保护 插座/排插/拖” http://item.jd.com/1786149.html#product-detail 2.
- python3+Appium自动化08-数据配置yaml
yaml简介 yaml是一种简洁的非标记语言.yaml以数据为中心,使用空白,缩进,分行组织数据,从而使得表示更加简洁易读 由于实现简单,解析成本低,yaml特别适合在脚本语言中使用.现有的语言实现: ...
- Storm概念学习系列之事务
不多说,直接上干货! 事务 这里的事务是专门针对Topology提出来的,是为了解决元组在处理失败重新发送后的一系列问题的.简而言之,事务拓扑(transactional topology)就是指St ...
- Java获取系统信息(用户目录,临时目录等)
java.version Java运行时环境版本 java.vendor Java运行时环境供应商 java.vendor.url Java供应商的 URL java.home Java安装目录 ja ...
- 如何在VS中快速导入新的源码以及文件夹
参考链接:http://www.cjjjs.com/paper/xmkf/201641716212844.aspx 在visual studio 2013中尝试发现的问题:原文中“显示所有文件 ”的操 ...
- 链接文字<a>保持原有的字体颜色
<style type="text/css"> #red {color: red;} #blue {color: blue;} #orange {color: oran ...
- Android ImageView的几种对图片的缩放处理 解决imageview放大图片后失真问题解决办法
我的解决办法: 1 首先设置android:layout_width=”wrap_content”和android:layout_height=”wrap_content”,否则你按比例缩放后的图片放 ...
- WPF学习二:TextBlock和Label的区别
TextBlock和Label都是用来显示少量数据的.好多文章对Label存在的描述都是它允许使用"快速获取"."快速获取"就是允许你用Alt加上其它的按键快速 ...
- django Q条件
#q条件from django.db.models import Qq = Q(name__startswith="p") | Q(name__startswith="l ...
- NetTime——c++实现计算机时间与网络时间的更新
<Windows网络与通信程序设计>第二章的一个小例子,网络编程入门. #include "stdafx.h" #include <WinSock2.h> ...