在开始构建养老保险档案管理软件之前,我们需要准备好Python开发环境。本系统采用轻量级的Flask框架配合SQLite数据库,无需配置复杂的服务器环境,适合快速上手和落地。
请确保你的电脑上已经安装了Python。如果没有安装,请访问Python官方 releases 页面下载对应操作系统的安装包。对于Windows用户,建议下载 Python 3.10.x 或更高版本的 Windows installer (64-bit)。
下载地址:https://www.python.org/downloads/windows/
安装时,务必勾选 "Add Python to PATH" 选项,这将方便我们在命令行中直接执行Python命令。
打开命令行工具(Win键+R,输入cmd,回车),输入以下命令安装Flask框架及其依赖。Flask是一个微型的Web开发框架,非常适合构建此类管理系统。
```bash pip install flask ```为了确保安装成功,你可以输入 pip list 查看已安装的包列表中是否包含Flask。
为了保持代码的整洁,我们需要在本地创建一个项目文件夹,并建立规范的目录结构。请在D盘或任意位置创建一个名为 pension_system 的文件夹,并在其中创建以下结构:
```text pension_system/ │ ├── app.py 后端核心逻辑文件 ├── init_db.py 数据库初始化脚本 └── templates/ 存放HTML模板的文件夹 └── index.html 前端展示页面 ```注意: templates 文件夹的名称必须是固定的,Flask会默认去这个目录下寻找HTML文件。
养老保险档案管理核心在于数据的存储。我们将使用SQLite数据库,它无需单独安装数据库服务,以文件形式存在,非常适合轻量级应用。我们需要设计一张表来存储参保人员的信息。
我们需要记录以下关键字段:
在项目根目录下创建 init_db.py 文件,并粘贴以下代码。这段代码将自动创建一个名为 pension.db 的数据库文件并建立数据表。
```python import sqlite3 def init_db(): 连接数据库(如果不存在会自动创建) conn = sqlite3.connect('pension.db') cursor = conn.cursor() 创建档案表 cursor.execute(''' CREATE TABLE IF NOT EXISTS records ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, id_card TEXT NOT NULL UNIQUE, phone TEXT, join_date TEXT, pension_type TEXT, status TEXT ) ''') conn.commit() conn.close() print("数据库初始化完成,已生成 pension.db 文件。") if __name__ == '__main__': init_db() ```
保存文件后,在命令行中进入项目目录,执行以下命令完成数据库的创建:
```bash python init_db.py ```接下来编写 app.py,这是整个系统的“大脑”。它负责处理网页的请求、读写数据库以及返回数据给前端。
请将以下完整代码复制到 app.py 文件中:
```python from flask import Flask, render_template, request, redirect, url_for, flash import sqlite3 from datetime import datetime app = Flask(__name__) app.secret_key = 'dev_secret_key_for_flash_messages' 用于Flash消息提示 数据库连接函数 def get_db_connection(): conn = sqlite3.connect('pension.db') conn.row_factory = sqlite3.Row 允许通过列名访问数据 return conn 首页:展示所有档案 @app.route('/') def index(): conn = get_db_connection() 按ID倒序查询,最新添加的在最前 cursor = conn.execute('SELECT FROM records ORDER BY id DESC') records = cursor.fetchall() conn.close() return render_template('index.html', records=records) 添加档案 @app.route('/add', methods=['POST']) def add(): name = request.form['name'] id_card = request.form['id_card'] phone = request.form['phone'] join_date = request.form['join_date'] pension_type = request.form['pension_type'] status = request.form['status'] if not name or not id_card: flash('姓名和身份证号不能为空!') return redirect(url_for('index')) try: conn = get_db_connection() conn.execute('INSERT INTO records (name, id_card, phone, join_date, pension_type, status) VALUES (?, ?, ?, ?, ?, ?)', (name, id_card, phone, join_date, pension_type, status)) conn.commit() conn.close() flash('档案添加成功!') except sqlite3.IntegrityError: flash('错误:该身份证号已存在档案库中!') return redirect(url_for('index')) 删除档案 @app.route('/delete/为了实现用户交互,我们需要在 templates/index.html 中编写前端代码。这里使用原生HTML结合Bootstrap(通过CDN引入)来快速构建美观的界面,并使用Jinja2模板语法来展示后端传递的数据。
请将以下代码完整复制到 templates/index.html 中:
```html| ID | 姓名 | 身份证号 | 联系电话 | 参保日期 | 保险类型 | 状态 | 操作 |
|---|---|---|---|---|---|---|---|
| {{ record.id }} | {{ record.name }} | {{ record.id_card }} | {{ record.phone }} | {{ record.join_date }} | {{ record.pension_type }} | 删除 | |
| 暂无档案数据,请在上方添加。 | |||||||
代码编写完成后,最后一步是启动系统并进行实际操作测试。
在命令行中确保当前目录在项目根目录下,输入以下命令启动Flask内置服务器:
```bash python app.py ```当终端出现 Running on http://127.0.0.1:5000 提示时,说明服务已成功启动。
打开浏览器,在地址栏输入 http://127.0.0.1:5000。你将看到一个包含表格和录入框的页面。
测试步骤:
关闭命令行窗口(停止服务),然后重新运行 python app.py。刷新浏览器页面,刚才录入的数据依然存在,证明SQLite数据库已成功保存数据,系统开发完成。