Python学习day5作业-ATM和购物商城

时间:2021-12-24 02:58:31
Python学习day5作业

Python学习day5作业

ATM和购物商城

作业需求

ATM:

  1. 指定最大透支额度

  2. 可取款

  3. 定期还款(每月指定日期还款,如15号)

  4. 可存款

  5. 定期出账单

  6. 支持多用户登陆,用户间转帐

  7. 支持多用户

  8. 管理员可添加账户、指定用户额度、冻结用户等

购物车:

  1. 商品信息- 数量、单价、名称

  2. 用户信息- 帐号、密码、余额

  3. 用户可充值

  4. 购物历史信息

  5. 允许用户多次购买,每次可购买多件

  6. 余额不足时进行提醒

  7. 用户退出时 ,输出当次购物信息

  8. 用户下次登陆时可查看购物历史

  9. 商品列表分级显示

1. 程序说明

购物商城实现功能如下:

博客

多用户登录

商品按二级菜单显示

充值功能

多次购买,每次购买多件

余额不足提示充值

可查看购物历史

ATM实现功能如下:

指定最大透支额度

可取款

定期还款(每月指定日期还款,如15号)

可存款

定期出账单

支持多用户登陆,用户间转帐

支持多用户

管理员可添加账户、指定用户额度、冻结用户等

ygqygq2的博客地址
作业地址:https://git.oschina.net/ygqygq2/python_homework/tree/master/day5作业

2. 基本流程图

Python学习day5作业-ATM和购物商城

3. 程序测试帐号

用户/密码:
ATM普通用户:1000/abc、1001/1001
ATM管理用户:admin/abc
购物商城:test/test

4. 程序结构:

.
├── Atm  # ATM主程目录  
│   ├── __init__.py
│   ├── api  # ATM程序API目录
│   │   ├── __init__.py
│   │   ├── __pycache__
│   │   │   ├── __init__.cpython-35.pyc
│   │   │   └── pay1.cpython-35.pyc
│   │   └── pay.py # ATM支付api
│   ├── bin  # ATM执行文件目录
│   │   ├── __init__.py
│   │   ├── atm.py  # ATM执行程序,普通用户登录入口
│   │   └── manager.py  # ATM管理员登录入口
│   ├── conf  # ATM配置目录
│   │   ├── __init__.py
│   │   ├── __pycache__
│   │   │   ├── __init__.cpython-35.pyc
│   │   │   └── settings.cpython-35.pyc
│   │   └── settings.py  # ATM配置文件
│   ├── core  # ATM主要逻辑程序目录
│   │   ├── __init__.py
│   │   ├── __pycache__
│   │   │   ├── __init__.cpython-35.pyc
│   │   │   ├── accounts.cpython-35.pyc
│   │   │   ├── auth.cpython-35.pyc
│   │   │   ├── bill_date.cpython-35.pyc
│   │   │   ├── db_handler.cpython-35.pyc
│   │   │   ├── logger.cpython-35.pyc
│   │   │   ├── main.cpython-35.pyc
│   │   │   └── transaction.cpython-35.pyc
│   │   ├── accounts.py  # 用于从文件里加载和存储账户数据
│   │   ├── auth.py  # 用于帐户认证和帐户操作
│   │   ├── bill_date.py  # 根据年-月,生成帐单起止时间模块
│   │   ├── db_handler.py  # 数据库连接引擎
│   │   ├── logger.py  # 日志记录模块
│   │   ├── main.py  # 主逻辑程序
│   │   └── transaction.py  # 记账\还钱\取钱等所有的与账户金额相关的操作模块
│   ├── db  # 用户数据存储目录
│   │   ├── __init__.py
│   │   ├── account_sample.py  # 生成一个初始的账户数据 ,把这个数据存成一个以这个账户id为文件名的文件,放在accounts目录就行了,程序自己去会这里找
│   │   └── accounts  # 存各个用户的账户数据,一个用户一个文件
│   │       ├── 1000.json  # 一个普通用户账户文件
│   │       └── admin.json  # 一个管理员用户示例文件
│   ├── docs  # 程序说明文档目录
│   │   └── __init__.py
│   └── log  # 日志根目录
│       ├── __init__.py
│       ├── access.log  # 用户访问和操作的相关日志
│       ├── accounts  # 存各个用户的帐单数据,一个用户一个文件
│       │   └── 1000.bills  # 一个普通用户的帐单文件
│       └── transactions.log  # 所有的交易还款等日志
├── README.md   # readme文件
└── Shopping_mall  # 购物商城程序目录
   ├── bin  # 购物商城执行文件目录
   │   ├── __init__.py
   │   └── shopping_mall.py  # 购物商城入口程序
   ├── conf  # 购物商城配置目录
   │   ├── __init__.py
   │   ├── __pycache__
   │   │   ├── __init__.cpython-35.pyc
   │   │   ├── goods.cpython-35.pyc
   │   │   └── settings.cpython-35.pyc
   │   ├── goods.py  # 购物商城商品价格列表
   │   └── settings.py  # 购物商城配置文件
   ├── core  # 购物商城主要逻辑程序目录
   │   ├── __init__.py
   │   ├── __pycache__
   │   │   ├── __init__.cpython-35.pyc
   │   │   ├── accounts.cpython-35.pyc
   │   │   ├── auth.cpython-35.pyc
   │   │   ├── db_handler.cpython-35.pyc
   │   │   ├── logger.cpython-35.pyc
   │   │   ├── main.cpython-35.pyc
   │   │   └── shopping.cpython-35.pyc
   │   ├── accounts.py  # 用于从文件里加载和存储账户数据
   │   ├── auth.py  # 用于帐户认证和帐户操作
   │   ├── db_handler.py  # 数据库连接引擎
   │   ├── logger.py  # 日志记录模块
   │   └── main.py  # 主逻辑程序
   ├── db  # 用户数据存储目录
   │   └── accounts  # 存各个用户的账户数据,一个用户一个文件
   │       ├── __init__.py
   │       └── test.json  # 一个普通用户账户文件
   └── log
       ├── access.log  # 用户访问和操作的相关日志
       └── test_shopping.log  # 用户购物历史日志

