CSE-513A course System Software Mini Project
A client-server banking application built with C
[x] Data consistency
[x] Handling of race condition using file management
[x] Locking mechanism
[x] Process Synchronization
[x] Socket Programming
[x] Concurrency
[x] Synchronization
[x] ACID properties
[x] Process Management
[x] File Management
[x] File Locking
[x] Multi-processing ( instead of Multi-threading. Each client gets a process )
├── bin
│ ├── client
│ └── server
├── build
│ ├── accounts.o
│ ├── audit.o
│ ├── auth.o
│ ├── client_client.o
│ ├── client_input_validation.o
│ ├── client_menu_admin.o
│ ├── client_menu_customer.o
│ ├── client_menu_employee.o
│ ├── client_menu_manager.o
│ ├── client_net.o
│ ├── client_protocol.o
│ ├── client_util.o
│ ├── io.o
│ ├── ledger.o
│ ├── loans.o
│ ├── locks.o
│ ├── main.o
│ ├── protocol.o
│ ├── router.o
│ ├── server.o
│ ├── sessions.o
│ └── wal.o
├── cleanup_sessions.sh
├── client
│ ├── client.c
│ ├── input_validation.c
│ ├── menu_admin.c
│ ├── menu_admin.h
│ ├── menu_customer.c
│ ├── menu_customer.h
│ ├── menu_employee.c
│ ├── menu_employee.h
│ ├── menu_manager.c
│ ├── menu_manager.h
│ ├── net.c
│ ├── net.h
│ ├── protocol.c
│ ├── protocol.h
│ ├── util.c
│ └── util.h
├── concurrency_synchronization_acid.md
├── data
│ ├── accounts.dat
│ ├── audit.log
│ ├── feedback.dat
│ ├── loans.dat
│ ├── sessions.dat
│ ├── transactions.dat
│ ├── users.dat
│ └── wal.log
├── images
│ ├── class_diagram.png
│ └── class_diagram.svg
├── include
│ ├── accounts.h
│ ├── audit.h
│ ├── auth.h
│ ├── config.h
│ ├── io.h
│ ├── ledger.h
│ ├── loans.h
│ ├── locks.h
│ ├── protocol.h
│ ├── records.h
│ ├── router.h
│ ├── server.h
│ ├── sessions.h
│ └── wal.h
├── Makefile
├── README.md
└── src
├── accounts.c
├── audit.c
├── auth.c
├── io.c
├── ledger.c
├── loans.c
├── locks.c
├── main.c
├── protocol.c
├── router.c
├── server.c
├── sessions.c
└── wal.c
In the root directory of the project
If any modification has been done in the code ( or if you are running this proejct for the first time )
make clean
make
Terminal 1
./bin/server
Terminal 2,3....
./bin/client
Administrator:
- Username:
admin - Password:
admin123
Remove build artifacts
make clean
Remove data files (this deletes all accounts!)
Name: Atharva Pingale Github: https://github.com/atharva0300