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# - 如何监控银行应用程序的交易活动的主要内容,如果未能解决你的问题,请参考以下文章