5. 程序测试

  1. 管理员登录失败
    python Atm/bin/manager.py

################ATM admin manager#################
account:a
password:a
Account [a] does not exist!
account:a
password:a
Account [a] does not exist!
account:a
password:a
Account [a] does not exist!
2017-01-27 01:47:07,377 - access - ERROR - account [a] too many login attempts

Process finished with exit code 0
  1. 管理员登录(不允许普通用户登录)
    python Atm/bin/manager.py

################ATM admin manager#################
account:1000
password:abc
Permission denied

Process finished with exit code 0
################ATM admin manager#################
account:admin
password:abc

   ------- Admin erea ---------
   1.  添加账户
   2.  查询用户信息
   3.  用户信息修改(冻结帐户、用户信用卡额度等)
   4.  生成全部用户帐单
   5.  退出

>>:1001
Option does not exist!

   ------- Admin erea ---------
   1.  添加账户
   2.  查询用户信息
   3.  用户信息修改(冻结帐户、用户信用卡额度等)
   4.  生成全部用户帐单
   5.  退出

>>:1
account id:1001
password:1001
Account [1001] is exist,try another account.
account id:1002
password:1002
account [1002] added sucessed

   ------- Admin erea ---------
   1.  添加账户
   2.  查询用户信息
   3.  用户信息修改(冻结帐户、用户信用卡额度等)
   4.  生成全部用户帐单
   5.  退出
 >>:2
Please input your query account id:1002
pay_day             :22                  
credit              :15000              
status              :0                  
balance             :15000              
id                  :1002                
enroll_date         :2017-01-27          
expire_date         :2022-01-26          

   ------- Admin erea ---------
   1.  添加账户
   2.  查询用户信息
   3.  用户信息修改(冻结帐户、用户信用卡额度等)
   4.  生成全部用户帐单
   5.  退出

>>:2
Please input your query account id:1001
pay_day             :22                  
credit              :15000              
status              :0                  
id                  :1001                
balance             :15000              
enroll_date         :2017-01-27          
expire_date         :2022-01-26          

   ------- Admin erea ---------
   1.  添加账户
   2.  查询用户信息
   3.  用户信息修改(冻结帐户、用户信用卡额度等)
   4.  生成全部用户帐单
   5.  退出

>>:>>:3
account id:1001
You can choose the items like this:
{
   "password": "abc",
   "credit": 15000,
   "status": 0,
   "expire_date": "2021-01-01",
   "pay_day": 22
}
Input modify items(json):{"credit":20000,"pay_day": 23}
Account infomation updated!

   ------- Admin erea ---------
   1.  添加账户
   2.  查询用户信息
   3.  用户信息修改(冻结帐户、用户信用卡额度等)
   4.  生成全部用户帐单
   5.  退出

