我用AI助手3天开发了一款库存管理App,专门给不会Excel的长辈使用

一、为什么我要做这个App?

一个真实的痛点

前段时间我和母亲日常通电话,谈话中问我之前给她创建的一个用来记录仓库货物的excel表格突然不能用了以及其他的问题,我用自己手机查看发现手机上使用表格编辑功能不仅操作麻烦还容易出现点击错误无法切换到编辑模式等问题,于是我就想有没有更加简单的方式,在应用商城下载了许多类似的软件多多少少都有些不合适家里的长辈使用,于是我使用trae开发了app-Torn。

原本是这样的:

  • :ledger: 手写账本:每天在本子上记"苹果入库50斤"、“牛奶出库20瓶”
  • :laptop: 拍照记录:把本子的内容拍照记录在手机中,每次查看需要一遍遍翻找
  • :anxious_face_with_sweat: 数据丢失:本子弄湿了、图片误删了、找不到图片了

我帮他装了几个库存管理App,结果:

  • :cross_mark: 太复杂:功能多到眼花(采购单、销售单、财务报表…)
  • :cross_mark: 要收费:基础功能免费,导出数据要VIP
  • :cross_mark: 广告多:开屏广告、横幅广告、诱导点击
  • :cross_mark: 不符合习惯:操作流程复杂,长辈学不会

我突然意识到:市场上缺少一款真正简单的、给普通人用的库存管理工具。

我决定自己做一个

说干就干!


二、Torn App:3步完成一次出入库记录

经过9天的开发(实际有效时间约3-4小时/天),我做出来了这款叫 Torn 的App。

定位:一款专为非技术人员设计的傻瓜式库存管理工具。

核心卖点:比Excel简单数倍,3步完成操作,自动计算不犯错。

功能1:卡片式货物管理(像微信通讯录一样直观)

操作流程

  1. 点击右下角"+“按钮 → 输入货物名称(如"苹果”)
  2. 选择一个emoji图标(:red_apple:)和卡片颜色(绿色)
  3. 可选:拍照上传货物照片(支持裁剪)
  4. 保存完成,卡片自动出现在列表中

设计亮点

  • :white_check_mark: 卡片式UI,像管理联系人一样管理货物
  • :white_check_mark: 显示实时库存数量(大字体,老人看得清)
  • :white_check_mark: 库存不足时自动变黄色/红色警告


功能2:傻瓜式出入库记录(最新支持编辑和删除!)

这是最核心的功能,也是我刚刚优化完的:

标准操作流程

  1. 点击任意货物卡片 → 进入详情页
  2. 点击"记录出入库"按钮
  3. 选择"入库"(绿色)或"出库"(红色)
  4. 输入数量(如"50")→ 可选填备注(如"第一批进货")
  5. 点击确认 → 库存自动更新,历史记录自动保存

智能特性

  • :white_check_mark: 自动时间戳(无需手动填写日期)
  • :white_check_mark: 自动库存计算(入库+,出库-)
  • :white_check_mark: 输入校验(禁止负数、小数、超库存警告)
  • :white_check_mark: 触觉反馈(震动+颜色变化,确认操作成功)

:fire: 最新更新:记录可编辑、可删除!(本次新增)

用户反馈的问题

“源于我母亲使用后的反馈,出入库时输错了没办法更改”

我的解决方案

每条出入库记录右侧新增了一个 [>] 按钮(仿照卡片列表的风格),点击后弹出菜单:

┌─────────────────┐
│  ✏️ 编辑         │  ← 点击打开编辑对话框(预填充原有数据)
│  🗑️ 删除(红色) │  ← 点击打开删除确认框
└─────────────────┘

编辑功能

  • 对话框预填充当前记录的所有信息(类型、数量、备注)
  • 可修改操作类型(入库↔出库切换)
  • 可修改数量和备注
  • 保存后自动重新计算库存,确保数据一致性

删除功能

  • 二次确认对话框,显示完整的记录信息
  • 明确提示:“删除后库存会自动重新计算,此操作不可恢复”
  • 红色警告按钮,防止误删
  • 确认后自动重新同步库存

技术实现

