网站首页/ 信息中心/ 档案百科/

从零开发渔业企业档案管理软件全流程实操指南

发布时间:2026年09月19日 08:15:06 浏览量:0

一、技术栈选择与环境初始化

为了实现零门槛快速落地,本指南采用Python轻量级Web框架Flask作为后端,SQLite作为嵌入式数据库。这种方式无需安装MySQL或PostgreSQL等重型数据库服务,配置文件极简,非常适合中小企业内部工具开发。前端使用Bootstrap 5,无需编写复杂的CSS即可实现响应式布局。

1. 安装Python环境

请确保系统已安装Python 3.8或更高版本。在终端输入以下命令检查版本:

python --version

若未安装,请前往Python官网下载安装包并勾选"Add Python to PATH"。

2. 创建项目目录

在命令行执行以下命令创建项目文件夹并进入:

mkdir fishery_archive

cd fishery_archive

3. 安装依赖库

创建虚拟环境(推荐)并安装Flask:

python -m venv venv

Windows激活虚拟环境:venv\Scripts\activate

Linux/Mac激活虚拟环境:source venv/bin/activate

安装Flask:

pip install flask

二、数据库模型设计

从零开发渔业企业档案管理软件全流程实操指南

渔业档案管理的核心在于船舶基础信息与证书有效期管理。我们需要在SQLite中建立一张表,包含船舶名称、吨位、功率、所有人及捕捞许可证有效期等关键字段。

在项目根目录下创建一个名为schema.sql的文件,并写入以下SQL语句:

```sql DROP TABLE IF EXISTS ships; CREATE TABLE ships ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, tonnage REAL NOT NULL, power REAL NOT NULL, owner TEXT NOT NULL, license_no TEXT NOT NULL UNIQUE, expiry_date TEXT NOT NULL, status TEXT DEFAULT '正常' ); ```

三、后端核心逻辑实现

创建app.py文件,这是整个系统的入口。我们将实现数据库初始化、档案列表展示、新增档案、删除档案以及证书过期自动检测功能。

将以下完整代码复制到app.py中:

```python import sqlite3 from flask import Flask, render_template, request, url_for, flash, redirect from werkzeug.exceptions import abort app = Flask(__name__) app.config['SECRET_KEY'] = 'your_secret_key_here' 数据库连接函数 def get_db_connection(): conn = sqlite3.connect('database.db') conn.row_factory = sqlite3.Row return conn 初始化数据库 def init_db(): conn = get_db_connection() with app.open_resource('schema.sql', mode='r') as f: conn.executescript(f.read()) conn.commit() conn.close() 检查证书状态 def check_ship_status(expiry_date): from datetime import datetime today = datetime.now().strftime('%Y-%m-%d') if expiry_date < today: return '已过期' return '正常' @app.route('/') def index(): conn = get_db_connection() 获取所有船舶数据并动态计算状态 ships = conn.execute('SELECT FROM ships').fetchall() ship_list = [] for ship in ships: ship_dict = dict(ship) ship_dict['status'] = check_ship_status(ship_dict['expiry_date']) ship_list.append(ship_dict) conn.close() return render_template('index.html', ships=ship_list) @app.route('/create', methods=('GET', 'POST')) def create(): if request.method == 'POST': name = request.form['name'] tonnage = request.form['tonnage'] power = request.form['power'] owner = request.form['owner'] license_no = request.form['license_no'] expiry_date = request.form['expiry_date'] if not name: flash('船名是必填项!') else: conn = get_db_connection() conn.execute('INSERT INTO ships (name, tonnage, power, owner, license_no, expiry_date) VALUES (?, ?, ?, ?, ?, ?)', (name, tonnage, power, owner, license_no, expiry_date)) conn.commit() conn.close() return redirect(url_for('index')) return render_template('create.html') @app.route('//delete', methods=('POST',)) def delete(id): conn = get_db_connection() conn.execute('DELETE FROM ships WHERE id = ?', (id,)) conn.commit() conn.close() flash('档案删除成功!') return redirect(url_for('index')) if __name__ == '__main__': 首次运行时自动初始化数据库,实际生产环境建议使用迁移工具 try: conn = sqlite3.connect('database.db') conn.close() except sqlite3.OperationalError: init_db() app.run(debug=True) ```