>>:2
Please input your query account id:1001
pay_day             :23                  
credit              :20000              
status              :0                  
balance             :15000              
id                  :1001                
enroll_date         :2017-01-27          
expire_date         :2022-01-26          

   ------- Admin erea ---------
   1.  添加账户
   2.  查询用户信息
   3.  用户信息修改(冻结帐户、用户信用卡额度等)
   4.  生成全部用户帐单
   5.  退出

>>:>>:2
Please input your query account id:0
Get account [0] info pemission denied!

   ------- Admin erea ---------
   1.  添加账户
   2.  查询用户信息
   3.  用户信息修改(冻结帐户、用户信用卡额度等)
   4.  生成全部用户帐单
   5.  退出

>>>>:2
Please input your query account id:0
Get account [0] info pemission denied!

   ------- Admin erea ---------
   1.  添加账户
   2.  查询用户信息
   3.  用户信息修改(冻结帐户、用户信用卡额度等)
   4.  生成全部用户帐单
   5.  退出

>>>>:2
Please input your query account id:0
Get account [0] info pemission denied!

   ------- Admin erea ---------
   1.  添加账户
   2.  查询用户信息
   3.  用户信息修改(冻结帐户、用户信用卡额度等)
   4.  生成全部用户帐单
   5.  退出

>>:4
------------------Account bill:-------------------
-----------------------End------------------------
------------------Account bill:-------------------
expire_date         :2021-01-01          
credit              :15000              
enroll_date         :2016-01-02          
status              :0                  
balance             :4265.0              
pay_day             :22                  
id                  :1000                
Today is not the bill generation day!
Account [1000] need to repay [10735.0]
-----------------------End------------------------
------------------Account bill:-------------------
expire_date         :2022-01-26          
id                  :1001                
pay_day             :23                  
status              :0                  
balance             :15000              
enroll_date         :2017-01-27          
credit              :20000              
Today is not the bill generation day!
Account [1001] need to repay [5000]
-----------------------End------------------------
------------------Account bill:-------------------
expire_date         :2022-01-26          
credit              :15000              
pay_day             :22                  
status              :0                  
balance             :15000              
enroll_date         :2017-01-27          
id                  :1002                
Today is not the bill generation day!
Account [1002] needn't to repay.
-----------------------End------------------------
------------------Account bill:-------------------
-----------------------End------------------------

   ------- Admin erea ---------
   1.  添加账户
   2.  查询用户信息
   3.  用户信息修改(冻结帐户、用户信用卡额度等)
   4.  生成全部用户帐单
   5.  退出

>>:5
###################Bye,thanks!####################

  1. 普通用户登录(不允许管理员登录)
    python Atm/bin/atm.py

##################Welcome to ATM##################
account:1000
password:abc

   ------- Oldboy Bank ---------
   1.  账户信息
   2.  还款(示例)
   3.  取款(示例)
   4.  转账
   5.  存款
   6.  账单
   7.  退出

>>:1
status              :0                  
pay_day             :22                  
enroll_date         :2016-01-02          
balance             :4265.0              
expire_date         :2021-01-01          
credit              :15000              
id                  :1000                

   ------- Oldboy Bank ---------
   1.  账户信息
   2.  还款(示例)
   3.  取款(示例)
   4.  转账
   5.  存款
   6.  账单
   7.  退出

>>:2
--------- BALANCE INFO --------
       Credit :    15000
       Balance:    4265.0
Tip: [b] to back
Input repay amount:200
2017-01-28 09:49:30,934 - transaction - INFO - account:1000   action:repay    amount:200.0   interest:0.0
New Balance:4465.0
Tip: [b] to back
Input repay amount:b

   ------- Oldboy Bank ---------
   1.  账户信息
   2.  还款(示例)
   3.  取款(示例)
   4.  转账
   5.  存款
   6.  账单
   7.  退出

>>:3
--------- BALANCE INFO --------
       Credit :    15000
       Balance:    4465.0
Tip: [b] to back
Input withdraw amount:200
2017-01-28 09:49:44,162 - transaction - INFO - account:1000   action:withdraw    amount:200.0   interest:10.0
New Balance:4255.0
Tip: [b] to back
Input withdraw amount:b

   ------- Oldboy Bank ---------
   1.  账户信息
   2.  还款(示例)
   3.  取款(示例)
   4.  转账
   5.  存款
   6.  账单
   7.  退出

>>:4
--------- BALANCE INFO --------
       Credit :    15000
       Balance:    4255.0

(Tip: input [b] to back)
Input receiver:1001
Input transfer amount:200
2017-01-28 09:50:06,723 - transaction - INFO - account:1000   action:transfer    amount:200.0   interest:10.0
New Balance:4045.02017-01-28 09:50:06,723 - transaction - INFO - account:1001   action:receive    amount:200.0   interest:0.0

