PSP表格记录功能

关于王者荣耀交流协会的PSP表格记录功能,就是针对我们平时做表格时候遇到问题的简化与解决。这部分功能可以记录我们开始时间,暂停时间,结束时间,并自动计算出各个时间段的净时间。只要你开始工作时点一下开始按钮,结束工作的时候点一下结束按钮,中间暂停工作时点一下暂停按钮。这样我们的程序会自动记录你的时间信息,并且最终生成一个我们需要的PSP表格。以下是我对程序运行结果的截图。

一.点击开始按钮后,若暂停工作,点击暂停按钮,便得到了如下的弹窗。“您已中断工作,赶快回来哦!”

二.当你想要继续工作时,点击继续任务,这是出现弹窗内容为“欢迎回来!加油!

三.如果你顺利的完成了任务,那么点击结束按钮,会产生如下界面。“恭喜你完成了一个任务!”

四.点击确定,便出现了如下一条时间记录,净时间精确到分钟。

五.部分主要代码

1.这部分代码是设计我们所获得的PSP表格每个列的标题。也就是我们平时写表格的时候需要记录的一些项。

 ColumnHeader date = new ColumnHeader();
            date.Text = "日期";
            date.Width = 100;
            listView1.Columns.Add(date);
            ColumnHeader categories = new ColumnHeader();
            categories.Text = "类别";
            categories.Width = 60;
            listView1.Columns.Add(categories);
            ColumnHeader tasks = new ColumnHeader();
            tasks.Text = "任务";
            tasks.Width = 180;
            listView1.Columns.Add(tasks);
            ColumnHeader startTime = new ColumnHeader();
            startTime.Text = "开始时间";
            startTime.Width = 60;
            listView1.Columns.Add(startTime);
            ColumnHeader endTime = new ColumnHeader();
            endTime.Text = "结束时间";
            endTime.Width = 60;
            listView1.Columns.Add(endTime);
            ColumnHeader intTime = new ColumnHeader();
            intTime.Text = "中断时间";
            intTime.Width = 60;
            listView1.Columns.Add(intTime);
            ColumnHeader deltaTime = new ColumnHeader();
            deltaTime.Text = "净时间";
            deltaTime.Width = 60;
            listView1.Columns.Add(deltaTime);
            ColumnHeader comment = new ColumnHeader();
            comment.Text = "备注";
            comment.Width = 250;
            listView1.Columns.Add(comment);

2.开始时间的按钮点击事件

 private void button1_Click(object sender, EventArgs e)
        {
            if (signal == 1)
                MessageBox.Show("您已经开始一个任务了哟~完成此任务再开始下一个吧!");
            else
            {
                signal = 1;//开始按钮已经点击
                //DateTime dateTime = DateTime.Now;//获取当前时间
                StartTime = DateTime.Now;//开始时间获取
                                         //new一条记录 一行信息
                lvi = new ListViewItem(StartTime.ToLongDateString());//第0列是日期
                lvi.SubItems.Add(comboBox.Text);//第一列是类别下拉框
                lvi.SubItems.Add(inputTask.Text);//输入好的任务描述信息
                lvi.SubItems.Add(StartTime.ToLongTimeString());//开始时间
                lvi.SubItems.Add("");//结束时间 暂时为空
                lvi.SubItems.Add("");//中断时间
                lvi.SubItems.Add("");//净时间
                lvi.SubItems.Add(inputComment.Text);//备注信息填入
                listView1.Items.Add(lvi);//添加一行
            }
        }

2.结束时间按钮点击事件

 private void button2_Click(object sender, EventArgs e)
        {
            if (signal == 0)
                MessageBox.Show("请先开始任务哦~");
            else if (flag == 1)
                MessageBox.Show("请恢复任务之后再结束任务哟!");
            else
            {
                //DateTime dateTime = DateTime.Now;
                EndTime = DateTime.Now;//获取结束的时间

                MessageBox.Show("恭喜你完成了一个任务!");
                //写入结束时间
                listView1.Items[i].SubItems[4].Text = EndTime.ToLongTimeString();

                //写入开始时间到结束时间的间隔  减去中断时间      
                tmpSpan = EndTime - StartTime;//起止时间间隔
                //MessageBox.Show(tmpSpan.ToString());
                deltaTime = tmpSpan - intTime;//减掉中断的时间
                //MessageBox.Show(deltaTime.ToString());
                listView1.Items[i].SubItems[6].Text = Math.Ceiling(deltaTime.TotalMinutes).ToString();
                //行数+1
                i++;
                signal = 0;
                intTime = new TimeSpan(0, 0, 0, 0);
            }

        }

此部分利用公式计算了最终的的deltatime。

3.暂停按钮点击事件

private void button3_Click(object sender, EventArgs e)
        {
            if (signal == 0)
                MessageBox.Show("还没开始任务呢,先输入信息开始一个任务吧!");
            else
            {
                if (flag == 0)//开始中断
                {
                    //record = i;
                    intTime1 = DateTime.Now;
                    flag = 1;
                    MessageBox.Show("您已经中断任务,赶快回来哦!");
                    button3.Text = "继续任务";
                }
                else//停止中断
                {
                    MessageBox.Show("欢迎回来!加油!");
                    button3.Text = "暂停";
                    intTime2 = DateTime.Now;
                    flag = 0;
                    intTime += intTime2.Subtract(intTime1);// dateTime - tmp;
                    listView1.Items[i].SubItems[5].Text = intTime.Hours.ToString() + ":" + intTime.Minutes.ToString() + ":" + intTime.Seconds.ToString();
                }
            }

        }

 

posted on 2017-11-01 10:07  图子会变成好的程序员  阅读(1337)  评论(0编辑  收藏  举报

导航