四、前端页面模板开发

在项目根目录下创建templates文件夹。所有HTML文件将存放在此处。我们需要创建三个文件:基础布局模板、列表页和新增页。

1. 基础模板 base.html

templates目录下创建base.html,引入Bootstrap 5 CDN以快速构建界面:

```html 渔业企业档案管理系统
{% with messages = get_flashed_messages() %} {% if messages %}
{{ messages[0] }}
{% endif %} {% endwith %} {% block content %}{% endblock %}
```

2. 档案列表页 index.html

templates目录下创建index.html,展示所有船舶档案,并根据状态高亮显示过期证书:

```html {% extends 'base.html' %} {% block content %}

船舶档案列表

+ 新增船舶
{% for ship in ships %} {% endfor %}
ID 船名 吨位 功率 所有人 许可证号 有效期至 状态 操作
{{ ship['id'] }} {{ ship['name'] }} {{ ship['tonnage'] }} {{ ship['power'] }} {{ ship['owner'] }} {{ ship['license_no'] }} {{ ship['expiry_date'] }} {% if ship['status'] == '已过期' %} 已过期 {% else %} 正常 {% endif %}
{% endblock %} ```

3. 新增档案页 create.html

templates目录下创建create.html,提供数据录入表单:

```html {% extends 'base.html' %} {% block content %}

录入新船舶档案

取消
{% endblock %} ```

五、系统运行与功能验证

完成以上代码编写后,你的项目目录结构应包含以下文件:

  • fishery_archive/
  • ├── venv/ (虚拟环境目录)
  • ├── app.py
  • ├── schema.sql
  • └── templates/
  •     ├── base.html
  •     ├── index.html
  •     └── create.html

1. 启动服务

确保虚拟环境已激活,在终端执行:

python app.py

终端显示 Running on http://127.0.0.1:5000 即表示启动成功。

2. 功能测试步骤

打开浏览器访问 http://127.0.0.1:5000

  1. 新增档案:点击右上角“+ 新增船舶”,输入船名“鲁渔Test01”,吨位“120”,功率“200”,有效期选择一个过去的日期(用于测试过期检测),点击提交。
  2. 查看列表:回到首页,查看表格中是否显示了刚才录入的数据,且“状态”列是否显示红色的“已过期”标签。
  3. 正常数据测试:再次新增一条船舶,有效期选择未来的日期(如2025-12-31),提交后确认状态显示绿色的“正常”。
  4. 删除功能: 点击列表中的“删除”按钮,确认弹窗后,该行数据应被移除。

3. 数据持久化验证

关闭终端(停止程序),然后重新运行 python app.py。刷新浏览器页面,之前录入的数据依然存在,证明SQLite数据库文件已成功生成并持久化存储在本地。

数字档案馆系统系统集成困难解决方案
数字档案馆系统系统集成困难解决方案
你是不是也遇到过这种情况?单位花了大价钱上了数字档案馆系统,结果发现它像个“信息孤岛”,跟OA系统对不上,跟财务软件连不通,员工查个档案得在好几个系统里反复横跳,效率低到让人抓狂。领导天天催着要数据报...
2026年09月19日 08:15:06
照片数字档案馆系统:把旧照片焊成永不褪色的回忆仓库
照片数字档案馆系统:把旧照片焊成永不褪色的回忆仓库
真的,我之前跟你们一样,家里抽屉缝里全是皱得能夹蟑螂的胶卷老照片,我妈还总拍着大腿说“这是咱们家的传家宝”,可传家宝在我手里快成受潮的干脆面了——茶渍腌的小学运动会夺冠照、刮花的和爷爷的最后一张合影、...
2026年09月19日 08:15:06
微信咨询
电话联系
QQ客服
微信咨询一对一服务
服务热线: 028-8744 4417
QQ客服: 2305721818