10月31日ATM编写逻辑描述
ATM逻辑描述
三层框架简介
这里我们使用三层框架的结构编写代码
1、第一层(src.py)
功能展示和数据获取层,顾名思义打印数据或是获取用户输入
2、第二层(interface文件夹下内容)
一类功能可以归类到一个py文件中,提供接口文件供第一层调用,使用中会调用到第三层
部分通用小功能放到了common中,数据库相关代码放到了db_hanlder
3、第三层(db_hanlder)
存放一些对数据库进行操作的功能,供第二层调用
启动函数
放在src中
1、整理出一个功能字典,启动代码的时候通过功能字典中的标号来选择执行的功能
2、判断一下用户输入是否在范围内(字典内的标号),如果在的话就调用对应函数
用户注册功能
src层获取输入,并且打印输出结果,主体的判断功能放到interface中的user_interface中,src中调用获取结果。
功能:
判断用户输入的数据是否符合格式
判断两次密码是否一致
判断用户名是否已被注册
如果没有上面的情况就写入数据到数据库保存起来(密码要加密)
用户登录
src层获取输入,并且打印输出结果,主体的判断功能放到interface中的user_interface中,src中调用获取结果。
功能:
判断用户输入的数据是否符合格式
判断数据库中是否有这个用户(是否已经注册)
判断密码是否正确
如果上面条件都符合就在src中定义一个变量记录登陆的用户名称,方便后面的功能调用
common中的小功能
检测是否登陆的装饰器
没有什么特点,就是套上装饰器模版后在内层函数写上判断是否登陆的语句,因为会频繁使用所以放到了common中
判断输入是否为空
判断数据值是否为纯数字
定义一个函数用于对密码进行哈希加密
定义一个函数进行日志记录
定义一个函数用于判断输入是否为整数或小数
配置和日志字典写在settings中
查看余额
src中调用interface文件夹中的文件,查看当前登陆用户的余额,src中接收返回值并打印结果
账户提现
src中获取用户输入(提现数量),interface文件中执行判断和操作,结果返回src中输入打印。
功能:
判断输入的数据是否符合格式
判断用户中的余额是否足够提现(加上手续费)
如果上面条件都符合了,就当成提现成功,修改数据库中的数据值
充值功能
src中获取充值的金额,其他功能也是放到interface中执行,结果返回src中输入打印。
功能:
先判断输入的值是否符合格式
接下来就是充值,把结果写到数据库文件中去
转账功能
src中获取转账对象和金额,其他功能也是放到interface中执行,结果返回src中输入打印。
功能:
先判断转账对象名称和金额的输入是否符合格式
接着判断转账对象是否存在(已经注册)
接着判断转账金额是否足够
如果上述条件都符合,那就直接转账返回结果并写入数据库中
查看账单
src因为只能放输入输出,而输入账单信息需要调用第三层的操作数据库的代码,因此整体功能放到第二次,第一层就留一个调用interface函数的操作。
功能:
调用第三层的代码获取账单信息,然后格式化输出结果
购物车功能
添加购物车
src中格式化输出商品信息,获取用户需要购买的商品编号和数量,接着调用接口层的功能函数来判断并返回结果输出。
功能:
先判断用户的输入是否符合格式
接着判断用户选择的编号是否在范围内
接着再判断数据库中的购物车中是否有内容,如果有就加到小字典中进来
最后实现连续添加的时候是先添加到小字典中
只有在提出的时候才会写入数据库中的
结算购物车
src文件中调用interface中的函数,然后输出结果
功能:
先根据用户名获取购物车中的信息,然后根据价格和数量统计总价进行结算,如果用户余额不足以支付,就提示,否则就扣款清空购物车保存到数据库中
查看购物车
src中还是调用interface中的函数,然后输出结果
功能:
根据用户名调用第三层函数获取购物车信息,然后格式化输出
清空购物车
src中还是调用interface中的函数,然后输出结果
功能:
根据用户名调用第三层函数获取购物车信息,然后情况内容再写入数据库中保存
修改购物车
因为要获取购物车中的信息,涉及到了第三层的函数所以所有功能都扔到第二层(输出输入的时候反正都是一个窗口看不出来)
功能:
先获取数据库中的购物车信息,然后格式化输出
接着获取用户输入(需要修改的商品信息和修改后的数量)
判断输入格式是否正确
接着把修改后的数量写到、数据库文件中,如果数量为0 可以直接删除键值对
管理员功能
src中建立函数,套用run函数的格式,创建功能字典模拟功能。
冻结用户交易功能
在用户的数据库文件中设置一个is_lock键值对,值是布尔值,如果为True则不能进行金钱相关操作
还可以设置提现时候手续费的利率
可以修改商品价格和信息
可以移除用户
可以查看所有用户的信息
10月31日ATM编写逻辑描述的更多相关文章
- 2016年10月31日 星期一 --出埃及记 Exodus 19:16
2016年10月31日 星期一 --出埃及记 Exodus 19:16 On the morning of the third day there was thunder and lightning, ...
- 2017年10月31日结束Outlook 2007与Office 365的连接
2017 年10月31日 ,微软即将推出 Office 365中Exchange Online邮箱将需要Outlook for Windows的连接,即通过HTTP Over MAPI方式,传统使用R ...
- 易初大数据 spss 2019年10月31日 wangqingchao
---恢复内容开始--- 1.描述性统计分析方法是指应用分类.制表.图形及概括性数据指标来概括数据分析特征的方法. 2.而推断性统计分析方法则是通过随机抽样,应用统计方法把从样本数据得到的结论推广到总 ...
- 2016年10月31日--网页 Windows对象操作
Window.opener:打开当前窗口的源窗口,如果当前窗口是首次启动浏览器打开的,则opener是null. Window.open(URL,name,features,replace):open ...
- 中国省市县数据库sql文件(2017年10月31日之前)
摘自国家统计局 sql文件下载地址:https://files.cnblogs.com/files/zxj95121/%E7%9C%81%E5%B8%82%E5%8E%BFsql.zip 2019.4 ...
- 18年10月31日 NOIP模拟赛
T1.exercise 题解 数据很小直接模拟 代码 #include<iostream> #include<cstdio> #include<cmath> #in ...
- SPSS 2019年10月31日 20:20:53今日学习总结
◆描述性统计分析 概念:描述性统计分析方法是指应用分类.制表.图形及概括性数据指标(去均值,方差等)来概括数据分布特征的方法. 而推断性统计分析方法则是通过随机抽样,应用统计方法把从样本数据得到的结论 ...
- Techparty-广州 10 月 31 日 Docker 专场沙龙 后记
华为的童鞋技术能力很强,但是两位讲师的都没听进去.重点听了两个,一个是芒果TV的Docker 之路,另一个是Coding的实践和思考. 芒果TV的主讲人是一直仰慕的CMGS,从豆瓣出来后去了国企芒果台 ...
- Week8(10月31日):并发
Part I:提问 =========================== 1. 更新关联.删除关联数据,需要注意哪些问题?以Instructor类为例说明. 2. 已知某请假系统,请实现以下界面的 ...
- ADO.NET数据访问基础与综合应用2020年10月31日20:17:09学习笔记
四.创建数据表 1.数据表的名称. 2.表中的字段名.数据类型.是否可以为空.字段的约束.必备的字段(通常会有一个ID,表示实体的唯一性:可以直接手写,也可以使用种子标识自动生成,给定起始值,给定增长 ...
随机推荐
- [数据结构-线性表1.2] 链表与 LinkedList<T>(.NET 源码学习)
[数据结构-线性表1.2] 链表与 LinkedList<T> [注:本篇文章源码内容较少,分析度较浅,请酌情选择阅读] 关键词:链表(数据结构) C#中的链表(源码) 可空类 ...
- .NET7 一个实用功能-中央包管理
依赖管理是 NuGet 的核心功能.Nuget管理单个项目的依赖关系很容易.管理多项目解决方案的依赖关系可能会变得很困难,因为它们的规模和复杂性开始扩大. 在您管理许多不同项目的公共依赖项的情况下,您 ...
- Seata 1.5.2 源码学习
文章有点长,我决定用半个小时来给您分享~ 基于Seata 1.5.2,项目中用 seata-spring-boot-starter 1. SeataDataSourceAutoConfiguratio ...
- python列表、元祖
#列表创建1 a=['李刚','李白','王维','苏轼','李商隐','苏洵','王安石','司马光'] #列表创建2 b=list(['李刚','李白','王维','苏轼','李商隐','苏洵', ...
- Java 同步锁ReentrantLock与抽象同步队列AQS
AbstractQueuedSynchronizer 抽象同步队列,它是个模板类提供了许多以锁相关的操作,常说的AQS指的就是它.AQS继承了AbstractOwnableSynchronizer类, ...
- Go语言核心36讲15---结构体
我们都知道,结构体类型表示的是实实在在的数据结构.一个结构体类型可以包含若干个字段,每个字段通常都需要有确切的名字和类型. 前导内容:结构体类型基础知识 当然了,结构体类型也可以不包含任何字段,这样并 ...
- cmd唤醒windows设置,并配置opsshd
1. 从cmd唤起windows设置 这个东西很有意思,大部分在运行窗口输入的内容,从cmd或powershell都能唤起,如:control控制面板,但偶尔有些操作就不能通用, 如: ms-sett ...
- MASA Framework -- 跨进程事件 IntegrationEventBus入门与设计
概述 跨进程事件总线允许发布和订阅跨服务传输的消息, 服务的发布与订阅不在同一个进程中 在Masa Framework中, 跨进程总线事件提供了一个可以被开箱即用的程序 IntegrationEven ...
- 安装mySql 出现 one more product requirements have not been satisified
安装mySql 出现 one more product requirements have not been satisified 原因是缺少一些依赖环境. 在弹出的对话框中点击 否. 然后点击执行, ...
- 【面试题总结】JVM01-组成及垃圾回收
一.概念 1.JVM组成及作用 (1)组成:类加载器.运行时数据区(Java内存模型).执行引擎.本地库接口 (2)作用: 类加载器(ClassLoader)把class文件转换成字节码: 运行时数据 ...