学python一个月以来的第一个工程级别项目!!!!!

1.首先分析项目需求:

模拟实现一个ATM + 购物商城程序

额度 15000或自定义---->注册功能

实现购物商城,买东西加入 购物车,调用信用卡接口结账----->购物车,支付

可以提现,手续费5%----->提现

支持多账户登录----->登录

支持账户间转账----->转账

记录日常消费流水----->记录流水

提供还款接口---->还款

ATM记录操作日志---->日志

提供管理接口,包括添加账户、冻结账户等。。。---->管理接口,添加,冻结账户

用户认证用装饰器------>装饰器

用软件功能表达就是:

1、登录

2、注册

3、查看余额

4、转账

5、还款

6、取款

7、查看流水

8、购物

9、查看购买商品

2.设计程序以及程序的架构

购物车架构图

通过架构图来设计软件:

程序结构

3.程序结构:

ATM:程序的根目录

conf:配置文件

setting:放置配置文件,日志字典,日志与db路径

core:核心代码

src.py:核心功能的主体代码,为用户展示功能以及让用户选择,并与用户交互,接收用户输入的数据

在取款/转账/购物完成以后可以在后面加上将此信息加入到该账户的流水(用户接口层注册里面的bankflow)列表中去.

db:数据操作

db_handler.py:数据处理层,里面包含两种方法:save(),传入用户信息字典,存入硬盘..select():传入姓名,若用户存在,返回用户信息字典,若不存在,返回False

wzj.json:存放wzj用户信息的文件,包含内容{用户名,密码,余额,信用卡额度,交易流水,购物车信息,是否锁定}

inter_face:接口层

bank.py:银行接口,包含方法有:

withdraw_interface(money):取款接口:调用src里的登录用户的账户名通过调用db_handler.select方法查询到用户全部信息,更改完余额以后再调用db_handler.save方法重新存入文件

transfer_interface(add_name, money),转账接口

check_balance_interface(),擦看余额接口

check_record_interface(),查看流水接口

user.py:用户接口,包含两个方法

1.用户注册时传入的账号密码,通过调用db_handler里的方法判断,若账户不存在,则写入文件,若存在,则返回用户名已存在,,,,

2.登录时传入用户名与密码,通过调用db_handler里的方法与数据库中的信息匹配

lib:库

common.py:存放常用的函数,当作模块给其他文件调用

log:存放日志文件

readme:软件说明书

start.py:程序入口

4.主要代码

bank-->取款接口

转账接口

用户接口

数据操作,用于读写数据

5.购物与支付

在src文件里取到合法的购物车信息与商品总价格后,传入购物车接口,通过调用bank里面的支付接口判断,若余额足够则购买成功,否则返回余额不足

src里的购物代码

购物车接口

总结!!!

ATM的他的精髓就在于整个软件分为三层,,用户交互层,只负责接收合法数据传入接口层,接口层只负责处理数据,数据处理层只负责处理数据,这样扩展性极强,,比如我现在是在cmd里运行,如果移植到前端或者安卓里,只需要修改下用户交互层就可以

注意:用户交互层不能直接修改数据,只能通过调用接口,让接口负责修改数据