// 数据库层:新增update和delete方法
@Update
suspend fun updateRecord(record: InventoryRecord)

@Query("DELETE FROM inventory_records WHERE id = :recordId")
suspend fun deleteRecordById(recordId: Long)

// 仓库层:每次修改后自动重算库存
suspend fun updateRecord(record: InventoryRecord): Boolean {
    recordDao.updateRecord(record)
    recalculateStock(record.cardId)  // 关键!确保库存一致
    return true
}




功能3:多格式数据导出与跨设备迁移(核心功能)

“因为是个单机的app无法使用服务器来实现数据同步想出了这个办法”

支持的导出格式:

格式 文件名示例 适用场景
Excel (.xlsx) Torn库存管理_库存清单_20260430.xlsx 日常查看、打印
CSV (.csv) Torn库存管理_CSV导出_20260430.csv 导入其他系统
PDF (.pdf) Torn库存管理_PDF报表_20260430.pdf 正式报表、归档
SQLite (.db) Torn库存管理_数据交换_20260430.db 跨设备迁移(推荐)
ZIP (.zip) Torn库存管理_数据交换_20260430.zip 跨设备迁移(调试用)

导出流程

  1. 点击顶部"导入/导出"按钮 → 下拉菜单
  2. 选择":bar_chart: 数据管理"进入独立页面
  3. 选择导出格式和选项
  4. 导出成功后弹出绿色提示卡片 → 提供":eye: 查看"和":outbox_tray: 分享"按钮
  5. 一键分享到微信/QQ/邮件

跨设备数据交换(解决Base64超限问题):

  • 方案A:SQLite数据库 - 图片以BLOB二进制存储,无字符限制
  • 方案B:ZIP压缩包 - JSON文字+独立图片,体积<5MB(100个货物+图片)
  • 方案C:EXCEL文件导出 - 导出excel文件里面包含全部数据



三、开发过程中的关键问题与解决方案

这部分是我想重点分享的!真实踩坑经历 + AI如何帮助解决

坑1:对原有模块进行更新/添加新功能写了新的方法但是不使用

问题描述

  • 问题场景:对已有的导入导出路径进行更新让他把导出路径换到公共目录
  • ai处理结果:添加了公共路径API但是所有的导出方法没有使用新的API接口

我的反思
用户测试很重要,ai会完成任务但可能不会考虑到实际场景

解决方案A
在整个模块或者更新完成后让ai自己检查一遍,在提示词尽可能全面
这是我实际修改时的提示词:
我在开发一个安卓app,现在需要你修改几个问题
第一个,检查刚刚更新的导出模块的文件导出路径问题,是否全导入导出模块都进行更新,包括所有的导出zip,excle,pdf等和导出成功后文件的查看分享功能模块是否同步进行更新

效果:导出功能使用新的api,能导出到正确的文件路径

经验总结
让ai写代码其实很简单,最重要的是我们所需要的功能和实际方案的制定以及完成后的测试和bug修复,写这个app我在测试和功能修复上花费至少80%的时间,其中最重要的就是将自己的需求先生成一个方案由你选择后让ai去完成,要灵活使用/plan 功能十分好用
关于方案的生成可以让ai给出市面上主流大厂所使用的方案

四、项目成果与技术栈

开发统计数据

项目周期:9天(2026-04-21 至 2026-04-30)
总代码量:~3500行 Kotlin代码
文件数量:27个源文件

功能模块完成度:100%
├── 卡片管理系统 ✓
├── 出入库记录 ✓
├── 记录编辑/删除 ✓(最新优化)
├── 数据可视化图表 ✓
├── 多格式导出(Excel/CSV/PDF/SQLite/ZIP)✓
├── 跨设备数据迁移 ✓
├── 原生图片裁剪 ✓
└── 一键分享功能 ✓

技术栈一览

┌─────────────────────────────────────┐
│           技术架构                   │
├─────────────────────────────────────┤
│ UI框架: Jetpack Compose (Material 3) │
│ 架构模式: MVVM                      │
│ 本地数据库: Room (SQLite)            │
│ 编程语言: Kotlin                     │
│ 最低版本: Android 7.0 (API 24)       │
├─────────────────────────────────────┤
│ 第三方库:                            │
│ ├─ MPAndroidChart v3.1.0 (图表)     │
│ ├─ Apache POI v5.2.5 (Excel读写)    │
│ └─ Coil v2.6.0 (异步图片加载)        │
└─────────────────────────────────────┘

