Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

C Language Program Develop a bank client application (bankClient) that takes the

ID: 3835496 • Letter: C

Question

C Language Program

Develop a bank client application (bankClient) that takes the following command line arguments and then communicates with the server to process the transaction:

bankClient servIPAddr servPortNum transaction acctnum value

servIPAddr is the IP address of the bank server
servPortNum is the port number of the bank server
transaction is {B for balance inquiry, D for deposit, or W for withdrawal} acctnum is the account number
value is the value of the transaction in pennies (ignored for a balance inquiry)

The protocol between the client and server is simple: they exchange a single message type in either direction (the sBANK_PROTOCOL data structure seen below).

/* Bank Transaction Types */
#define BANK_TRANS_DEPOSIT 0 #define BANK_TRANS_WITHDRAW 1 #define BANK_TRANS_INQUIRY 2

typedef struct {

unsigned int trans; unsigned int acctnum; unsigned int value;

/* transaction type */ /* account number */ /* value */

} sBANK_PROTOCOL;
The server responds in the following way to transaction requests from the client:

trans and acctnum are repeated from client message, value depends on the transaction.

For a deposit, the deposited value is set in the value field.
For a withdrawal, if there is insufficient funds then a zero is set in the value field, otherwise the withdrawn amount is set in the value field.

For a balance inquiry, the balance of the account is set in the value field.

Explanation / Answer

#include <stdio.h>

#include <conio.h>

#include <string.h>

#include <stdlib.h>

// Structure declaration

struct acc_type

{

     char bank_name[20];

     char bank_branch[20];

     char acc_holder_name[30];

     int acc_number;

     char acc_holder_address[100];

     float available_balance;    

};

struct acc_type account[20];

/*

     printf("The above structure can be declared using

     typedef like below");

     typedef struct acc_type

     {

        char bank_name[20];

        char bank_branch[20];

        char acc_holder_name[30];

        int acc_number;

        char acc_holder_address[100];

        float available_balance;    

     }Acc_detail;

     Acc_detail account[20];

*/

int num_acc;

void Create_new_account();

void Cash_Deposit();

void Cash_withdrawl();

void Account_information();

void Log_out();

void display_options();

/* main program */

int main()

{

    char option;

    char f2f[50] = "http://fresh2refresh.com/";

    num_acc=0;

    while(1)

    {

       printf(" ***** Welcome to Bank Application ***** ");

       printf(" This demo program is brought you by %s",f2f);

       display_options();

       printf("Please enter any options (1/2/3/4/5/6) ");

       printf("to continue : ");

        option = getch();

        printf("%c ", option);

        switch(option)

        {

          case '1': Create_new_account();

                    break;

          case '2': Cash_Deposit();

                    break;

          case '3': Cash_withdrawl();

                    break;

          case '4': Account_information();

                    break;

          case '5': return 0;

          case '6': system("cls");

                    break;

          default : system("cls");

                    printf("Please enter one of the options");

                    printf("(1/2/3/4/5/6) to continue ");

                    break;

        }

    }

    return 0;

}

/*Function to display available options in this application*/

void display_options()

{

    printf(" 1. Create new account ");

    printf("2. Cash Deposit ");

    printf("3. Cash withdrawl ");

    printf("4. Account information ");

    printf("5. Log out ");

    printf("6. Clear the screen and display available ");

    printf("options ");

}

/* Function to create new account */

void Create_new_account()

{

   char bank_name[20];

   char bank_branch[20];

   char acc_holder_name[30];

   int acc_number;

   char acc_holder_address[100];

   float available_balance = 0;

   fflush(stdin);    

   printf(" Enter the bank name              : ");

   scanf("%s", &bank_name);

   printf(" Enter the bank branch            : ");

   scanf("%s", &bank_branch);

   printf(" Enter the account holder name    : ");

   scanf("%s", &acc_holder_name);

   printf(" Enter the account number(1 to 10): ");

   scanf("%d", &acc_number);

   printf(" Enter the account holder address : ");

   scanf("%s", &acc_holder_address);

   strcpy(account[acc_number-1].bank_name,bank_name);

   strcpy(account[acc_number-1].bank_branch,bank_branch);

   strcpy(account[acc_number-1].acc_holder_name,

   acc_holder_name);

   account[acc_number-1].acc_number=acc_number;

   strcpy(account[acc_number-1].acc_holder_address,

   acc_holder_address);

   account[acc_number-1].available_balance=available_balance;

   printf(" Account has been created successfully ");

   printf("Bank name              : %s " ,

   account[acc_number-1].bank_name);

   printf("Bank branch            : %s " ,

   account[acc_number-1].bank_branch);

   printf("Account holder name    : %s " ,

   account[acc_number-1].acc_holder_name);

   printf("Account number         : %d " ,

   account[acc_number-1].acc_number);

   printf("Account holder address : %s " ,

   account[acc_number-1].acc_holder_address);

   printf("Available balance      : %f " ,

   account[acc_number-1].available_balance);

   //num_acc++;

}

// Displaying account informations

void Account_information()

{

     register int num_acc = 0;

     //if (!strcmp(customer,account[count].name))

     while(strlen(account[num_acc].bank_name)>0)

     {

         printf(" Bank name                : %s " ,

         account[num_acc].bank_name);

         printf("Bank branch              : %s " ,

         account[num_acc].bank_branch);

         printf("Account holder name      : %s " ,

         account[num_acc].acc_holder_name);

         printf("Account number           : %d " ,

         account[num_acc].acc_number);

         printf("Account holder address   : %s " ,

         account[num_acc].acc_holder_address);

         printf("Available balance        : %f " ,

         account[num_acc].available_balance);

         num_acc++;

     }

}

// Function to deposit amount in an account

void Cash_Deposit()

{

   auto int acc_no;

   float add_money;

   printf("Enter account number you want to deposit money:");

   scanf("%d",&acc_no);

   printf(" The current balance for account %d is %f ",

   acc_no, account[acc_no-1].available_balance);

   printf(" Enter money you want to deposit :  ");

   scanf("%f",&add_money);

   while (acc_no=account[acc_no-1].acc_number)

   {

         account[acc_no-1].available_balance=

         account[acc_no-1].available_balance+add_money;

         printf(" The New balance for account %d is %f ",

         acc_no, account[acc_no-1].available_balance);

         break;

   }acc_no++;

}

// Function to withdraw amount from an account

void Cash_withdrawl()

{

   auto int acc_no;

   float withdraw_money;

   printf("Enter account number you want to withdraw money:");

   scanf("%d",&acc_no);

   printf(" The current balance for account %d is %f ",

   acc_no, account[acc_no-1].available_balance);

   printf(" Enter money you want to withdraw from account ");

   scanf("%f",&withdraw_money);

   while (acc_no=account[acc_no-1].acc_number)

   {

         account[acc_no-1].available_balance=

         account[acc_no-1].available_balance-withdraw_money;

         printf(" The New balance for account %d is %f ",

         acc_no, account[acc_no-1].available_balance);

         break;

   }acc_no++;

}