python买东西_Python实战之ATM+购物车相关推荐

  1. python编码思维导图_Python入门之ATM+购物车代码版思维导图

    该项目结合了ATM模版和购物车需求,整个思维导图用Python代码实现,使用思维导图可以清晰明了的看清整个框架: 过程中,用到了Python的知识有Python常用模块,Python常用内置包,log ...

  2. python基础实战项目——ATM+购物车代码大全

    需求分析 1.实现用户的登录注册功能,并且用户分为普通用户和管理员用户,登录时需要先输入验证码 2.用户注册时会自动添加 20000 元的余额,与 0 元的银行卡信用余额 3.用户拥有–充值,提现,转 ...

  3. 用python制作网页要学哪些东西_python实战计划学习:做一个网页

    没有办法居中,不知道原因 展示效果: 代码如下: CSS表中header img样式中增加 text-align:center,这样图片才能铺满全屏 下面是标签说明: 1.rel属性用于定义链接的文件 ...

  4. python打印日历_Python实战练习——打印日历教程

    很长一段时间没有接触过C语言了,想来做这一行当已经有三两年了. 今天突然想起来以前用C语言在VC6上写代码的日子,想了想以前的一些实战练习. 所以今天打算用Python来写一个C语言以前练习的题目-日 ...

  5. python怎么掉包_Python实战教程:拒绝调包,如何用python推导线性回归模型

    原标题:Python实战教程:拒绝调包,如何用python推导线性回归模型 最近有人问我一个问题,我数学不好,代码基础薄弱,英语一般般,如何入门当今最为前沿的机器学习领域?均方差损失,MSE,平方损失 ...

  6. python异步爬虫_Python实战异步爬虫(协程)+分布式爬虫(多进程)

    转自:https://blog.csdn.net/SL_World/article/details/86633611 在讲解之前,我们先来通过一幅图看清多进程和协程的爬虫之间的原理及其区别.(图片来源 ...

  7. 有没有关于python的壁纸_Python 实战之精美壁纸下载

    之前讲解了爬虫系列的文章<最通俗的Python3网络爬虫入门>今天继续精美壁纸下载(动态网站). 实战背景 已经会爬取文字了,是不是感觉爬虫还是蛮好玩的呢?接下来,让我们进行一个进阶实战, ...

  8. python语音唤醒_Python实战教程:为女朋友打造一款智能语音闹钟

    Python实战教程:为女朋友打造一款智能语音闹钟 前言 最近学了一些物联网相关的技术,有点心血来潮,寻思自己可以做点什么,恰巧之前听说过一些树莓派的传闻,就想着做一款智能点的闹钟. 需要说明的是,在 ...

  9. python logging使用_Python实战之logging模块使用详解

    用Python写代码的时候,在想看的地方写个print xx 就能在控制台上显示打印信息,这样子就能知道它是什么了,但是当我需要看大量的地方或者在一个文件中查看的时候,这时候print就不大方便了,所 ...

最新文章

  1. BOM,DOM常见操作和DHML
  2. 使用 Truffle Develop 和 console
  3. logback不同业务的日志打印到不同文件
  4. ArcGIS AddIN开发:如何调用ArcMap中的选择工作空间的窗体
  5. STM32F4 HAL库开发 -- RTC
  6. 提高抗打击能力_如果提高心理抗打击能力?
  7. PHP5.1时间相差8小时问题解决。
  8. P1236-Network of Schools(学校网络)【最强联通块,Kosaraju】
  9. C#基础(四)--值类型和引用类型,栈和堆的含义
  10. 远程线程需要注意的问题
  11. 你的计算机usb管理策略,您的计算机已经实施了USB存储设备管理策略,系统发现你使用了USB存储设备,该设备已被阻止,如有疑问请与...
  12. 蓝桥杯:BFS解决问题总结(九宫重排,跳蚱蜢,卡片交换)
  13. 贺利坚老师汇编课程53笔记:寄存器冲突问题解决方案定义子程序标准框架
  14. python矩阵乘法代码_python3 单行代码实现矩阵相乘
  15. 免费https ssl证书freessl.org的申请及配置
  16. 人脸识别接口_活体检测在人脸识别中不可或缺的一部分
  17. 【软件测试】BUG的管理
  18. 2022年山东最新交安安全员考试模拟题及答案
  19. 【流畅的Python学习笔记】2023.4.21
  20. STM32F407定时器输入捕获

热门文章

  1. 安利一款编辑神器——Markdown
  2. 1到n阶乘算法的改进
  3. 如何给ppt编辑页码_拒绝千篇一律:Word插入“侧边”页码,让文档别具一格!...
  4. 可信计算 沈昌祥_沈昌祥院士:用主动免疫可信计算构筑车联网安全防线
  5. termcap-1.3.1的configure.in文件逐行分析
  6. 打开pjsip2.1版本的视频支持
  7. 修改了WINCE自带的驱动程序后如何编译
  8. vue 搜索框header_vue项目header模块编写
  9. 【转】Win32 SDK 实现带图片的 Button 控件BM_SETIMAGE(Disable时图片不显示)
  10. ASP.Net请求处理机制初步探索之旅 - Part 1 前奏