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++;
}
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.