当前位置: 首页 > news >正文

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 程序可以认为是一系列对象的集合,而这些对象通过调用彼此的方法来协同工作。下面简要介绍下类、对象、方法和实例变量的概念。 对象:对象是类的一个实例,有状态和行为。例如,一条狗是一个对象&#xff…...

Vue2 组件基础使用、父子组件之间的传值

一、什么是组件如画红框的这些区域都是由vue里的各种组件组成、提高复用信通常一个应用会以一棵嵌套的组件树的形式来组织:例如,你可能会有页头、侧边栏、内容区等组件,每个组件又包含了其它的像导航链接、博文之类的组件。为了能在模板中使用…...

代码随想录算法训练营 || 贪心算法 122 55 45

Day28122.买卖股票的最佳时机II力扣题目链接给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易…...

数据结构基础之栈和队列

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

【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&#xff0c…...

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…...

7.4.分块查找

一.分块查找的算法思想: 1.实例: 以上述图片的顺序表为例, 该顺序表的数据元素从整体来看是乱序的,但如果把这些数据元素分成一块一块的小区间, 第一个区间[0,1]索引上的数据元素都是小于等于10的, 第二…...

CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型

CVPR 2025 | MIMO:支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题:MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者:Yanyuan Chen, Dexuan Xu, Yu Hu…...

边缘计算医疗风险自查APP开发方案

核心目标:在便携设备(智能手表/家用检测仪)部署轻量化疾病预测模型,实现低延迟、隐私安全的实时健康风险评估。 一、技术架构设计 #mermaid-svg-iuNaeeLK2YoFKfao {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg…...

通过Wrangler CLI在worker中创建数据库和表

官方使用文档:Getting started Cloudflare D1 docs 创建数据库 在命令行中执行完成之后,会在本地和远程创建数据库: npx wranglerlatest d1 create prod-d1-tutorial 在cf中就可以看到数据库: 现在,您的Cloudfla…...

无法与IP建立连接,未能下载VSCode服务器

如题,在远程连接服务器的时候突然遇到了这个提示。 查阅了一圈,发现是VSCode版本自动更新惹的祸!!! 在VSCode的帮助->关于这里发现前几天VSCode自动更新了,我的版本号变成了1.100.3 才导致了远程连接出…...

【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表

1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...

视频字幕质量评估的大规模细粒度基准

大家读完觉得有帮助记得关注和点赞!!! 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用,因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型(VLMs)在字幕生成方面…...

论文笔记——相干体技术在裂缝预测中的应用研究

目录 相关地震知识补充地震数据的认识地震几何属性 相干体算法定义基本原理第一代相干体技术:基于互相关的相干体技术(Correlation)第二代相干体技术:基于相似的相干体技术(Semblance)基于多道相似的相干体…...

vue3 daterange正则踩坑

<el-form-item label"空置时间" prop"vacantTime"> <el-date-picker v-model"form.vacantTime" type"daterange" start-placeholder"开始日期" end-placeholder"结束日期" clearable :editable"fal…...