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,…...
【解密LSTM、GRU如何解决传统RNN梯度消失问题】
解密LSTM与GRU:如何让RNN变得更聪明? 在深度学习的世界里,循环神经网络(RNN)以其卓越的序列数据处理能力广泛应用于自然语言处理、时间序列预测等领域。然而,传统RNN存在的一个严重问题——梯度消失&#…...
c++ 面试题(1)-----深度优先搜索(DFS)实现
操作系统:ubuntu22.04 IDE:Visual Studio Code 编程语言:C11 题目描述 地上有一个 m 行 n 列的方格,从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子,但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...
使用van-uploader 的UI组件,结合vue2如何实现图片上传组件的封装
以下是基于 vant-ui(适配 Vue2 版本 )实现截图中照片上传预览、删除功能,并封装成可复用组件的完整代码,包含样式和逻辑实现,可直接在 Vue2 项目中使用: 1. 封装的图片上传组件 ImageUploader.vue <te…...
 
视频字幕质量评估的大规模细粒度基准
大家读完觉得有帮助记得关注和点赞!!! 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用,因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型(VLMs)在字幕生成方面…...
解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错
出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上,所以报错,到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本,cu、torch、cp 的版本一定要对…...
CRMEB 框架中 PHP 上传扩展开发:涵盖本地上传及阿里云 OSS、腾讯云 COS、七牛云
目前已有本地上传、阿里云OSS上传、腾讯云COS上传、七牛云上传扩展 扩展入口文件 文件目录 crmeb\services\upload\Upload.php namespace crmeb\services\upload;use crmeb\basic\BaseManager; use think\facade\Config;/*** Class Upload* package crmeb\services\upload* …...
【Java学习笔记】BigInteger 和 BigDecimal 类
BigInteger 和 BigDecimal 类 二者共有的常见方法 方法功能add加subtract减multiply乘divide除 注意点:传参类型必须是类对象 一、BigInteger 1. 作用:适合保存比较大的整型数 2. 使用说明 创建BigInteger对象 传入字符串 3. 代码示例 import j…...
 
C++:多态机制详解
目录 一. 多态的概念 1.静态多态(编译时多态) 二.动态多态的定义及实现 1.多态的构成条件 2.虚函数 3.虚函数的重写/覆盖 4.虚函数重写的一些其他问题 1).协变 2).析构函数的重写 5.override 和 final关键字 1&#…...
 
【JVM面试篇】高频八股汇总——类加载和类加载器
目录 1. 讲一下类加载过程? 2. Java创建对象的过程? 3. 对象的生命周期? 4. 类加载器有哪些? 5. 双亲委派模型的作用(好处)? 6. 讲一下类的加载和双亲委派原则? 7. 双亲委派模…...
 
三分算法与DeepSeek辅助证明是单峰函数
前置 单峰函数有唯一的最大值,最大值左侧的数值严格单调递增,最大值右侧的数值严格单调递减。 单谷函数有唯一的最小值,最小值左侧的数值严格单调递减,最小值右侧的数值严格单调递增。 三分的本质 三分和二分一样都是通过不断缩…...
