Bank account system in C using File handling - GeeksforGeeks (2024)

// 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-Naman kumar");

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("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();

// 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();

}

Bank account system in C using File handling - GeeksforGeeks (2024)
Top Articles
Latest Posts
Article information

Author: Wyatt Volkman LLD

Last Updated:

Views: 6419

Rating: 4.6 / 5 (66 voted)

Reviews: 81% of readers found this page helpful

Author information

Name: Wyatt Volkman LLD

Birthday: 1992-02-16

Address: Suite 851 78549 Lubowitz Well, Wardside, TX 98080-8615

Phone: +67618977178100

Job: Manufacturing Director

Hobby: Running, Mountaineering, Inline skating, Writing, Baton twirling, Computer programming, Stone skipping

Introduction: My name is Wyatt Volkman LLD, I am a handsome, rich, comfortable, lively, zealous, graceful, gifted person who loves writing and wants to share my knowledge and understanding with you.