一、项目开发流程

1.项目需求分析:

(1)明确项目的体功能(要明确到底要写什么东西,实现什么功能)

这个阶段的话具体要询问产品经理以及客户(客户对产品的具体需求)

(2)参与人员:

产品经理;开发经理;架构师

1.架构师 开发经理提前构思大致方案

2.引导客户提出合理要求(避免不合理的请求)

3.记录会议内容

(3)技术人员主要职责:

引导客户提出一些比较合理,比较容易实现的需求。

2.项目架构设计:

(1)明确项目的核心技术点

项目使用的编程语言;

项目使用的框架;

项目所使用的数据库;

项目报价

(2)参与人员:

架构师

3.项目分组开发:

(1)明确每个组每个人具体到写该项目的哪些功能

(2)参与人员:

架构师;开发经理;普通程序员

4.项目提交测试:

(1)程序员自己本身写完自测以及交付测试小组测试(错的太多可能会扣绩效)

(2)参与人员:

普通的程序员;测试小组

5.项目交付上线:

(1)参与人员:

运维工程师

(2)可以直接把项目交给客户帮客户定期维护

"""

小公司:成长速度特别快 但是压力非常大

大公司:履历好看 福利待遇好 较为安逸

"""

二、项目需求分析

1.主题

主题是带大家快速如门python直至开发一个ATM+购物车系统,ATM的实现类似于银行自助提款机核心业务,购物车的实现类似于淘宝商城购物系统。

2.项目核心

项目的核心不仅在于引领初学者快速入门python项目开发,更是站在项目架构的角度教你如何在程序开发之初合理且优雅地设计程序的架构,从而极大地提升程序的开发效率与可扩展性。

3.项目需求:

额度15000或自定义

支持多账户登录

可以查看账户余额

可以提现(可自定义手续费比例)

提供还款接口

支持账户间转账

记录每月日常消费流水

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

提供管理接口,包括添加账户、用户额度,冻结账户等

ATM记录操作日志

用户认证功能

4.从需求中提炼出项目的核心功能

用户注册

用户登录

查看余额

账户提现

充值功能

转账功能

查看账单

购物车功能

管理员功能

5.从功能中在提炼出核心技术点

python核心语法

python诸多模块

装饰器知识

三、项目架构设计(重点)

1.架构前拓展

编写代码的改进历程:

(1)代码直接写在一个文件里面,采用面条版堆积;

(2)将有些具体的功能采用函数封装;

上述两个阶段类似于小公司,一个员工身兼数职

(3)讲不同的功能拆分到不同的文件

上述阶段类似于大公司 工具职责划分部门 每个员工只干该岗位的具体事宜

敲重点:拆分的目的是为了更好的管理资源和代码,提升程序的扩展性。

2.项目架构(重要)

(1)百度

以用户登录为例:

浏览器页面获取用户名和密码;

基于网络将用户名和密码发送给百度服务器;

服务端去数据库中校验用户数据。

三层架构:

浏览器;服务端;数据库

(2)淘宝

以购买商品为例:

浏览器页面展示商品总价;

基于网络将购买商品的操作发送给服务端做核心校验;

之后操作相应数据库完成数据修改。

三层架构:

浏览器;服务端;数据库

3.三层架构

(1)用户层

只做数据展示,数据获取功能

cmd窗口可以充当用户层

将来可以替换成浏览器或者app

(2)核心逻辑层

业务逻辑(真正的核心业务逻辑处理(代码))

某个py文件充当逻辑层

将来可以替换成软件开发目录规范或者现成的框架

(3)数据层

数据的增删改查

json文件充当数据库

可以替换成数据库程序

ATM架构设计
三层架构
core目录下的src.py(浏览器)
interface目录下的多个py文件(框架)
db目录下db_handler.py(数据库服务)

四、项目目录搭建

1.第一层

core文件夹

src.py文件充当第一层

2.第二层

iinterface文件 充当第二层

根据业务逻辑的不同再次拆分便于后期维护管理

user_interface.py

bank_interface.py

shop_interface.py

admin_interface.py

3.第三层

后续通过代码动态创建,或者直接创建db文件夹

五、项目功能搭建

1.注册

2.登陆

3.查看余额

4.提现

5.还款

6.转账

7.查看流水

8.添加购物车功能

9.查看购物车功能

10.结算购物车功能

11.管理员功能

