Bank Account System in C using File Handling
This tells about the creation of bank account system using the C language and handling of files in C.
Approach
Let us see the approaches and the functions how they are covering their explanations in detail:
- With the help of switch case statements, first we create a menu and for that menu, we create different functions in the function main. These are characterized into four different functions:
- Account (): an account function is used to create a new account.
- Transfer money (): Transfer money is a function used for transferring money.
- Check balance (): check balance is a function used for checking money in an account.
- Login (): The Login function is used for account login.
- First account creation should be done by calling the function account (),
- After creation storing of the data should be done by using the file handling functions.
After creation and storing next comes the transfer of money, now the user can transfer an amount by calling the function transfer money (), and after for checking the amount present in an account we call the function check balance ().
File handling concepts is used for the storing the data of the users and reading of the data from a file and storing of a structure because for reading and writing it is easy.
Implementation
Let’s see to a below program implementation of every module and at last merging all the modules because for creating a full working program.
1. Creating Bank Account
First, we should take all the input from the user and make structure for storing data in a file.
// creating account functions for users
void account(void)
{
char password [20];
int password length, i, seek = 0;
char ch;
FILE *fp, *fu;
struct pass u1;
struct user pass p1;
struct user pass u2;
// file opening is done for writing the data
fp = fopen ("username.txt", "ab");
// Inputs
system("cls");
printf ("\n\n!!!!!CREATE ACCOUNT!!!!!");
printf ("\n\FIRST NAME..");
scanf ("%s", &u1. fname);
printf ("\n\n\n Last NAME..");
scanf ("%s", &u1. lname);
printf ("\n\n FATHER’s NAME..");
scanf ("%s", &u1. fathname);
printf ("\n\n MOTHER’s NAME..");
scanf ("%s", &u1. mothname);
printf ("\n\nADDRESS.");
scanf ("%s", &u1. address);
printf ("\n\nACCOUNT TYPE");
scanf ("%s", &u1. type account);
printf ("\n\nDATE OF BIRTH.");
printf("\nDATE-");
scanf ("%d", &u1. date);
printf("\nMONTH-");
scanf ("%d", &u1. month);
printf("\nYEAR-");
scanf ("%d", &u1. year);
printf ("\n\nADHAR NUMBER");
scanf ("%s", u1. adharnum);
printf ("\n\nPHONE NUMBER");
scanf ("%s", u1. pnumber);
printf ("\n\nUSERNAME. ");
scanf ("%s", &u1. username);
printf ("\n\nPASSWORD.");
// password is taken with the help of stars
for (i = 0; i < 50; i++)
{
ch = getch ();
if (ch! = 13)
{
password[i] = ch;
ch = '*';
printf ("%c", ch);
}
Else
break;
}
// file writing
fwrite (&u1, size of(u1), 1, fp);
// closing of a file
fclose(fp);
// one more function is called after account creation
account created ();
}
2. Transfer Money
First take a username for transferring the money and write the amount in file after opening record.
Example:
// for transferring money function used
void transfer money(void)
{
int i, j;
FILE *fm, *fp;
struct pass u1;
struct money m1;
char usernamet [20];
char usernamep [20];
system("cls");
// for reading name of a user opening file
fp = fopen ("username.txt", "rb");
// // Another file is created
//writing username and amount for knowing to whom transferring
fm = fopen ("mon.txt", "ab");
gotoxy (33, 4);
printf ("---- TRANSFER MONEY ----");
gotoxy (33, 5);
printf ("========================");
gotoxy (33, 11);
printf ("FROM (your username).. ");
scanf ("%s", &usernamet);
gotoxy (33, 13);
printf (" TO (username of person)..");
scanf ("%s", &usernamep);
//looks for the username whether it is present on that file or not
while (fread (&u1, size of(u1), 1, fp))
{
if (strcmp (usernamep,
u1.username) == 0)
{
strcpy (m1.usernameto,
u1.username);
strcpy (m1. userpersonfrom, usernamet );
}
}
gotoxy (33, 16);
// input is amount
printf ("ENTER THE AMOUNT TO BE TRANSFERRED..");
scanf ("%d", &m1. money1);
// Writing to the file
fwrite (&m1, size of(m1), 1, fm);
gotoxy (0, 26);
printf (
"--------------------------------------------------"
"--------------------------------------------");
gotoxy (0, 28);
printf (
"--------------------------------------------------"
"--------------------------------------------");
gotoxy (0, 29);
printf ("transferring amount, please wait..");
gotoxy (10, 27);
for (i = 0; i < 70; i++)
{
for (j = 0; j < 1200000; j++)
{
j++;
j--;
}
printf ("*");
}
gotoxy (33, 40);
printf ("AMOUNT SUCCESSFULLY TRANSFERRED....");
getch ();
// file closing
fclose(fp);
fclose(fm);
display(usernamet);
}
3. Checking Balance
Opening a file containing all the transfer records, reading them one at a time, and comparing them to the username supplied to the function to retrieve the appropriate transfer records.
Example:
void check balance (char username2[])
{
system("cls");
FILE* fm;
struct money m1;
char ch;
int i = 1, summoney = 0;
fm = fopen ("mon.txt", "rb");
int k = 5, l = 10;
int m = 30, n = 10;
int u = 60, v = 10;
gotoxy (30, 2);
printf ("==== BALANCE DASHBOARD ====");
gotoxy (30, 3);
printf ("***************************");
gotoxy (k, l);
printf ("S no.");
gotoxy (m, n);
printf ("TRANSACTION ID");
gotoxy (u, v);
printf("AMOUNT");
while (fread (&m1, size of(m1), 1, fm))
{
if (strcmp (username2,
m1. username to) == 0)
{
gotoxy (k, ++l);
printf ("%d", i);
i++;
gotoxy (m, ++n);
printf ("%s", m1. user person from);
gotoxy (u, ++v);
printf ("%d", m1. money1);
summoney = summoney + m1. money1;
}
}
gotoxy (80, 10);
printf ("TOTAL AMOUNT");
gotoxy (80, 12);
printf ("%d", summoney)
fclose(fm);
display(username2);
}
4. Login Functionality
In order to provide login capability, we open the file, compare the username entered by the user during registration, and, if the username is accurate and matches the record already in our file, log the user in.
Example:
// logic function for checking username
void login(void)
{
system("cls");
char username [50];
char password [50];
int i, j, k;
char ch;
FILE *fp, *fu;
struct pass u1;
struct user pass u2;
fp = fopen ("username.txt", "rb");
if (fp == NULL)
{
printf ("ERROR IN OPENING FILE");
}
gotoxy (34, 2);
printf (" ACCOUNT LOGIN ");
gotoxy (7, 5);
printf ("***********************************************"
"********************************");
gotoxy (35, 10);
printf ("==== LOG IN ====");
gotoxy (35, 12);
printf ("USERNAME.. ");
scanf ("%s", &username);
gotoxy (35, 14);
printf ("PASSWORD..");
for (i = 0; i < 50; i++)
{
ch = getch ();
if (ch! = 13)
{
password[i] = ch;
ch = '*';
printf ("%c", ch);
}
else
break;
}
// Checking name of the user exists or not
while (fread (&u1, size of(u1), 1, fp))
{
if (strcmp (username,
u1. username) == 0)
{
loginsu ();
display(username);
}
}
// file closing
fclose(fp);
}
void loginsu(void)
{
int i;
FILE* fp;
struct pass u1;
system("cls");
printf ("Fetching account details.....\n");
for (i = 0; i < 20000; i++)
{
i++;
i--;
}
gotoxy (30, 10);
printf ("LOGIN SUCCESSFUL....");
gotoxy (0, 20);
printf ("Press enter to continue");
getch ();
}



