Code:
/*Josh Jackson*/
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h> //needed for toupper
#include <string.h>
#define SIZE 100
#define LENGTH 25
int mainMenu ();
void mainMenu_ver2 (int *);
void mainMenu_verBad (int );
typedef struct
{
int accountArray;
double balanceArray;
char name[LENGTH];
} customer;
//--------------------------
char bankerMenu ();
char customerMenu ();
/*void bankerSide (int accountArray[], double balanceArray[], char name[][25]);
void customerSide(int accountArray[], double balanceArray[], char name[][25]);*/
void bankerSide (customer A[]);
void customerSide(customer A[]);
void mainBanner ();
void customerBanner();
void bankerBanner ();
//---------------------------new items
void sort (customer A[]);
void printAll ( customer A[] );
//-----------------------------
//****************************
void addNewAccount ( customer A[] );
void deleteAccount ( customer A[] );
void accountSearch ( customer A[] );
void nameSearch ( customer A[] );
//**********************
void withdraw ( customer A[] );
void deposit ( customer A[] );
void checkBalance ( customer A[] );
//------------------------new items
int valid ( int index , int *arr );
void clean ( char [] );
int main ()
{
int mainSelection;
int index;
FILE *stream = fopen ("bankData.txt", "r");
customer user[SIZE] ={{0,0, ""}};
int counter = 0;
int account ;
double balance;
char name[LENGTH];
fscanf (stream, "%d", &account );
while ( !feof (stream) )
{
fscanf (stream, "%lf", &balance );
fgets(name, 25, stream);
clean (name);
user[counter].accountArray = account;
user[counter].balanceArray = balance;
strcpy ( user[counter].name, name);
counter ++;
fscanf (stream, "%d", &account );
}
printAll (user);
do
{
mainSelection = mainMenu ();
switch ( mainSelection )
{
case 9 :
for ( index= 0; index <SIZE; index++)
{
printf ("%5d, %6d, %-10.2lf\n", user);
}
printf ("\n\n");
break;
case 1 : customerSide(user);
break;
case 2 : bankerSide(user);
break;
case 0 : printf ("Thank you, and bye!\n\n");
break;
default : printf ("Invalid main selection!\n\n");
break;
}
}while ( mainSelection != 0);
system("pause");
return 0;
}
//--------------
int mainMenu ()
{
int option; //local variable
mainBanner();
printf ("\tEnter \n");
printf ("\t\t0-Exit\n");
printf ("\t\t1-Customer\n");
printf ("\t\t2-Banker\n");
printf ("\t\t\t9-(TEMP. OPTION) SHOW ALL\n\n");
printf ("\t\t\tPick your choice :");
scanf ("%i", &option);
return option;
}
//----------------------
char bankerMenu ()
{
char temp;
bankerBanner ();
printf ("\tEnter\n");
printf ("\t\tA-Add New Account\n");
printf ("\t\tB-Close Account\n");
printf ("\t\tC-Search by account\n");
printf ("\t\tD-Search by name\n");
printf ("\t\tE-Display all customers\n");
printf ("\t\tF-Return Main Menu\n\n");
printf ("\t\t\tPick your choice :");
scanf (" %c", &temp);
return temp;
}
//-------------------
char customerMenu ()
{
char temp;
customerBanner ();
printf ("\tEnter\n");
printf ("\t\t1-Withdraw\n");
printf ("\t\t2-Deposit\n");
printf ("\t\t3-Balance\n");
printf ("\t\t0-Return Main Menu\n\n");
printf ("\t\t\tPick your choice :");
scanf (" %c", &temp);
return temp;
}
//-------------
void bankerSide ( customer A[] )
{
char bankerSelection;
do
{
bankerSelection = bankerMenu ();
bankerSelection = toupper (bankerSelection);
switch ( bankerSelection )
{
case 'A' : addNewAccount (A);
break;
case 'B' : deleteAccount (A);
break;
case 'C' : accountSearch (A);
break;
case 'D' : nameSearch (A);
break;
case 'E' : sort;
break;
case 'F':
break;
default : printf ("Invalid banker selection!\n\n");
break;
}
}while ( bankerSelection != 'F');
}
//---------------------------------------
void customerSide ( customer A[] )
{
char customerSelection;
do
{
customerSelection = customerMenu ();
switch ( customerSelection )
{
case '1' : withdraw (A);
break;
case '2' : deposit (A);
break;
case '3' : checkBalance (A);
break;
case '0':
break;
default : printf ("Invalid customer selection!\n\n");
break;
}
}
while ( customerSelection != '0');
}
//-------------------
void addNewAccount ( customer A[] )
{
int index = 0;
while (A[index] .accountArray != 0 && index<SIZE )
{
index++;
}
printf ("Enter the account number and the starting balance :");
scanf ("%d%lf", &A[index].accountArray, &A[index].balanceArray);
fflush (stdin);
printf ("Enter customer's name:");
gets (A[index].name);
printf ("Customer added!\n\n");
}
//-----
void deposit ( customer A[] )
{ int account;
int index , found = -1;
double amount = 0;
printf ("Enter the account number :");
scanf ("%d", &account);
index = 0;
while ( index < SIZE )
{
if ( A[index].accountArray == account )
{
found = index;
break;
}
index++;
}
if ( found == -1 ) printf ("Sorry, invalid account\n\n");
else
{
printf ("Enter the amount to be deposited :");
scanf ("%lf", &amount);
A[index].balanceArray+= amount;
}
}
//----------------------
void withdraw ( customer A[] )
{
int account;
int index , found = -1;
double amount = 0;
printf ("Enter the account number :");
scanf ("%d", &account);
index = 0;
while ( index < SIZE )
{
if ( A[index].accountArray == account )
{
found = index;
break;
}
index++;
}
if ( found == -1 ) printf ("Sorry, invalid account\n\n");
else
{
printf ("Enter the amount to be withdrawn :");
scanf ("%lf", &amount);
if ( amount > A[index].balanceArray ) printf ("Not enough fund!\n\n");
else A[index].balanceArray -= amount;
}
}
//-------------------------------------------
void checkBalance ( customer A[] )
{
int account;
int index , found = -1;
double amount = 0;
printf ("Enter the account number :");
scanf ("%d", &account);
index = 0;
while ( index < SIZE )
{
if ( A[index].accountArray == account )
{
found = index;
break;
}
index++;
}
if ( found == -1 ) printf ("Sorry, invalid account\n\n");
else
{
printf ("the balance is %.2lf\n",A[index].balanceArray);
}
}
//------------------------------
void mainBanner ()
{
printf ("\n\t* * * M A I N M E N U * * * \n");
}
void customerBanner()
{
printf ("\n\t* * * C U S T O M E R M E N U * * * \n");
}
void bankerBanner ()
{
printf ("\n\t* * * B A N K E R M E N U * * * \n");
}
//-------------------------------
void deleteAccount(customer A[])
{
int account;
int index , found = -1;
printf ("Enter the account number :");
scanf ("%d", &account);
index = 0;
while ( index < SIZE )
{
if ( A[index].accountArray == account )
{
found = index;
break;
}
index++;
}
if ( found == -1 ) printf ("Sorry, invalid account\n\n");
else
{
A[index].balanceArray = 0; //the balance Array is intialized lossing all value
A[index].accountArray = 0; //the account Array is intialized lossing all the information
A[index].name[LENGTH] = 0;
}
}
//-------------------------------------------
void accountSearch (customer A[] )
{
int account;
int index , found = -1;
double amount = 0;
printf ("Enter the account number :");
scanf ("%d", &account);
index = 0;
while ( index < SIZE )
{
if ( A[index].accountArray == account )
{
found = index;
break;
}
index++;
}
if ( found == -1 ) printf ("Sorry, invalid account\n\n");
else
{
printf ("\n\nAccount found :");
printf ("\n\nThe name of the Account holder is: %c", A[index].name );
printf ("\n\nthe Account number and balance is %d %.2lf\n",A[index].accountArray, A[index].balanceArray );
}
}
//-----------------------
void sort (customer A[] )
{
int i, j;
char temp[25];
double tempBal;
int tempAcc;
int index;
for (j=0; j<SIZE; j++)
{
for (i=0; i<SIZE-1; i++)
{
if (strcmp(A[i].name, A[i+1].name) > 0)
{
strcpy (temp, A[i].name);
strcpy (A[i].name, A[i+1].name);
strcpy (A[i+1].name, temp);
tempBal = A[i].balanceArray;
A[i].balanceArray = A[i+1].balanceArray;
A[i+1].balanceArray = tempBal;
tempAcc = A[i].accountArray;
A[i].accountArray = A[i+1].accountArray;
A[i+1].accountArray = tempAcc;
}
}
for (index = 0; index<SIZE; index++)
{
if (A[index].accountArray !=0)
printf("%s\t%d\t\t%.2lf\n", A[index].name, A[index].accountArray, A[index].balanceArray);
}
}
}
//------------------------------
void nameSearch (customer A[] )
{
char temp [25];
int index;
char found = -1;
fflush (stdin);
printf ("\nEnter the name you are looking for:");
gets(temp);
index = 0;
for(index=0; index<SIZE; index++)
{
if ( strcmp (A[index].name, temp) == 0 )
{
found = 1;
printf("found");
break;
}
}
if ( found == -1 ) printf ("Sorry, that person doesn't belong to this bank\n\n");
else
{
printf ("\nAccount: %d\t Name: %s \t Amount: %.2lf\n\n\n", A[index].accountArray, A[index].name, A[index].balanceArray);
}
}
//-------------------------------------------
void makeUpper ( char str[])
{
int i;
for ( i = 0; i< strlen ( str ); i++)
{
str[i] = toupper ( str[i] );
}
}
//-------------------------------------------
void printAll (customer A[] )
{
int index = 0;
while ( index <100 )
{
if (A[index].accountArray !=0)
printf ("%d\t%.2lf\t[%s]\n", A[index].accountArray, A[index].balanceArray, A[index].name);
index++;
}
}
//-------------------------------------------
void clean ( char name [] )
{
int index = strlen (name) -2;
while (index >= 0)
{
if (name[index] == '\n' || name[index] == ' ' )
index --;
else
{
name[index+1] = '\0';
break;
}
}
for ( index=0; index < strlen(name); index++)
{
name[index] = name[index+1];
}
}
//-------------------------------------------