python3GUI--记账助手By:PyQt5(附下载地址)

文章目录

  • 一.前言
  • 二.开发环境
  • 三.预览
    • 1.登录&注册
    • 2.主界面
    • 3.新增账单
      • 1.当前日期
      • 2.选择日期
      • 3.添加成功
    • 4.删除账单
    • 4.筛选账单
    • 5.账单数据汇总
      • 1.日账单
      • 2.月账单
      • 3.年账单
  • 四.设计心得
    • 1.项目代码结构
    • 2.UI设计概览
    • 3.UI设计详细
      • 1.登录注册界面
      • 2.主窗口
      • 3.添加新账单界面
    • 4.数据库表设计
      • 1.用户表(Users)
      • 2.账单表(Bills)
  • 五.总结


文件大小:19.94M
下载体验点我



如果安装后打不开,多半是权限问题,请使用管理员运行或者别装到C盘!

一.前言

本次使用PyQt5开发一款记账助手,支持登录注册、多账号、账单类型筛选、数据持久化、可视化,Let’s go
在这里插入图片描述

二.开发环境

本项目采用Python语言及第三方库进行设计与开发,项目基于PyQt5进行构建,其软件开发环境为:
PyCharm 2021.3
Python 3.8
Windows 11

三.预览

1.登录&注册

软件启动后进入软件主界面,需要先登录。
在这里插入图片描述
没有账号需要先注册
在这里插入图片描述

2.主界面

登陆成功后是我们软件的主界面,详细展示每一笔的收支情况以及收支、结余汇总
在这里插入图片描述

3.新增账单

我们需要选择账单日期、类型、输入金额

1.当前日期

默认选择当前日期
在这里插入图片描述

2.选择日期

我们可以从日历中选择指定日期,选择的日期会展示到界面上。
在这里插入图片描述

3.添加成功

添加成功后会给予提示
在这里插入图片描述

4.删除账单

我们可以右击某一条目或者拖动鼠标选择多个条目进行账单的删除,删除之前系统会和用户确认,删除完成后会刷新数据。
在这里插入图片描述

4.筛选账单

我们可以点击左上角的“账单类型”对账单进行筛选,主要分为“收入”和“支出”及“汇总”,选择某一项之后会勾选。这里我切换了另一个账号来演示。
在这里插入图片描述

5.账单数据汇总

汇总维度分为:日、月、年,分别汇总收支情况,使用“饼图”展示每一部分占比。

1.日账单

在这里插入图片描述

2.月账单

在这里插入图片描述

3.年账单

在这里插入图片描述

四.设计心得

1.项目代码结构

本项目以main.py作为入口,执行python main.py即可直接启动整个项目。
在这里插入图片描述

2.UI设计概览

本次开发的软件为多窗口应用,包括:

  1. 登录注册界面
  2. 主窗口
  3. 添加新账单界面

以上界面均为设计师设计,QT设计师非常适合敏捷开发。

3.UI设计详细

下面我截图展示所有UI界面

1.登录注册界面

login.ui
在这里插入图片描述

2.主窗口

home_ui.ui
在这里插入图片描述

3.添加新账单界面

new_account_ui.ui

在这里插入图片描述

4.数据库表设计

本次数据持久化采用存储数据库的方式,数据库为文件型数据库:sqlite3,
设计了两个库表,分别是:

1.用户表(Users)

用于存储用户的登录注册信息,每次用户登陆成功后更新上次登录时间,建表语句如下:

CREATE TABLE Users (  id INTEGER PRIMARY KEY AUTOINCREMENT,       -- 用户ID,主键,自增  username TEXT NOT NULL UNIQUE,                   -- 用户名,不能为空且必须唯一  password TEXT NOT NULL,                          -- 密码,不能为空(注意:实际存储时应加密)  create_time TEXT,   -- 创建时间,默认值为当前时间戳  last_login_time Int DEFAULT 0                        -- 上次登录时间,可以为空  
);

数据-览
在这里插入图片描述

2.账单表(Bills)

账单表存储多个字段的数据,详细记录每笔账单,可以与用户表做关联,建表语句如下:

CREATE TABLE Bills (  id INTEGER PRIMARY KEY AUTOINCREMENT,            -- 主键,自增  create_time TEXT ,   -- 创建时间,默认值为当前时间戳  bill_type TEXT NOT NULL,                         -- 账单类型,不能为空  income_or_expense TEXT NOT NULL CHECK (income_or_expense IN ('+', '-')), -- 收支,不能为空,并且只能是'+'或'-'  amount TEXT NOT NULL,                             -- 金额,不能为空  user_id INTEGER NOT NULL,                        -- 用户ID,不能为空(假设用户ID是必填项)  note TEXT                                        -- 备注,可以为空  
);

数据-览
在这里插入图片描述

五.总结

本次使用PyQt5开发了一款记账软件,这个项目非常适合学生来学习、练习数据库、PyQt。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/28629.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

人员的社保缴纳情况直接影响设计资质的延续结果。

是的,人员的社保缴纳情况会直接影响设计资质的延续结果。社保缴纳情况是评估企业运营稳定性和合规性的重要指标之一,特别是在设计资质延续的审核过程中。 设计资质延续时,相关部门会要求企业提供涉及资质延续所需人员的社保缴纳证明&#xff…

kettle学习(利用jsonPath定位,json文件转换)

kettle学习(利用jsonPath定位,json文件转换) 于数据处理的广袤天地间,我们时常需应对各类繁杂状况与各式格式。Kettle 作为极具威力的数据集成利器,赋予了我们诸多功能与无限可能此次博客里,我们将重点投向…

如何在电磁仿真软件CST中获得多天线同频的SAR

