一、需求
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%)
时间: 2024-10-07 05:44:11