简单的打卡应用程序






4.71/5 (6投票s)
简单的打卡应用程序
引言
几年前,我写了一段代码来倒计时某个特定事件——你可以在这里阅读该文章。在九月份我目前的全职工作结束后,我参与了几个不同的项目,同时进行,并意识到我确实需要一个简单易用的打卡应用程序,它可以简单地计算我在每个项目上花费的时间。使用“倒计时提醒”的相同代码库,并对其进行略微修改以用作打卡应用程序,似乎是合理的。
是的,这篇文章非常简短,但也许你觉得这个应用程序有用,或者给我一些关于你希望添加功能的想法。我在文章末尾讨论了一些想法。
幕后
本节讨论了对倒计时提醒代码所做的更改。
用户界面
你可以阅读倒计时提醒文章来了解用户界面是如何工作的——我做了一些小的修改,取消了选择字段的选项,从而导致了一种更直接的初始化计数器组的方式。
protected void CreateCounterGroups()
{
int pos = 0;
dayGroup = new Group("Days");
hourGroup = new Group("Hours");
minuteGroup = new Group("Minutes");
secondGroup = new Group("Seconds");
foreach (Group group in new List<Group>() { dayGroup, hourGroup, minuteGroup, secondGroup })
{
group.Location = new Point(pos, 0);
pos += group.Width;
Controls.Add(group);
}
Width = 6 * Group.GroupWidth;
}
然而,在计时器的呈现方式方面,其他一切都保持不变。
我更改了弹出菜单,包括“开始”和“停止”选项
我还修改了数据结构,这反映在设置用户界面中
数据结构
底层数据结构只包含描述和时间
private static void CreateTable()
{
counterTable = new DataTable("Counters");
counterTable.Columns.Add("Index", typeof(Int32));
counterTable.Columns.Add("Description", typeof(string));
counterTable.Columns.Add("Time", typeof(long));
counterView = new DataView(Program.counterTable);
counterView.Sort = "Index";
}
理想情况下,应该使用DataSet
来支持第二个子表,以记录开始和停止日期时间活动,但这留待未来版本实现。
一次一个项目
这个硬编码的功能...
private void startToolStripMenuItem_Click(object sender, EventArgs e)
{
Program.StopCounters();
Program.StartCurrentCounter();
}
...确保一次只能“打卡”一个项目——为其计费时间。
What Next?
虽然 Code Project 上似乎没有像这样的应用程序,但也有一些精巧的打卡应用程序可以从智能手机下载,以及常规的桌面应用程序,但我并不总是把手机放在身边。也就是说,肯定需要一些功能
- 每日/每周/每月活动报告和图表
- 用于计费目的的特定时间段的摘要报告
- 与其他设备合并数据——例如,如果我在火车上使用笔记本电脑工作,我想将该信息与桌面应用程序合并。嗯……基于云的数据?
所以,这只是一个开始,我们拭目以待。