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

news2024/12/26 18:23:35

文章目录

  • 一.前言
  • 二.开发环境
  • 三.预览
    • 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.coloradmin.cn/o/1828918.html

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

相关文章

LLVM后端 td文件 tablegen 模式匹配 寄存器 指令集 calling convention

目录 一、寄存器 1.1 寄存器定义 1.2 寄存器分类 二、指令集 2.1 指令集定义 2.2 模式匹配 2.2.1 PatFrags与PatFrag 2.2.2 OutPatFrag 2.2.3 PatLeaf 2.2.4 ImmLeaf 2.2.5 IntImmLeaf和FPImmLeaf 2.2.6 Pat 2.2.7 ComplexPattern 2.3 指令合法化 2.3.1 Promote…

System-Verilog 实现DE2-115 流水灯

文章目录 一、什么是SystemVerilog二、代码实现实现结果 一、什么是SystemVerilog SystemVerilog是一种硬件描述语言(HDL),它用于设计和验证电子系统,特别是在集成电路(IC)和系统级芯片(SoC)的设计过程中。SystemVerilog是Verilog语言的一个超集&#xf…

存储器的性能指标以及层次化存储器

存储器的性能指标 存储器有三个性能指标:速度、容量和位价(每位价格) 1.存储速度 (1)存取时间 想衡量存储速度,最直观的指标就是完成一次存储器读写操作所需要的时间,这叫做存取时间&#x…

如何交叉编译Libsndfile

Libsndfile 是一个用于读取和写入文件的 C 库,它支持多种音频文件格式,包括 WAV、AIFF、FLAC 等。这个库提供了一个简单的 API 来处理音频数据,使得开发者可以在他们的应用程序中轻松地集成音频文件的读写功能。今天介绍一下如何针对x210平台…

C++ 45 之 赋值运算符的重载

#include <iostream> #include <string> #include <cstring> using namespace std;class Students05{ public:int m_age;char* m_name;Students05(){}Students05(const char* name,int age){// 申请堆空间保存m_name;this->m_name new char[strlen(name)…

【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 部门项目任务分配(100分) - 三语言AC题解(Python/Java/Cpp)

🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 💻 ACM银牌🥈| 多次AK大厂笔试 | 编程一对一辅导 👏 感谢大家的订阅➕ 和 喜欢💗 📎在线评测链接 部门项目任务分配(100分) 🌍 评测功能需要订阅专栏后私信联…

代码随想录——组合总和Ⅱ(Leetcode 40)需要回顾

题目链接 回溯 本题的难点在于&#xff1a;集合&#xff08;数组candidates&#xff09;有重复元素&#xff0c;但还不能有重复的组合。 思想&#xff1a;元素在同一个组合内是可以重复的&#xff0c;怎么重复都没事&#xff0c;但两个组合不能相同。所以要去重的是同一树…

HAL库开发--SPI的配置方式和读写操作

知不足而奋进 望远山而前行 目录 文章目录 前言 目标 内容 需求 SPI配置 SPI编码 OLED驱动拷贝 OLED的GPIO初始化修改 实现SPI的读写 总结 前言 SPI&#xff08;Serial Peripheral Interface&#xff09;是一种常见的串行通信协议&#xff0c;在嵌入式系统中被广泛…

技巧解析,如何向Kimi提问才能写出更好的论文?

学境思源&#xff0c;一键生成论文初稿&#xff1a; AcademicIdeas - 学境思源AI论文写作 今天为大家整理、分享的Kimi提问技巧&#xff0c;将对论文写作的各个阶段提供帮助&#xff0c;可以以此来辅助学术论文撰写。 在此之前&#xff0c;先为大家科普一个概念——信息熵&am…

常见的宽基指数基金

指数基金投资指南 ❝ 这篇博客里面的内容主要来自于银行螺丝钉的《定投十年&#xff0c;财务自由》和《指数基金投资指南》这两本书中章“常见的宽基指数”&#xff0c;最近第三次读这本书&#xff0c;打算做一点笔记加深自己的印象。 博客中很多内容是从书中摘抄的&#xff0c…

