bank management system in c

#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <windows.h>
void start(void);
void checkbalance(char *);
void transfermoney(void);
void display(char *, char *);
void login(void);
void loginsu(void);
void account(void);
void logout(void);
char username[50];
char password[50];
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];
 char password[20];
};
struct money
{
 char userto[50];
 char userfrom[50];
 long int money1;
};
void start()
{
 system("cls");
 system("color 9");
 int i, a, b, choice;
 printf("\n\n\t\tWELCOME TO BANK ACCOUNT SYSTEM\n\n");
 printf("\t\t1)CREATE A BANK ACCOUNT\n");
 printf("\t\t2)ALREADY A USER? SIGN IN\n");
 printf("\t\t3)EXIT\n\n");
 printf("\n\n\t\tENTER YOUR CHOICE : ");
 scanf("%d", &choice);
 switch (choice)
 {
 case 1:
  system("cls");
  account();
  break;
 case 2:
  login();
  break;
 case 3:
  exit(0);
  break;
 default:
  printf("\n\n\t\tInvalid input");
  getch();
  start();
  break;
 }
}
void account(void)
{
 int c, p;
 char password[20];
 char username[50];
 FILE *fp, *fm;
 // FILE *mp;
 struct pass u1;
 // struct money m;
 fp = fopen("username.txt", "ab");
 system("cls");
 printf("\n\n\t\t!!!!!CREATE ACCOUNT!!!!!");
 printf("\n\n\t\tFIRST NAME : ");
 scanf("%s", &u1.fname);
 printf("\n\t\tLAST NAME : ");
 scanf("%s", &u1.lname);
 printf("\n\t\tFATHER NAME : ");
 fflush(stdin);
 gets(u1.fathname);
 printf("\n\t\tMOTHER NAME : ");
 fflush(stdin);
 gets(u1.mothname);
 printf("\n\t\tADDRESS : ");
 fflush(stdin);
 gets(u1.address);
 printf("\n\t\tACCOUNT TYPE : ");
 scanf("%s", &u1.typeaccount);
dob:
 printf("\n\t\tENTER THE VALID DATE OF BIRTH..");
 printf("\n\t\tDATE-MONTH-YEAR IN THE FOLLOWING FORMATE ONLY (dd/mm/yyyy) : ");
 scanf("%d/%d/%d", &u1.date, &u1.month, &u1.year);
 if (u1.date > 31 || u1.month > 12 || u1.year > 2022 || u1.year < 1947)
 {
  goto dob;
 }
adhcrt:
 printf("\n\t\tENTER 16 DIGIT ADHAR NUMBER : ");
 scanf("%s", u1.adharnum);
 c = strlen(u1.adharnum);
 if (c != 16)
 {
  goto adhcrt;
 }
pnnumber:
 printf("\n\t\tENTER THE 10 DIGIT PHONE NUMBER : ");
 scanf("%s", u1.pnumber);
 p = strlen(u1.pnumber);
 if (p != 10)
 {
  goto pnnumber;
 }
 fm = fopen("username.txt", "rb");
 printf("\n\n\t\tSET YOUR USERNAME : ");
 scanf("%s", &u1.username);
 printf("\n\t\tSET YOUR PASSWORD : ");
 scanf("%s", &u1.password);
 // amt:
 // mp = fopen("mon.txt","ab");
 // printf("\n\t\tDeposite minimum 100rs to create account : ");
 //// scanf("%d",&m.money1);
 // if (m.money1 < 100)
 // {
 // printf("\n\t\tMinimum amount is 100\n");
 // fclose(mp);
 /// goto amt;
 // }
 fwrite(&u1, sizeof(u1), 1, fp);
 // fwrite(&m,sizeof(mp),1,mp);
 fclose(fp);
 // fclose(mp);
 printf("\n\n\t\tAccount created sucessfull Enter any key to login\n");
 getch();
 login();
}
void login(void)
{
 system("cls");
 int n = 0;
 // char username[50];
 // char password[50];
 int i, j, k, N = 1;
 char ch;
 FILE *fp;
 struct pass u1;
 fp = fopen("username.txt", "rb");
 if (fp == NULL)
 {
  printf("ERROR IN OPENING FILE");
 }
 printf(" \t\t\tACCOUNT LOGIN \n\n");
 printf("***********************************************"
     "********************************");
 printf("\n\t\t========= LOG IN =========\n\n");
 printf("\n\t\tUSERNAME : ");
 scanf("%s", &username);
 printf("\n\t\tPASSWORD : ");
 scanf("%s", &password);
 while (fread(&u1, sizeof(u1), 1, fp))
 {
  if (strcmp(username, u1.username) == 0)
  {
   if (strcmp(password, u1.password) == 0)
   {
    --N;
    loginsu();
    display(username, password);
   }
  }
 }
 if (N = 1)
 {
  fclose(fp);
  printf("\n\n\t\t******Invalid input******\n");
  getch();
  login();
 }
 fclose(fp);
}
void loginsu(void)
{
 int i;
 FILE *fp;
 struct pass u1;
 system("cls");
 printf("\n\n\n\t\t\tFetching account details.....");
 for (i = 0; i < 20000; i++)
 {
  i++;
  i--;
 }
 printf("\n\n\n\t\t\tLOGIN SUCCESSFUL....");
 printf("\n\n\n\t\t\tPress enter to continue");
 getch();
}
void display(char username1[], char password1[])
{
 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)
  {
   if (strcmp(password1, u1.password) == 0)
   {
    printf("WELCOME, %s %s", u1.fname, u1.lname);
    printf("\n==== YOUR ACCOUNT INFO ====\n");
    printf("NAME : %s %s\n", u1.fname, u1.lname);
    printf("FATHER NAME : %s \n", u1.fathname);
    printf("MOTHER NAME : %s\n", u1.mothname);
    printf("ADHAR CARD NUMBER : %s\n", u1.adharnum);
    printf("MOBILE NUMBER : %s\n", u1.pnumber);
    printf("DATE OF BIRTH : %d-%d-%d\n", u1.date, u1.month, u1.year);
    printf("ADDRESS : %s\n", u1.address);
    printf("ACCOUNT TYPE : %s\n", u1.typeaccount);
   }
  }
 }
 fclose(fp);
 printf("\n\n******HOME****** \n\n");
 printf(" 1)CHECK BALANCE\n");
 printf(" 2)TRANSFER MONEY\n");
 printf(" 3)LOG OUT\n");
 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;
 }
}
void transfermoney(void)
{
 int i, j, q = 1;
 FILE *fm, *fp;
 struct pass u1;
 struct money m1;
 char usernamet[20];
 char usernamep[20];
 char pin[20];
 system("cls");
 fp = fopen("username.txt", "rb");
 fm = fopen("mon.txt", "ab");
 printf("========================---- TRANSFER MONEY ----========================");
 printf("\n\t\tFROM (your username) : ");
 scanf("%s", &usernamet);
 printf("\n\t\tEnter your pin : ");
 scanf("%s", &pin);
 printf("\n\t\tTO (username of person) : ");
 scanf("%s", &usernamep);
 while (fread(&u1, sizeof(u1), 1, fp))
 {
  if (strcmp(usernamet, u1.username) == 0 && strcmp(usernamet, username) == 0)
  {
   if (strcmp(pin, u1.password) == 0)
   {
    --q;
    strcpy(m1.userto, usernamep);
    strcpy(m1.userfrom, u1.username);
   }
  }
 }
 if (q == 1)
 {
  printf("\n\n\t\tInvalid Username / Password\n");
  getch();
  fclose(fp);
  fclose(fm);
  transfermoney();
 }
 printf("\n\t\tENTER THE AMOUNT TO BE TRANSFERRED : ");
 scanf("%d", &m1.money1);
 // if (m1.money1>)
 //{
 // printf("\n\n \t\tInsufficient funds\n\n");
 // getch();
 // checkbalance(username);
 //}
 fwrite(&m1, sizeof(m1), 1, fm);
 printf("\n\n\t\ttransfering amount, Please wait..\n");
 for (i = 0; i < 70; i++)
 {
  for (j = 0; j < 1200000; j++)
  {
   j++;
   j--;
  }
  printf("*");
 }
 printf("\n\t\tAMOUNT SUCCESSFULLY TRANSFERRED....");
 fclose(fp);
 fclose(fm);
 getch();
 display(username, password);
}
void checkbalance(char username2[])
{
 system("cls");
 FILE *fm;
 struct money m1;
 char ch;
 int i = 1, summoney = 0;
 fm = fopen("mon.txt", "rb");
 printf("==== BALANCE DASHBOARD ====");
 printf("***************************");
 printf("\n\nS no.\t");
 printf("TRANSACTION ID");
 printf("\tAMOUNT");
 while (fread(&m1, sizeof(m1), 1, fm))
 {
  if (strcmp(username2, m1.userto) == 0)
  {
   printf("\n\n%d", i);
   i++;
   printf("\t%s", m1.userfrom);
   printf("\t\t%d", m1.money1);
   summoney = summoney + m1.money1;
  }
 }
 printf("\tTOTAL AMOUNT = ");
 printf("\t%d\n\n", summoney);
 fclose(fm);
 getch();
 display(username, password);
}
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(".");
 }
 printf("Sign out successfully..\n");
 printf("press any key to continue..");
 getch();
}
int main()
{
 start();
 return 0;
}


Posted on by