上期介绍了多天线不同频率情况下如何计算SAR,不用考虑相位差;这期我们看看MIMO,多天线同频,考虑相位差: 简单模型,一只手和两个天线: 工作频率2GHz: 仿真结束查看S11: 查…

KEPServerEX远程配置功能一键Get

远程配置功能,其实是通过KEPServerEX REST 接口及 HTTP 协议命令,对 KEPServerEX Runtime 运行环境进行配置的查询及更改。 右键点击系统托盘处的KEPServerEX Administration 图标,选择Settings | Configuration API Service; 如图设置&…

Windows WPS ppt幻灯片 保存文件时候 PPT文件大小变大 ppt文件太大 解决方案

Windows WPS ppt 幻灯片 保存文件时候 PPT文件大小突然变大,原先只有10M的大小增加到40M 关于wps的ppt文件变大,指的是:明明ppt幻灯片页数和图片都不多,只是稍微修改两个文字,保存时,文件大小增加了不少&a…

android studio CreateProcess error=2, 系统找不到指定的文件

【问题记录篇】 在AndroidStudio编译开发jni相关工程代码的时候,编译遇到的这个报错: CreateProcess error2, 系统找不到指定的文件。排查处理步骤: 先查看Build Output的具体日志输出 2.了解到问题出在了NDK配置上,此时需要根据自己的gra…

模型算法—线性回归

线性回归是统计学中最常见的一种回归分析方法,用于建立自变量(解释变量)和因变量(响应变量)之间的线性关系。线性回归模型可以用来预测一个或多个自变量对应的因变量的值。 线性回归的基本形式如下: &…

【ElasticSearch】ElasticSearch基本概念

ES 是一个开源的高扩展的分布式全文检索引擎,它是对开源库 Luence 的封装,提供 REST API 接口 MySQL 更适合数据的存储和关系管理,即 CRUD;而 ES 更适合做海量数据的检索和分析,它可以秒级地从数据库中检索出我们感兴…

SSH概念、用途、详细使用方法

还是大剑师兰特:曾是美国某知名大学计算机专业研究生,现为航空航海领域高级前端工程师;CSDN知名博主,GIS领域优质创作者,深耕openlayers、leaflet、mapbox、cesium,canvas,webgl,ech…

Excel中多条件判断公式怎么写?

在Excel里,这种情况下的公式怎么写呢? 本题有两个判断条件,按照题设,用IF函数就可以了,这样查看公式时逻辑比较直观: IF(A2>80%, 4, IF(A2>30%, 8*(A2-30%),0)) 用IF函数写公式,特别是当…

【Java】已解决java.lang.ArrayIndexOutOfBoundsException异常

文章目录 一、问题背景二、可能出错的原因三、错误代码示例四、正确代码示例五、注意事项 已解决java.lang.ArrayIndexOutOfBoundsException异常 一、问题背景 java.lang.ArrayIndexOutOfBoundsException 是 Java 中一个非常常见的运行时异常,它表明程序试图访问数…

C语言入门系列:流程控制

一,C代码执行顺序 默认情况下,C语言程序从main()函数开始执行,随后按源代码中语句出现的顺序逐一执行。 这意味着,如果不考虑任何控制结构,程序会自上而下,逐行执行每条语句,直到遇到函数调用…

LabVIEW电源适应能力检测系统

随着工业自动化程度的提高,电源质量直接影响设备的稳定运行。利用LabVIEW开发一个单相电源适应能力检测系统,该系统通过智能化和自动化测试,提高了测试效率,减少了人为错误,保证了电源质量的可靠性。 项目背景 在现代…

Nuxt3 实战 (九):使用 Supabase 实现 Github 认证鉴权

前言 Supabase 使用的是 postgresql 的 Row Level Security (RLS),可以限制不同用户对同一张表的不同数据行的访问权限。这种安全机制可以确保只有授权用户才能访问其所需要的数据行,保护敏感数据免受未授权的访问和操作。 Auth Providers 打开 Supab…

29.添加录入注入信息界面

上一个内容:28.启动与暂停程序 以 28.启动与暂停程序 它的代码为基础进行修改 效果图: 新建Dialog 给新建的dialog添加空间,如下图 给每个输入框创建一个变量 代码: void CWndAddGame::OnBnClickedButton1() {static TCHAR BASE…

035.搜索插入位置

题意 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 难度 简单 示例 输入: nums [1,3,5,6], target 5 输出: …

Open vSwitch 中的 vswitchd 事件上报

一、数据包转发流程与 vswitchd 事件上报 Open vSwitch 的数据包转发流程如下图所示: 在数据包的转发流程中,提到过慢速路径的概念:即当数据包在内核空间无法完全处理时,会产生 upcall 调用,将数据包从内核空间转发到用…

大众点评_token,mtgsig

声明 本文章中所有内容仅供学习交流使用,不用于其他任何目的,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关! 本文章未经许可禁止转载&#xff0…

⌈ 传知代码 ⌋【算法】实体关系抽取

💛前情提要💛 本文是传知代码平台中的相关前沿知识与技术的分享~ 接下来我们即将进入一个全新的空间,对技术有一个全新的视角~ 本文所涉及所有资源均在传知代码平台可获取 以下的内容一定会让你对AI 赋能时代有一个颠覆性的认识哦&#x…

【漏洞复现】六零导航页 _include_file.php 任意文件上传漏洞

免责声明: 本文内容旨在提供有关特定漏洞或安全漏洞的信息,以帮助用户更好地了解可能存在的风险。公布此类信息的目的在于促进网络安全意识和技术进步,并非出于任何恶意目的。阅读者应该明白,在利用本文提到的漏洞信息或进行相关测…