Python学习-----项目设计1.0(设计思维和ATM环境搭建)
目录
前言:
项目开发流程
MVC设计模式
什么是MVC设计模式?
ATM项目要求
ATM项目的环境搭建
前言:
我个人学习Python大概也有一个月了,在这一个月中我发布了许多关于Python的文章,建立了一个Python学习起步的专栏(https://blog.csdn.net/m0_73633088/category_12186491.html),在这里我非常感谢各位的一路陪伴,你们的支持是我创作的不竭动力。所以这一期,我打算设计一个简单的项目,通过这个项目的设计和方法来总结这个阶段Python的学习成果,同时我也很快进入下一阶段的学习,后面我也会坚持发表博客,让我们一起快乐得学习Python吧,共同进步!
好了,废话不多说,直接上正题。
项目开发流程
学习编程的过程中我们会通过编程去做一个小项目,那做一个面向客户的项目具体是一个怎么样的流程呢?同时在开发过程中我们需要考虑什么内容呢?一起来看看吧!
1.需求分析:确定用户的真实需求是怎么样的
(1).确定用户的需求,项目的基本功能
(2).分析项目的可行性以及项目的整体难度
(3).编写需求文档,客户确认
2.项目概要的整体设计:对整个项目进行初步分析和整体设计
1.确定整体的框架,确定技术方向整体思路以及确定框架模型
2.形成一个整体的概要文档
3.项目设计:确定开发时间流程以及时间抽
1.确定开发工作的先后顺序
2.确定时间轴
3.人员分工
4.详细设计:项目功能的具体实现
小组程序员进行讨论:项目的思路、逻辑流程、功能说明、技术点说明。
5.编码:按照预定设计进行代码实现
6.单元测试:基本的检查
7.项目整体测试:对项目按照功能的实现进行具体的测试(软件测试工程师)
8.项目发布
9.后期维护
以上这些就是一个面向用户的项目开发流程了,大家可以参考参考
MVC设计模式
我们在做一个项目的时候应该怎么去排版代码或者相关功能,才能使这个项目更加直观,可读性强,更容易理解。这时候就应该取用MVC设计模式
什么是MVC设计模式?
如果有做过项目的小伙伴在最开始最项目的时候,一般我们会把一些功能代码放到同一个执行文件里面去,这时候我们会发现我们的代码几百行!最最最关键的是,如果其中一行出了点小问题就会导致整个代码运行错误,然后又要一行一行去找bug,这会非常麻烦,如果采样MVC设计模块就可以去避免这些问题。
MVC架构(各司其职):
高内聚 --> 程序/函数/模块的功能专一化.
低耦合 --> 功能之间的关联性尽量低
避免一个错,全部错的情况.提高开发时的项目专注力.更好解决排查问题而衍生出的一个项目开发结构说明:
M:model-->模块层-->主要负责对数据的操作,增删改查(数据库)
C:controller-->控制层-->主要负责功能的实现
v:view-->视图层-->主要负责给用户提供交互,给用户看的东西(前端)
所以看了这些,大家以后去设计项目的时候就要去考虑考虑MVC设计模式,这样会让你的项目更加完美!
ATM项目要求
大家都去过银行存钱取钱了吧,这些都不陌生了,那么这一期介绍的ATM项目就是做一个模拟银行存钱取钱的功能,以及用户登陆、注册、流水查询等等相关功能,这一期我会详细介绍这个项目的环境搭建要求,以及MVC设计模块等相关功能,在下一期再去讲解代码实现。
项目要求:
假设你是第一次去ATM柜机,首先注册,登录,存钱,查询余额,取钱,存钱,查看流水,退出、退出登陆,注销用户
1.注册
看到ATM机的界面,有注册,登录的按键选择------选择注册
选择注册之后进入注册界面,-------开始注册操作,输入用户名/真名/身份证,设置密码,确认密码【此时会判断,如果两次的密码一致的话,则注册成功;否则就要重新注册】------注册成功
注册成功之后:
成为ATM的用户,也就是ATM系统里拥有属于你自己的账户了,你的用户数据【用户名,密码,余额,流水...】
2.登录
注册成功之后,返回登录界面,输入用户名和密码之后进行登录【判断用户名存在且正确以及密码也正确才可以登陆成功;假如用户名不存在,就需要返回注册界面先注册;如果用户名存在,但是用户名或者密码输入不正确,就得重新登录】,只要用户名和密码都正确的话就可以登录成功
3.存钱
登录成功之后,进入ATM功能操作界面(存钱,取款,转账,查询余额,查看流水账单),选择你想要的存钱操作----放入现金---确认存款---存款成功。存款的数量是属于用户数据,存入数据库
4.查看余额
存钱操作完成之后,会跳转ATM功能操作界面(存钱,取款,转账,查询余额,查看流水账单),选择查看余额这个功能---确认查看---显示出你的余额---退出查看余额界面,又回到了ATM功能操作界面
5.查看流水
从ATM功能操作界面,选择查看流水功能----确认查看---返回流水情况(是否打印凭条)---退出查看流水--又回到了ATM功能操作界面
6.取钱
没有其他操作,直接取钱的话,要先登录,登录之后进入ATM功能操作界面,选择取款功能,输入取款数量,确认取款,取出之后,退出,又回到了ATM功能操作界面。此时存款金额又改变,也就是说用户数据又改变,数据库就要更新。
7.退出登陆
在登陆的情况要避免再次登陆,所有就需要退出此时的转换才可以去登陆其他账号
8.注销
在已经登陆的情况下可以去实现用户的注销,其中会把这个用户的所有数据都删除
ATM项目的环境搭建
这个是准备工作,实现要准备好一个文件夹,名字为ATM项目,然后在里面要准备相关子文件夹,这些子文件夹都有相对应的代码功能和时间功能,其中文件夹包括:
api文件夹、config文件夹、core文件夹、DB文件夹、lib文件夹,还有一个主程序即执行程序run.py
下面是这些文件夹相关的内容和功能:
api-->应用程序编程结课-->作案工具-->这一次放的常用的功能模块
uesr_i.py: 用户功能模块-->注册,登录
bank_i>py:银行功能模块-->存钱取钱
config-->设置-->放配置信息(数据信息/数据库的账号/python环境配置)
setting.pyu-->这一次放的是项目的配置信息(用户数据保存的位置所作)
core-->核心模块-->相当于前端,里面写得是给用户看到/交互的东西写在里面
# 实现视图层(ATM看到的界面)
src.py-->交互的内容,启动界面
DB-->Database-->数据库,这里用json文件去实现数据的保存/读取
user_data-->这是文件夹,用来存储用户数据的
db_handle.py__>用来操作数据库内容的模块 1.写入数据 2.查取数据
lib-->工具包-->放特殊的功能(装饰器)
common.py-->写装饰器的地方
# 判断用户是否登录成功的装饰器
run.py-->项目的启动文件
readme.md--> 项目说明文档
这一期先到这里,下一期我会详细讲解代码怎么去写,各位下次见~
分享一张壁纸
相关文章:

Python学习-----项目设计1.0(设计思维和ATM环境搭建)
目录 前言: 项目开发流程 MVC设计模式 什么是MVC设计模式? ATM项目要求 ATM项目的环境搭建 前言: 我个人学习Python大概也有一个月了,在这一个月中我发布了许多关于Python的文章,建立了一个Python学习起步的专栏…...
(九)python网络爬虫(理论+实战)——爬虫实战:指定关键词的百度新闻爬取
系列文章目录 (1)python网络爬虫—快速入门(理论+实战)(一) (2)python网络爬虫—快速入门(理论+实战)(二) (3) python网络爬虫—快速入门(理论+实战)(三) (4)python网络爬虫—快速入门(理论+实战)(四) (5)...

数据分析面试、笔试题汇总+解析(六)
(接上篇) 面试题(MySQL篇) 3. 如何提高MySQL的查询速度? 考点解析: 考察面试者对MySQL查询优化的理解 参考答案: (因为这个问题如果回答的详细一点可以写上一整篇,…...

vue3+rust个人博客建站日记3-编写主页
内容 绘制了主页的基本布局设置了封装了header栏组件并设置了全局黑夜模式. 选择一个组件库-Naive UI 如果没有设计能力,又想开发出风格统一的前端页面。就一定要选择一个漂亮的组件库。 本次项目选择使用Naive UI,NaivUI库曾被Vue框架作者尤雨溪推荐…...

前端常考react面试题(持续更新中)
react diff 算法 我们知道React会维护两个虚拟DOM,那么是如何来比较,如何来判断,做出最优的解呢?这就用到了diff算法 diff算法的作用 计算出Virtual DOM中真正变化的部分,并只针对该部分进行原生DOM操作,而…...

C++11多线程编程 二:多线程通信,同步,锁
C11多线程编程 一:多线程概述 C11多线程编程 二:多线程通信,同步,锁 C11多线程编程 三:锁资源管理和条件变量 2.1 多线程的状态及其切换流程分析 线程状态说明: 初始化(Init)&am…...

js——原型和原型链
最近看了很多面试题,看到这个js原型是常考点,于是,我总结了一些该方面的知识点分享给大家,其实原型就是那么一回事,搞明白了就没啥了。结果如下图所示:原型原型又可分为显式原型和隐式原型1.1显式原型显式原…...

[计算机网络(第八版)]第三章 数据链路层(学习笔记)
物理层解决了相邻节点透明传输比特的问题 3.1 数据链路层的几个共同问题 3.1.1 数据链路和帧 链路: 从一个节点到相邻节点的一段物理线路,中间没有任何其他的交换节点 数据链路: 节点间的逻辑通道是把实现控制数据传输的协议的硬件和软件加…...
void在不同场景下的意义
指针一般有三种含义:一是指明数据的位置,体现在指针的值,表示一个地址。二是表示数据类型的大小,例如int指针表示四个字节为一组数据,体现在指针的加减法如何计算。三是表示数据如何被解释,例如float指针和…...

Flume简介
Flume是一个高可用,高可靠,分布式的海量日志采集、聚合和传输的系统,能够有效的收集、聚合、移动大量的日志数据。 优点: 使用Flume采集数据不需要写一行代码,注意是一行代码都不需要,只需要在配置文件中…...

java简单学习
Java 基础语法 一个 Java 程序可以认为是一系列对象的集合,而这些对象通过调用彼此的方法来协同工作。下面简要介绍下类、对象、方法和实例变量的概念。 对象:对象是类的一个实例,有状态和行为。例如,一条狗是一个对象ÿ…...

Vue2 组件基础使用、父子组件之间的传值
一、什么是组件如画红框的这些区域都是由vue里的各种组件组成、提高复用信通常一个应用会以一棵嵌套的组件树的形式来组织:例如,你可能会有页头、侧边栏、内容区等组件,每个组件又包含了其它的像导航链接、博文之类的组件。为了能在模板中使用…...
代码随想录算法训练营 || 贪心算法 122 55 45
Day28122.买卖股票的最佳时机II力扣题目链接给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易…...

数据结构基础之栈和队列
目录 前言 1、栈 2、队列 2.1、实现队列 2.2、循环队列 前言 上一篇中我们介绍了数据结构基础中的《动态数组》,本篇我们继续来学习两种基本的数据结构——栈和队列。 1、栈 特点:栈也是一种线性结构,相比数组ÿ…...

【Spark分布式内存计算框架——Spark Streaming】3.入门案例(上)官方案例运行
2.1 官方案例运行 运行官方提供案例,使用【$SPARK_HOME/bin/run-example】命令运行,效果如下: 具体步骤如下: 第一步、准备数据源启动端口,准备数据 nc -lk 9999 spark spark hive hadoop spark hive 第二步、运行…...

【博学谷学习记录】超强总结,用心分享 | 架构师 Tomcat源码学习总结
文章目录TomcatTomcat功能需求分析Tomcat两个非常重要的功能(身份)Tomcat的架构(设计实现)连接器的设计连接器架构分析核心功能ProtocolHandler 组件1.EndPoint组件EndPoint类结构图2.Processor组件Processor类结构图3.Adapter组件…...

泛型<E>
泛型 案例引出泛型 按要求写出代码: 在ArrayList中添加3个Dog对象,Dog对象有name和age两个属性,且输出name和age public class test1 {public static void main(String[] args) {ArrayList list new ArrayList();list.add(new Dog(10,&quo…...
你对MANIFEST.MF这个文件知道多少?
前言我们在读源码过程中,经常看到每个jar包的METE-INF目录下有个MANIFEST.MF文件,这个文件到底是做什么的呢?在计算机领域中,"manifest" 通常指的是一份清单或概要文件,用于描述一组文件或资源的内容和属性。…...

史上最经典垃圾回收器(CMS,G1)详解、适用场景及特点、使用命令
文章目录垃圾收集器介绍总结各个垃圾收集器之间的关系垃圾收集器使用命令及默认值详解各个垃圾收集器SerialParNewParallel ScavengeSerial OldParallel OldCMS(Concurrent Mark Sweep)G1(Garbage First)适用场景及推荐垃圾收集器介绍总结 垃圾收集器可以帮助我们进行具体的垃…...
Hive查询中的优化
目录前言优化策略推荐使用group by代替distinct去重前言 优化策略 推荐使用group by代替distinct去重 参考: hive中groupby和distinct区别以及性能比较 - cnblogs数据倾斜之count(distinct) - cnblogs 重要结论: 两者都会在map阶段count,…...
[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解
突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 安全措施依赖问题 GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...

idea大量爆红问题解决
问题描述 在学习和工作中,idea是程序员不可缺少的一个工具,但是突然在有些时候就会出现大量爆红的问题,发现无法跳转,无论是关机重启或者是替换root都无法解决 就是如上所展示的问题,但是程序依然可以启动。 问题解决…...

循环冗余码校验CRC码 算法步骤+详细实例计算
通信过程:(白话解释) 我们将原始待发送的消息称为 M M M,依据发送接收消息双方约定的生成多项式 G ( x ) G(x) G(x)(意思就是 G ( x ) G(x) G(x) 是已知的)࿰…...
【解密LSTM、GRU如何解决传统RNN梯度消失问题】
解密LSTM与GRU:如何让RNN变得更聪明? 在深度学习的世界里,循环神经网络(RNN)以其卓越的序列数据处理能力广泛应用于自然语言处理、时间序列预测等领域。然而,传统RNN存在的一个严重问题——梯度消失&#…...

DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI
前一阵子在百度 AI 开发者大会上,看到基于小智 AI DIY 玩具的演示,感觉有点意思,想着自己也来试试。 如果只是想烧录现成的固件,乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外,还提供了基于网页版的 ESP LA…...

【分享】推荐一些办公小工具
1、PDF 在线转换 https://smallpdf.com/cn/pdf-tools 推荐理由:大部分的转换软件需要收费,要么功能不齐全,而开会员又用不了几次浪费钱,借用别人的又不安全。 这个网站它不需要登录或下载安装。而且提供的免费功能就能满足日常…...

处理vxe-table 表尾数据是单独一个接口,表格tableData数据更新后,需要点击两下,表尾才是正确的
修改bug思路: 分别把 tabledata 和 表尾相关数据 console.log() 发现 更新数据先后顺序不对 settimeout延迟查询表格接口 ——测试可行 升级↑:async await 等接口返回后再开始下一个接口查询 ________________________________________________________…...

无人机侦测与反制技术的进展与应用
国家电网无人机侦测与反制技术的进展与应用 引言 随着无人机(无人驾驶飞行器,UAV)技术的快速发展,其在商业、娱乐和军事领域的广泛应用带来了新的安全挑战。特别是对于关键基础设施如电力系统,无人机的“黑飞”&…...

C/C++ 中附加包含目录、附加库目录与附加依赖项详解
在 C/C 编程的编译和链接过程中,附加包含目录、附加库目录和附加依赖项是三个至关重要的设置,它们相互配合,确保程序能够正确引用外部资源并顺利构建。虽然在学习过程中,这些概念容易让人混淆,但深入理解它们的作用和联…...
写一个shell脚本,把局域网内,把能ping通的IP和不能ping通的IP分类,并保存到两个文本文件里
写一个shell脚本,把局域网内,把能ping通的IP和不能ping通的IP分类,并保存到两个文本文件里 脚本1 #!/bin/bash #定义变量 ip10.1.1 #循环去ping主机的IP for ((i1;i<10;i)) doping -c1 $ip.$i &>/dev/null[ $? -eq 0 ] &&am…...