首页 > 代码库 > Python开发程序:ATM+购物商城

Python开发程序:ATM+购物商城

一、需求

  1.模拟实现一个ATM + 购物商城程序

    1).实现功能  

      1.额度 15000或自定义

      2.实现购物商城,买东西加入 购物车,调用信用卡接口结账

      3.可以提现,手续费5%

      4.每月22号出账单,每月10号为还款日,过期未还,按欠款总额 万分之5 每日计息

      5.支持多账户登录

      6.支持账户间转账

      7.记录每月日常消费流水

      8.提供还款接口

      9.ATM记录操作日志 

     10.提供管理接口,包括添加账户、用户额度,冻结账户等。。。

     11.用户认证用装饰器

 

二、程序code

 

程序说明:

## ATM信用卡购物模拟程序

### 作者介绍:
* author:lzl
### 博客地址:
* http://www.cnblogs.com/lianzhilei/p/5770672.html
* http://www.cnblogs.com/lianzhilei/p/5786223.html(程序完整流程图)


### 功能介绍:
模拟实现一个ATM + 购物商城程序
额度 15000或自定义
实现购物商城,买东西加入 购物车,调用信用卡接口结账
可以提现,手续费5%
支持多账户登录
支持账户间转账
记录每月日常消费流水
提供还款接口
ATM记录操作日志
提供管理接口,包括添加账户、用户额度,冻结账户等。。。
用户认证用装饰器




### 目录结构:

    Day4
    ├── Credit_card-shopping
            ├── README.md
            ├── core #入口程序目录
            │   ├── __init__.py
            │   └── main.py  #入口程序(启动程序)
            ├── conf #配置文件目录
            │   ├── __init__.py
            │   └── setting.py
            ├── modules #程序核心目录
            │   ├── __init__.py
            │   ├── admincenter.py  #管理模块
            │   ├── authentication.py  #认证模块
            │   ├── creditcard.py  #信用卡模块
            │   ├── shopping.py  #购物模块
            ├── database #程序数据库
            │   ├── creditcard_dict  #信用卡数据库
            │   ├── creditcard_record  #信用卡流水记录数据库
            │   ├── details_tip  #提示信息
            │   ├── product_list  #商城产品数据库
            │   └── shopping_car  #购物车数据库
            │   ├── shopping_record  #购物记录
            │   └── users_dict  #用户数据库
            └── log
                ├── __init__.py
                └── log  #待扩展....


### 运行说明:

* 用户、信用卡信息数据库已经建立好
        ------用户:zhangsan   密码:123     ##测试用户,对所有的用户环节进行过测试,已存在购物信息,消费记录等
        ------用户:zhaosi     密码:123     ##初始账号,暂无任何记录
        ------用户:wangwu     密码:123     ##初始账号,暂无任何记录

        ------信用卡:888888   密码:123     ##测试信用卡,对所有的信用卡环节进行过测试,已存在余额变动,账单流水等
        ------信用卡:666666   密码:123     ##初始信用卡账号,暂无任何记录

        ------管理中心用户:admin  密码:admin
        
* 目录结构保持一致,开始启动mian.py


