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