C# - 如何监控银行应用程序的交易活动

Posted

技术标签:

【中文标题】C# - 如何监控银行应用程序的交易活动【英文标题】:C# - how to monitor transaction activity for a banking application 【发布时间】:2017-02-07 03:15:43 【问题描述】:

我一直在尝试使用银行应用程序代码来监控交易活动,您可以在其中阅读交易记录列表并返回给定日期超过阈值金额的帐号。

为此,我使用 streamwriter 创建了一个虚拟文本文件,其中事务记录与 \t 隔开 例如:AccountNumber\tTransactionDate\tTransactionAmount

当我阅读时,我不确定如何拆分和收集给定日期的不同帐号并计算交易金额以进一步验证其是否高于阈值金额。

对此的任何帮助将不胜感激。 提前致谢。

【问题讨论】:

您是否有理由使用制表符分隔列表而不是 C# 更容易序列化的 xml 之类的东西? 一般来说,最好的办法是将制表符分隔文件反序列化为 C# 对象。至少,这是我的第一直觉。我将整理一个小演示,说明您必须做什么。 【参考方案1】:

以史蒂夫所说的为基础,我个人倾向于将文本反序列化为一个对象。做类似我下面的事情......

现在,您可以拥有一个属性为正确类型的对象数组,而不是只有一个文本数组。进行日期比较要容易得多...当特定帐户位于普通旧对象中时,将它们的所有金额相加。至少,对我来说是这样。

作为旁注,我下面的内容是一个非常糟糕的主意。但是,如果您只是在将来使用数据库访问层之类的东西来替换它,那么这可能会在短期内奏效。

编辑:如果您要将数据存储在纯文本文件中,最好以 C# 可以处理的格式存储它们。类似 JSON 的东西,然后使用 Newtonsoft.Json 序列化/反序列化或 XML 并使用 System.Xml.Serialization 序列化/反序列化数据。

class Program
  
    static void Main(string[] args)
    
      string srcfile = @"C:\Workspace\tmp\TestSTuff\bank\transactions.txt";
      string transactionstr;

      using (FileStream fs = new FileStream(srcfile, FileMode.Open, FileAccess.Read))
      
        byte[] buffer = new byte[fs.Length];
        int numtoread = (int)fs.Length;
        int numread = 0;
        while (numtoread > 0)
        
          int n = fs.Read(buffer, numread, numtoread);
          if (n == 0)
            break;
          numread += n;
          numtoread -= n;
        
        transactionstr = Encoding.Default.GetString(buffer); 
      

      char[] newline =  '\r','\n' ;
      char delim = ',';
      string[] transactionstrs = transactionstr.Split(newline);

      List<Transaction> transactions = new List<Transaction>();
      foreach (var t in transactionstrs)
      
        try
        
          string[] fields = t.Split(delim);
          DateTime.Parse(fields[1]);
          transactions.Add(new Transaction
          
            AccountNumber = int.Parse(fields[0]),
            TransactionDate = DateTime.Parse(fields[1]),
            TransactionAmount = double.Parse(fields[2])
          );
        
        catch
        
          continue;
        
      
    
  

  public class Transaction
  
    public int AccountNumber  get; set; 
    public DateTime TransactionDate  get; set; 
    public double TransactionAmount  get; set; 
  

【讨论】:

【参考方案2】:

你可以在你读过的字符串上使用 split 将标签拆分成一个数组。

String Instr =  "AccountNumber\tTransactionDate\tTransactionAmount";
char delim = '\t';
string[] array = Instr.Split(delim);
// array[0] = AccountNumber 
// array[1] = TransactionDate 
// array[2] = TransactionAmount

【讨论】:

以上是关于C# - 如何监控银行应用程序的交易活动的主要内容,如果未能解决你的问题,请参考以下文章

C# 如何编写程序监控键盘,即使程序的窗体不是当前活动窗体

活动|商业银行开源监控线上沙龙

网上银行网页抓取[关闭]

在 C# 中向银行账户添加利率

「监控日报」-区块链挖矿动态-5月16日

洞察分布式架构及银行业应用