Input receiver:b

   ------- Oldboy Bank ---------
   1.  账户信息
   2.  还款(示例)
   3.  取款(示例)
   4.  转账
   5.  存款
   6.  账单
   7.  退出

>>:5
--------- BALANCE INFO --------
       Credit :    15000
       Balance:    4045.0

(Tip: input [b] to back)
Input your save amount:400
2017-01-28 09:53:45,354 - transaction - INFO - account:1000   action:save    amount:400.0   interest:0.0
New Balance:4445.0

   ------- Oldboy Bank ---------
   1.  账户信息
   2.  还款(示例)
   3.  取款(示例)
   4.  转账
   5.  存款
   6.  账单
   7.  退出

>>:6
Please input the date you will query like [2016-12]>>>2016-12
Account [1000] bills:
--------------------------------------------------
bill_date: 2017-1 account_id: 1000 need_repay: 10555

bill_date: 2017-1 account_id: 1000 need_repay: 10555

Account [1000] history log:
--------------------------------------------------
--------------------------------------------------

   ------- Oldboy Bank ---------
   1.  账户信息
   2.  还款(示例)
   3.  取款(示例)
   4.  转账
   5.  存款
   6.  账单
   7.  退出

>>:6
Please input the date you will query like [2016-12]>>>2017-01
Account [1000] bills:
--------------------------------------------------
bill_date: 2017-1 account_id: 1000 need_repay: 10555

bill_date: 2017-1 account_id: 1000 need_repay: 10555

Account [1000] history log:
--------------------------------------------------
2017-01-25 21:33:43,281 - transaction - INFO - account:1000   action:pay    amount:10000.0   interest:0.0
2017-01-25 22:16:26,609 - transaction - INFO - account:1000   action:pay    amount:100.0   interest:0.0
2017-01-25 22:16:52,347 - transaction - INFO - account:1000   action:pay    amount:100.0   interest:0.0
2017-01-26 21:47:42,372 - transaction - INFO - account:1000   action:repay    amount:100.0   interest:0.0
2017-01-26 21:51:13,819 - transaction - INFO - account:1000   action:repay    amount:100.0   interest:0.0
2017-01-26 21:51:24,608 - transaction - INFO - account:1000   action:withdraw    amount:500.0   interest:25.0
2017-01-26 21:53:16,352 - transaction - INFO - account:1000   action:withdraw    amount:200.0   interest:10.0
2017-01-28 09:49:30,934 - transaction - INFO - account:1000   action:repay    amount:200.0   interest:0.0
2017-01-28 09:49:44,162 - transaction - INFO - account:1000   action:withdraw    amount:200.0   interest:10.0
2017-01-28 09:50:06,723 - transaction - INFO - account:1000   action:transfer    amount:200.0   interest:10.0
2017-01-28 09:53:45,354 - transaction - INFO - account:1000   action:save    amount:400.0   interest:0.0
--------------------------------------------------

   ------- Oldboy Bank ---------
   1.  账户信息
   2.  还款(示例)
   3.  取款(示例)
   4.  转账
   5.  存款
   6.  账单
   7.  退出

>>:7
###################Bye,thanks!####################

Process finished with exit code 1
  1. 购物商城已注册用户登录
    python Shopping_mall/bin/shopping_mall.py

------------Welcome to shopping mall!-------------

--------------------------------------------------
   1.  Login
   2.  Sign up
   3.  Logout
--------------------------------------------------

