【PYTHON】ATM+购物车项目

目录

├── start.py #程序的入口
├── readme.md
├── conf #配置文件
│ └── settings.py #存放配置信息
├── core #主要程序逻辑都 在这个目录 里
│ ├── src.py #存放用户视图层
│ └── admin.py #存放管理员用户视图层
├── db #用户数据存储的地方
│ ├── db_handler.py #数据处理层–专门用于处理数据的
│ └── user_data #存各个用户的账户数据 ,一个用户一个文件
│ └── tank.json #一个用户账户示例文件
├── interface #逻辑接口层
│ ├── user_interface.py #用户接口
│ ├── admin_interface.py #管理员接口
│ ├── shop_interface.py #购物商城接口
│ └── bank_interface.py #银行相关业务的接口
├── lib
│ └── common.py #存放公共方法
└── log #日志目录
├── access.log #用户访问和操作的相关日志
└── transactions.log #所有的交易日志

README.md

#项目说明书
##项目:ATM+购物车
#项目需求
    1.额度15000或自定义     -->  注册功能
    2.实现购物商城,买东西加入购物车,调用信用卡接口结账  -->购物功能、支付功能
    3.可以提现,手续费5%   -->  提现功能
    4.支持多账户登录  --> 登陆功能
    5.支持账户间转账  --> 转账功能
    6.记录日常消费 -->  记录流水功能
    7.提供还款接口 -->  还款功能
    8.ATM记录操作日志 --> 记录日志功能
    9.提供管理接口,包括添加账户、用户额度,冻结账户等。。。 ---> 管理功能
    10.用户认证用装饰器  --> 登录认证装饰器
##“用户视图层”展示给用户选择的功能
    1、注册功能
    2、登录功能
    3、查看余额
    4、提现功能
    5、还款功能
    6、转账功能
    7、查看流水
    8、购物功能
    9、查看购物车
    10、管理员功能
#一个项目是如何从无到有
##一、需求分析
    1.拿到项目,会先在客户那里一起讨论需求, 商量项目的功能是否能实现,周期与价格,得到一个需求文档。
    2.最后在公司内部需要开一次会议,最终得到一个开发文档,交给不同岗位的程序员进行开发。
        - Python: 后端,爬虫
        - 不同的岗位:
            - UI界面设计:
                - 设计软件的布局,会分局软件的外观切成一张张图片。
            - 前端:
                - 拿到UI交给他的图片,然后去搭建网页面。
                - 设计一些页面中,哪些位置需要接收数据,需要进行数据交互。
            - 后端:
                - 直接核心的业务逻辑,调度数据库进行数据的增删查改。
            - 测试:
                - 会给代码进行全面测试,比如压力测试,界面测试(CF卡箱子)。
            - 运维:
                - 部署项目。
##二、程序的构架设计
###1、程序设计的好吃
    1)思路清晰
    2)不会出现写一半代码时推翻重写
    3)方便自己或以后的同事更好维护
###2、三层构架设计的好处
    1)把每个功能都分层三部分,逻辑清晰
    2)如果用户更换不同的用户界面或不同,的数据储存机制都不会影响接口层的核心逻辑代码,扩展性强。
    3)可以在接口层,准确的记录日志与流水。
###3、三层构架
#### 一 用户视图层
    用于与用户交互的,可以接受用户的输入,打印接口返回的数据。
#### 二 逻辑接口层
    接受 用户视图层 传递过来的参数,根据逻辑判断调用数据层加以处理,并返回一个结果给 用户视图层。
#### 三 数据处理层
    接受接口层传递过来的参数,做数据的 
        - 保存数据  save()
        - 查看数据  select()
        - 更新数据
        - 删除数据
##三、分任务开发
##四、测试
##五、上线

star.py

'''
程序的入口
'''

#导入用户视图层模块
from core import src

#开始执行项目函数
if __name__ == '__main__':
    src.run()

src.py

'''
用户视图层
'''
from interface import user_interface
from interface import bank_interface
from interface import shop_interface
from lib import common

#全局变量,记录用户是否已登陆
login_user = None

# 1、注册功能
def register():
    while True:
        username = input('请输入用户名:').strip()
        password = input('请输入密码:').strip()
        re_passwprd = input('请确认密码:').strip()
        #小的逻辑处理:判断两次密码是否一致
        if password == re_passwprd:
            #调用用户接口层的注册接口,将用户名 username与密码 password交给接口层进行处理
            flag,msg = user_interface.register_interface(username,password)
            #返回的结果有:
            #(False,'用户已存在,请重新输入!')
            #(True,'用户:[%s]注册成功'%username)
            #根据flag判断用户注册是否成功,flag控制break的结束
            if flag:
                print(msg)
                break
            else:
                print(msg)
        else:
            print('两次密码不一致,请重新输入')

# 2、登录功能
def login():
    while True:
        username = input('请输入用户名:').strip()
        password = input('请输入密码:').strip()
        # 调用用户接口层的登陆接口,将用户名 username与密码 password交给接口层进行处理
        flag,msg = user_interface.login_interface(username, password)
        # 返回的结果有:
        # (True,[%s]登陆成功!'%username)
        # (False, '当前用户已被锁定')
        # (False,'用户:[%s]密码错误,请重新输入'%username)
        # (False,'用户不存在,请重新输入!')
        # 根据flag判断用户登陆是否成功,flag控制break的结束
        if flag:
            print(msg)
            #修改全局变量,给用户记录已登陆
            global login_user
            login_user = username
            break
        else:
            print(msg)

@common.login_auth
# 3、查看余额
def check_balance():
    # 调用用户接口层的查看余额接口,将已登陆的用户名login_user交给接口层进行处理
    flag, msg = user_interface.check_bal_interface(login_user)
    # 返回的结果有:
    # (True,'用户:[%s]的余额为%s$'%(username,user_dic['balance']))
    # 根据flag返回用户的余额
    if flag:
        print(msg)

# 4、提现功能
@common.login_auth
def withdraw():
    while True:
        input_money = input('请输入提现金额:').strip()
        #小的逻辑处理:判断输入的是否是数字
        if not input_money.isdigit():
            print('请重新输入')
            continue
        else:
            # 调用银行接口层的提现接口,将已登陆的用户名login_user和提现的金额input_money交给接口层进行处理
            flag,msg = bank_interface.withdraw_interface(login_user,input_money)
            # 返回的结果有:
            # (True,'用户:[%s]提现{%s}$成功,手续费{%s}$'%(username,money,money*0.05))
            # (False,'余额不足,请重新输入')
            #根据flag判断用户提现是否成功,flag控制break的结束
            if flag:
                print(msg)
                break
            else:
                print(msg)

# 5、还款功能(银行卡还款,无论是信用卡或储蓄卡,是否能充任意大小的金额)
@common.login_auth
def repay():
    while True:
        inp_money = input('请输入还款的金额:').strip()
        #小的逻辑处理:判断输入的是否是数字或者小于0
        if not inp_money.isdigit() or int(inp_money)<0:
            print('请重新输入')
            continue
        else:
            # 调用银行接口层的还款接口,将已登陆的用户名login_user和还款的金额input_money交给接口层进行处理
            flag,msg = bank_interface.repay_interface(login_user, inp_money)
            # 返回的结果有:
            # (True, '用户[%s]还款{%s}$成功!'%(username,money))
            # 根据flag返回还款的金额,flag控制break的结束
            if flag:
                print(msg)
                break

# 6、转账功能
@common.login_auth
def transfer():
    while True:
        to_user =
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值