最近工作之外想做点副业项目,考虑了很久,决定从最基础、最实用的工具开始------做一个简洁小巧的本地记账工具。
本篇文章会分享:
- ✅ 项目的功能设计
- ✅ 界面效果
- ✅ 完整源码(含保存功能)
- ✅ 使用到的 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、修改、自己发布。
📌 如果你也在副业、写项目的路上,不妨点赞+收藏支持我一下!
💬 有任何问题欢迎评论或私信交流~
项目链接: