0% found this document useful (0 votes)
12 views8 pages

C Bank Management System Code

The document contains the full source code for a Bank Management System implemented in C, which allows users to create accounts, log in, deposit and withdraw money, check balances, and view transactions. It also includes an admin panel for managing accounts, including viewing, searching, and deleting accounts. The system supports a maximum of 100 accounts and 100 transactions per account, with basic functionalities for user interaction and data management.

Uploaded by

ADNAN VP
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
12 views8 pages

C Bank Management System Code

The document contains the full source code for a Bank Management System implemented in C, which allows users to create accounts, log in, deposit and withdraw money, check balances, and view transactions. It also includes an admin panel for managing accounts, including viewing, searching, and deleting accounts. The system supports a maximum of 100 accounts and 100 transactions per account, with basic functionalities for user interaction and data management.

Uploaded by

ADNAN VP
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd

Bank Management System in C (Full

Source Code)
Date: 2025-06-01 12:58:21

Source Code:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>

#define MAX_ACCOUNTS 100


#define MAX_TRANSACTIONS 100

typedef struct {
char type[20];
float amount;
char timestamp[30];
} Transaction;

typedef struct {
char account_number[15];
char name[50];
char account_type[10];
char pin[5];
float balance;
Transaction transactions[MAX_TRANSACTIONS];
int transaction_count;
} BankAccount;

BankAccount accounts[MAX_ACCOUNTS];
int account_count = 0;
int logged_in_user_index = -1;

// Utility Functions
char* generate_account_number() {
static char acc[15];
sprintf(acc, "9%09d", 100000000 + rand() % 900000000);
return acc;
}

char* current_time() {
static char buffer[30];
time_t now = time(NULL);
struct tm *t = localtime(&now);
strftime(buffer, sizeof(buffer), "%Y-%m-%d %H:%M:%S", t);
return buffer;
}

int find_account_index(const char *acc_num, const char *pin) {


for (int i = 0; i < account_count; i++) {
if (strcmp(accounts[i].account_number, acc_num) == 0 && strcmp(accounts[i].pin, pin)
== 0)
return i;
}
return -1;
}

int find_account_by_number(const char *acc_num) {


for (int i = 0; i < account_count; i++) {
if (strcmp(accounts[i].account_number, acc_num) == 0)
return i;
}
return -1;
}

void add_transaction(BankAccount *acc, const char *type, float amount) {


if (acc->transaction_count < MAX_TRANSACTIONS) {
Transaction *t = &acc->transactions[acc->transaction_count++];
strcpy(t->type, type);
t->amount = amount;
strcpy(t->timestamp, current_time());
}
}

// User Functions
void create_account() {
if (account_count >= MAX_ACCOUNTS) {
printf("🚫 Account limit reached!\n");
return;
}
BankAccount acc;
strcpy(acc.account_number, generate_account_number());

printf("Enter Full Name: ");


getchar();
fgets([Link], sizeof([Link]), stdin);
[Link][strcspn([Link], "\n")] = 0;

printf("Enter Account Type (Savings/Current): ");


scanf("%s", acc.account_type);

printf("Set a 4-digit PIN: ");


scanf("%s", [Link]);

printf("Enter Initial Deposit: ₹");


scanf("%f", &[Link]);

acc.transaction_count = 0;
add_transaction(&acc, "Initial Deposit", [Link]);

accounts[account_count++] = acc;

printf("✅ Account created! Account Number: %s\n", acc.account_number);


}

void login_user() {
if (logged_in_user_index != -1) {
printf("⚠️A user is already logged in.\n");
return;
}

char acc_num[15], pin[5];


printf("Enter Account Number: ");
scanf("%s", acc_num);
printf("Enter PIN: ");
scanf("%s", pin);

int idx = find_account_index(acc_num, pin);


if (idx != -1) {
logged_in_user_index = idx;
printf("✅ Welcome, %s! You are now logged in.\n", accounts[idx].name);
} else {
printf("❌ Login failed. Invalid credentials.\n");
}
}

void logout_user() {
if (logged_in_user_index == -1) {
printf("⚠️No user is currently logged in.\n");
} else {
printf("👋 Logged out from %s's account.\n", accounts[logged_in_user_index].name);
logged_in_user_index = -1;
}
}

void deposit_money() {
if (logged_in_user_index == -1) {
printf("❌ Please login first.\n");
return;
}

float amount;
printf("Enter amount to deposit: ₹");
scanf("%f", &amount);

if (amount > 0) {
BankAccount *acc = &accounts[logged_in_user_index];
acc->balance += amount;
add_transaction(acc, "Deposit", amount);
printf("₹₹%.2f deposited. New balance: ₹ %.2f\n", amount, acc->balance);
} else {
printf("❌ Invalid amount.\n");
}
}

