用 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...

相关推荐
wearegogog1232 小时前
C# .NET 文件比较工具 WinForms
开发语言·c#·.net
糖不吃2 小时前
WPF值转换器
c#
Popeye-lxw4 小时前
由罗技 K380 键盘 FN 键模式切换引发的血案
c#
FL16238631294 小时前
C# OpenCvSharp 基于霍夫变换直线检测的文本图像倾斜校正文本图像倾斜校
开发语言·c#
aini_lovee5 小时前
C# 快递单打印系统(万能套打系统)
开发语言·c#
白菜上路5 小时前
C# Serilog.AspNetCore基本使用
c#·serilog
小白不白1116 小时前
C# WinForm 与 VP 二次开发
开发语言·c#
SunnyDays10117 小时前
如何使用 C# 自动调整 Excel 行高和列宽
开发语言·c#·excel
itgather8 小时前
OfficeExcel — Word / Excel DLL 验证台功能介绍
c#·word·excel
云中小生8 小时前
Scrutor:.NET 依赖注入自动化的优雅实现
c#·.net