c ++开发BankAccount结构,创建客户,交易,账户(uni assign help)

时间:2014-03-31 22:22:24

标签: c++ arrays dynamic parameters

男孩和女孩,我事先感谢你的帮助。 C ++再次出现问题。我有大学任务的挣扎,而且由于堆栈政策的原因,我在这篇单独的帖子中回顾了之前在堆栈上发布的问题。

我的问题:以下是我的代码无效,有人可以帮助我使其工作吗?我错过了什么? (我有一种感觉,我错过了很多)。

我在单独的头文件中有函数和结构,在.ccp中有“int main”。我正在使用vis studio来做这件事。请不要认为我想让其他人做我的任务。下面是我的代码,后跟任务表(仅供参考)。

>     CODE
>     
>     // the int main must be my output to screen
>     int main()
>     {
>     Customer* Mary = CreateCustomer("Mary Jones", "235718", "5074");
>     Customer* John = CreateCustomer("John Smith", "375864", "3251");
>     Account* MaryAccount = CreateAccount(*Mary, "06-3121-10212357", "01/03/2014", 100);
>     Account* JohnAccount = CreateAccount(*John, "06-3121-10213758", "10/03/2014");
>     RecordWithdraw(MaryAccount, CreateTransaction("01/03/2014", "ATM Withdrawal", 50) );
>     RecordDeposit(MaryAccount, CreateTransaction("02/03/2014", "Deposit", 90) );
>     RecordWithdraw(MaryAccount, CreateTransaction("04/03/2014", "ATM Withdrawal", 150) );
>     RecordDeposit(MaryAccount, CreateTransaction("05/03/2014", "Deposit", 20) );
>     RecordWithdraw(MaryAccount, CreateTransaction("05/03/2014", "Withdraw", 100) );
>     RecordWithdraw(MaryAccount, CreateTransaction("05/03/2014", "Withdraw", 50) );
>     RecordDeposit(JohnAccount, CreateTransaction("11/03/2014", "Deposit", 20) );
>     RecordDeposit(JohnAccount, CreateTransaction("12/03/2014", "Deposit", 80) );
>     RecordWithdraw(JohnAccount, CreateTransaction("12/03/2014", "Withdraw", 50) );
>     PrintReport(MaryAccount);
>     PrintReport(JohnAccount);
>     return 0;
>     }
>     
>     // the .h file as a struct ass1 section CUSTOMER
>     
>     #ifndef CUSTOMER_H
>     #define CUSTOMER_H
>     
>     using namespace std;
>     
>     struct customer
>     {
>         std::string name;
>         std::string pin;
>         std::string user_id
>     };
>     
>     
>     // function for the above CUSTOMER
>     
>     Customer* CreateCustomer(const string& name, const string& id, const string& pin) {
>         return new Customer { name, id, pin };
>     
>     }
>     
>     
>     // the .h file as a struct ass1 section transaction
>     
>     struct Transaction 
>     
>     {
>         std::string date;
>         std::string description;
>         double amount;
>     };
>     
>     
>     
>     // function for the above transaction
>     
>     
>     transaction* CreateTransaction(const string& date, const string& description, const double& amount) {
>     
>         return new transaction { date, description, amount };
>     
>     }
>     
>     
>     // the .h file as a struct ass1 section account
>     
>     
>         struct Account {
>         Customer customer;
>         int number;
>         double balance, total_deposit, total_withdrawal;
>     
>     // function for the above account 
>     
>     //CreateAccount prototype:
>     
>     
>     Account* CreateAccount(const Customer& customer, const std::string& openingDate = "01/01/2014", const double& openingBalance
> = 0, const double& deposit = 0, const double& withdraw = 0);

对于此分配,客户结构必须是:

  

CustomerName: string UserID: string Pin: string

事务结构必须是:

TransactionDate:string TransactionDescription:字符串 TransactionAmount:double

帐户结构必须是:

持有人:客户 AccountNo:字符串 平衡:双倍 TotalDeposit:double TotalWithdrawal:加倍 TransactionList:Transaction [] TransactionCount:int

包含三个成员的Customer结构(在头文件Customer.h中定义): 客户名称,用户ID和PIN。

  • 创建Customer的函数CreateCustomer()。它有三个参数来初始化 结构的每个成员(客户名称,用户ID和PinNumber)。所有参数 应该指定默认参数空白值。原型:

Customer * CreateCustomer(const string& name,const string& id,const string& pin)

  • 包含三个成员的Transaction结构(在头文件Transaction.h中定义): 交易日期,描述和金额。金额不能为负值。

  • 创建Transaction的函数CreateTransaction()。它有三个参数来初始化结构的每个成员(交易日期,描述和金额)。所有参数都应具有默认参数值。日期设置为“01/01/2014”,描述为空白,金额为零。原型:

Transaction * CreateTransaction(const string& date,const string& description,const double& amount))

  • 包含七个成员的帐户结构(在头文件Account.h中定义): 帐户持有人,数量,余额,总存款,提款总额,交易清单数组 现有交易记录中最多100条记录和交易计数。

  • 创建帐户的函数CreateAccount()。它有六个参数来初始化每个参数 适当的结构成员。 date参数用于创建第一个事务 在Transaction List数组中,描述是来自balance参数的Opening balance。 因此,在创建帐户后,应将事务计数设置为1。所有 来自第三个参数的参数应该具有默认参数值。该 日期设置为“01/01/2014”,余额,存款和取款设置为零值。原型:

帐户* CreateAccount(const Customer& holder,const string& number,const string& date,const double& 平衡,const double&存款,const double&撤回)

  • 将Transaction参数存储到事务列表中的函数RecordDeposit() 参数Account的数组,并将Transaction count增加1。确保 检查事务参数必须具有高于零的数量。否则,显示一个 错误信息。不需要默认参数值。 void RecordDeposit(Account * account,Transaction * transaction)

  • 将Transaction参数存储到事务列表中的函数RecordWithdraw() 参数Account的数组,并将Transaction count增加1。确保 检查事务参数的数量必须大于零且小于或等于 参数帐户余额。否则,显示错误消息。没有要求 默认参数值。

void RecordWithdraw(账户*账户,交易*交易)

  • 一个函数PrintReport(),它接受一个Account指针参数来显示摘要 余额帐户和阵列上的交易记录列表显示为提供的输出 格式。原型:

void PrintReport(帐户*帐户)

1 个答案:

答案 0 :(得分:0)

为了清晰起见,我将尝试给出一般结构而不是精确的代码。 您的帐户结构需要一系列事务来存储最近100个事务。添加一个新字段来存储它们(Transaction []或Transaction *)。在CreateAccount()中,将其设置为一个100长的数组(初始化它)。在CreateAccount()中,您还需要使用参数中给出的信息设置所有字段。 在RecordWithdraw()和RecordDeposit()中,检查事务是否合法(由提供的限制允许),然后将新事务添加到事务数组中的下一个空闲槽(使用事务#确定),然后更新余额,总计提款/存款,以及账户的交易编号。 希望这会有所帮助。