void withdraw_money() {
if (logged_in_user_index == -1) {
printf("❌ Please login first.\n");
return;
}

float amount;
printf("Enter amount to withdraw: ₹");
scanf("%f", &amount);

BankAccount *acc = &accounts[logged_in_user_index];


if (amount > 0 && amount <= acc->balance) {
acc->balance -= amount;
add_transaction(acc, "Withdrawal", amount);
printf("₹₹%.2f withdrawn. Remaining balance: ₹ %.2f\n", amount, acc->balance);
} else {
printf("❌ Insufficient funds or invalid amount.\n");
}
}

void check_balance() {
if (logged_in_user_index == -1) {
printf("❌ Please login first.\n");
return;
}

BankAccount *acc = &accounts[logged_in_user_index];


printf("💼 Account Holder: %s\n", acc->name);
printf("₹Balance: ₹ %.2f\n", acc->balance);
}

void view_transactions() {
if (logged_in_user_index == -1) {
printf("❌ Please login first.\n");
return;
}

BankAccount *acc = &accounts[logged_in_user_index];


printf("\n📄 Transactions for %s:\n", acc->name);
for (int i = 0; i < acc->transaction_count; i++) {
printf(" - [%s] %s: ₹%.2f\n", acc->transactions[i].timestamp,
acc->transactions[i].type, acc->transactions[i].amount);
}
}

// Admin Panel
void view_all_accounts() {
if (account_count == 0) {
printf("⚠️No accounts available.\n");
return;
}

printf("\n📊 All Accounts:\n");


for (int i = 0; i < account_count; i++) {
printf(" - %s | %s | %s | ₹%.2f\n", accounts[i].account_number,
accounts[i].name, accounts[i].account_type, accounts[i].balance);
}
}

void search_account() {
char acc_num[15];
printf("Enter Account Number: ");
scanf("%s", acc_num);

int idx = find_account_by_number(acc_num);


if (idx == -1) {
printf("❌ Account not found.\n");
} else {
printf("₹Found: %s (%s), Balance ₹ %.2f\n",
accounts[idx].name, accounts[idx].account_type, accounts[idx].balance);
}
}

void delete_account() {
char acc_num[15];
printf("Enter Account Number to delete: ");
scanf("%s", acc_num);

int idx = find_account_by_number(acc_num);


if (idx == -1) {
printf("❌ Account not found.\n");
return;
}

for (int i = idx; i < account_count - 1; i++) {


accounts[i] = accounts[i + 1];
}
account_count--;

printf("✅ Account deleted.\n");


}

void admin_menu() {
char user[10], pass[10];
printf("Admin Username: ");
scanf("%s", user);
printf("Admin Password: ");
scanf("%s", pass);

if (strcmp(user, "admin") != 0 || strcmp(pass, "1234") != 0) {


printf("❌ Invalid admin credentials!\n");
return;
}

int choice;
while (1) {
printf("\n🔐 Admin Panel\n");
printf("1. View All Accounts\n");
printf("2. Search Account\n");
printf("3. Delete Account\n");
printf("4. Exit Admin Panel\n");
printf("Choice: ");
scanf("%d", &choice);

switch (choice) {
case 1: view_all_accounts(); break;
case 2: search_account(); break;
case 3: delete_account(); break;
case 4: return;
default: printf("❌ Invalid option.\n");
}
}
}

// Main Menu
void main_menu() {
srand(time(NULL));
int choice;

while (1) {
printf("\n🏦 Bank Management System\n");
printf("1. Create Account\n");
printf("2. Login\n");
printf("3. Deposit\n");
printf("4. Withdraw\n");
printf("5. Check Balance\n");
printf("6. View Transactions\n");
printf("7. Logout\n");
printf("8. Admin Login\n");
printf("9. Exit\n");
printf("Choice: ");
scanf("%d", &choice);

switch (choice) {
case 1: create_account(); break;
case 2: login_user(); break;
case 3: deposit_money(); break;
case 4: withdraw_money(); break;
case 5: check_balance(); break;
case 6: view_transactions(); break;
case 7: logout_user(); break;
case 8: admin_menu(); break;
case 9:
printf("👋 Thank you for using our bank system!\n");
exit(0);
default:
printf("❌ Invalid option. Try again.\n");
}
}
}

int main() {
main_menu();
return 0;
}

You might also like