本文共 19876 字,大约阅读时间需要 66 分钟。
作业需求
ATM:
指定最大透支额度
可取款
定期还款(每月指定日期还款,如15号)
可存款
定期出账单
支持多用户登陆,用户间转帐
支持多用户
管理员可添加账户、指定用户额度、冻结用户等
购物车:
商品信息- 数量、单价、名称
用户信息- 帐号、密码、余额
用户可充值
购物历史信息
允许用户多次购买,每次可购买多件
余额不足时进行提醒
用户退出时 ,输出当次购物信息
用户下次登陆时可查看购物历史
商品列表分级显示
购物商城实现功能如下:
博客
多用户登录
商品按二级菜单显示
充值功能
多次购买,每次购买多件
余额不足提示充值
可查看购物历史
ATM实现功能如下:
指定最大透支额度
可取款
定期还款(每月指定日期还款,如15号)
可存款
定期出账单
支持多用户登陆,用户间转帐
支持多用户
管理员可添加账户、指定用户额度、冻结用户等
作业地址:
用户/密码:
ATM普通用户:1000/abc、1001/1001 ATM管理用户:admin/abc 购物商城:test/test. ├── 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 # 用户购物历史日志
管理员登录失败
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
管理员登录(不允许普通用户登录)
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!####################
普通用户登录(不允许管理员登录)
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
购物商城已注册用户登录
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
购物商城新注册用户
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,如需转载请自行联系原作者