ATM项目开发的更多相关文章

  1. ATM系统开发(Java版)

    ATM系统开发 技术点分析 1.面向对象编程 每个用户的账户都是一个对象,所以需要设计账户类Accent用于创建账户对象封装账户信息. 2.使用集合容器 系统需要提供一个容器用于存储这些账户对象的信息 ...

  2. Python基础之模块:7、项目开发流程和项目需求分析及软件开发目录

    一.项目开发流程 1.项目需求分析 明确项目具体功能: 明确到底要写什么东西,实现什么功能,在这个阶段的具体要询问项目经理和客户的需求 参与人员: 产品经理.架构师.开发经理 技术人员主要职责: 引导 ...

  3. Android快乐贪吃蛇游戏实战项目开发教程-01项目概述与目录

    一.项目简介 贪吃蛇是一个很经典的游戏,也很适合用来学习.本教程将和大家一起做一个Android版的贪吃蛇游戏. 我已经将做好的案例上传到了应用宝,无病毒.无广告,大家可以放心下载下来把玩一下.应用宝 ...

  4. HTML+CSS项目开发总结

    好几天没更新博客了,刚实战完一个HTML+CSS的简单项目.经过几天的摸索,发现收益良多.之前只是单纯得写demo,看知识点,没有亲自实战项目.但实战过后才会了解,如何才能更好地提升自己的技术.针对这 ...

  5. 简历生成平台项目开发-STEP2问卷调查结果统计分析

    根据之前设计的调查问卷,截止目前为止,一共收到64份问卷结果.一共16题,分别从基本信息.是否对简历制作有需要.对产品期望的特点和建议采纳四个方面设计问题.下面逐题分析问卷结果: 1.您的性别 可以看 ...

  6. 如何使用Worktile进行敏捷项目开发管理

    Worktile在任务管理上采用了看板视图,非常适合进行敏捷项目开发管理.事实上,在开发Worktile的过程中,我们也是自产自销,使用Worktile管理Worktile本身的开发过程,在本文中跟大 ...

  7. Java进击C#——项目开发环境

    本章简言 上一章我们了解一下开发环境,知道了什么去新建一个项目工程.却并没有去项目工程进行介绍.可是之后我们会常常跟项目工程打交道.所以这章笔者就对项程工程的常用的一些功能进行讲解.当然说全面那是不可 ...

  8. 关于举办 2015年 Autodesk 助力云应用项目开发活动通知

    各位尊敬的Autodesk 合作伙伴,大家好! 相信您在过去的一年里应该对Autodesk最新的云服务技术有所了解,您是不是曾经闪现过一些很好的想法,却由于不确定是否真实可行,或担心没有技术支持来帮助 ...

  9. .NET程序员项目开发必知必会—Dev环境中的集成测试用例执行时上下文环境检查(实战)

    Microsoft.NET 解决方案,项目开发必知必会. 从这篇文章开始我将分享一系列我认为在实际工作中很有必要的一些.NET项目开发的核心技术点,所以我称为必知必会.尽管这一系列是使用.NET/C# ...

  10. [转]基于Starling移动项目开发准备工作

    最近自己趁业余时间做的flash小游戏已经开发得差不多了,准备再完善下ui及数值后,投放到国外flash游戏站.期间也萌生想法,想把游戏拓展到手机平台.这两天尝试了下,除去要接入ane接口的工作,小游 ...

随机推荐

  1. 有依赖的背包问题(Acwing 10)

    1 # include<iostream> 2 # include<cstring> 3 # include<algorithm> 4 using namespac ...

  2. ArchLinux安装手册(2022-10-01)

    准备工作 镜像下载:北京外国语大学镜像 使用ventoy做启动盘: (1) ventoy下载:github下载地址 (2) 解压运行下载好的ventoy,设备选择准备好的U盘(会清空),然后选择安装即 ...

  3. Vue3 企业级优雅实战 - 组件库框架 - 5 组件库通用工具包

    该系列已更新文章: 分享一个实用的 vite + vue3 组件库脚手架工具,提升开发效率 开箱即用 yyg-cli 脚手架:快速创建 vue3 组件库和vue3 全家桶项目 Vue3 企业级优雅实战 ...

  4. yum的$releaser与$basearch

    最近配置centos 的yum 源时,想要配置一个通配的yum源,注意到发行的网络yum源的url地址中通常有两个变量 https://vault.centos.org/$releaser/cloud ...

  5. 基于python的数学建模---运输问题

    代码 import pulp import numpy as np from pprint import pprint def transport_problem(costs, x_max, y_ma ...

  6. 使用 Bytebase 管理 Rainbond 上的应用数据库

    在应用的发布过程中数据库的结构变更一直是最复杂也是风险最大的环节,而 Bytebase 可以对这一过程进行全生命周期的管理.在 Rainbond 中安装 Bytebase,轻松管理部署在 Rainbo ...

  7. Vue 双向绑定数据已经更新,但是视图更新:

    使用ElementUI做动态增减表单项的时候,发现数据刷新后视图未更新 Vue包装了数个数组操作函数,使用这些方法操作的数组去,其数据变动时会被vue监测: push() pop() shift() ...

  8. 数电第一周总结_by_yc

    数电第一周总结 重点:Verilog建模方式 结构级建模: 需基于电路原理图 module mux( input data0, input data1, input sel, output out); ...

  9. 【Java SE进阶】Day02 Collection、Iterator、泛型

    一.Collection集合 1.概述 数组存元素,集合存对象(类型可以不一样) 2.框架分类 单列:Collection List ArrayList LinkedList Set HashSet ...

  10. week_3

    Andrew Ng机器学习笔记 Week_3 -- -Logistic Regression This week, we'll be covering logistic regression. Log ...