- launching a current file (fopen)
- examining a file (fscanf or fgets)
- creating a file (fprintf or fputs)
- Accessing a particular spot in a file (fseek, rewind)
- filing a closure (fclose)
Our Approach
Let's go through the strategy in depth, going over each function and a detailed description of each. In the main function, construct a Menu and several functions that will be invoked using switch case statements. There are four distinct purposes:
- account- This function is used to create a new account.
- transfermoney- This function is used to transfer money to the account
- checkbalance- This function is used to check the balance in the account.
- login- This function is used to login into the account.
Execute the account function to set up a new user account, followed by using file manipulation functions to store all the user data in a file. To transfer funds to other users, the transfermoney method can be employed, while the checkbalance function is available to review the current account balance.
To retain user information for future retrieval, the principles of file manipulation will be utilized. Due to the straightforward nature of file formats for writing and reading, they will be employed for the storage of user data.
Program Breakdown
# include < conio . h >
# include < stdio . h >
# include < stdlib . h >
# include < string . h >
# include < windows . h >
We will incorporate all essential files to prevent any errors in our banking system software.
void account ( void )
{
char password [ 20 ] ;
int passwordlength , i , seek = 0 ;
char ch ;
FILE * fp , * fu ;
struct pass u1 ;
struct userpass p1 ;
struct userpass u2 ;
// Opening file to
// write data of a user
fp = fopen ( " username.txt " , " ab " ) ;
// Inputs
system ( " cls " ) ;
printf (" \ n \ n !!!!! CREATE ACCOUNT !!!!! " ) ;
printf ( " \ n \ 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 \ n ADDRESS.. " ) ;
scanf ( " % s " , &u1.address ) ;
printf ( " \ n \ n ACCOUNT TYPE " ) ;
scanf ( " % s " , &u1.typeaccount ) ;
printf ( " \ n \ n DATE OF BIRTH.. " ) ;
printf ( " \ n DATE - " ) ;
scanf ( " % d " , &u1.date ) ;
printf ( " \ n MONTH - " ) ;
scanf ( " % d " , &u1.month ) ;
printf ( " \ n YEAR - " ) ;
scanf ( " % d " , &u1.year ) ;
printf ( " \ n \ n ADHAR NUMBER " ) ;
scanf ( " % s " , u1.adharnum ) ;
printf ( " \ n \ n PHONE NUMBER " ) ;
scanf ( " % s " , u1.pnumber ) ;
printf ( " \ n \ n USERNAME.. " ) ;
scanf ( " % s " , &u1.username ) ;
printf ( " \ n \ n PASSWORD.. " ) ;
// Taking password in the
// form of stars
for ( i = 0 ; i < 50 ; i++ )
{
ch = getch ( ) ;
if ( ch ! = 13 )
{
password [ i ] = ch ;
ch = ' * ' ;
printf ( " % c " , ch ) ;
}
else
break ;
}
// Writing to the file
fwrite ( &u1 , sizeof ( u1 ) , 1 , fp ) ;
// Closing file
fclose ( fp ) ;
// Calling another function
// after successful creation
// of account
accountcreated ( ) ;
}
Construct a format incorporating all the input from the user to facilitate storing the information in a file.
// Function to transfer
// money from one user to
// another
void transfermoney ( void )
{
int i , j ;
FILE * fm , * fp ;
struct pass u1 ;
struct money m1 ;
char usernamet [ 20 ] ;
char usernamep [ 20 ] ;
system("cls");
// Opening file in read mode to
// read user's username
fp = fopen ( " username.txt " , " rb " ) ;
// Creating a another file
// to write amount along with
// username to which amount
// is going to be transferred
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 ) ;
// Checking for username if it
// is present in file or not
while ( fread ( &u1 , sizeof ( u1 ) , 1 , fp ) )
{
if ( strcmp ( usernamep ,
u1.username ) = = 0 )
{
strcpy ( m1.usernameto ,
u1.username ) ;
strcpy ( m1.userpersonfrom ,
usernamet ) ;
}
}
gotoxy ( 33 , 16 ) ;
// Taking amount input
printf ( " ENTER THE AMOUNT TO BE TRANSFERRED .. " ) ;
scanf ( " % d " , &m1.money1 ) ;
// Writing to the file
fwrite ( &m1 , sizeof ( m1 ) , 1 , fm ) ;
gotoxy ( 0 , 26 ) ;
printf (
" -------------------------------------------------- "
" -------------------------------------------- " ) ;
gotoxy ( 0 , 28 ) ;
printf (
" -------------------------------------------------- "
" -------------------------------------------- " ) ;
gotoxy ( 0 , 29 ) ;
printf ( " transfering 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 ( ) ;
// Close the files
fclose ( fp ) ;
fclose ( fm ) ;
// Function to return
// to the home screen
display ( usernamet ) ;
}
Access the file using the username of the recipient, input the transfer amount, and then finalize by closing the file.
// Function to check balance
// in users account
void checkbalance ( char username2 [ ] )
{
system ( " cls " ) ;
FILE * fm ;
struct money m1 ;
char ch ;
int i = 1 , summoney = 0 ;
// Opening amount file record
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 " ) ;
// Reading username to
// fetch the correct record
while ( fread ( &m1 , sizeof ( m1 ) , 1 , fm ) )
{
if ( strcmp ( username2 ,
m1.usernameto ) = = 0 )
{
gotoxy ( k , + + l ) ;
printf ( " % d " , i ) ;
i + + ;
gotoxy ( m , + + n ) ;
printf ( " % s " , m1.userpersonfrom ) ;
gotoxy ( u , + + v ) ;
printf ( " % d " , m1.money1 ) ;
// adding and
// finding total money
summoney = summoney + m1.money1 ;
}
}
gotoxy ( 80 , 10 ) ;
printf ( " TOTAL AMOUNT " ) ;
gotoxy ( 80 , 12 ) ;
printf ( " % d " , summoney ) ;
getch ( ) ;
// Closing file after
// reading it
fclose ( fm ) ;
display ( username2 ) ;
}
Accessing a file that holds all transfer logs, processing them individually, and cross-referencing with the provided username to fetch the relevant transfer details.
// Login function to check
// the username of the user
void login ( void )
{
system ( " cls " ) ;
char username [ 50 ] ;
char password [ 50 ] ;
int i , j , k ;
char ch ;
FILE * fp , * fu ;
struct pass u1 ;
struct userpass u2 ;
// Opening file of
// user data
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 ==== " ) ;
// Take input
gotoxy ( 35 , 12 ) ;
printf ( " USERNAME .. " ) ;
scanf ( " % s " , &username ) ;
gotoxy ( 35 , 14 ) ;
printf ( " PASSWORD .. " ) ;
// Input the password
for ( i = 0 ; i < 50 ; i + + )
{
ch = getch ( ) ;
if ( ch ! = 13 )
{
password [ i ] = ch ;
ch = ' * ' ;
printf ( " % c " , ch ) ;
}
else
break ;
}
// Checking if username
// exists in the file or not
while ( fread ( & u1 ,
sizeof ( u1 ) , 1 , fp ) )
{
if ( strcmp ( username ,
u1.username ) == 0 )
{
loginsu ( ) ;
display ( username ) ;
}
}
// Closing the file
fclose ( fp ) ;
}
// Screen is shown after
// successful login
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 ( ) ;
}
To enable users to log in, we access the file, verify the username provided during registration, and if it matches the stored record, the user is successfully logged in.
Program for Bank Account Management system in C
// C program to implement
// the above approach
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <windows.h>
// Declaring all the functions
void checkbalance(char*);
void transfermoney(void);
void display(char*);
void person(char*);
void login(void);
void loginsu(void);
void account(void);
void accountcreated(void);
void afterlogin(void);
void logout(void);
// Declaring gotoxy
// function for setting
// cursor position
void gotoxy(int x, int y)
{
COORD c;
c.X = x;
c.Y = y;
SetConsoleCursorPosition(
GetStdHandle(STD_OUTPUT_HANDLE), c);
}
// Creating a structure to store
// data of the user
struct pass {
char username[50];
int date, month, year;
char pnumber[15];
char adharnum[20];
char fname[20];
char lname[20];
char fathname[20];
char mothname[20];
char address[50];
char typeaccount[20];
};
// Structure to keep track
// of amount transfer
struct money {
char usernameto[50];
char userpersonfrom[50];
long int money1;
};
struct userpass {
char password[50];
};
// Driver Code
int main()
{
int i, a, b, choice;
int passwordlength;
gotoxy(20, 3);
// Creating a Main
// menu for the user
printf("WELCOME TO BANK ACCOUNT SYSTEM\n\n");
gotoxy(18, 5);
printf("**********************************");
gotoxy(25, 7);
printf("DEVELOPER-Prateek");
gotoxy(20, 10);
printf("1.... CREATE A BANK ACCOUNT");
gotoxy(20, 12);
printf("2.... ALREADY A USER? SIGN IN");
gotoxy(20, 14);
printf("3.... EXIT\n\n");
printf("\n\nENTER YOUR CHOICE..");
scanf("%d", &choice);
switch (choice) {
case 1:
system("cls");
printf("\n\n USERNAME 50 CHARACTERS MAX!!");
printf("\n\n PASSWORD 50 CHARACTERS MAX!!");
account();
break;
case 2:
login();
break;
case 3:
exit(0);
break;
getch();
}
}
// Function to create accounts
// of users
void account(void)
{
char password[20];
int passwordlength, i, seek = 0;
char ch;
FILE *fp, *fu;
struct pass u1;
struct userpass p1;
struct userpass u2;
// Opening file to
// write data of a user
fp = fopen("username.txt", "ab");
// Inputs
system("cls");
printf("\n\n!!!!!CREATE ACCOUNT!!!!!");
printf("\n\nFIRST NAME..");
scanf("%s", &u1.fname);
printf("\n\n\nLAST NAME..");
scanf("%s", &u1.lname);
printf("\n\nFATHER's NAME..");
scanf("%s", &u1.fathname);
printf("\n\nMOTHER's NAME..");
scanf("%s", &u1.mothname);
printf("\n\nADDRESS..");
scanf("%s", &u1.address);
printf("\n\nACCOUNT TYPE");
scanf("%s", &u1.typeaccount);
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..");
// Taking password in the form of
// stars
for (i = 0; i < 50; i++) {
ch = getch();
if (ch != 13) {
password[i] = ch;
ch = '*';
printf("%c", ch);
}
else
break;
}
// Writing to the file
fwrite(&u1, sizeof(u1),
1, fp);
// Closing file
fclose(fp);
// Calling another function
// after successful creation
// of account
accountcreated();
}
// Successful account creation
void accountcreated(void)
{
int i;
char ch;
system("cls");
printf(
"PLEASE WAIT....\n\nYOUR DATA IS PROCESSING....");
for (i = 0; i < 200000000; i++) {
i++;
i--;
}
gotoxy(30, 10);
printf("ACCOUNT CREATED SUCCESSFULLY....");
gotoxy(0, 20);
printf("Press enter to login");
getch();
login();
}
// Login function to check
// the username of the user
void login(void)
{
system("cls");
char username[50];
char password[50];
int i, j, k;
char ch;
FILE *fp, *fu;
struct pass u1;
struct userpass u2;
// Opening file of
// user data
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 ====");
// Take input
gotoxy(35, 12);
printf("USERNAME.. ");
scanf("%s", &username);
gotoxy(35, 14);
printf("PASSWORD..");
// Input the password
for (i = 0; i < 50; i++) {
ch = getch();
if (ch != 13) {
password[i] = ch;
ch = '*';
printf("%c", ch);
}
else
break;
}
// Checking if username
// exists in the file or not
while (fread(&u1, sizeof(u1),
1, fp)) {
if (strcmp(username,
u1.username)
== 0) {
loginsu();
display(username);
}
}
// Closing the file
fclose(fp);
}
// Redirect after
// successful login
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();
}
// Display function to show the
// data of the user on screen
void display(char username1[])
{
system("cls");
FILE* fp;
int choice, i;
fp = fopen("username.txt", "rb");
struct pass u1;
if (fp == NULL) {
printf("error in opening file");
}
while (fread(&u1, sizeof(u1),
1, fp)) {
if (strcmp(username1,
u1.username)
== 0) {
gotoxy(30, 1);
printf("WELCOME, %s %s",
u1.fname, u1.lname);
gotoxy(28, 2);
printf("..........................");
gotoxy(55, 6);
printf("==== YOUR ACCOUNT INFO ====");
gotoxy(55, 8);
printf("***************************");
gotoxy(55, 10);
printf("NAME..%s %s", u1.fname,
u1.lname);
gotoxy(55, 12);
printf("FATHER's NAME..%s %s",
u1.fathname,
u1.lname);
gotoxy(55, 14);
printf("MOTHER's NAME..%s",
u1.mothname);
gotoxy(55, 16);
printf("ADHAR CARD NUMBER..%s",
u1.adharnum);
gotoxy(55, 18);
printf("MOBILE NUMBER..%s",
u1.pnumber);
gotoxy(55, 20);
printf("DATE OF BIRTH.. %d-%d-%d",
u1.date, u1.month, u1.year);
gotoxy(55, 22);
printf("ADDRESS..%s", u1.address);
gotoxy(55, 24);
printf("ACCOUNT TYPE..%s",
u1.typeaccount);
}
}
fclose(fp);
gotoxy(0, 6);
// Menu to perform different
// actions by user
printf(" HOME ");
gotoxy(0, 7);
printf("******");
gotoxy(0, 9);
printf(" 1....CHECK BALANCE");
gotoxy(0, 11);
printf(" 2....TRANSFER MONEY");
gotoxy(0, 13);
printf(" 3....LOG OUT\n\n");
gotoxy(0, 15);
printf(" 4....EXIT\n\n");
printf(" ENTER YOUR CHOICES..");
scanf("%d", &choice);
switch (choice) {
case 1:
checkbalance(username1);
break;
case 2:
transfermoney();
break;
case 3:
logout();
login();
break;
case 4:
exit(0);
break;
}
}
// Function to transfer
// money from one user to
// another
void transfermoney(void)
{
int i, j;
FILE *fm, *fp;
struct pass u1;
struct money m1;
char usernamet[20];
char usernamep[20];
system("cls");
// Opening file in read mode to
// read user's username
fp = fopen("username.txt", "rb");
// Creating a another file
// to write amount along with
// username to which amount
// is going to be transferred
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);
// Checking for username if it
// is present in file or not
while (fread(&u1, sizeof(u1),
1, fp))
{
if (strcmp(usernamep,
u1.username)
== 0) {
strcpy(m1.usernameto,
u1.username);
strcpy(m1.userpersonfrom,
usernamet);
}
}
gotoxy(33, 16);
// Taking amount input
printf("ENTER THE AMOUNT TO BE TRANSFERRED..");
scanf("%d", &m1.money1);
// Writing to the file
fwrite(&m1, sizeof(m1),
1, fm);
gotoxy(0, 26);
printf(
"--------------------------------------------------"
"--------------------------------------------");
gotoxy(0, 28);
printf(
"--------------------------------------------------"
"--------------------------------------------");
gotoxy(0, 29);
printf("transfering 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();
// Close the files
fclose(fp);
fclose(fm);
// Function to return
// to the home screen
display(usernamet);
}
// Function to check balance
// in users account
void checkbalance(char username2[])
{
system("cls");
FILE* fm;
struct money m1;
char ch;
int i = 1, summoney = 0;
// Opening amount file record
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");
// Reading username to
// fetch the correct record
while (fread(&m1, sizeof(m1),
1, fm)) {
if (strcmp(username2,
m1.usernameto)
== 0) {
gotoxy(k, ++l);
printf("%d", i);
i++;
gotoxy(m, ++n);
printf("%s", m1.userpersonfrom);
gotoxy(u, ++v);
printf("%d", m1.money1);
// Adding and
// finding total money
summoney = summoney + m1.money1;
}
}
gotoxy(80, 10);
printf("TOTAL AMOUNT");
gotoxy(80, 12);
printf("%d", summoney);
getch();
// Closing file after
// reading it
fclose(fm);
display(username2);
}
// Logout function to bring
// user to the login screen
void logout(void)
{
int i, j;
system("cls");
printf("please wait, logging out");
for (i = 0; i < 10; i++) {
for (j = 0; j < 25000000; j++) {
i++;
i--;
}
printf(".");
}
gotoxy(30, 10);
printf("Sign out successfully..\n");
gotoxy(0, 20);
printf("press any key to continue..");
getch();
}
Output:
WELCOME TO BANK ACCOUNT SYSTEM
**********************************
DEVELOPER-Prateek Tomar
1.... CREATE A BANK ACCOUNT
2.... ALREADY A USER? SIGN IN
3.... EXIT
!!!!!CREATE ACCOUNT!!!!!
FIRST NAME..First_name
LAST NAME..Last_name
FIRST NAME..First_name
LAST NAME..Last_name
FATHER's NAME..Mr Father
MOTHER's NAME.. Mrs Mother
ADDRESS..Addres/2 block A
ACCOUNT TYPE
DATE OF BIRTH..00-00-000
DATE- 00
MONTH- 00
YEAR- 00
ADHAR NUMBER 51235123512
PHONE NUMBER 71223124
PLEASE WAIT....
YOUR DATA IS PROCESSING....
ACCOUNT CREATED SUCCESSFULLY....Press enter to login
ACCOUNT LOGIN
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
==== LOG IN ====USERNAME.. 12345
PASSWORD..***
//logged in