前置环境准备
本系统基于Python Flask开发,普通Windows电脑即可运行,无需云服务器,零成本搭建,需要提前准备以下环境:
- Python 3.8及以上版本,直接从官方地址下载:https://www.python.org/downloads/windows/,安装时必须勾选Add Python to PATH选项,否则无法进行后续操作
- 安装项目依赖,打开命令提示符,直接执行以下命令即可:
pip install flask sqlalchemy
核心功能模块介绍
本系统包含中小团队日常档案管理所需的全部核心功能,各功能作用如下:
1. 档案入库管理
支持单份档案手动录入,系统自动生成唯一档案编号,无需手动编排,自动分类存储,可后续扩展批量导入功能。
2. 多维度档案检索
支持通过档案编号、档案名称关键词快速检索,一秒定位目标档案,无需翻找纸质目录。
3. 借阅归还全流程管理
自动记录借阅人、借阅时间、归还时间,实时更新档案状态,彻底解决纸质档案丢失后无法追溯的问题。
4. 本地安全存储
所有数据存储在本地SQLite数据库中,仅需备份一个文件即可保证数据不丢失,可随时导出迁移。
实操落地步骤
步骤1:创建项目目录
在电脑任意位置新建文件夹,命名为archive-system,在该文件夹内再新建两个子文件夹,分别命名为templates和static,最终目录结构如下:
- archive-system/ 项目根目录
- ├─ app.py 主程序文件(下一步创建)
- ├─ templates/ 前端页面文件夹
- ├─ static/ 附件存储文件夹
- └─ archive.db 数据库文件(运行后自动生成)
步骤2:编写主程序代码
在项目根目录新建文件,命名为app.py,复制粘贴以下完整代码:
```
from flask import Flask, render_template, request, redirect
from sqlalchemy import create_engine, Column, Integer, String, DateTime
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
import datetime
app = Flask(__name__)
engine = create_engine('sqlite:///./archive.db', echo=False)
Base = declarative_base()
SessionLocal = sessionmaker(bind=engine)
db = SessionLocal()
档案数据表
class Archive(Base):
__tablename__ = 'archives'
id = Column(Integer, primary_key=True, autoincrement=True)
archive_no = Column(String(50), unique=True, nullable=False)
name = Column(String(100), nullable=False)
category = Column(String(50), nullable=False)
year = Column(Integer, nullable=False)
owner = Column(String(50))
status = Column(String(20), default='在库')
create_time = Column(DateTime, default=datetime.datetime.now)
借阅记录表
class Borrow(Base):
__tablename__ = 'borrow'
id = Column(Integer, primary_key=True, autoincrement=True)
archive_id = Column(Integer, nullable=False)
borrower = Column(String(50), nullable=False)
borrow_time = Column(DateTime, default=datetime.datetime.now)
return_time = Column(DateTime)
Base.metadata.create_all(engine)
@app.route('/')
def index():
archives = db.query(Archive).all()
return render_template('index.html', archives=archives)
@app.route('/add', methods=['GET', 'POST'])
def add_archive():
if request.method == 'POST':
category = request.form.get('category')
year = request.form.get('year')
count = db.query(Archive).filter_by(category=category, year=int(year)).count()
archive_no = f"{category[:2]}{year}{count+1:04d}"
new_archive = Archive(
archive_no=archive_no,
name=request.form.get('name'),
category=category,
year=int(year),
owner=request.form.get('owner')
)
db.add(new_archive)
db.commit()
return redirect('/')
return render_template('add.html', current_year=datetime.datetime.now().year)
@app.route('/search')
def search():
keyword = request.args.get('keyword', '')
archives = db.query(Archive).filter(Archive.name.contains(keyword) | Archive.archive_no.contains(keyword)).all()
return render_template('index.html', archives=archives)
@app.route('/borrow/
', methods=['GET', 'POST'])
def borrow(archive_id):
archive = db.query(Archive).get(archive_id)
if request.method == 'POST':
if archive.status == '在库':
new_borrow = Borrow(archive_id=archive_id, borrower=request.form.get('borrower'))
db.add(new_borrow)
archive.status = '借出'
db.commit()
else:
borrow_record = db.query(Borrow).filter_by(archive_id=archive_id, return_time=None).first()
borrow_record.return_time = datetime.datetime.now()
archive.status = '在库'
db.commit()
return redirect('/')
return render_template('borrow.html', archive=archive)
if __name__ == '__main__':
app.run(debug=True, port=5000)
```
步骤3:创建前端页面文件

在templates文件夹内新建第一个文件index.html,复制以下内容:
```
综合档案管理系统
综合档案管理系统
| 档案编号 | 档案名称 | 分类 | 年度 | 状态 | 操作 |
{% for archive in archives %}
| {{ archive.archive_no }} |
{{ archive.name }} |
{{ archive.category }} |
{{ archive.year }} |
{{ archive.status }} |
借阅/归还 |
{% endfor %}
```
再新建add.html文件,复制以下内容:
```
新增档案
新增档案
```
最后新建borrow.html文件,复制以下内容:
```
借阅/归还
{% if archive.status == '在库' %}档案借阅{% else %}档案归还{% endif %}
档案编号:{{ archive.archive_no }}
档案名称:{{ archive.name }}
当前状态:{{ archive.status }}
```
步骤4:启动系统
打开命令提示符,切换到项目根目录,执行以下命令:
python app.py
看到输出Running on http://127.0.0.1:5000后,打开浏览器输入地址http://localhost:5000即可正常使用系统。
日常使用操作指引
- 新增档案:点击首页「新增档案」,填写对应信息后提交,系统自动生成唯一档案编号,无需手动编辑。
- 检索档案:在首页搜索框输入关键词,点击搜索即可快速筛选目标档案。
- 借阅归还:点击目标档案后的「借阅/归还」,按提示操作即可,系统自动更新状态、记录操作日志。
- 数据备份:定期复制项目根目录下的
archive.db文件到其他存储位置即可完成备份,恢复时直接替换该文件即可。
如果需要扩展功能,比如新增权限管理、批量上传附件、借阅到期提醒等,可以基于现有代码框架直接修改,无需重构整体结构。