zoukankan      html  css  js  c++  java
  • .net实现统计txt记事本消费单的数据

    平时用系统自带的记事本记录日常消费,简单快捷但是缺少统计功能,不清楚每个月花费多少,于是写个程序统计一下。

    下面只给出一点测试数据:

    统计结果如下:

    实现代码:

    Default.aspx

    <style type="text/css">
    .f{ color:Red; font-weight:bold;}
    </style>

    <asp:Literal runat="server" ID="ltlResult"></asp:Literal>

    Default.aspx.cs

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.IO;
    using System.Text.RegularExpressions;
    using System.Globalization;
    using System.Text;
    namespace TestProject2011
    {
    public partial class _Default : System.Web.UI.Page
    {
    protected void Page_Load(object sender, EventArgs e)
    {
    string filepath = Server.MapPath("~/test.txt");
    using (StreamReader sr = new StreamReader(filepath, Encoding.UTF8))
    {
    StringBuilder sbDetail
    = new StringBuilder(); //详细
    StringBuilder sbMonth = new StringBuilder(); //月份统计
    StringBuilder sbYear = new StringBuilder(); //年统计
    string strline = null; //txt文本每行内容
    decimal daySum = 0; //日金额
    decimal monthSum = 0; //月份金额
    decimal yearSum = 0; //年金额
    decimal allSum = 0; //总金额
    DateTime dtLastDate = DateTime.MinValue; //临时保存统计的最后一个月
    string patternDate = @"\d{4,4}-\d{1,2}-\d{1,2}"; //日期正则
    string patternMoney = @"^\d+(\.\d+)?";//金额正则
    while ((strline = sr.ReadLine()) != null)
    {
    Match m
    = Regex.Match(strline, patternDate);
    if (m.Success)
    {
    DateTime dt
    = Convert.ToDateTime(m.ToString());
    if (dt.Month > dtLastDate.Month || dt.Year > dtLastDate.Year) //下一个月或下一年
    {
    if (dtLastDate != DateTime.MinValue)
    {
    sbDetail.Append(
    "<span class='f'>本月统计到" + dtLastDate.Day + "号结束,消费金额:" + monthSum + "</span><br />");
    sbMonth.Append(dt.AddMonths(
    -1).ToString("yyyy年MM月") + "" + monthSum + "</span><br />");
    if (dt.Year > dtLastDate.Year)
    {
    sbYear.Append(dtLastDate.Year
    + "年的消费金额:" + yearSum + "<br />");
    yearSum
    = 0;
    }
    monthSum
    = 0;
    }
    sbDetail.Append(
    "<span class='f'>本月开始:" + m.ToString() + "</span><br />" + strline + "<br />");
    }
    else if (dt < dt.AddMonths(1).AddDays(-1))
    {
    sbDetail.Append(m.ToString()
    + "<br />");
    }
    dtLastDate
    = dt;
    }
    else
    {
    string[] sArr = strline.Split('');
    foreach (string s in sArr)
    {
    if (!string.IsNullOrEmpty(s))
    {
    Match mm
    = Regex.Match(s, patternMoney);
    if (mm.Success)
    {
    decimal tempNum = decimal.Parse(mm.ToString());
    daySum
    += tempNum;
    monthSum
    += tempNum;
    yearSum
    += tempNum;
    allSum
    += tempNum;
    }
    }
    }
    string daySumStr = daySum > Convert.ToDecimal(100) ? "<span class='f'>" + daySum.ToString() + "</span>" : daySum.ToString();
    sbDetail.Append(strline.PadRight(
    30, '=') + "当天:" + daySumStr + " 当月:" + monthSum + " 当年:" + yearSum + " 总共:" + allSum + "<br />");
    daySum
    = 0;
    }
    }
    sbDetail.Append(
    "<span class='f'>本月统计到" + dtLastDate.Day + "号结束,消费金额:" + monthSum + "</span><br />");
    sbMonth.Append(dtLastDate.ToString(
    "yyyy年MM月") + "" + monthSum + "<br />");
    sbYear.Append(dtLastDate.Year
    + "年的消费金额:" + yearSum + "<br />");
    ltlResult.Text
    = sbDetail.ToString() + "<br /><br />按月统计如下:<br />" + sbMonth.ToString() + "<br />按年统计如下:<br />" + sbYear.ToString() + "总共消费金额:" + allSum;
    }
    }
    }
    }

  • 相关阅读:
    学习进度
    移动端使用rem.js,解决rem.js 行内元素占位问题
    利用递归实现数组的扁平化
    ES6 新增声明变量的 var let const 的区别详解
    js学习笔记
    ajax中error函数参数与返回值详解 200 300 400 500
    处理 vue项目 打包后导致css文件引用静态目录路径异常的问题
    vue-cli3 配置 vue.config.js
    使用 vue-cli3 搭建一个项目
    vue-router params 和 query 的区别
  • 原文地址:https://www.cnblogs.com/gdjlc/p/2086868.html
Copyright © 2011-2022 走看看