当前位置: 首页 > 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.gsyq.cn/news/1534381.html

相关文章:

  • 2026年6月最新杭州装修公司综合实力TOP10榜单与行业竞争格局分析 - 资讯速览
  • 2026 上海黄金回收门店避坑指南:耀辉官方电话与服务指引 - 奢侈品回收
  • 2026人像抠图换背景工具保姆级教程,手把手教你快速抠图换底 - AI测评专家
  • 2026龙岩建筑工程材料检测 CMA 机构哪家强?TOP 正规检测中心榜单 + 电话地址 - 中检检测集团
  • 2026上海旧金铂金白银回收高信赖门店 TOP 线下实体商家电话与门店地址一览 - 诚金汇钻回收公司
  • wx-charts:微信小程序专业图表库的技术架构与应用实践
  • 从像素中挖掘隐藏信息:LSB隐写与数字取证实战解析
  • 互驯纪元:当城市与汽车在晨光中学会彼此呼吸
  • Genymotion ARM Translation:解决Android模拟器ARM兼容性问题的完整指南
  • 2026陇南商户高频选择的 5 家公共卫生第三方检测机构实地测评整理 公共场所 + 水质卫生检测 附电话地址 - 鉴安检测
  • 世界地理数据宝库:如何用Geo-JSON快速启动你的地图项目
  • 【Claude Code】OAuth token revoked expired 令牌失效 + /logout /login 修复
  • 2026庆阳当地贵金属回收权威名录 TOP5 黄金金条铂金白银回收线下门店信息汇总 - 信誉隆金银铂奢回收
  • 2026开封当地贵金属回收权威名录 TOP5 黄金金条铂金白银回收线下门店信息汇总 - 信誉隆金银铂奢回收
  • RePKG:数字资产解放者如何重塑创意工作流?
  • 广州劳力士回收店铺评测:报价透明、不拆机、当场打款的3家 - 奢侈品回收评测
  • 2026年06月从石材种类到报价的筛选方法看杭州奢石工厂怎么选? - 小李说家居
  • 元宝 LeetCode 3257. 放三个车的价值之和最大 II Java实现
  • 2026吴忠旧金铂金白银回收高信赖门店 TOP 线下实体商家电话与门店地址一览 - 诚金汇钻回收公司
  • 2026淮南商户高频选择的 5 家公共卫生第三方检测机构实地测评整理 公共场所 + 水质卫生检测 附电话地址 - 鉴安检测
  • SQL多列更新:一次原子操作的性能与一致性实践
  • Qwen3:可调度智能决策系统与MoE架构演进
  • 珠海斗门区金价高位,卖金变现时机与渠道攻略 - 上门黄金回收
  • 2026钦州旧金铂金白银回收高信赖门店 TOP 线下实体商家电话与门店地址一览 - 诚金汇钻回收公司
  • ByteDexter 全维度硬件参数+内核汇编源码+完整驱动工程代码+安全风控源码
  • 如何在3分钟内快速上手Spek音频频谱分析器:免费开源解决方案
  • 2026平顶山旧金铂金白银回收高信赖门店 TOP 线下实体商家电话与门店地址一览 - 诚金汇钻回收公司
  • 辽阳全城贵金属回收优选门店 TOP5 黄金回收铂金回收白银回收正规商家地址汇总 - 中安检金银铂钻回收
  • MiniMax M2.7:面向软件工程的AI操作系统实战指南
  • OpenClaw免费AI工作流:模型路由、配额管理与合规调用实战