Este artículo se enfoca en cómo crear un sistema de cuentas bancarias usando lenguaje C y Manejo de archivos en C.
Enfoque:
analicemos el enfoque en detalle, cubriendo todas las funciones y su explicación en detalle.
- Cree un menú en la función principal y cree diferentes funciones para el menú, que se llamarán usando declaraciones de cambio de caso . Hay cuatro funciones diferentes:
- cuenta() – Esta función se utiliza para crear una nueva cuenta.
- transfermoney()- Esta función se utiliza para transferir dinero a la cuenta
- checkbalance()- Esta función se utiliza para comprobar el saldo de la cuenta.
- login() – Esta función se utiliza para iniciar sesión en la cuenta.
- Primero, cree una cuenta de nuestro usuario llamando a la función de cuenta() después de la creación de una cuenta, almacene todos los datos en un archivo usando las funciones de manejo de archivos.
- Luego, el usuario puede transferir la cantidad a otros usuarios, para eso se llama a la función transfermoney(), y para verificar el saldo actual en la cuenta, llame a la función checkbalance().
Los conceptos de manejo de archivos se utilizarán para almacenar los datos de los usuarios y luego leer todos los datos de ese archivo en particular, almacenar estructuras en un archivo porque son fáciles de escribir y leer .
Implementación:
Veamos la implementación en C de cada uno de los módulos del programa y finalmente consolidemos todos los módulos juntos y creemos un programa de trabajo completo.
1. Cree una cuenta bancaria:
tome todas las entradas del usuario y cree una estructura para almacenar los datos en un archivo.
// 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(); }
2. Transferir dinero:
tomar el nombre de usuario de otro usuario al que queremos transferir el dinero y abrir su registro en el archivo y escribir el monto en el archivo.
// 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); }
3. Verificar saldo:
abrir un archivo en el que se escriben todos los registros de transferencia y leerlos uno por uno y hacer coincidir el nombre de usuario pasado en la función para obtener los registros de transferencia correctos.
// 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); }
4. Funcionalidad de inicio de sesión
: para agregar la funcionalidad de inicio de sesión, estamos abriendo el archivo y comparando el nombre de usuario proporcionado por el usuario en el momento del registro, e iniciando sesión con él si el nombre de usuario es correcto y coincide con el registro presente en nuestro archivo.
// 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(); }
Programa completo
: a continuación se muestra el programa C completo para el sistema bancario utilizando los conceptos de manejo de archivos.
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-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("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(); }
Producción
Publicación traducida automáticamente
Artículo escrito por namankumar2592 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA