项目流程
新建项目名字文件夹 ———>新建redme
1.项目说明书
2.项目:ATM和购物车
- 额度 15000或自定义(注册功能)
- 实现购物商城,买东西加入 购物车,调用信用卡接口结账
- 可以提现,手续费5%(提现功能)
- 每月22号出账单,每月10号为还款日,过期未还,按欠款总额 万分之5 每日计息()
- 支持多账户登录(登录功能)
- 支持账户间转账(转账功能)
- 记录每月日常消费流水(记录流水)
- 提供还款接口(还款功能)
- ATM记录操作日志 (日志记录)
- 提供管理接口,包括添加账户、用户额度,冻结账户等。。。(管理员功能)
- 用户认证用装饰器(登录认证装饰器)
用户视图层
1.注册功能
2.登录功能
3.查看余额
4.提现功能
5.还款功能
6.转账功能
7.查看流水
8.购物功能
9.查看购物车
10.管理员功能
一个项目是如何从无到有的
一、需求分析
1.拿到项目,会先在客户那边一起讨论需求,商量价格 周期和时间 拿到一个需求文档
2.最后再公司内部开一次会最终得到一个开发文档
————UI界面设计:
——设计软件的布局,会分局软件的外观切成一张张图片
————python:后端 爬虫
———前端:
——拿到ui交给他的图片 然后去搭建网页面
——设计一些网页,哪些位置需要接受数据 需要进行数量交互
———后端:
——核心的业务逻辑,调度数据库进行数据的增删查改
———测试:
——会给代码进行全面测试,比如压力测试、界面测试(CF卡顿)
———运维:
——搭建项目架构
二、程序的架构设计
1.程序设计的好处(思路清晰、不会出现写一半代码时推翻重写、方便自己或以后的同 事更好维护 )
2.如果用户更换不同的用户界面或不同的的数据存储机制都不会影响接口层的核心逻辑代码。扩展性强
3.可再接口层准确记录日志和流水
redmi到此为止
创建新的文件 ccre---->src.py用户视图层
1.注册功能
#面条版
def register():
while True:
#1.让用户视图用户名与密码进行校验
username=input('请输入用户名:').strip()
password=input('请输入密码:').strip()
re_pssword=input('请确认密码:').strip()
#小的逻辑处理:比如两次密码是否一致
if password=re_password:
#接受到注册之后的结果并且打印
#2.查看用户是否存在
#3.若用户不存在 则保存用户信息
def register_interface():
user_dic={
'username':username,
'password':password,
'balance':15000,
#用于记录用户流水的列表
'flow':[],
#用于记录用户的购物车
'shop_car':{}
#locked:用于记录用户是否被冻结
#false:未冻结 true:已被冻结
'loked':false
}
import json
import os
from conf import settings
#存不上目的 目的是为了更方便的取数据
#文件名:用户名。json tank.json 矮跟.json
#拼接用户的json文件路径
user_path=os..path.join(
settings.USER_DATA_PATH,f'{username}.json'
)
with open('user_db.json','w',encoding='utf-8')as f:
json.dump(user_dir,f)
2.登录功能
def login():
#登录视图
3.查看余额
@common.login_auth
def check_balance() :
#1.直接调用查看余额接口,获取用户余额
balance=user_interface.check_bal_interface(
login_user
)
print('f'用户{login_user}账户余额为:{balance}')
4.提现功能
@common.login_auth
def withdraw() :
while True:
#1.让用户输入提现金额
input_money=input('请输入提现金额:').strip()
#2.判断用户输入的金额是否是数字
if not input_money.isdigit():
print('请重新输入')
continue
#3.用户提现金额,将提现的金额交付给接口层来处理
flag,msg=bank_interface.withdraw_interface(
login_user,input_money
)
if flag:
print(msg)
break
else:
print(msg)
5.还款功能
@common.login_auth
def repay() :pass
6.转账功能
@common.login_auth
def transfer() :pass
7.查看流水
@common.login_auth
def check_flow() :pass
8.购物功能
@common.login_auth
def shopping() :pass
9.查看购物
@common.login_auth
def check_shop_car() :pass
10.管理员功能
def (admin) :pass
#创建函数功能字典
func_dic={
'1':register,
'2':login,
'3':check_balance,,
'4':witdrsw,
'5':repay,
'6':transfer,
'7':check_flow,
'8':shopping,
'9':check_shop_car,
'10':admin,
}
视图层主程序---》
def run():
while True:
print('''
=====ATM+购物车=====
1.注册功能
2.登录功能
3.查看余额
4.提现功能
5.还款功能
6.转账功能
7.查看流水
8.购物功能
9.查看购物车
10.管理员功能
=======end=======
''')
choice=input('请输入功能编号:‘).strip()
if choice not in func_dic:
print('请输入正确的功能编号!‘)
continue
func_dic.get(choice)#func_dic.get('1')()--->register()
视图层到此为止 只要再src里面的都是视图层里面的
interface--->user_interface.py 逻辑接口层 用户接口
---> bank_interface.py 银行相关业务接口
from db import
#提现接口()手续费5%)
def withdraw_interface(username,money):
#1.先获取用户字典
user_dic=db_hanler.select(usrname)
#校验用户的钱是否足够
balance=int(user_dic.get('balance'))
money=int(money)*1.05
#判断用户金额是否足够
if balance>=money2:
#2.修改用户字典中的金额
balance-=money2
user_dic['balance']=balance
#3.再保存数据或者更新数据
db_handler.save(user_dic)
return Teue,f'用户[{username}]提现金额[{money}$]成功,手续费为:[{money2-money}$]
-->shop_interface.py 购物商城接口
db ---->db_handler.py 数据处理层 专门用于处理数据的
import json
import os
from conf import settings
#查看数据
def select(username):
#1.接受接口层传过来的username用户名 拼接好、用户json文件路径
user_path=os..path.join(
settings.USER_DATA_PATH,f'{username}.json'
)
#2.校验用户json是否存在
if os.path.exists(user_path)
#:3.打开数据 并返回给接口层
with open('user_path','w',encoding='utf-8')as f:
user_dic=json.load(f)
不return 默认返回none
wter_data 存放配置信息
import os
#获取项目根目录路径
BASE_PATH=os.path.join(
os.path.dirname(__file__)
)
#获取user——data文件夹目录路径
USER_DATA_PATH=os.path.join(
BASE_PATH,‘db‘,'user_data'
)
#print(USER_DATA_PATH)
iog(日志)
#start 程序的入口
import sys
import os
#添加解释器的环境变量
sys.path.append(
os.path.dirname(__file__)
)
开始执行项目函数
if_name_=='__main__':
#md5加密
import hashib
def get_pwd_md5(psaaword):
md5_obj=hashib.md5()
md5_obj.update(password.encode('utf-8'))
salt='一二三四五,猪猪上山打老鼠!'
md5_obj.update(salt.encode('utf-8'))
return md5_obj.hexdigest()
#登录认证装饰器
def login_auth(func):
from core import src
def inner(*args,**kwargs):
if src.login_user:
res=func(*args,**kwargs):
return res
else:
print('未出示证明,无法享受功能服务')
src.login()
return inner
三、分任务开发
四、测试
五、上线
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南