作业需求: 
模拟实现一个ATM + 购物商城程序

额度 15000或自定义
实现购物商城,买东西加入 购物车,调用信用卡接口结账
可以提现,手续费5%
支持多账户登录
支持账户间转账
记录每月日常消费流水
提供还款接口
ATM记录操作日志
提供管理接口,包括添加账户、用户额度,冻结账户等。。。
用户认证用装饰器

作业思路
实现购物商城和信用卡的ATM功能
本程序有6个模块,实现了购物和ATM的取款、还款、转账、账单查看和用户管理的功能。


程序结构:
test
├── README
├── ATM #ATM主程目录
│ ├── __init__.py
│ ├── bin #ATM 执行文件 目录
│ │ ├── __init__.py
│ │ ├── atm.py #ATM 执行程序
│ ├── conf #配置文件
│ │ ├── __init__.py
│ │ └── settings.py
│ ├── core #主要程序逻辑都 在这个目录 里
│ │ ├── __init__.py
│ │ ├── accounts.py #用于从文件里加载和存储账户数据
│ │ ├── auth.py #用户认证模块
│ │ ├── db_handle.py #数据库连接引擎
│ │ ├── log.py #日志记录模块
│ │ ├── main.py #主逻辑交互程序
│ │ └── transaction.py #记账\还钱\取钱等所有的与账户金额相关的操作都 在这
│ ├── db #用户数据存储的地方
│ │ ├── __init__.py
│ │ └── accounts #存各个用户的账户数据 ,一个用户一个文件
│ │ └── zcl.json #一个用户账户示例文件
│ └── log #日志目录
│ ├── __init__.py
│ ├── access.log #用户访问和操作的相关日志
│ └── transactions.log #所有的交易日志
└── shopping #电子商城程序
├── shopping_mol #购物商城的程序
└── __init__.py

开始先运行atm.py时执行程序,直接到main下,输入正确用户zcl和密码abc,才能进行下一步的操作,然后列出atm的功能列表(还款、取款、转账、查看等)
shopping是一个独立的程序,调用了还款的金额,购物结束后把剩余的金额在写入到文件中,存入到信用卡中。


流程图

python作业---模拟实现一个ATM + 购物商城程序

 

shopping_mol

 1 import os,json
 2 
 3 dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
 4 print(dir)
 5 file="%s/ATM/db/accounts/zcl.json"%dir
 6 print(file)
 7 with open(file, "r", encoding="utf-8") as f:
 8     account_data = json.load(f)
 9     print(account_data)
10 
11 
12 
13 product_list =[
14     ("Apple Iphone",6000),
15     ("Apple Watch",4600),
16     ("Books",600),
17     ("Bike",750),
18     ("cups",120),
19     ("Apple",50),
20     ("banana",60),
21 ]
22 shopping_list =[]
23 salary = account_data["balance"]
24 
25 while True:
26     for index,item in enumerate(product_list):
27         print (index,item)
28     user_choice = input ("Enter the serial number:")
29     if user_choice.isdigit():
30         user_choice = int (user_choice)
31         if user_choice <len (product_list) and user_choice >=0:
32             p_item = product_list[user_choice]
33             if p_item[1] <= salary:
34                 shopping_list.append(p_item)
35                 salary -= p_item[1]
36                 with open(file,"w+",encoding="utf-8") as f:
37                     account_data["balance"]=salary
38                     print(account_data)
39                     json.dump(account_data,f)
40                 print ("Added %s into your shopping cart,your current balance is %s"%(p_item,salary))
41             else:
42                 print ("Your balance is not enough!!")
43         else:
44             print ("The goods you entered do not exist")
45 
46     elif user_choice == "q":
47         print ("====shopping list====")
48         for p in shopping_list:
49             print (p)
50         print ("Your current balance is %s"%salary)
51         exit()
52     else:
53         print ("invalid option")
View Code

相关文章: