博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python学习day5作业-ATM和购物商城
阅读量:6340 次
发布时间:2019-06-22

本文共 19876 字,大约阅读时间需要 66 分钟。

作业需求

ATM:

  1. 指定最大透支额度

  2. 可取款

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

  4. 可存款

  5. 定期出账单

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

  7. 支持多用户

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

购物车:

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

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

  3. 用户可充值

  4. 购物历史信息

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

  6. 余额不足时进行提醒

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

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

  9. 商品列表分级显示

1. 程序说明

购物商城实现功能如下:

博客

多用户登录

商品按二级菜单显示

充值功能

多次购买,每次购买多件

余额不足提示充值

可查看购物历史

ATM实现功能如下:

指定最大透支额度

可取款

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

可存款

定期出账单

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

支持多用户

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

 

作业地址:

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本文转自 ygqygq2 51CTO博客,原文链接:http://blog.51cto.com/ygqygq2/1894343,如需转载请自行联系原作者
你可能感兴趣的文章
19.04.16--指针笔记-参数传递
查看>>
POJ1860 Currency Exchange
查看>>
.Net 转战 Android 4.4 日常笔记(6)--Android Studio DDMS用法
查看>>
SVN被锁定的几种解决方法
查看>>
182在屏幕中实现网格化视图效果
查看>>
Dundas 系列
查看>>
Windows的命令行查看,修改,删除,添加环境变量
查看>>
iOS 图文混排
查看>>
64. Minimum Path Sum
查看>>
R学习笔记 第五篇:字符串操作
查看>>
(转)介绍下Nuget在传统Asp.net项目中的使用
查看>>
C# ArcEngine 实现点击要素高亮并弹出其属性
查看>>
初识GO语言——安装Go语言
查看>>
Hadoop MapReduce编程 API入门系列之分区和合并(十四)
查看>>
并查集的应用之求解无向图中的连接分量个数
查看>>
在线浏览PDF之PDF.JS (附demo)
查看>>
波形捕捉:(3)"捕捉设备"性能
查看>>
AliOS Things lorawanapp应用介绍
查看>>
美国人的网站推广方式千奇百怪
查看>>
java web学习-1
查看>>