构建高效的每日收账管理系统:Python实现数据库设计与功能优化

文章目录

一、每日收账管理系统简介

1.1 系统概述

1.2 功能介绍

二、数据库设计与创建

2.1 数据库概述

2.2 数据表设计

2.3创建数据库和数据表 

三、功能实现与优化

3.1 添加每日收款记录

3.1.1 输入日期与金额

3.1.2 检查日期是否重复

3.1.3 将记录插入数据库

3.2 修改收款信息

3.3 查询收款记录

3.4 显示所有收款记录

3.5 删除所有收款记录

3.6 计算收款总金额

3.7 完整的代码如下

四、代码运行结果

四、总结

五、期许


前言

最近我设计了一个每日收账管理系统,想和大家分享一下我的初衷。我们都知道,在日常生活中,管理和记录收款信息是一项繁琐而重要的任务。尤其是对于小型企业、商铺或个人经营者来说,精确记录每天的收入情况是保持财务健康的关键。因此,我决定使用Python编程语言构建一个简单而高效的系统来帮助我管理每日的收款。


一、每日收账管理系统简介

1.1 系统概述

每日收账管理系统是一个用于记录和统计每日收款信息的工具。它可以帮助用户快速录入收款记录、查询、修改和删除记录,并计算收款总金额。

1.2 功能介绍

介绍每日收账管理系统的核心功能,包括添加每日收款记录修改收款信息查询收款记录显示所有收款记录删除所有收款记录和计算收款总金额


二、数据库设计与创建

2.1 数据库概述

数据库是每日收账管理系统的核心组成部分,它用于存储和管理每日的收款记录。并提供高效的数据访问和管理功能。它可以持久地保存数据,并支持多种操作,如数据的插入、更新、删除和查询。

在每日收账管理系统中,我们使用SQLite数据库来实现数据存储和管理的功能。SQLite是一种轻量级的嵌入式数据库,它不需要独立的服务器进程,可以直接嵌入到应用程序中。这使得SQLite成为适用于小型应用的理想选择,包括我们的每日收账管理系统。


2.2 数据表设计

在每日收账管理系统中,我们设计了一个名为daily_income的数据表,包含两个列:dateamount,分别用于存储收款日期和收款金额。

代码如下(示例):

# 创建每日入账表
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数据库,我能够轻松地记录每天的收款信息,并进行修改、查询和统计等操作。此外系统的使用界面简洁明了,操作简单易懂,使得使用起来更加舒适和便捷。


五、期许

通过这个每日收账管理系统,我不仅能够及时记录每天的收款情况,还能方便地查询和统计收入数据。这对我个人的财务管理和业务分析非常有帮助。我相信,这个系统也可以帮助到其他有类似需求的人们,通过提高收款管理的效率,我们可以更好地掌握自己的财务状况,做出明智的决策,进一步发展我们的事业。我也欢迎大家一起使用这个系统,分享你们的反馈和建议,让我们共同改进和完善它,为我们的财务管理带来更多便利和价值。谢谢大家!ヾ(◍°∇°◍)ノ゙

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
对于线上账本管理系统的课程设计,我可以提供一些基本的思路和建议。以下是一个简单的课程设计大纲: 1. 系统需求分析 - 理解线上账本管理系统的基本功能和特点 - 收集用户需求和系统规模 - 确定系统的基本模块和功能 2. 数据库设计与实施 - 确定系统需要存储的数据类型和结构 - 设计数据库模式,并创建相应的表格 - 实施数据库并进行测试 3. 用户界面设计实现 - 分析用户界面的需求和交互流程 - 设计系统的用户界面原型 - 使用合适的前端技术实现用户界面 4. 功能实现 - 根据系统需求设计相应的功能模块 - 开发和测试各个功能模块 - 确保功能之间的正确集成和数据的一致性 5. 安全与权限管理 - 设计系统的安全策略和权限控制机制 - 实施用户认证和授权功能 - 防止潜在的安全漏洞和攻击 6. 性能优化与扩展 - 分析系统性能瓶颈和资源利用情况 - 优化系统性能,提高响应速度和吞吐量 - 考虑系统的可扩展性,以便未来的功能和用户增长 7. 测试与部署 - 编写测试用例,对系统进行全面测试 - 修复漏洞和错误 - 部署系统到服务器,并进行实际环境测试 8. 文档编写与演示 - 撰写系统用户手册和技术文档 - 准备系统演示,展示功能和性能等方面的优势 以上是一个简单的课程设计大纲,可以根据具体情况进行调整和细化。希望对你有所帮助!如果你还有其他问题,可以继续问我。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

莣憂愺

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值