需求分析.md 9.2 KB

地磅称重打印软件 - 需求分析文档

1. 项目概述

1.1 项目背景

开发一款地磅称重打印软件,用于记录地磅称重数据并支持打印功能。软件需要能够独立运行在Windows系统上,无需额外安装依赖。

1.2 项目目标

  • 实现地磅单的录入、保存、查询功能
  • 支持地磅单的打印输出
  • 提供基础数据维护功能(公司名称、货物名称)
  • 打包成独立的exe文件,便于部署和使用

2. 功能需求分析

2.1 地磅单管理模块(Tab 1)

2.1.1 地磅单填写模块

功能描述:提供地磅单信息录入界面

输入字段:

  • 车号(必填)
  • 计划号(可选)
  • 货物名称(必填,从下拉列表选择)
  • 业务类型(必填,单选:销售/采购)
  • 批号(可选)
  • 供货单位(必填,从下拉列表选择)
  • 收货单位(必填,从下拉列表选择)
  • 毛重(t)(必填,数值)
  • 毛重时间(必填,日期时间)
  • 皮重(t)(必填,数值)
  • 皮重时间(必填,日期时间)
  • 扣杂(t)(可选,数值,默认0)
  • 计划量(t)(可选,数值)
  • 已执行量(t)(可选,数值)
  • 备注(可选,文本)

计算字段:

  • 净重(t)= 毛重 - 皮重 - 扣杂(自动计算,只读)

功能操作:

  • 保存:将地磅单数据保存到数据库
  • 清空:清空所有输入字段
  • 自动填充:毛重时间、皮重时间默认填充当前时间

界面要求:

  • 占据较大空间,方便填写(建议占据Tab页面60-70%的空间)
  • 字段布局清晰,易于操作
  • 必填字段需要标识(红色星号*)

2.1.2 地磅单记录列表

功能描述:显示已保存的地磅单记录

显示字段:

  • 序号
  • 车号
  • 货物名称
  • 业务类型
  • 净重(t)
  • 毛重时间
  • 操作按钮(查看详情、打印、作废)

功能操作:

  • 查看详情:以只读方式显示完整的地磅单信息
  • 打印:打印当前地磅单(格式参考称重样例.png)
  • 作废:标记地磅单为作废状态(软删除,保留数据但标记为已作废)
  • 列表刷新:保存新记录后自动刷新列表
  • 列表排序:按毛重时间倒序排列(最新的在前)

界面要求:

  • 列表占据下方空间(建议占据Tab页面30-40%的空间)
  • 支持滚动查看
  • 作废的记录需要特殊标识(如灰色显示)

2.2 公司名称维护模块(Tab 2)

功能描述:维护供货单位和收货单位的公司名称数据

功能操作:

  • 新增:添加新的公司名称
    • 输入:公司名称(必填,不能重复)
    • 保存到数据库
  • 修改:编辑已有公司名称
    • 选择记录,修改公司名称
    • 保存修改
  • 删除:删除公司名称
    • 删除前需要检查是否被地磅单引用
    • 如果被引用,提示不能删除
    • 如果未被引用,确认后删除

界面要求:

  • 列表显示所有公司名称
  • 提供新增、修改、删除按钮
  • 操作简单直观

2.3 货物名称维护模块(Tab 3)

功能描述:维护货物名称数据

功能操作:

  • 新增:添加新的货物名称
    • 输入:货物名称(必填,不能重复)
    • 保存到数据库
  • 修改:编辑已有货物名称
    • 选择记录,修改货物名称
    • 保存修改
  • 删除:删除货物名称
    • 删除前需要检查是否被地磅单引用
    • 如果被引用,提示不能删除
    • 如果未被引用,确认后删除

界面要求:

  • 列表显示所有货物名称
  • 提供新增、修改、删除按钮
  • 操作简单直观

3. 打印功能需求

3.1 打印内容

按照需求文档中的表格格式打印,包含以下内容:

  1. 标题:第一行显示"山峡化工地磅单"
  2. 表格内容(共12行,按顺序排列):
    • 表格第一行:车号
    • 表格第二行:计划号
    • 表格第三行:货物名称
    • 表格第四行:业务类型(分为销售和采购)、批号(同一行显示)
    • 表格第五行:供货单位
    • 表格第六行:收货单位
    • 表格第七行:毛重(t)、毛重时间(同一行显示)
    • 表格第八行:皮重(t)、皮重时间(同一行显示)
    • 表格第九行:扣杂(t)、净重(t)(同一行显示)
    • 表格第十行:计划量(t)、已执行量(t)(同一行显示)
    • 表格第十一行:磅点:山峡地磅
    • 表格第十二行:备注

3.2 打印格式要求

  • 参考称重样例.png的格式
  • 支持A4纸张打印
  • 布局清晰,字体大小适中
  • 可选择打印机

4. 非功能需求