>>:1
Please input your user name and password!
user:test
password:test
Input [y|yes] to view your purchase history,[others] means not.
Please input:y
User test shopping history:
--------------------------------------------------
2017-01-17 17:15:39,199 - shopping - INFO - account:test action:shopping product_number:2 goods:Tea cost:29378
2017-01-17 17:22:13,163 - shopping - INFO - account:test action:shopping product_number:1 goods:Coffee cost:29348
2017-01-24 21:55:50,796 - shopping - INFO - account:test action:shopping product_number:2 goods:Milk cost:29230
2017-01-25 00:05:46,534 - shopping - INFO - account:test action:shopping product_number:1 goods:Coffee cost:29200
2017-01-25 00:06:07,089 - shopping - INFO - account:test action:shopping product_number:1 goods:Coffee cost:29170
2017-01-25 00:36:53,038 - shopping - INFO - account:test action:shopping product_number:1 goods:Coffee cost:29140
2017-01-25 21:33:07,174 - shopping - INFO - account:test action:shopping product_number:1 goods:Coffee cost:30110
-------------------Species list-------------------
0 --> Mobile phone
1 --> Car
2 --> Drink
-----------------------End------------------------
[q|b] to quit;[c] to check;[t] to top up
Input your choice:t
Do you want to charge more money?[y|n|b]y
Please use your ATM account to pay.
Please input your top-up amount:1000
account:abc
password:a
Account [abc] does not exist!
account:1000
password:abc
2017-01-28 10:31:52,106 - transaction - INFO - account:1000   action:pay    amount:1000.0   interest:0.0
Pay successed
Your balance is [41310]
-------------------Species list-------------------
0 --> Mobile phone
1 --> Car
2 --> Drink
-----------------------End------------------------
[q|b] to quit;[c] to check;[t] to top up
Input your choice:2
---->Enter Drink
-------------------Product list-------------------
0.Milk                 59                  
1.Coffee               30                  
2.Tea                  311                
-----------------------End------------------------
[q|quit] to quit;[b|back] to back;[c|check] to check
Please choice the product:1
Please input the number of product:2
Added [2] [Coffee] into shopping cart,your balance is [40250]
2017-01-28 10:32:07,465 - shopping - INFO - account:test action:shopping product_number:2 goods:Coffee cost:40250
-------------------Product list-------------------
0.Milk                 59                  
1.Coffee               30                  
2.Tea                  311                
-----------------------End------------------------
[q|quit] to quit;[b|back] to back;[c|check] to check
Please choice the product:b
-------------------Species list-------------------
0 --> Mobile phone
1 --> Car
2 --> Drink
-----------------------End------------------------
[q|b] to quit;[c] to check;[t] to top up
Input your choice:0
---->Enter Mobile phone
-------------------Product list-------------------
0.Iphone7              6188                
1.Iphone7 plus         7888                
2.Xiaomi5              2888                
-----------------------End------------------------
[q|quit] to quit;[b|back] to back;[c|check] to check
Please choice the product:0
Please input the number of product:1
2017-01-28 10:32:20,656 - shopping - INFO - account:test action:shopping product_number:1 goods:Iphone7 cost:34062
Added [1] [Iphone7] into shopping cart,your balance is [34062]
-------------------Product list-------------------
0.Iphone7              6188                
1.Iphone7 plus         7888                
2.Xiaomi5              2888                
-----------------------End------------------------
[q|quit] to quit;[b|back] to back;[c|check] to check
Please choice the product:c
*********You purchased products as below**********
Goods                Price           Number     Cost                
Iphone7              6188            1          6188                
Coffee               30              2          60                  
***********************End************************
You total cost:                                 6248                
Your balance is [34062]
-------------------Product list-------------------
0.Iphone7              6188                
1.Iphone7 plus         7888                
2.Xiaomi5              2888                
-----------------------End------------------------
[q|quit] to quit;[b|back] to back;[c|check] to check
Please choice the product:b
-------------------Species list-------------------
0 --> Mobile phone
1 --> Car
2 --> Drink
-----------------------End------------------------
[q|b] to quit;[c] to check;[t] to top up
Input your choice:q
*********You purchased products as below**********
Goods                Price           Number     Cost                
Iphone7              6188            1          6188                
Coffee               30              2          60                  
***********************End************************
You total cost:                                 6248                
Your balance is [34062]
###################Bye,thanks!####################

Process finished with exit code 1
  1. 购物商城新注册用户
    python Shopping_mall/bin/shopping_mall.py

------------Welcome to shopping mall!-------------

--------------------------------------------------
   1.  Login
   2.  Sign up
   3.  Logout
--------------------------------------------------


>>:2
user:test01
password:test01
-------------------Species list-------------------
0 --> Drink
1 --> Mobile phone
2 --> Car
-----------------------End------------------------
[q|b] to quit;[c] to check;[t] to top up
Input your choice:c
*********You purchased products as below**********
Goods                Price           Number     Cost                
***********************End************************
You total cost:                                 0                  
Your balance is [0]
-------------------Species list-------------------
0 --> Drink
1 --> Mobile phone
2 --> Car
-----------------------End------------------------
[q|b] to quit;[c] to check;[t] to top up
Input your choice:q
*********You purchased products as below**********
Goods                Price           Number     Cost                
***********************End************************
You total cost:                                 0                  
Your balance is [0]
###################Bye,thanks!####################

Process finished with exit code 1

本文出自 “ygqygq2” 博客,请务必保留此出处http://ygqygq2.blog.51cto.com/1009869/1894343