面试官:Java中缓冲流真的性能很好吗?我看未必

一、写在开头 上一篇文章中&#xff0c;我们介绍了Java IO流中的4个基类&#xff1a;InputStream、OutputStream、Reader、Writer&#xff0c;那么这一篇中&#xff0c;我们将以四个基类所衍生出来&#xff0c;应对不同场景的数据流进行学习。 二、衍生数据流分类 我们上面…

python15 数据类型 集合类型

集合类型 无序的不重复元素序列 集合中只能存储不可变的数据类型 声明集合 使用 {} 定义 与列表&#xff0c;字典一样&#xff0c;都是可变数据类型 代码 集合类型 无序的不重复元素序列 集合中只能存储不可变的数据类型 声明集合 使用 大括号{} 定义 与列表&#xff0c;字典一…

【Python】理解『下采样』:原理与应用

是你多么温馨的目光 教我坚毅望着前路 叮嘱我跌倒不应放弃 没法解释怎可报尽亲恩 爱意宽大是无限 请准我说声真的爱你 &#x1f3b5; Beyond《真的爱你》 在数字信号处理、图像处理和机器学习中&#xff0c;下采样&#xff08;Downsampling&#xff09;是…

【Linux】 进程信号的发生

送给大家一句话&#xff1a; 何必向不值得的人证明什么&#xff0c;生活得更好&#xff0c;乃是为你自己。 -- 亦舒 进程信号的发生 1 何为信号2 信号概念的基础储备3 信号产生kill系统调用alarm系统调用异常core term Thanks♪(&#xff65;ω&#xff65;)&#xff89;谢谢…

Blossom:支持私有部署的云端双链笔记软件分享

Blossom 是一款支持私有部署的云端双链笔记软件&#xff0c;能够帮助用户将笔记、图片和个人计划安排保存在自己的服务器中&#xff0c;并在任意设备之间实时同步。同时&#xff0c;它还可以作为一个动态博客使用。本文将详细介绍 Blossom 的特点和使用方法。 一、Blossom 的特…

CPN Tools学习——从平面网构建分层 PN

1.先创建平面petri网 创建如下petri网&#xff1a; CPN ide创建petri网真的舒服很多&#xff0c;但是教程又是CPN Tools的&#xff0c;我的想法是看两个版本能不能互通&#xff0c;在前者创建&#xff0c;在后者运行学习。 新增定义&#xff1a; colset E unit with e; 但…

探索Web Components

title: 探索Web Components date: 2024/6/16 updated: 2024/6/16 author: cmdragon excerpt: 这篇文章介绍了Web Components技术&#xff0c;它允许开发者创建可复用、封装良好的自定义HTML元素&#xff0c;并直接在浏览器中运行&#xff0c;无需依赖外部库。通过组合HTML模…

刷题记录(240613)

aliyun0512 1. 小红定义一个数组是好数组&#xff0c;当且仅当所有奇数出现了奇数次&#xff0c;所有偶数出现了偶数次。现在小红拿到了一个数组&#xff0c;她希望取一个该数组的非空子序列(可以不连续)&#xff0c;使得子序列是好数组。你能帮小红求出子序列的方案数吗?由于…

手机照片免费数据恢复软件EasyRecovery2024免费版下载

大家好&#xff01;今天我要给大家推荐一款非常棒的软件——EasyRecovery。相信大家都知道&#xff0c;电脑中的重要文件一旦丢失&#xff0c;对我们的工作和学习都会产生很大的影响。 而EasyRecovery软件就是专门解决这个问题的利器&#xff01;它能够帮助我们快速、有效地恢…

几种经典排序算法

几种经典排序算法 插入排序折半插入排序法 选择排序冒泡排序希尔排序堆排序二路归并排序快速排序 在介绍排序之前&#xff0c;先来说说&#xff0c;研究不同的排序主要是要研究他们的哪些不同&#xff1a; 时间性能。即排序过程中元素之间的比较次数与元素移动次数。我们此次讨…