手把手教你搭建食品企业档案管理系统,零基础代码落地

环境准备与项目初始化

在开始编写代码之前,我们需要确保本地开发环境已经准备就绪。本系统采用 Node.js 作为运行环境,SQLite 作为轻量级数据库,无需安装额外的数据库服务,非常适合快速落地和单机使用。

请访问 https://nodejs.org/ 下载并安装 LTS 版本的 Node.js。安装完成后,打开终端(Windows 下使用 CMD 或 PowerShell,Mac 下使用 Terminal),输入以下命令验证安装是否成功:

```bash node -v npm -v ```

如果输出了对应的版本号,说明环境安装正常。接下来,我们在本地创建一个项目文件夹并初始化项目。请在终端依次执行以下命令:

```bash mkdir food-archive-system cd food-archive-system npm init -y ```

执行完 npm init -y 后,当前目录下会生成一个 package.json 文件。为了构建 Web 服务和操作数据库,我们需要安装三个核心依赖包:express(Web 框架)、sqlite3(数据库驱动)和 body-parser(解析 POST 请求数据)。请执行以下安装命令:

```bash npm install express sqlite3 body-parser ```

后端服务与数据库构建

后端的核心职责是提供 API 接口并处理数据的持久化存储。我们将在项目根目录下创建一个名为 server.js 的文件。这个文件将包含完整的数据库初始化逻辑和业务接口。

请在 server.js 中写入以下完整代码。这段代码首先会建立一个名为 food.db 的 SQLite 数据库文件,并创建一个用于存储食品档案的表。表结构包含:食品名称、生产批次、供应商、保质期(天)、生产日期和入库时间。

```javascript const express = require('express'); const sqlite3 = require('sqlite3').verbose(); const bodyParser = require('body-parser'); const path = require('path'); const app = express(); const PORT = 3000; // 配置中间件 app.use(bodyParser.json()); app.use(express.static(path.join(__dirname, 'public'))); // 初始化数据库 const db = new sqlite3.Database('./food.db', (err) => { if (err) { console.error('数据库连接失败:', err.message); } else { console.log('已连接到 SQLite 数据库'); } }); // 创建食品档案表 db.run(`CREATE TABLE IF NOT EXISTS food_archives ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, batch_number TEXT NOT NULL, supplier TEXT NOT NULL, shelf_life INTEGER NOT NULL, production_date TEXT NOT NULL, entry_date TEXT DEFAULT CURRENT_TIMESTAMP )`, (err) => { if (err) { console.error('创建表失败:', err.message); } else { console.log('数据表检查完成'); } }); // API 1: 添加食品档案 app.post('/api/food', (req, res) => { const { name, batchNumber, supplier, shelfLife, productionDate } = req.body; if (!name || !batchNumber || !supplier || !shelfLife || !productionDate) { return res.status(400).json({ error: '所有字段均为必填项' }); } const sql = `INSERT INTO food_archives (name, batch_number, supplier, shelf_life, production_date) VALUES (?, ?, ?, ?, ?)`; const params = [name, batchNumber, supplier, shelfLife, productionDate]; db.run(sql, params, function(err) { if (err) { res.status(500).json({ error: err.message }); return; } res.json({ message: '档案添加成功', id: this.lastID }); }); }); // API 2: 获取所有食品档案 app.get('/api/food', (req, res) => { const sql = `SELECT FROM food_archives ORDER BY entry_date DESC`; db.all(sql, [], (err, rows) => { if (err) { res.status(500).json({ error: err.message }); return; } res.json({ data: rows }); }); }); // API 3: 删除档案 app.delete('/api/food/:id', (req, res) => { const sql = `DELETE FROM food_archives WHERE id = ?`; db.run(sql, req.params.id, function(err) { if (err) { res.status(500).json({ error: err.message }); return; } res.json({ message: '删除成功' }); }); }); // 启动服务器 app.listen(PORT, () => { console.log(`服务器运行中: http://localhost:${PORT}`); }); ```

代码说明:

  • 数据库初始化:使用 sqlite3.Database 连接本地文件,如果文件不存在会自动创建。
  • 建表语句CREATE TABLE IF NOT EXISTS 确保重复运行脚本时不会报错,id 设为自增主键。
  • 静态文件托管app.use(express.static(...)) 指定了前端页面存放的目录为 public
  • API 接口:实现了增删查(CRUD)中的核心逻辑,数据交互格式统一为 JSON。

前端交互页面开发

为了让用户能够通过浏览器操作软件,我们需要构建一个简单但功能完备的前端页面。请在项目根目录下创建一个名为 public 的文件夹,并在其中新建 index.html 文件。

这个页面将包含两个主要区域:上方的数据录入表单和下方的档案列表展示。为了保持零门槛,我们不使用 Vue 或 React,而是直接使用原生 JavaScript 配合 Fetch API 进行数据交互。

手把手教你搭建食品企业档案管理系统,零基础代码落地

请在 public/index.html 中填入以下代码:

```html 食品企业档案管理系统

食品档案录入

操作成功

档案列表

ID 名称 批次号 供应商 保质期(天) 生产日期 操作
```

前端页面实现了以下关键逻辑:

  • 表单设计:使用了 HTML5 的 input 类型,如 datenumber,确保数据格式的正确性。
  • Fetch API:在 JavaScript 中使用 fetch 函数分别调用后端的 GET 和 POST 接口,实现了前后端的数据同步。
  • 动态渲染renderTable 函数负责将后端返回的 JSON 数组动态转换为 HTML 表格行。
  • 交互反馈:添加或删除成功后,会自动刷新列表并弹出绿色的提示框。

系统启动与功能验证

现在,所有的代码文件都已经准备就绪。我们将启动服务并进行实际操作测试,确保系统逻辑闭环。

1. 在项目根目录下,执行以下命令启动后端服务器:

```bash node server.js ```

终端显示 服务器运行中: http://localhost:3000 且数据库连接无报问题时,即表示服务启动成功。

2. 打开浏览器(Chrome、Edge 或 Firefox),在地址栏输入 http://localhost:3000。你将看到刚才编写的档案管理界面。

3. 录入测试:在表单中输入测试数据。

  • 食品名称:特级初榨橄榄油
  • 生产批次号:OL-2023-A01
  • 供应商:绿色农业基地
  • 保质期:730
  • 生产日期:2023-10-01
点击提交档案按钮,观察页面是否出现“档案添加成功”的提示,且下方表格是否立即更新出该条数据。

4. 数据持久化验证:为了验证数据确实保存到了数据库中,请直接关闭浏览器,甚至重启终端中的 Node 服务(再次运行 node server.js)。刷新浏览器页面,刚才录入的“特级初榨橄榄油”数据依然存在,证明 SQLite 存储逻辑生效。

5. 删除功能测试:点击表格行右侧的红色删除按钮,确认弹窗后,该行数据应即时从界面消失。

至此,一个基于 Node.js 和 SQLite 的食品企业档案管理软件已经完全落地。整个系统不依赖任何复杂的第三方框架,代码透明且易于扩展。如果需要增加“过期预警”功能,只需在前端渲染表格时,根据“生产日期”和“保质期”计算当前时间进行高亮显示即可。这套方案可以作为企业内部轻量级数字化的基础模板直接投入使用。

AI咨询
热线电话

028-85154420

15388110056

全国售前咨询电话

扫码咨询
安答联动微信公众号二维码

微信扫码关注安答联动

申请试用
热线电话
申请试用

安答联动档案管理系统