为什么这样选(AI的建议)

技术 选择理由
Jetpack Compose Google官方推荐,声明式编程更简洁,Material 3风格现代
Room数据库 Android官方ORM,类型安全,编译期检查,支持Flow响应式
MVVM架构 业界标准,职责清晰,ViewMode处理业务逻辑,UI只负责展示
Kotlin语言 Google首选Android语言,空安全、协程让异步代码像同步

Torn vs Excel 对比

对比项 Excel方案 Torn App
学习成本 高(需懂公式、格式) 低(3步完成操作)
出错概率 高(公式引用错误) 低(自动计算)
移动端体验 差(手机看表格痛苦) 优(原生App,大字体)
数据查询 手动筛选 搜索+时间筛选+分页
可视化 需手动制图 自动生成图表
数据备份 手动复制文件 一键导出+分享
跨设备 困难 微信传文件即可迁移

五、心得体会:AI辅助开发的真实感受

AI带来的效率提升

:high_voltage: 10倍效率提升:传统开发需要2周的功能,我用3-4小时/天 × 9天完成了全部核心功能

:bullseye: 少走弯路:AI推荐的都是业界最佳实践(Room、Compose、Repository模式)

:light_bulb: 持续学习:每次对话都学到新技术细节(比如PdfDocument API、MediaScannerConnection用法)

:counterclockwise_arrows_button: 快速迭代:需求变更后几分钟就能调整代码(比如这次新增的编辑/删除功能)

需要注意的事项

:warning: 需求描述要具体:AI不理解模糊表述,要说"在每条记录右侧添加一个类似卡片列表的[>]按钮",而不是"加个编辑功能"

:warning: 必须亲自测试:AI生成的代码可能有边界情况bug(比如tonalElevation参数类型错误)

:warning: 保持批判思维:不是AI说的都对,要结合实际场景判断(比如FAB滚动隐藏被用户否决)

:warning: 理解ai在干嘛:不要只复制粘贴,要让AI解释原理,观看ai关键步骤的思考,看ai的行为是否符合你的预期

最佳实践总结

  1. 先设计文档再编码:让AI先写详细的技术方案,在根据方案执行
  2. 分步骤实现:数据库→仓库→ViewModel→UI,每步编译测试
  3. 遇到错误贴完整日志:不要只贴报错那一行,要贴前后20行上下文
  4. 让AI解释而非照搬:问"为什么要这样做?“而不是"给我代码”

如果你也想用AI开发自己的App:

  1. 从小需求开始:先做给自己用的工具,解决真实痛点(我就是为了帮二叔才做的这个App)
  2. 学会提问的艺术:具体描述场景,而非抽象概念(不要说"做个库存系统",要说"像微信通讯录一样管理货物,点击就能记录进出库")
  3. 不怕犯错:编译错误是学习机会,AI就是最好的老师(我这9天至少遇到了20次编译错误)
  4. 持续迭代:先做MVP(最小可行产品),再逐步完善(我从基础功能到现在的完整版迭代了8次)
  5. 享受过程:看到自己做的App运行在手机上,成就感爆棚!:flexed_biceps:

互动时间

你们觉得这个App还需要什么功能?

欢迎在评论区留言,我会认真看每一条建议!也许下一个版本就实现了你的想法 :blush:


相关标签
#Android #AI编程 #JetpackCompose #独立开发 #效率工具 #开源项目 #库存管理 #AI辅助开发 #程序员日常 #产品经理


本文作者:一个用AI助手的非专业程序员
*项目地址:GitHub - renbon-wu/Torn-app: 一款专为非技术人员,长辈,中老年人设计的操作简单的库存管理工具(app) · GitHub
*开发工具:Trae IDE,Android Studio
项目周期:2026年4月21日 - 4月30日


如果这篇文章对你有帮助,请点赞:heart: + 收藏:star: + 关注:bell:,后续我会持续分享AI开发实战经验!