一、主程序Credit_card-shopping开始
   1、把admincenter,shopping,authentication,creditcard目录加载到系统
   2、进入购物模拟程序,选择相应的模式
   3、循环菜单
       (1)、输入1,加载authentication.user_auth()进行系统账号认证,然后调用模块shopping,进入商城购物
       (2)、输入2,加载authentication.creditcard_auth()进行信用卡认证,认证通过后调用creditcard模块,信用卡操作
       (3)、输入3,加载authentication.admincenter_auth()进行信用卡认证,认证通过后调用admincenter模块,管理操作
       (4)、输入q, 程序终止,退出程序
   4、菜单1:shopping商城
       (1)、加载user_auth()函数进行用户认证,用户认证通过后进行购物中心
       (2)、输入值为1,加载shopping.Shopping_mall()函数,进行商品选购,选购的商品会加入到购物车,结束购物按b返回
       (3)、输入值为2,加载shopping.Shopping_car()函数,查看当前用户的购物车数据库数据库,之前购物商场里选择的商品,
              会在此显示,如果没进行购物,会显示为空,另当购物结算完成后,购物车会清空,商品记录到消费记录,按b返回,按f清空
       (4)、输入值为3,加载 shopping.Pay_shopping(current_user)函数,询问是否要进行结账,对购物车商品进行购买;选择
              结算操作,系统会加载账号是否绑定了信用卡,如果未绑定,会提示需到个人中心绑定才能结算;如果进行了绑定,加载
              Auth_creditcard(creditcard)函数进行信用卡密码认证;认证成功加载Shoppingcar_record(current_user,list)、
              Creditcard_record(creditcard, value)、Empty_shopping_car()函数进行信用卡流水,用户消费流水,购物车清空操作
       (5)、输入值为4,进入个人中心设置,进入循环菜单:
              ①、输入1,加载shopping.Catcar_record(current_user)函数,进行当前用户的购物历史记录查看,无购物则为空,购物
                  记录用时间进行分割进行显示,按b返回
              ②、输入2,加载shopping.Updata_password(current_user)函数,选择是否对密码修改,输入y,输入账号原来的密码,匹配
                  成功,输入新的密码,再次输入新的密码,两次密码匹配成功,修改成功,否则修改失败;按b返回
              ③、输入3,加载shopping.Updata_address(current_user)函数,选择是否对收货地址进行修改,输入y,输入新的地址,保存
                  默认地址为none,按b返回
              ④、输入4,加载shopping.Link_creditcard(current_user)函数,选择是否进行信用卡绑定,默认为为绑定;选择y,输入信用卡
                  卡号,加载信用卡数据库进行匹配,如果信用卡存在绑定成功,否则失败,按b返回
              ⑤、输入b,返回上一级
       (6)、输入值为b,返回上一级菜单

   5、菜单2:信用卡中心
       (1)、加载creditcard_auth()函数进行信用卡认证,认证通过后进入信用卡中心
       (2)、输入值为1,加载creditcard.My_creditcard(current_creditcard)函数,查看当前信用卡卡号、额度、提现额度、持卡人,按b返回
       (3)、输入值为2,加载creditcard.Cash_advance(current_creditcard)函数,进行现金提现,显示卡号、额度、可提现金额,还有取现具体
              计算方式,输入提现的金额,不能大于可提现金额,也不可大于额度金额;提现成功,按b返回;提现是调用Creditcard_record
              (current_creditcard, record)函数,进行信用卡流水记录
       (4)、输入值为3,加载creditcard.Transfer(current_creditcard)函数,进入转账选项,选择确定转账;输入转账对方的账号,再次输入
              转账对方账号,两次一致;输入转账金额,不大于当前额度,全部通过,转账成功;然后调用Creditcard_record(current_creditcard, record)
              函数进行流水记录,否则提示转账失败,按b返回
       (5)、输入值为4,加载creditcard.Repayment(current_creditcard))函数,对当前信用卡进行还款,输入正确的金额数字,还款成功,调用
              Creditcard_record(current_creditcard, record)进行流水记录,否则还款失败,按b返回
       (6)、输入值为5,加载creditcard.Catcard_record(current_creditcard)函数,打印当前信用卡账户流水账的日期,输入要查看的流水日期
              匹配后打印日期当天的所有流水记录(按照时间的先后顺序),否则打印失败,重新输入,按b返回;没有进行过交易的卡号为空
       (7)、输入值为b,返回上一级菜单

   6、菜单3:管理中心
       (1)、加载admincenter_auth()函数进行管理认证,认证通过后进入管理中心,显示管理菜单
       (2)、输入值为1,加载admincenter.User_create()函数,打印当前已有账号,开始进行系统账号创建,询问是否进程新用户创建;选择y,开始创建用户
              输入要创建的用户名,输入密码,如果创建的用户不存在,新建用户创建成功;否则失败,另输入的用户名不能为空,按b返回;打印当前最新用户列表
       (3)、输入值为2,加载 admincenter.Lock_user()函数,打印当前用户列表,以及当前的锁定状态;输入要锁定的用户名,对已有的账号进行锁定,输入的
              账号不存在,锁定失败;输入的账号存在,但是当前已经被锁定,锁定失败;账号存在,未被锁定,显示锁定成功;打印当前所有用户的锁定状态,锁定
              高亮显示,被锁定的用户不能进行系统登录。按b返回
       (4)、输入值为3,加载 admincenter.Unlock_user()函数,打印当前用户列表,以及当前的锁定状态;输入要解锁的用户名,对已有的账号进行解锁,输入的
              账号不存在,解锁失败;输入的账号存在,但是当前未被被锁定,解锁失败;账号存在,之前被锁定,显示解锁成功;打印当前所有用户的锁定状态,锁定
              高亮显示,被锁定的用户不能进行系统登录。按b返回
       (5)、输入值为4,加载admincenter.Creditcard_create()函数,打印当前已有信用卡,开始进行系统信用卡发行,询问是否进程信用卡创建;选择y,开始发行信用卡
              输入要创建的信用卡卡号,输入密码,如果创建的信用卡不存在,新建信用卡发行成功;否则失败,另输入的信用卡必须为6位数数字,不能重合,发行过
              的信用卡不能在此进行发;按b返回,打印当前最新信用卡列表
       (6)、输入值为5,加载admincenter.Lock_creditcard())函数,打印当前信用卡列表,以及当前的冻结状态;输入要冻结的信用卡卡号,对已有的信用卡进行冻结
              输入的信用卡卡号不存在,冻结失败;输入的信用卡卡号存在,但是当前已经被冻结,冻结失败;账号存在,未被冻结,显示冻结成功;打印当前所有信用卡卡号的
              冻结状态,被冻结的卡号高亮显示,被冻结的用户不能进行信用卡登录,不能进行购物消费。按b返回
       (7)、输入值为6,加载admincenter.Unlock_creditcard())函数,打印当前信用卡列表,以及当前的冻结状态;输入要解冻的信用卡卡号,对已有的信用卡进行解冻
              输入的信用卡卡号不存在,解冻失败;输入的信用卡卡号存在,但是当前未被冻结,解冻失败;账号存在,已经被冻结,显示解冻成功;打印当前所有信用卡卡号的
              冻结状态,被冻结的卡号高亮显示,被冻结的用户不能进行信用卡登录,不能进行购物消费。按b返回
       (8)、输入值为7,加载admincenter.Updata_limit()函数,打印当前信用卡账户账号,目前可用额度,取现额度,选择是否进行额度调整;选择y,进行额度调整,
              输入要调整额度的信用卡卡号,6为数字,如果输入的信用卡不存在,提示错误;输入已有的信用卡开号,输入新的额度(5000以上),显示额度调整成功,再此
              打印最新的信用卡账户账号,目前可用额度,取现额度列表;按b返回
       (9)、输入值为b,返回上一级菜单

   7 关于信用卡额度,取现额度,可以取现额度:
        ①信用卡默认取现额度为信用卡额度的50%(此系统默认取现额度为7500)
        ②信用卡进行消费时(未取现),取现额度不会变化
        ③信用卡额度低于取现额度时,可取现金额以当前额度为准(可取现金额=当前额度*0.95)
        ④取现额度只有两种状况会发生变化,一种进行取现,第二是对信用卡额度进行调整
        ⑤每次取现扣除5%的手续费
        总结:信用卡额度为总共可消费额度,取现额度为理论上可取现额度,可取现额度为当前真正可以取现的额度(会出现信用卡额度低于取现额度的可能
              此时已信用卡额度为准,另有手续费要加收,所以当前的额度不能全部取完,要扣除5%的手续费,此时可取现额度为额度的95%)

  

Python开发程序:ATM+购物商城