zoukankan      html  css  js  c++  java
  • Python学习day5作业


    title: Python学习day5作业
    tags: python
    author: Chinge Yang
    date: 2017-01-27

    Python学习day5作业

    @(学习)[python]

    ATM和购物商城

    作业需求

    ATM:

    1. 指定最大透支额度
    2. 可取款
    3. 定期还款(每月指定日期还款,如15号)
    4. 可存款
    5. 定期出账单
    6. 支持多用户登陆,用户间转帐
    7. 支持多用户
    8. 管理员可添加账户、指定用户额度、冻结用户等

    购物车:

    1. 商品信息- 数量、单价、名称
    2. 用户信息- 帐号、密码、余额
    3. 用户可充值
    4. 购物历史信息
    5. 允许用户多次购买,每次可购买多件
    6. 余额不足时进行提醒
    7. 用户退出时 ,输出当次购物信息
    8. 用户下次登陆时可查看购物历史
    9. 商品列表分级显示

    1. 程序说明

    购物商城实现功能如下:

    • [x] 博客
    • [x] 多用户登录
    • [x] 商品按二级菜单显示
    • [x] 充值功能
    • [x] 多次购买,每次购买多件
    • [x] 余额不足提示充值
    • [x] 可查看购物历史

    ATM实现功能如下:

    • [x] 指定最大透支额度
    • [x] 可取款
    • [ ] 定期还款(每月指定日期还款,如15号)
    • [x] 可存款
    • [x] 定期出账单
    • [x] 支持多用户登陆,用户间转帐
    • [x] 支持多用户
    • [x] 管理员可添加账户、指定用户额度、冻结用户等

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

    2. 基本流程图

    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
    
    
  • 相关阅读:
    JZOJ 100019.A
    idea突然无法智能提示了
    C基于 postgresql-devel 连接postgresql 数据库,实现增删改查的代码封装
    gcc 编译第三方库
    C 语言中的指针函数写法
    java 基于RXTX配置linux和window串口
    springboot 在windows 中打jar包运行正常, 但是在linux 环境中报错 加载不到主类
    求4 的余数
    win10 定时重启某个程序
    win10 使用ssh远程 linux机器并修改了hostname, 然后重新连接的时候连接不上, 但是其它机器可以远程上
  • 原文地址:https://www.cnblogs.com/ygqygq2/p/6354267.html
Copyright © 2011-2022 走看看