模拟实现一个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


流程图:

python实现购物车+ATM机 第五天_第1张图片


目录结构图:

python实现购物车+ATM机 第五天_第2张图片


代码:

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()