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的更多相关文章

  1. First Project -用函数写的ATM+购物商城程序

    作业需求:模拟实现一个ATM + 购物商城程序 额度15000或自定义 实现购物商城,买东西加入 购物车,调用信用卡接口结账 可以提现,手续费5% 每月22号出账单,每月10号为还款日,过期未还,按欠 ...

  2. ATM机小程序

    用规范化项目录的格式模拟一个ATM系统. 项目功能: 登录(可支持多个账户(非同时)登录) 注册 查看余额 存钱 转账(给其他用户转钱) 查看账户流水 退出 提供的思路:ATM直译就是取款机,但是咱们 ...

  3. 软件开发目录规范 ATM框架构建

    软件开发的目录规范 建立文件夹 为了提高程序的可读性与可维护性,我们应该为软件设计良好的目录结构,这与规范的编码风格同等重要.软件的目录规范并无硬性标准,只要清晰可读即可 以ATM购物车项目为例: 首 ...

  4. 18、Python模块基础

    一.模块 模块可以看成是一堆函数的集合体. 一个py文件内部就可以放一堆函数,因此一个py文件就可以看成一个模块. 如果这个py文件的文件名为module.py,模块名则是module. 1.模块的四 ...

  5. python以ATM+购物车剖析一个项目的由来及流程

    ATM+购物车 一个项目是如何从无到有的 ''' 项目的由来,几个阶段 0.采集项目需求 1.需求分析 2.程序的架构设计 3.分任务开发 4.测试 5.上线运行 ''' 需求分析: # 对项目需求进 ...

  6. Python实战之ATM+购物车

    ATM + 购物车 需求分析 ''' - 额度 15000或自定义 - 实现购物商城,买东西加入 购物车,调用信用卡接口结账 - 可以提现,手续费5% - 支持多账户登录 - 支持账户间转账 - 记录 ...

  7. 阶段性项目 ATM+购物车项目

    ATM + 购物车https://www.cnblogs.com/kermitjam/articles/10687180.html readme 内容前戏: 一个项目是如何从无到有的. 一 需求分析 ...

  8. ATM购物车+三层结构项目设计

    ATM购物车项目 模拟实现一个ATM + 购物商城程序. 该程序实现普通用户的登录注册.提现充值还款等功能,并且支持到网上商城购物的功能. 账户余额足够支付商品价格时,扣款支付:余额不足时,无法支付, ...

  9. day26 作业(ATM第二版)

    目录 start.py conf.settings.py core.src.py db.db_handler.py interface.bank_interface.py interface.shop ...

  10. day25 作业(ATM第一版)

    目录 conf.setting.py core.src.py db.db_handler.py interface.admin_interface interface.bank_interface i ...

随机推荐

  1. Binary Strings Gym - 101161G 矩阵快速幂 + 打表

    http://codeforces.com/gym/101161/attachments 这题通过打表,可以知道长度是i的时候的合法方案数. 然后得到f[1] = 2, f[2] = 3, f[3] ...

  2. Unity GameObject.Find 和 transform.Find

    transform.Find(""); 找到子游戏对象,找自己找不到,能找到未激活的子游戏对象. 括号里可以是游戏对象的名字,也可以是层级. GameObject.Find(&qu ...

  3. Java文件与io——缓冲流

    对文件或其它目标频繁的读写操作,效率低,性能差. 使用缓冲流的好处,能够更高效的读写信息,原理是将数据先缓冲起来,然后一起写入或者读取出来. BufferedInputStream:为另一个输入流添加 ...

  4. 用CSS控制图片大小显示的方法

    图片自动适应大小是一个非常常用的功能,在进行制作的时候为了防止图片撑开容器而对图片的尺寸进行必要的控制,我们可不可以用CSS控制图片使它自适应大小呢? 可以通过按比例缩小或者放大到某尺寸(自己指定), ...

  5. 最简实例演示asp.net5中用户认证和授权(1)

    asp.net5中,关于用户的认证和授权提供了非常丰富的功能,如果结合ef7的话,可以自动生成相关的数据库表,调用也很方便. 但是,要理解这么一大堆关于认证授权的类,或者想按照自己项目的特定要求对认证 ...

  6. TemplateBinding与Binding区别,以及WPF自定义控件开发的遭遇

    在上一次的文章WPF OnApplyTemplate 不执行 或者执行滞后的疑惑谈到怎么正确的开发自定义控件,我们控件的样式中,属性的绑定一般都是用TemplateBinding来完成,如下一个基本的 ...

  7. LitePal——安卓数据库library

    简介:一个让开发者使用SQLite数据库更加容易的库文件 LitePal for Android,项目地址:点击打开 LitePal是一个开源的android库,它让开发者使用SQLite数据变得容易 ...

  8. AJPFX关于面向对象之封装,继承,多态 (上)

    Java是一种面向对象的语言,这是大家都知道的,他与那些像c语言等面向过程语言不同的是它本身所具有的面向对象的特性--封装,继承,多态,这也就是传说中的面向对象三大特性 一:从类和对象开始说起: Oo ...

  9. 抓包工具wireshark的使用--过滤语句

    鲨鱼鳍的图标 抓包很方便

  10. C#工程缺少IIS组件无法打开的解决办法

    作者:朱金灿 来源:http://blog.csdn.net/clever101 同事使用VS打开一个C#工程,出现下面的错误: 这个工程是C#的桌面工程,跟IIS无关,去安装IIS太麻烦了.我想到一 ...