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

出口业务订单管理系统—— 搞定外贸接单

出口业务订单管理系统—— 搞定外贸接单

前言

这篇带你从零看懂一个紧扣外贸实际场景的出口订单管理系统,面向对象 + JSON持久化 + 状态机


一、基本版 6 大功能一览

序号功能出口业务关联技术要点
1出口客户管理国外买家档案增、查、列表
2出口产品管理HS 编码(报关必备)增、查、列表,含美元单价
3出口订单管理外贸合同核心含 FOB/CIF 贸易术语 + T/T L/C 付款方式
4订单状态追踪跟单流程5 阶段可视化进度条(▓●░)
5出口收汇管理收款对账登记收款,自动计算待收/已收
6JSON 持久化数据留存to_dict / from_dict 序列化模式

二、核心架构 —— 三层分离

┌─────────────────────────────────────┐ │ main() 控制器 │ │ 登录 → 菜单 → 分发 → 循环 │ └──────┬──────────┬──────────┬─────────┘ │ │ │ ┌────▼───┐ ┌───▼────┐ ┌──▼──────┐ │Customer│ │Product │ │Order │ ← 数据模型层 (Model) │Manager │ │Manager │ │Manager │ └────┬───┘ └───┬────┘ └──┬──────┘ │ │ │ ┌────▼─────────▼─────────▼──────┐ │ JSON 文件持久化 │ ← 存储层 │ customers.json products.json│ │ orders.json payments.json│ └───────────────────────────────┘

设计思想:数据模型(类)只管"是什么",Manager(管理类)管"怎么操作",main() 管"流程控制"。修改菜单不影响数据,改数据不影响菜单——这就是面向对象的"关注点分离"。


三、四个数据模型

3.1 Customer —— 出口客户

classCustomer:def__init__(self,cid,name,country,contact="",email=""):self.customer_id=cid# 编号self.name=name# 客户名称self.country=country# 所在国家(出口必需)self.contact=contact# 联系人self.email=email# 邮箱

出口特色country字段不是摆设——出口到不同国家涉及不同的关税政策、物流成本。

3.2 Product —— 出口产品(含 HS 编码)

classProduct:def__init__(self,pid,name,hs_code,unit,unit_price_usd):self.product_id=pid self.name=name self.hs_code=hs_code# 海关商品编码 ⭐self.unit=unit# 计量单位self.unit_price_usd=unit_price_usd# 美元单价

出口特色hs_code(Harmonized System Code)是出口报关的必备字段,每类产品有唯一的 8-10 位编码。这是本系统和普通进销存系统的本质区别。

3.3 Order —— 出口订单(核心模型)

classOrder:def__init__(self,oid,customer_name,product_name,quantity,unit_price,amount_usd,trade_term,payment_term,status="待确认"):self.trade_term=trade_term# FOB / CIF / CFR / EXWself.payment_term=payment_term# T/T / L/C / D/Pself.status=status# 状态(5阶段)self.history=[]# 状态变更记录

出口特色

  • trade_term:贸易术语决定谁付运费保险费——FOB(卖方送到船上)、CIF(卖方包运费保险费送到目的港)
  • payment_term:T/T 是电汇(最常用),L/C 是信用证(金额大时用)
  • history:记录每次状态变更的人和时间,可以追溯"谁在什么时候把订单从待发货改成了已发货"

3.4 Payment —— 出口收汇

classPayment:def__init__(self,pid,order_id,amount_usd,ptype="预付款"):self.payment_id=pid self.order_id=order_id# 关联哪个订单self.amount_usd=amount_usd# 收款金额(美元)self.ptype=ptype# 预付款 / 尾款 / 全额

出口特色:出口贸易通常分两次收款——签约时收 30% 预付款,发货后收 70% 尾款。我们的系统用ptype区分这两种。


四、to_dict / from_dict —— 数据存取的标准模式

每个模型都实现了这两个方法,这是本系统的灵魂设计

# 保存:对象 → 字典 → JSON文件defto_dict(self):returnself.__dict__.copy()# 读取:JSON文件 → 字典 → 对象@staticmethoddeffrom_dict(d):returnCustomer(d["customer_id"],d["name"],d.get("country",""),d.get("contact",""))

为什么这么做?

对比好处
不用 to_dict()每次存数据要手动拼字段,容易漏
不用 from_dict()JSON 读出来是字典,操作起来不直观
用这套模式存和取都是一行代码,将来换数据库只改这两个方法

五、5 阶段状态机 —— 订单只能按流程走

STATUS_LIST=["待确认","生产中","待发货","已发货","已完成"]defchange_status(self,new_status,operator="管理员"):ifnew_statusnotinSTATUS_LIST:returnFalse# 不合法的状态,拒绝self._log(new_status,operator)# 记录谁在什么时候改的self.status=new_statusreturnTrue

状态进度条展示

状态进度:[▓▓░░░] 流程节点:待确认 → 生产中 → 待发货 → 已发货 → 已完成 当前状态:生产中
  • = 已完成阶段(已过"待确认",正在"生产中")
  • = 当前阶段
  • = 未完成阶段

一行代码搞定进度条

bar="".join("▓"ifi<idxelse("●"ifi==idxelse"░")foriinrange(5))

六、订单创建 —— 系统核心交互流程

