1、流程图
2、目录分类
start.py 程序入口
bin
auth.py 提供统一登录
conf
operation.py 提供用户包括管理员操作函数,包括:添加账户、锁定账户、
搜索账户、更新额度、取现、转账、还款、查看
db
info.txt 保存账户信息
log
getlog.py 记录用户操作日志的函数
openlog.py 管理员查看用户操作日志的函数
getwater.py 记录用户消费流水的函数
openwater.py 用户获取消费流水的函数
shop
shopping.py 购物车导航、购物、付款函数
3、功能分类
(1)、管理员
额度15000或自定义
ATM记录操作日志
提供管理接口,包括添加账户、用户额度,冻结账户等。。。
(2)、普通用户
可以提现,手续费5%
支持多账户登录
支持账户间转账
记录每月日常消费流水
提供还款接口
(3)、购物
实现购物商城,买东西加入购物车,调用信用卡接口结账
4、功能演示
1、登录
①系统提供3次输入账户的机会,超过3次将自动退出
------ 欢迎来到XX银行信用卡中心 ------
1.登录
q、退出
--------------------------------------
请键入您要的操作:1
请输入用户名:user1
请输入密码:1
请输入用户名:user1
请输入密码:2
请输入用户名:user1
请输入密码:3
...已尝试了3次均错误,系统将在3秒后退出...
②系统自动根据输入的账户判断是管理员还是普通用户,并列出各自权限
# 管理员登录
------ 欢迎来到XX银行信用卡中心 ------
1.登录
q、退出
--------------------------------------
请键入您要的操作:1
请输入用户名:admin
请输入密码:admin
>>>欢迎admin登录<<<
--------------------------------------------------------------------------------------------------------------------------------------------------------------------
|账户数据示例:User(账户名)| Pass(密码)| Card_Num(卡号)| Quota(信用额度)| Balance(可用额度)| Take_Quota(取现额度)| Status(账户状态)| Type(账户类型)|
--------------------------------------------------------------------------------------------------------------------------------------------------------------------
############################## 管理员功能列表 ##############################
1.添加账户 2.冻结账户 3.搜索账户
4.更新额度 5.日志查看 q.退出
键入您的选择:
~~~~~~~~~~~~
# 普通用户登录
------ 欢迎来到XX银行信用卡中心 ------
1.登录
q、退出
--------------------------------------
请键入您要的操作:1
请输入用户名:user1
请输入密码:user1
>>>欢迎user1登录<<<
------------------------------------------------ 用户菜单列表 ------------------------------------------------
1.提现 2.转账 3.还款
4.查询 5.购物 6.流水 q.退出
键入您的选择:
2、管理员功能
(1)添加账户
############################## 管理员功能列表 ##############################
1.添加账户 2.冻结账户 3.搜索账户
4.更新额度 5.日志查看 q.退出
键入您的选择:1
请输入新的用户名:user3
请输入卡号:3333
xxxxxxxxxxxxxxxxxxxxxxxxxxxx
账户已存在!请选择其他账户
xxxxxxxxxxxxxxxxxxxxxxxxxxxx
请输入新的用户名:user4
请输入卡号:4444
请输入密码:user4
请输入额度:10000
user4账户开户成功!当前信用额度10000 当前可用余额10000 当前取现额度5000
**********************************************************************
(2)冻结账户
①冻结的账户存在
############################## 管理员功能列表 ##############################
1.添加账户 2.冻结账户 3.搜索账户
4.更新额度 5.日志查看 q.退出
键入您的选择:2
请输入要冻结的账户:user1
user1账户冻结成功!
*************************
②冻结的账户不存在
############################## 管理员功能列表 ##############################
1.添加账户 2.冻结账户 3.搜索账户
4.更新额度 5.日志查看 q.退出
键入您的选择:2
请输入要冻结的账户:user8
...您要冻结的账户不存在!...
(3)搜索账户
①搜索的账户存在
############################## 管理员功能列表 ##############################
1.添加账户 2.冻结账户 3.搜索账户
4.更新额度 5.日志查看 q.退出
键入您的选择:3
请输入要搜索的账户信息(账户名或卡号):user1
账户:user1,卡号:1111,信用额度:10000,可用余额:10000,取现额度:5000,账户状态:锁定!请联系管理员
②搜索的账户不存在
############################## 管理员功能列表 ##############################
1.添加账户 2.冻结账户 3.搜索账户
4.更新额度 5.日志查看 q.退出
键入您的选择:3
请输入要搜索的账户信息(账户名或卡号):user8
...账户不存在,请确认!...
(4)更新额度
①更新的账户存在
############################## 管理员功能列表 ##############################
1.添加账户 2.冻结账户 3.搜索账户
4.更新额度 5.日志查看 q.退出
键入您的选择:4
请输入要更新额度的账户:user1
请输入要更新的额度:12000
user1账户额度更新成功,当前:信用额度12000,可用额度12000,取现额度6000!
**********************************************************************
①更新的账户不存在
############################## 管理员功能列表 ##############################
1.添加账户 2.冻结账户 3.搜索账户
4.更新额度 5.日志查看 q.退出
键入您的选择:4
请输入要更新额度的账户:user8
...账户不存在,请确认!...
(5)日志查看
############################## 管理员功能列表 ##############################
1.添加账户 2.冻结账户 3.搜索账户
4.更新额度 5.日志查看 q.退出
键入您的选择:5
请输入要查询的用户:user1
2017-02-06 21:53:22,021 - 操作日志 - INFO - 进行了'信息查看'操作
2017-02-06 21:53:52,632 - 操作日志 - INFO - 进行了'购物'操作
---日志结果将会停留屏幕5秒钟---
3、普通用户功能
(1)提现
①取现余额充足
------------------------------------------------ 用户菜单列表 ------------------------------------------------
1.提现 2.转账 3.还款
4.查询 5.购物 6.流水 q.退出
键入您的选择:1
当前取现额度5000
请输入要提取的金额:1000
user1取现成功! 取现金额1000, 取现手续费50, 当前取现额度3950
**********************************************************************
②取现余额不足
------------------------------------------------ 用户菜单列表 ------------------------------------------------
1.提现 2.转账 3.还款
4.查询 5.购物 6.流水 q.退出
键入您的选择:1
当前取现额度5000
请输入要提取的金额:6000
...取现余额不足!...
(2)转账
------------------------------------------------ 用户菜单列表 ------------------------------------------------
1.提现 2.转账 3.还款
4.查询 5.购物 6.流水 q.退出
键入您的选择:2
您需要转账给谁:user2
请输入转账金额:500
转账成功!
********************
(3)还款
------------------------------------------------ 用户菜单列表 ------------------------------------------------
1.提现 2.转账 3.还款
4.查询 5.购物 6.流水 q.退出
键入您的选择:3
当前账单1550
请输入还款金额:1550
user1还款成功! 还款金额1550, 账单剩余0
**********************************************************************
(4)查询
------------------------------------------------ 用户菜单列表 ------------------------------------------------
1.提现 2.转账 3.还款
4.查询 5.购物 6.流水 q.退出
键入您的选择:4
账户:user1,卡号:1111,信用额度:10000,可用余额:10000,取现额度:5000,账单金额:0,账户状态:正常
(5)购物
①余额充足的情况
------------------------------------------------ 用户菜单列表 ------------------------------------------------
1.提现 2.转账 3.还款
4.查询 5.购物 6.流水 q.退出
键入您的选择:5
** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **
* 欢迎user1来到购物商城 *
** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **
0 - 服装类
1 - 电子类
2 - 家电类
3 - 食品类
-----------------------End------------------------
[选择种类,按q返回用户菜单] 请输入您的选择:1
--> 0 通讯
--> 1 办公
-----------------------End------------------------
[选择分类,按'b'返回上一级,按'q'返回到用户菜单] 请输入您的选择:1
----> 0 笔记本 5000
----> 1 台式机 3000
-----------------------End------------------------
[选择商品,按'b'返回上一级,按'q'返回到用户菜单] 请输入您的选择:1
请输入商品件数:1
付款成功!
*********************购物清单********************
台式机 {'总价': 3000, '件数': 1, '单价': 3000} 2017.02.06 22.16.33
----------------------清单END-----------------------
②余额不足的情况
...余额不足以支付此次购物!但同样会显示购物清单...
*********************购物清单********************
台式机 {'总价': 30000, '件数': 10, '单价': 3000} 2017.02.08 15.55.16
----------------------清单END-----------------------
(6)流水
------------------------------------------------ 用户菜单列表 ------------------------------------------------
1.提现 2.转账 3.还款
4.查询 5.购物 6.流水 q.退出
键入您的选择:6
2017-02-06 22:18:38,955 - 消费流水 - INFO - 购物花费了3000
---消费流水将会停留屏幕5秒钟---
5、代码部分
start.py
1 #!/usr/bin/env python 2 #-*- coding:utf-8 -*- 3 # Author: Tony Chiu 4 # Blog:http://www.cnblogs.com/tonychiu 5 # Github:https://github.com/qiujichun 6 7 from bin import auth 8 9 10 def main(): 11 """ 12 程序入口 13 :return: 14 """ 15 print('-'.center(6, '-'), "