用Python构建在线个人财务管理应用

admin 2025-01-12 696 0

在这个数字化时代,个人财务管理变得越来越重要。为了更好地掌握自己的财务状况,许多人开始寻求便捷的在线工具。今天,我们将探讨如何使用Python语言,结合一些流行的库和框架,构建一个功能齐全的在线个人财务管理应用。

用Python构建在线个人财务管理应用

项目概述

我们的目标是创建一个用户友好的应用,能够帮助用户跟踪收入、支出、预算,并提供财务分析和建议。应用将包括以下核心功能:

  1. 用户注册与登录:确保用户数据安全。
  2. 收入与支出记录:用户可以添加、编辑和删除财务记录。
  3. 预算管理:用户可以设置和跟踪月度或年度预算。
  4. 财务分析:生成图表和报告,帮助用户了解财务状况。
  5. 提醒与通知:提醒用户重要的财务事件。

技术栈选择

为了实现上述功能,我们将使用以下技术栈:

  • 后端:Python + Flask框架
  • 数据库:SQLite(适合小型应用)
  • 前端:HTML, CSS, JavaScript + Bootstrap(提升界面美观度)
  • 图表库:Chart.js(用于生成财务分析图表)

后端开发

1. 环境搭建

首先,确保你已经安装了Python和pip。接下来,创建一个新的虚拟环境并安装必要的库:

python -m venv venv
source venv/bin/activate
pip install Flask SQLAlchemy

2. 创建Flask应用

在项目根目录下创建一个名为app.py的文件,并初始化Flask应用:

from flask import Flask, jsonify, request
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///finance.db'
db = SQLAlchemy(app)

# 定义模型
class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(80), unique=True, nullable=False)
    password = db.Column(db.String(80), nullable=False)

class Record(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False)
    amount = db.Column(db.Float, nullable=False)
    category = db.Column(db.String(50), nullable=False)
    date = db.Column(db.DateTime, nullable=False)

# 初始化数据库
@app.before_first_request
def create_tables():
    db.create_all()

# 用户注册
@app.route('/register', methods=['POST'])
def register():
    data = request.json
    new_user = User(username=data['username'], password=data['password'])
    db.session.add(new_user)
    db.session.commit()
    return jsonify({'message': 'User registered successfully'}), 201

# 用户登录
@app.route('/login', methods=['POST'])
def login():
    data = request.json
    user = User.query.filter_by(username=data['username'], password=data['password']).first()
    if user:
        return jsonify({'message': 'Login successful'}), 200
    else:
        return jsonify({'message': 'Invalid credentials'}), 401

if __name__ == '__main__':
    app.run(debug=True)

3. 数据库操作

接下来,定义一些基本的数据库操作,如添加、查询和删除记录:

# 添加记录
@app.route('/add_record', methods=['POST'])
def add_record():
    data = request.json
    new_record = Record(user_id=data['user_id'], amount=data['amount'], category=data['category'], date=data['date'])
    db.session.add(new_record)
    db.session.commit()
    return jsonify({'message': 'Record added successfully'}), 201

# 获取记录
@app.route('/get_records/<int:user_id>', methods=['GET'])
def get_records(user_id):
    records = Record.query.filter_by(user_id=user_id).all()
    return jsonify([{'amount': record.amount, 'category': record.category, 'date': record.date} for record in records]), 200

# 删除记录
@app.route('/delete_record/<int:record_id>', methods=['DELETE'])
def delete_record(record_id):
    record = Record.query.get(record_id)
    if record:
        db.session.delete(record)
        db.session.commit()
        return jsonify({'message': 'Record deleted successfully'}), 200
    else:
        return jsonify({'message': 'Record not found'}), 404

前端开发

1. 基础页面布局

使用HTML和Bootstrap创建一个简单的登录和注册页面:


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Personal

评论(0)