文章目录
前言
最近我设计了一个每日收账管理系统,想和大家分享一下我的初衷。我们都知道,在日常生活中,管理和记录收款信息是一项繁琐而重要的任务。尤其是对于小型企业、商铺或个人经营者来说,精确记录每天的收入情况是保持财务健康的关键。因此,我决定使用Python编程语言构建一个简单而高效的系统来帮助我管理每日的收款。
一、每日收账管理系统简介
1.1 系统概述
每日收账管理系统是一个用于记录和统计每日收款信息的工具。它可以帮助用户快速录入收款记录、查询、修改和删除记录,并计算收款总金额。
1.2 功能介绍
介绍每日收账管理系统的核心功能,包括添加每日收款记录、修改收款信息、查询收款记录、显示所有收款记录、删除所有收款记录和计算收款总金额。
二、数据库设计与创建
2.1 数据库概述
数据库是每日收账管理系统的核心组成部分,它用于存储和管理每日的收款记录。并提供高效的数据访问和管理功能。它可以持久地保存数据,并支持多种操作,如数据的插入、更新、删除和查询。
在每日收账管理系统中,我们使用SQLite数据库来实现数据存储和管理的功能。SQLite是一种轻量级的嵌入式数据库,它不需要独立的服务器进程,可以直接嵌入到应用程序中。这使得SQLite成为适用于小型应用的理想选择,包括我们的每日收账管理系统。
2.2 数据表设计
在每日收账管理系统中,我们设计了一个名为daily_income
的数据表,包含两个列:date
和amount
,分别用于存储收款日期和收款金额。
代码如下(示例):
# 创建每日入账表
cursor.execute('''CREATE TABLE IF NOT EXISTS daily_income
(date , amount REAL)''')
思路:
daily_income
-----------------
| date | amount | #该数据表包含两个列:date和amount。
----------------- #date列用于存储收款日期,amount列用于存储收款金额
| | | #数据类型REAL表示该列存储的是实数(浮点数)
-----------------
2.3创建数据库和数据表
在每日收账管理系统中,我们通过使用SQLite的连接和游标对象来创建数据库和数据表。在代码中,我们使用sqlite3.connect()
函数来连接数据库,并通过游标对象的execute()
方法执行SQL语句来创建数据表。
import sqlite3
# 创建每日收账管理系统数据库
conn = sqlite3.connect('recorded.db')
cursor = conn.cursor() #通过调用sqlite3.connect()函数连接到名为recorded.db的数据库文件,并创建了名为daily_income的数据表,用于存储每日的收款记录。若数据表已存在,则不会重新创建。
# 创建每日入账表
cursor.execute('''CREATE TABLE IF NOT EXISTS daily_income
(date , amount REAL)''')
# 关闭数据库连接
conn.close()
三、功能实现与优化
3.1 添加每日收款记录
3.1.1 输入日期与金额
在add_daily_income函数中,用户通过输入日期和金额来添加每日收款记录。确保日期格式正确且金额为合法的浮点数。
3.1.2 检查日期是否重复
在add_daily_income函数中,使用数据库查询语句来检查输入的日期是否已存在于数据库中,避免重复记录的产生。如果输入的日期已经存在,系统会给出相应的提示,要求用户重新输入。
3.1.3 将记录插入数据库
在add_daily_income函数中,通过执行数据库插入语句将验证通过的收款记录插入到daily_income表中,确保数据的完整性和一致性。
def add_daily_income(k):
for i in range(k):
daily_income = {}
while True:
daily_income['date'] = input("请输入日期:")
cursor.execute("SELECT * FROM daily_income WHERE date=?", (daily_income['date'],))
if cursor.fetchone() is not None:
print("该日期已经存在,请重新输入!")
else:
break
daily_income['consume_account'] = float(input("请输入今日收款金额:"))
cursor.execute("INSERT INTO daily_income VALUES (?, ?)",
(daily_income['date'], daily_income['consume_account']))
print("成功添加信息!")
conn.commit()
print("今日收款添加成功!")
input("按Enter键返回主菜单...")
clear_screen()
3.2 修改收款信息
在modify_daily_income函数中,用户输入要修改的收款日期,系统通过数据库查询语句检索对应的收款记录,然后提供修改日期和金额的选项,最后执行数据库更新语句,将修改后的记录更新到数据库中。
def modify_daily_income():
date = input("请输入要修改的收款日期:")
cursor.execute("SELECT * FROM daily_income WHERE date=?", (date,))
daily_income = cursor.fetchone()
if daily_income is not None:
print("收款日期:", daily_income[0])
print("收款金额:", daily_income[1])
print("\n请输入新的收款信息:")
new_date = input("收款日期:")
consume_account = float(input("收款金额:"))
cursor.execute("UPDATE daily_income SET date=?, amount=? WHERE date=?",
(new_date, consume_account, date))
print("修改成功!")
conn.commit()
else:
print("未找到该收款记录!")
input("按Enter键返回主菜单...")
clear_screen()
3.3 查询收款记录
在find_by_date函数中,用户输入要查找的收款日期,系统通过数据库查询语句在daily_income表中查找对应日期的收款记录,并将查询结果输出给用户。
def find_by_date():
date = input("请输入要查找的收款日期:")
cursor.execute("SELECT * FROM daily_income WHERE date=?", (date,))
daily_income = cursor.fetchone()
if daily_income is not None:
print("收款日期:", daily_income[0])
print("收款金额:", daily_income[1])
else:
print("未找到该收款记录!")
input("按Enter键返回主菜单...")
clear_screen()
3.4 显示所有收款记录
在show_all_daily_income函数中,系统通过数据库查询语句获取daily_income表中的所有收款记录,并以美观的表格形式展示给用户,包括日期和金额。
def show_all_daily_income():
cursor.execute("SELECT * FROM daily_income")
daily_incomes = cursor.fetchall()
print("每日收款记录如下:")
print(" |==========================|")
print(" | 日期\t 收款金额 |")
print(" |--------------------------|")
for daily_income in daily_incomes:
print(" | {}\t {:0.2f} ".format(daily_income[0], daily_income[1]))
print(" |--------------------------|")
print(" |==========================|")
input("按Enter键返回主菜单...")
clear_screen()
3.5 删除所有收款记录
在clear_all_daily_income函数中,为了清空所有的收款记录,系统提供了删除所有收款记录的功能。用户确认要清除所有收款信息后,系统执行数据库删除语句将daily_income表中的所有记录删除。
def clear_all_daily_income():
confirmation = input("确定要清除所有收款信息吗?(Y/N)")
if confirmation == 'Y' or confirmation == 'y':
cursor.execute("DELETE FROM daily_income")
conn.commit()
print("所有收款信息已清除!")
else:
print("取消清除操作。")
input("按Enter键返回主菜单...")
clear_screen()
3.6 计算收款总金额
在calculate_total_daily_income函数中,系统通过数据库查询语句获取daily_income表中的所有收款金额,并对其进行累加计算,最后输出收款总金额给用户。
def calculate_total_daily_income():
cursor.execute("SELECT SUM(amount) FROM daily_income")
total_income = cursor.fetchone()[0]
print("所有收款总金额为:", total_income)
input("按Enter键返回主菜单...")
clear_screen()
3.7 完整的代码如下
import sqlite3
import sys
import subprocess
# 创建每日收账管理系统数据库
conn = sqlite3.connect('recorded.db')
cursor = conn.cursor()
# 创建每日入账表
cursor.execute('''CREATE TABLE IF NOT EXISTS daily_income
(date , amount REAL)''')
# 清屏函数
def clear_screen():
subprocess.call('cls' if sys.platform.startswith('win') else 'clear', shell=True)
# 添加每日收款记录
def add_daily_income(k):
for i in range(k):
daily_income = {}
while True:
daily_income['date'] = input("请输入日期:")
cursor.execute("SELECT * FROM daily_income WHERE date=?", (daily_income['date'],))
if cursor.fetchone() is not None:
print("该日期已经存在,请重新输入!")
else:
break
daily_income['consume_account'] = float(input("请输入今日收款金额:"))
cursor.execute("INSERT INTO daily_income VALUES (?, ?)",
(daily_income['date'], daily_income['consume_account']))
print("成功添加信息!")
conn.commit()
print("今日收款添加成功!")
input("按Enter键返回主菜单...")
clear_screen()
# 修改收款信息
def modify_daily_income():
date = input("请输入要修改的收款日期:")
cursor.execute("SELECT * FROM daily_income WHERE date=?", (date,))
daily_income = cursor.fetchone()
if daily_income is not None:
print("收款日期:", daily_income[0])
print("收款金额:", daily_income[1])
print("\n请输入新的收款信息:")
new_date = input("收款日期:")
consume_account = float(input("收款金额:"))
cursor.execute("UPDATE daily_income SET date=?, amount=? WHERE date=?",
(new_date, consume_account, date))
print("修改成功!")
conn.commit()
else:
print("未找到该收款记录!")
input("按Enter键返回主菜单...")
clear_screen()
# 查询收款记录
def find_by_date():
date = input("请输入要查找的收款日期:")
cursor.execute("SELECT * FROM daily_income WHERE date=?", (date,))
daily_income = cursor.fetchone()
if daily_income is not None:
print("收款日期:", daily_income[0])
print("收款金额:", daily_income[1])
else:
print("未找到该收款记录!")
input("按Enter键返回主菜单...")
clear_screen()
# 清除所有收款记录
def clear_all_daily_income():
confirmation = input("确定要清除所有收款信息吗?(Y/N)")
if confirmation == 'Y' or confirmation == 'y':
cursor.execute("DELETE FROM daily_income")
conn.commit()
print("所有收款信息已清除!")
else:
print("取消清除操作。")
input("按Enter键返回主菜单...")
clear_screen()
# 显示所有收款记录
def show_all_daily_income():
cursor.execute("SELECT * FROM daily_income")
daily_incomes = cursor.fetchall()
print("每日收款记录如下:")
print(" |==========================|")
print(" | 日期\t 收款金额 |")
print(" |--------------------------|")
for daily_income in daily_incomes:
print(" | {}\t {:0.2f} ".format(daily_income[0], daily_income[1]))
print(" |--------------------------|")
input("按Enter键返回主菜单...")
clear_screen()
# 计算收款总金额
def calculate_total_daily_income():
cursor.execute("SELECT SUM(amount) FROM daily_income")
total_income = cursor.fetchone()[0]
print("所有收款总金额为:", total_income)
input("按Enter键返回主菜单...")
clear_screen()
# 主菜单
def main_menu():
print("*==================================================================================*")
print("* 每日收账管理系统 *")
print("*==================================================================================*")
print("* 1.新入账登记 *")
print("* 2.修改收款信息 *")
print("* 3.查询收款记录 *")
print("* 4.显示所有收款记录 *")
print("* 5.删除所有收款记录 *")
print("* 6.计算收款总金额 *")
print("* 7.退出系统 *")
print("*==================================================================================*")
print("\n请输入要执行的操作编号(1-7):")
# 退出系统
def exit_system():
print("\n感谢使用每日收账管理系统,再见!")
conn.close()
sys.exit(0)
# 用户输入收款日期
def input_date():
return input("请输入收款日期:")
# 主功能选择
def choice_op():
while True:
clear_screen()
main_menu()
choice = int(input())
if choice == 1:
clear_screen()
k = int(input("请输入要录入的收款单数:"))
add_daily_income(k)
elif choice == 2:
clear_screen()
modify_daily_income()
elif choice == 3:
clear_screen()
find_by_date()
elif choice == 4:
clear_screen()
show_all_daily_income()
elif choice == 5:
clear_screen()
clear_all_daily_income()
elif choice == 6:
clear_screen()
calculate_total_daily_income()
elif choice == 7:
exit_system()
else:
print("\n输入错误,请重新输入\n")
if __name__ == '__main__':
choice_op()
四、代码运行结果
(1)初始界面
(2)登记
(3)查询
(4)全部显示
(5) 删除
(6)计算总金额
(7)退出系统
四、总结
总而言之,这个每日收账管理系统是我为了解决日常收款管理的痛点而设计的。通过使用Python编程语言和SQLite数据库,我能够轻松地记录每天的收款信息,并进行修改、查询和统计等操作。此外系统的使用界面简洁明了,操作简单易懂,使得使用起来更加舒适和便捷。
五、期许
通过这个每日收账管理系统,我不仅能够及时记录每天的收款情况,还能方便地查询和统计收入数据。这对我个人的财务管理和业务分析非常有帮助。我相信,这个系统也可以帮助到其他有类似需求的人们,通过提高收款管理的效率,我们可以更好地掌握自己的财务状况,做出明智的决策,进一步发展我们的事业。我也欢迎大家一起使用这个系统,分享你们的反馈和建议,让我们共同改进和完善它,为我们的财务管理带来更多便利和价值。谢谢大家!ヾ(◍°∇°◍)ノ゙