4.1 性能需求

  • 软件启动时间 < 3秒
  • 数据保存响应时间 < 1秒
  • 列表查询响应时间 < 1秒
  • 打印预览生成时间 < 2秒

4.2 可靠性需求

  • 数据保存失败时给出明确提示
  • 删除操作前需要确认
  • 关键操作需要提示信息

4.3 易用性需求

  • 界面简洁直观
  • 操作流程清晰
  • 错误提示明确
  • 支持键盘快捷键操作

4.4 兼容性需求

  • 支持Windows 10及以上版本
  • 打包成单文件exe后无需安装Python环境
  • 打包后的exe文件包含所有依赖,可以直接运行,无需下载任何额外内容
  • 数据库文件本地存储,无需额外配置

4.5 数据安全需求

  • 数据存储在本地SQLite数据库
  • 支持数据备份(可导出数据库文件)
  • 作废操作采用软删除,保留历史数据

5. 数据模型设计

5.1 地磅单表(weighing_slips)

字段名 类型 说明 约束
id INTEGER 主键 PRIMARY KEY AUTOINCREMENT
vehicle_no TEXT 车号 NOT NULL
plan_no TEXT 计划号
cargo_name TEXT 货物名称 NOT NULL
business_type TEXT 业务类型 NOT NULL (销售/采购)
batch_no TEXT 批号
supplier TEXT 供货单位 NOT NULL
consignee TEXT 收货单位 NOT NULL
gross_weight REAL 毛重(t) NOT NULL
gross_weight_time TEXT 毛重时间 NOT NULL
tare_weight REAL 皮重(t) NOT NULL
tare_weight_time TEXT 皮重时间 NOT NULL
deduction REAL 扣杂(t) DEFAULT 0
net_weight REAL 净重(t) NOT NULL
planned_quantity REAL 计划量(t)
executed_quantity REAL 已执行量(t)
weighing_point TEXT 磅点 DEFAULT '山峡地磅'
remarks TEXT 备注
is_voided INTEGER 是否作废 DEFAULT 0 (0:否, 1:是)
created_at TEXT 创建时间 NOT NULL

5.2 公司名称表(companies)

字段名 类型 说明 约束
id INTEGER 主键 PRIMARY KEY AUTOINCREMENT
name TEXT 公司名称 NOT NULL UNIQUE
created_at TEXT 创建时间 NOT NULL

5.3 货物名称表(cargos)

字段名 类型 说明 约束
id INTEGER 主键 PRIMARY KEY AUTOINCREMENT
name TEXT 货物名称 NOT NULL UNIQUE
created_at TEXT 创建时间 NOT NULL

6. 技术实现方案

6.1 开发语言

  • Python 3.x

6.2 GUI框架

  • 推荐使用 tkinter(Python内置,无需额外安装)
  • 或使用 PyQt5/PySide2(界面更美观,但需要打包)

6.3 数据库

  • SQLite3(Python内置支持)

6.4 打印功能

  • 使用reportlab或matplotlib生成PDF
  • 或使用tkinter的打印功能
  • 或使用win32print直接打印

6.5 打包工具

  • PyInstaller(推荐,支持打包成单文件exe)
    • 使用 --onefile 参数打包成单个exe文件
    • 使用 --windowed 参数隐藏控制台窗口
    • 确保所有依赖库都打包进exe,实现"不用下载任何内容"的要求
    • 打包后的exe文件可以直接在Windows机器上运行,无需安装Python环境
  • 或 cx_Freeze(备选方案)

6.6 项目结构建议

simple-dibang/
├── main.py              # 主程序入口
├── database.py          # 数据库操作
├── ui/
│   ├── main_window.py  # 主窗口
│   ├── weighing_tab.py # 地磅单Tab
│   ├── company_tab.py  # 公司维护Tab
│   └── cargo_tab.py    # 货物维护Tab
├── utils/
│   ├── printer.py      # 打印功能
│   └── validators.py   # 数据验证
├── requirements.txt    # 依赖包
└── README.md          # 说明文档

7. 开发优先级

第一阶段(核心功能)

  1. 数据库设计和创建
  2. 地磅单填写和保存功能
  3. 地磅单记录列表显示
  4. 基础数据维护(公司、货物)

第二阶段(完善功能)

  1. 地磅单查看详情
  2. 地磅单打印功能
  3. 地磅单作废功能
  4. 数据验证和错误处理

第三阶段(优化和打包)

  1. 界面优化
  2. 用户体验优化
  3. 打包成exe
  4. 测试和bug修复

8. 测试需求

8.1 功能测试

  • 地磅单录入和保存
  • 数据列表显示和刷新
  • 公司名称增删改
  • 货物名称增删改
  • 打印功能
  • 作废功能

8.2 边界测试

  • 空值处理
  • 数值范围验证
  • 重复数据检查
  • 删除引用数据时的处理

8.3 兼容性测试

  • Windows 10/11系统测试
  • 不同分辨率屏幕测试
  • 打包后exe运行测试