defcreate(self):# 1. 选客户(先展示所有客户)self.cust_mgr.show()cid=input("客户编号:").strip()# 2. 选产品(先展示所有产品,含 HS 编码)self.prod_mgr.show()pid=input("产品编号:").strip()# 3. 输入数量qty=int(input(f"数量({prod.unit}):"))# 4. 贸易术语 + 付款方式(出口特有字段)trade=input("贸易术语(FOB/CIF/CFR/EXW):").upper()or"FOB"pay=input("付款方式(T/T/L/C/D/P):").upper()or"T/T"# 5. 生成订单号 + 保存oid=gen_id("ORD",self.data)self.data[oid]=Order(oid,cust.name,prod.name,qty,uprice,amount,trade,pay)self.save()

交互设计巧思

  • 先展示后选择:不要求用户记住编号,降低操作门槛
  • 默认值兜底or "FOB"直接回车就选默认值
  • 防御性验证:get() 代替 [],客户不存在返回 None 而不是崩溃

七、JSON 持久化 —— 关程序数据不丢

defsave_json(filename,data):ensure_dir()withopen(os.path.join(DATA_DIR,filename),"w",encoding="utf-8")asf:json.dump(data,f,ensure_ascii=False,indent=2)
  • ensure_ascii=False:中文客户名不会变成乱码
  • indent=2:JSON 文件格式化,人工也能直接看懂
  • ensure_dir():首次运行自动创建 data 文件夹

每次操作完立即调save(),确保关了程序再打开数据还在。


八、运行演示

# 直接运行,无需 pip install 任何东西python 出口订单管理系统.py
账号:admin 密码:123456 ================================================== │ 1.客户管理 2.产品管理 3.创建订单 4.查询订单 │ │ 5.变更状态 6.订单列表 7.登记收款 8.收款记录 │ │ 0.退出 │ ==================================================

十、总结

这个系统虽然只有 280 行,但麻雀虽小五脏俱全:

  • 面向对象的三层架构
  • JSON 序列化的标准模式
  • 状态机的流程控制
  • 防御性输入验证
  • 紧扣出口业务的字段设计
http://www.jsqmd.com/news/1022520/

相关文章:

  • MYD1蛋白详解
  • 国产信号隔离器十大品牌排名 - 仪表人小余
  • 2026凉山当地贵金属回收权威名录 TOP5 黄金金条铂金白银回收线下门店信息汇总 - 信誉隆金银铂奢回收
  • 2026 上海黄金回收门店避坑指南:耀辉官方电话与服务指引 - 奢侈品回收
  • 亨得利南京手表动力储存不足维修全攻略:2026年5月深度探店实录,劳力士/欧米茄/浪琴/百达翡丽用户必看避坑指南 - 亨得利腕表维修中心
  • Klipper终极配置指南:如何让3D打印机性能翻倍
  • 2026年6月最新杭州装修公司综合实力TOP10榜单与行业竞争格局分析 - 资讯速览
  • 2026普洱当地贵金属回收权威名录 TOP5 黄金金条铂金白银回收线下门店信息汇总 - 信誉隆金银铂奢回收
  • 深入理解 Go 协程 Goroutine:并发编程的核心精髓
  • 用机器学习检测选举数据异常:可解释异常检测实战
  • 2026人像抠图换背景工具保姆级教程,手把手教你快速抠图换底 - AI测评专家
  • 推荐河南有实力的数据合规律师事务所 - 品牌推广大师
  • 第七章 面向对象
  • 2026上海旧金铂金白银回收高信赖门店 TOP 线下实体商家电话与门店地址一览 - 诚金汇钻回收公司
  • Python io模块缓冲区策略解析
  • 2026济宁建筑工程材料检测 CMA 机构哪家强?TOP 正规检测中心榜单 + 电话地址 - 中检检测集团
  • 2026龙岩建筑工程材料检测 CMA 机构哪家强?TOP 正规检测中心榜单 + 电话地址 - 中检检测集团
  • wx-charts:微信小程序专业图表库的技术架构与应用实践
  • Rust 借用检查器深入理解:从编译错误到所有权心智模型
  • DeepSeek LeetCode 3256. 放三个车的价值之和最大 I Rust实现
  • 2026兴安盟旧金铂金白银回收高信赖门店 TOP 线下实体商家电话与门店地址一览 - 诚金汇钻回收公司
  • 独热编码原理与工程实践:分类变量特征工程全解析
  • 互驯纪元:当城市与汽车在晨光中学会彼此呼吸
  • 从像素中挖掘隐藏信息:LSB隐写与数字取证实战解析
  • 2026陇南商户高频选择的 5 家公共卫生第三方检测机构实地测评整理 公共场所 + 水质卫生检测 附电话地址 - 鉴安检测
  • 四川平头钻尾丝厂家众多,该如何选择合适的呢? - 资讯速览
  • 周一上线|瑞幸把咖啡做进 CLI,Fable 5 短暂登场,Stonk Rider 骑上 K 线图 - 小七
  • 2026佳木斯商户高频选择的 5 家公共卫生第三方检测机构实地测评整理 公共场所 + 水质卫生检测 附电话地址 - 鉴安检测
  • Genymotion ARM Translation:解决Android模拟器ARM兼容性问题的完整指南
  • 珠海香洲黄金回收避坑指南:行情波动下如何安全变现 - 专业黄金回收