用 WinForm 做了一个简易记账小工具(含源码)|副业/练手项目分享

最近工作之外想做点副业项目,考虑了很久,决定从最基础、最实用的工具开始------做一个简洁小巧的本地记账工具

本篇文章会分享:

  • ✅ 项目的功能设计
  • ✅ 界面效果
  • ✅ 完整源码(含保存功能)
  • ✅ 使用到的 NuGet 包

📌 开发环境 :Windows + C# + WinForm

📌 适合人群 :初学者、想搞副业写点项目的开发者

📌 项目定位:轻量、可扩展、易维护的本地账本


✨ 一、项目功能

这个小工具主要包含以下几个功能:

  • 添加收入 / 支出
  • 选择日期、输入金额与备注
  • 显示历史账单记录
  • 本地保存为 JSON(关闭程序也能保存数据)
  • 清爽简洁的 WinForm 界面

界面如下图所示(可自行美化):


🧱 二、核心技术结构

项目结构简单明了,分为三部分:

1️⃣ 数据模型 Record.cs

csharp 复制代码
public class Record
{
    public string Type { get; set; } // 收入/支出
    public string Description { get; set; }
    public decimal Amount { get; set; }
    public DateTime Date { get; set; }
}

2️⃣ 数据保存 DataManager.cs

csharp 复制代码
public static class DataManager
{
    private static string filePath = "records.json";

    public static List<Record> Load()
    {
        if (!File.Exists(filePath)) return new List<Record>();
        var json = File.ReadAllText(filePath);
        return JsonConvert.DeserializeObject<List<Record>>(json);
    }

    public static void Save(List<Record> records)
    {
        var json = JsonConvert.SerializeObject(records, Formatting.Indented);
        File.WriteAllText(filePath, json);
    }
}

📦 注意:需要在 NuGet 安装 Newtonsoft.Json


🖼️ 三、主界面逻辑 Form1.cs

ini 复制代码
private List<Record> records = new List<Record>();

public Form1()
{
    InitializeComponent();
    records = DataManager.Load();
    RefreshList();
}

private void btnAdd_Click(object sender, EventArgs e)
{
    var record = new Record
    {
        Type = comboBoxType.SelectedItem.ToString(),
        Description = textBoxDesc.Text,
        Amount = decimal.Parse(textBoxAmount.Text),
        Date = dateTimePicker.Value
    };

    records.Add(record);
    DataManager.Save(records);
    RefreshList();

    textBoxDesc.Clear();
    textBoxAmount.Clear();
}

private void RefreshList()
{
    listBox1.Items.Clear();
    foreach (var r in records)
    {
        listBox1.Items.Add($"{r.Date.ToShortDateString()} | {r.Type} | {r.Amount:C} | {r.Description}");
    }
}

控件推荐配置如下:

控件 名称
ComboBox comboBoxType (内容包含"收入""支出")
TextBox textBoxDesc, textBoxAmount
DateTimePicker dateTimePicker
Button btnAdd
ListBox listBox1

🪄 四、后续改进方向(可选)

如果你想扩展功能,也可以考虑:

  • 总收入 / 总支出统计
  • 月度图表分析
  • 导出 Excel
  • Dark 模式美化 UI
  • 云端同步(结合 SQLite + API)

🎯 五、写在最后

这是我做副业路上第一个"正式"记录下来的项目。

它虽然很简单,但也让我重新找回了一点点成就感,哪怕只是写点代码、做个工具、分享到博客,也比什么都不做好。也欢迎你把这个项目 fork、修改、自己发布。

📌 如果你也在副业、写项目的路上,不妨点赞+收藏支持我一下!
💬 有任何问题欢迎评论或私信交流~

项目链接:

github.com/Alan52519/A...

相关推荐
阿蒙Amon7 小时前
C# Linq to SQL:数据库编程的解决方案
数据库·c#·linq
iCxhust9 小时前
c# U盘映像生成工具
开发语言·单片机·c#
emplace_back11 小时前
C# 集合表达式和展开运算符 (..) 详解
开发语言·windows·c#
阿蒙Amon12 小时前
为什么 12 版仍封神?《C# 高级编程》:从.NET 5 到实战架构,进阶者绕不开的必修课
开发语言·c#
深海潜水员13 小时前
【Behavior Tree】-- 行为树AI逻辑实现- Unity 游戏引擎实现
游戏·unity·c#
开开心心_Every13 小时前
便捷的Office批量转PDF工具
开发语言·人工智能·r语言·pdf·c#·音视频·symfony
小码编匠15 小时前
C# 上位机开发怎么学?给自动化工程师的建议
后端·c#·.net
钢铁男儿15 小时前
C# 接口(什么是接口)
java·数据库·c#
小老鼠爱大米19 小时前
C# WPF - Prism 学习篇:搭建项目(一)
c#·wpf·prism