Python 语言 用 SQLite 开发简易记账本 收支记录 + 月度统计

Python阿木 发布于 22 小时前 2 次阅读


Python SQLite 简易记账本开发教程

随着经济的发展,个人财务管理变得越来越重要。记账本作为一种传统的财务管理工具,可以帮助我们记录收支情况,了解自己的财务状况。本文将使用 Python 语言和 SQLite 数据库,开发一个简易的记账本应用程序,实现收支记录和月度统计功能。

环境准备

在开始编写代码之前,我们需要准备以下环境:

1. Python 3.x 版本
2. SQLite 数据库
3. 一个文本编辑器(如 Visual Studio Code、Sublime Text 等)

数据库设计

我们需要设计数据库的结构。在这个简易记账本中,我们将创建两个表:`income`(收入记录表)和`expense`(支出记录表)。

sql
CREATE TABLE income (
id INTEGER PRIMARY KEY AUTOINCREMENT,
date TEXT NOT NULL,
amount REAL NOT NULL,
description TEXT
);

CREATE TABLE expense (
id INTEGER PRIMARY KEY AUTOINCREMENT,
date TEXT NOT NULL,
amount REAL NOT NULL,
description TEXT
);

Python 代码编写

1. 导入模块

我们需要导入必要的模块。

python
import sqlite3
from datetime import datetime

2. 连接数据库

接下来,我们连接到 SQLite 数据库。

python
conn = sqlite3.connect('account_book.db')
cursor = conn.cursor()

3. 创建表

如果数据库中还没有创建表,我们可以使用以下代码创建表。

python
cursor.execute('''CREATE TABLE IF NOT EXISTS income (
id INTEGER PRIMARY KEY AUTOINCREMENT,
date TEXT NOT NULL,
amount REAL NOT NULL,
description TEXT
)''')

cursor.execute('''CREATE TABLE IF NOT EXISTS expense (
id INTEGER PRIMARY KEY AUTOINCREMENT,
date TEXT NOT NULL,
amount REAL NOT NULL,
description TEXT
)''')

4. 添加记录

为了添加收入和支出记录,我们需要编写以下函数。

python
def add_income(date, amount, description):
cursor.execute('INSERT INTO income (date, amount, description) VALUES (?, ?, ?)',
(date, amount, description))
conn.commit()

def add_expense(date, amount, description):
cursor.execute('INSERT INTO expense (date, amount, description) VALUES (?, ?, ?)',
(date, amount, description))
conn.commit()

5. 查询记录

为了查询记录,我们可以编写以下函数。

python
def get_records(table_name, start_date, end_date):
cursor.execute(f'SELECT FROM {table_name} WHERE date BETWEEN ? AND ? ORDER BY date',
(start_date, end_date))
return cursor.fetchall()

6. 月度统计

为了实现月度统计功能,我们可以编写以下函数。

python
def monthly_statistics(year, month):
cursor.execute(f'SELECT SUM(amount) FROM income WHERE strftime("%Y-%m", date) = ?',
(f"{year}-{month:02d}",))
income_total = cursor.fetchone()[0] or 0

cursor.execute(f'SELECT SUM(amount) FROM expense WHERE strftime("%Y-%m", date) = ?',
(f"{year}-{month:02d}",))
expense_total = cursor.fetchone()[0] or 0

return income_total, expense_total

7. 主程序

我们需要编写主程序,以便用户可以添加记录、查询记录和查看月度统计。

python
def main():
while True:
print("1. 添加收入")
print("2. 添加支出")
print("3. 查询记录")
print("4. 月度统计")
print("5. 退出")
choice = input("请选择操作:")

if choice == '1':
date = input("请输入日期(格式:YYYY-MM-DD):")
amount = float(input("请输入金额:"))
description = input("请输入描述:")
add_income(date, amount, description)
print("收入记录已添加。")

elif choice == '2':
date = input("请输入日期(格式:YYYY-MM-DD):")
amount = float(input("请输入金额:"))
description = input("请输入描述:")
add_expense(date, amount, description)
print("支出记录已添加。")

elif choice == '3':
start_date = input("请输入开始日期(格式:YYYY-MM-DD):")
end_date = input("请输入结束日期(格式:YYYY-MM-DD):")
records = get_records('income', start_date, end_date)
print("收入记录:")
for record in records:
print(record)
records = get_records('expense', start_date, end_date)
print("支出记录:")
for record in records:
print(record)

elif choice == '4':
year = int(input("请输入年份:"))
month = int(input("请输入月份:"))
income_total, expense_total = monthly_statistics(year, month)
print(f"{year}年{month}月收入:{income_total}")
print(f"{year}年{month}月支出:{expense_total}")

elif choice == '5':
break
else:
print("无效的选项,请重新选择。")

if __name__ == '__main__':
main()

总结

本文介绍了如何使用 Python 语言和 SQLite 数据库开发一个简易记账本应用程序。通过添加记录、查询记录和月度统计功能,用户可以更好地管理自己的财务。在实际应用中,可以根据需求进一步完善和扩展这个应用程序。