Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在OOP中为类似银行的帐户建模?_C#_Wpf_Oop_Modeling - Fatal编程技术网

C# 如何在OOP中为类似银行的帐户建模?

C# 如何在OOP中为类似银行的帐户建模?,c#,wpf,oop,modeling,C#,Wpf,Oop,Modeling,为了便于学习,我正在使用WPF构建一个现金管理软件,在正确地建模现金账户时遇到了一些麻烦,这样我就可以在每次交易后看到余额 以下是我现在的总结: 帐户类别: public class Account { public long Id { get; set; } public string Name { get; set; } public decimal StartingBalance { get; set; } } 类别类别: public class Categor

为了便于学习,我正在使用WPF构建一个现金管理软件,在正确地建模现金账户时遇到了一些麻烦,这样我就可以在每次交易后看到余额

以下是我现在的总结:

帐户类别:

public class Account {
    public long Id { get; set; }
    public string Name { get; set; }
    public decimal StartingBalance { get; set; }
}
类别类别:

public class Category {
    public long Id { get; set; }
    public string Name { get; set; }
}
事务类:

public class Transaction {
    public long Id { get; set; }
    public DateTime Date { get; set; }
    public Account Account { get; set; }
    public Category Category { get; set; }
    public string Description { get; set; }
    public decimal TransactionValue { get; set; }
}
我想要实现的是,仅使用WPF绑定功能,填充datagrid并查看给定日期间隔和帐户的以下数据:

Date     Account     Category     Description     Value    Balance
02/02/10 A1          C1           D1               22.30    230.00
02/03/10 A1          C1           D2              -30.00    200.00
我希望能够选择一个选项“所有账户”,并在“余额”列中查看所有账户余额的总和

代码到目前为止运行良好,但我在datagrid中没有Balance字段,也看不到一种优雅的建模方法,我需要你的帮助,guyz


非常感谢您的帮助。

当我这样做时,我倾向于简单地从交易和日记账开始。日记账是交易的集合。您有日记账,以便可以撤消一组交易

我的事务表通常类似于:

CR/DR型 帐户1 会计2 数量 添加日期 然后你基本上有一个非常灵活的系统。每个操作都可以反转,CR/DR表示方向,您可以通过拥有不同的帐户和帐户类型来管理所有资金。您可以根据帐户缓存帐户的当前值,如果需要,可以从日记账中重新计算

-编辑:

就运行余额而言,如果不清楚,我会在Account表中设置一个字段,比如CurrentBalance,并根据各种其他因素,通过触发器或代码中的公共项(可能是排队情况)调整该字段。关键是在事务事件中更新它,而不是每次都计算它。

在这里,运行余额是您的关键问题。它不属于模型中的任何地方。您需要的称为ViewModel。搜索在WPF实现中常见的MVVM或模型-视图-视图-模型模式


基本上,您需要创建一个称为RegisterTransaction的专门事务类,该类包含每个事务的运行余额字段。您需要为每笔交易计算它。从那里,使用WPF绑定到您的RegisterTransaction对象。

@jim,这实际上不是家庭作业,而是自学。@jim-不要仅仅为了添加家庭作业标签而编辑问题。看,我已经在使用MVVM了。所以,我需要一个类似于常规事务的包装器类,它可能从中继承一个adda running balance字段?向上的我不知道这将如何帮助我进行wpf绑定,但日志概念让我了解了如何以低成本实现Matt Brunell的建议。谢谢你的帮助!起来@对不起,那是我的错,我没有看到你留言的那一部分,我主要回答了关于模特的主题问题!很高兴它有点有用。我不会说英语,所以有时候我会浪费很多话,说不出我想说什么,跑步平衡是我的问题,我不知道它叫什么。哈哈,再次谢谢你。