Você está na página 1de 27

A Project Report on


Of the course

BSC-IT (January, 2011)

Sixth Semester


Kritika Khanna

Directorate of Distance Education



Working Of A.T.M

This project has resulted from the suggestions and encouragement of numerous people . I wish to thank them all for their direct and indirect contribution in the development of the project. I deeply acknowledge my family members for their never-ending encouragement, moral support and patience during the encouragement ,moral support and patience during the preparation of this project . Last but not least , I would like to express my sincere appreciation to my friends who offered many suggestion throughout this project .


Working Of A.T.M


10 11 25 27


Working Of A.T.M

The prime purpose of the A.T.M machine is to deposit, withdraw money and check the account status. This is user friendly software that performs the function of deposit, withdrawal and payments of other bills like telephone, electricity, L.I.C premiums. This system will guide user through the A.T.M card insertion, password verification, whether to access savings or current account, also guides through options to perform deposit, withdraw or pay certain bills, displaying the confirmation message on completion of successful transactions and also displays appropriate error messages on entering wrong information respectively.






This project is intended to low memory device and the device is connected to the server, which is placed at Head Office of the bank where the

Working Of A.T.M

information about the customer is kept. C++ found to be appropriate to implement this project as C++ has many features, which make this project possible by putting reasonable effort.

OPERATING SYSTEM: Windows LANGUAGE : C++ HARDWARE:A.T.M( Automated Teller Machine)

The A.T.M connects to the S.B.I banking server to enable users to access information about their accounts and perform transactions. A.T.M provides enhanced data security from machine to banking server.

After-office hours banking is what Trust 24 ATM card offers you. It really means that SBI Bank is never closed. You can operate your account

Working Of A.T.M

anytime, via Trust 24, our ATM facility. So the money you deposit with us is always accessible to you, irrespective of our office hours: be it for sudden shopping requirements in the evening or for emergencies over a weekend, you can have all the money you need. Our Trust 24 ATM card allows you to access your account from any of the ATMs of the bank located across the country.

With the SBI Bank ATM card, you can:

Withdraw up to Rs.20, 000 per day per card subject to the balance in your account. Deposit up to 30 notes at one time. You can also deposit your cash through the A.T.M. Check the balances of all accounts linked to the ATM card. Transfer funds between your predefined accounts with us. Mini-Statement - you will get a mini-statement listing the current balance of your accounts linked to your ATM card.

You can posses a Trust 24 ATM card if you are:

Over 18 years of age A Savings Account holder with authority to operate the account in individual capacity A Current Account holder (only for a Current Account in individual name or proprietorship)

Working Of A.T.M

In case of joint account holders (with either/survivor), the card will be issued in the name of the first account holder. However, cards will not be issued to minors, corporate bodies, firms, and legal entities.

Application process
You have to open a savings or current account

ATM card issue Add-on Card Duplicate Card FREE - 2 ATM cards issued free if it is Joint Account Rs. 100/- Beyond 2 cards Rs.100

Loss or Damage to the card

In case of loss or damage to the card, please inform the branch immediately in writing, so that the card will be hot-listed, to ensure safety of your funds. Any monetary loss due to the loss of ATM card shall not be the responsibility of the bank.

Collection services
Collection service is a quick, convenient and highly effective mechanism to collect bill payment for service providers in India. You can drop you bill at the drop boxes provided at the ATMs. We currently collect B.S.N.L phone, Electricity Bills etc. in India.

Working Of A.T.M


Functional Requirement: Introduction

Working Of A.T.M

The prime requirement is user authentication for user P.I.N. User must be registered on the server of the bank service provider. There should be user friendly interface.

The input will be given by the user in form of his/her user PIN so that the user can be verified. After the verification user will be able to use the services by passing their PIN number for using each service.The output will be available on the screen in the form of text as a response.

For processing the request, we need a secure and reliable wireless network.

Functional Assumptions
We have assumed that the network is reliable and secure during the transaction so that each service will be available without any failure.

Error Reporting & Recovery

1. The first error message would flash when user enters a wrong PIN. 2. If the user enters the PIN which doesnt suits the case (i.e. case sensitive). 3. If the user enters the wrong PIN thrice in a row then machine will halt and the card will be freezed.

Working Of A.T.M

Security Related Concern

The main security provided by application as that no false user would be able to log on to access the service. Only he/she can use the service by his/her authenticated PIN number. Also there should be a mechanism available to change the PIN number so that user can change the PIN number periodically due to the security concern.

User Interface Design
During the designing of the project, we have concentrated on client site only. We have designed user interface design so that user can work easily. We have taken entities of the user by providing different options and that entities

Working Of A.T.M

will be submitted after pressing the respective keys/button. We used top down approach for user interface design.

Function Oriented Design

The next part of the designing is based on functions. It shows how each module interacts with each other on the basis of their functionality. The data flow diagram is shown in the next page.

Working Of A.T.M

Working Of A.T.M

#include<dos.h> #include<conio.h> #include<ctype.h> #include<stdio.h> #include<string.h> #include<process.h> #include<iostream.h> #include<graphics.h> class atm { public: long int k,l,a,b,*no,amount; char *name,ch; FILE *file; void intro(); void help(); void insertcard(); friend void password(); friend void options(); void update_balance_ini(float); void bankservices(); void otherservices(); friend void end(); }; /* Record Structure for initial account information of customer's when opening a new account */ struct initial { int accno; char name[30], address[30]; float balance; }ini; void atm::intro() { int i=50,j=80; for(k=1;k<50;k++) { for(l=1;l<80;l++) { textbackground(BLUE); cprintf("%c",0); } } while(j>=0) { gotoxy(80-j,49);delay(30); textcolor(YELLOW+BLINK); cprintf("%c",1); j--; }

Working Of A.T.M

j=81; while(j!=1) { gotoxy(j-1,1);delay(50); textcolor(YELLOW+BLINK); cprintf("%c",1); j--; } while(i!=0) { gotoxy(1,i-1);delay(50); textcolor(YELLOW+BLINK); cprintf("%c",1); i--; } i=50; while(i!=0) { gotoxy(80,50-i);delay(50); textcolor(YELLOW+BLINK); cprintf("%c",1); i--; } for(k=3;k<=7;k++) { gotoxy(30,k); textcolor(YELLOW); cprintf("W E L C O M E"); for(j=1;j<=13;j++) { gotoxy(29+j,k-1); textcolor(BLUE); textbackground(BLUE); cprintf("%c",0); } delay(1000); } for(k=76;k>=35;k--) { gotoxy(k,12); textcolor(YELLOW); cprintf("T O"); for(j=3;j<=3;j++) { gotoxy(k+j,12); textcolor(BLUE); textbackground(BLUE); cprintf("%c",0); } delay(100); } for(k=3;k<=19;k++) { gotoxy(k,19); textcolor(YELLOW); cprintf("S T A T E B A N K O F I N D I A ");

Working Of A.T.M

gotoxy(k-1,19); textcolor(BLUE); textbackground(BLUE); cprintf("%c",0); delay(200); } gotoxy(31,47); textcolor(YELLOW); cprintf("A . T . M"); for(i=47;i>=26;i--) { gotoxy(31,i-1); textcolor(YELLOW); cprintf("A . T . M"); for(j=0;j<=12;j++) { gotoxy(31+j,i); textcolor(BLUE); textbackground(BLUE); cprintf("%c",0); } delay(160); } for(k=3;k<=44;k++) { gotoxy(k,36); textcolor(YELLOW); textbackground(BLACK); cprintf("P R E S E N T E D B Y :-"); gotoxy(k-1,36); textcolor(BLUE); textbackground(BLUE); cprintf("%c",0); delay(120); } textcolor(YELLOW); gotoxy(44,38); textbackground(RED); cprintf("V I K R A M S U R I"); gotoxy(44,40); cprintf("S H O B I T G U P T A"); gotoxy(44,42); cprintf("M U K T E S H M A N I"); gotoxy(44,44); cprintf("6 th C .S .E - 2"); gotoxy(44,46); cprintf("H .C .S .T"); for(k=50;k>=26;k--) { gotoxy(k,48); textcolor(YELLOW); textbackground(BLACK); cprintf("PRESS ANY KEY TO CONTINUE"); for(j=29;j<=29;j++) { gotoxy(k+j,48); textcolor(BLUE); textbackground(BLUE);

Working Of A.T.M

cprintf("%c",0); } delay(80); } ch=getche(); } /* Function to display help about this project */ void atm::help() { textbackground(LIGHTGRAY);clrscr(); textcolor(MAGENTA); gotoxy(18,6); cprintf("WELCOME TO STATE BANK OF INDIA A .T .M"); textcolor(DARKGRAY); gotoxy(7,12); cprintf("BASIC INSTRUCTIONS/HELP TO GUIDE YOU THROUGH THE OPERATIONS"); delay(2000); gotoxy(10,16); cprintf("-In first option you can Deposit Cash in your account"); delay(2000); gotoxy(10,20); cprintf("-In second option you can Withdraw Cash from your account"); delay(2000); gotoxy(10,24); cprintf("-In third option you can pay your B.S.N.L Telephone Bill"); delay(2000); gotoxy(10,28); cprintf("-In fourth option you can pay your Electricity Bill"); delay(2000); gotoxy(10,32); cprintf("-In fifth option you can pay your L.I.C Premium"); delay(2000); gotoxy(10,36); cprintf("Note-: Opening amount should not be less than Rs. 500/-"); delay(2000); gotoxy(10,40); cprintf("-And last option is Quit (Exit to Window)"); delay(2000); fflush(stdin); textcolor(MAGENTA); gotoxy(26,48); cprintf("PRESS ANY KEY TO CONTINUE...."); fflush(stdin); getch(); } void atm::insertcard() { int k; textbackground(LIGHTMAGENTA); clrscr(); textcolor(RED); textbackground(GREEN); gotoxy(16,21); cprintf("P L E A S E I N S E R T Y O U R C A R D"); delay(3200); textbackground(LIGHTMAGENTA); for(k=16;k<64;k++) { gotoxy(k,21); cprintf("%c",0); } password(); } void password() { int k,l; char p[11],t[11],*r="hcst";

Working Of A.T.M

static int f; if(f<=2) { textcolor(MAGENTA); textbackground(LIGHTMAGENTA); clrscr(); textcolor(RED); textbackground(GREEN); gotoxy(19,6); cprintf("S T A T E B A N K O F I N D I A "); gotoxy(22,18); cprintf(" E N T E R P I N "); cout<<"\n\n\t\t\t\t"; gets(p); l=strlen(p); for(k=1;k<=l;k++) { gotoxy(32+k,20); cprintf("%c",12); } gotoxy(22,22); cprintf(" C O N F I R M P I N "); cout<<"\n\n\t\t\t\t"; gets(t); l=strlen(t); for(k=1;k<=l;k++) { gotoxy(32+k,24); cprintf("%c",12); } gotoxy(26,50); cprintf("PRESS ANY KEY TO CONTINUE...."); getch(); k=stricmp(p,r); if(l!=0) l=strcmp(p,t); else l=1; if(l==0 && k==0) options(); else { f++; end(); password(); } } else { textbackground(BLACK); clrscr(); char *fname[]={" Y O U R C A R D H A S B E E N int gdriver=DETECT,gmode; int midx,midy; initgraph(&gdriver,&gmode,"d:\\tc\\bgi"); midx=getmaxx()/2; midy=getmaxy()/2;

F R E E Z E D !!"};

Working Of A.T.M

settextjustify(CENTER_TEXT,CENTER_TEXT); setcolor(RED); settextstyle(SANS_SERIF_FONT,HORIZ_DIR,2); outtextxy(midx,midy,fname[0]); settextstyle(TRIPLEX_FONT,HORIZ_DIR,2); outtextxy(midx,midy,fname[0]); delay(5200); closegraph(); exit(0); } f=0; } void options() { char ch; int j,k; static int l; textbackground(LIGHTCYAN); clrscr(); if(l==0) { for(k=4;k<=21;k++) { gotoxy(10,k); textcolor(GREEN+BLINK); cprintf("P R E S S S F O R S A V I N G S A C C O U N T"); for(j=1;j<=56;j++) { gotoxy(9+j,k); textbackground(GREEN); cprintf("%c",0); } delay(120); } gotoxy(10,11); textcolor(RED+BLINK); cprintf("P R E S S S F O R S A V I N G S A C C O U N T"); for(k=46;k>=29;k--) { gotoxy(10,k); textcolor(LIGHTGREEN+BLINK); cprintf("P R E S S C F O R C U R R E N T A C C O U N T"); for(j=1;j<=56;j++) { gotoxy(9+j,k); textcolor(RED); textbackground(RED); cprintf("%c",0); } delay(120); } gotoxy(10,37); textcolor(LIGHTGREEN+BLINK); cprintf("P R E S S C F O R C U R R E N T A C C O U N T"); ch=getche(); if(ch!='s'&&ch!='c'&&ch!='S'&&ch!='C') { end();

Working Of A.T.M

options(); } l++; } fflush(stdin); } /* Function for updating the balance for the given account no. */ void atm::update_balance_ini(float t_balance) { file = fopen("INITIAL.dat","a+"); ini.balance = t_balance; textcolor(BLACK); gotoxy(16,30);textbackground(RED); cprintf ( "Do you want to save Changes <Y/N>: "); do { ch = getche(); if(ch=='0') continue; ch = toupper(ch); }while (ch != 'N' && ch != 'Y'); if (ch == 'Y') { // Updates the balance amount in INITIAL.dat data file fwrite(&ini, sizeof(ini), 1, file); fclose(file); gotoxy(16,36); cprintf ("Record modified"); gotoxy(16,40); cprintf ("Press any key to continue...."); } else { fclose(file); gotoxy(16,36); cprintf ("Record not modified"); gotoxy(16,40); cprintf ("Press any key to continue...."); getch(); } fflush(stdin); } void atm::bankservices() { long int m[]={1000,500,100,50,20,10,5,2,1},c[9]; textbackground(LIGHTGREEN); clrscr(); gotoxy(16,6); textcolor(BLACK); textbackground(LIGHTMAGENTA); cprintf("S T A T E B A N K O F I N D I A "); gotoxy(14,12); cprintf("PLEASE ENTER THE AMOUNT TO BE WITHDRAWN "); textbackground(BLACK); cprintf("%c",0); textbackground(CYAN); cprintf("=Rs."); cscanf("%ld",&amount);a=amount; file = fopen("INITIAL.dat", "r+");

Working Of A.T.M

ini.balance=ini.balance-amount; b=ini.balance; if(b>=500) { for(k=0;k<9;k++) c[k]=0; for(k=0;k<9;k++) { if(amount==0) break; while(amount!=0) { l=amount/m[k]; if(l>=1) { c[k]=c[k]+l; amount=amount-(l*m[k]); } break; } } gotoxy(14,18); textbackground(MAGENTA); cprintf("NOTE DETAILS OF WITHDRAWN AMOUNT ARE :"); for(k=0;k<9;k++) { textbackground(BLACK); cprintf("%c",0); textbackground(CYAN); cprintf("%ld*%ld=",m[k],c[k]); cprintf("Rs.%ld",m[k]*c[k]); cout<<"\n\n\t\t\t\t\t\t\t"; } gotoxy(35,37); textbackground(MAGENTA); cprintf("TOTAL CASH DELIVERED "); textbackground(BLACK); cprintf("%c",0); textbackground(CYAN); cprintf("=Rs.%ld",a); textbackground(MAGENTA); gotoxy(22,40); cprintf("AMOUNT BALANCE IN YOUR ACCOUNT "); textbackground(BLACK); cprintf("%c",0); textbackground(CYAN); cprintf("=Rs.%ld",b); ch=getche(); gotoxy(26,50); textbackground(MAGENTA); cprintf("PRESS ANY KEY TO CONTINUE"); ch=getche(); textbackground(YELLOW); clrscr(); delay(1200); textcolor(RED+BLINK);

Working Of A.T.M

gotoxy(9,16); cprintf("Y O U R T R A N S A C T I O N gotoxy(28,28); cprintf("T H A N K Y O U !!"); } else {

I S C O M P L E T E !!!!");

ini.balance=ini.balance+a; textcolor(BLACK);textbackground(LIGHTMAGENTA); gotoxy(14,20); cprintf("THIS TRANSACTION CANNOT BE COMPLETED"); gotoxy(14,30); cprintf("AMOUNT BALANCE IN YOUR ACCOUNT"); textbackground(BLACK); cprintf("%c",0); textbackground(CYAN); cprintf("=Rs.%f",ini.balance); gotoxy(26,50); textbackground(MAGENTA); cprintf("PRESS ANY KEY TO CONTINUE...."); getch(); } fwrite(&ini, sizeof(ini), 1, file); fclose(file); } void atm::otherservices() { textbackground(RED); clrscr(); gotoxy(16,6); textcolor(DARKGRAY); textbackground(YELLOW); cprintf("S T A T E B A N K O F I N D I A "); gotoxy(17,14); textbackground(YELLOW); cprintf("E N T E R F I R S T N A M E:"); textbackground(BLACK); cprintf("%c",0); textbackground(YELLOW); cscanf("%s",&name); cout<<"\n\n\t\t"; cprintf("E N T E R L A S T N A M E:"); textbackground(BLACK); cprintf("%c",0); textbackground(YELLOW); cscanf("%s",&name); cout<<"\n\n\t\t"; cprintf("E N T E R N U M B E R :"); textbackground(BLACK); cprintf("%c",0); textbackground(YELLOW); cscanf("%ld",&no); gotoxy(12,28); cprintf("PLEASE ENTER THE AMOUNT TO BE PAYED "); textbackground(BLACK); cprintf("%c",0);

Working Of A.T.M

textbackground(YELLOW); cprintf("=Rs."); cscanf("%ld",&amount); file = fopen("INITIAL.dat", "r+"); ini.balance=ini.balance-amount; a=ini.balance; if(a>=500) { gotoxy(12,36); cprintf("AMOUNT BALANCE IN YOUR ACCOUNT "); textbackground(BLACK); cprintf("%c",0); textbackground(YELLOW); cprintf("=Rs.%ld",a); gotoxy(26,50); cprintf("PRESS ANY KEY TO CONTINUE"); ch=getche();getch(); textbackground(YELLOW); clrscr(); delay(1000); textcolor(RED+BLINK); gotoxy(9,16); cprintf("Y O U R T R A N S A C T I O N I S C O M P L E T E !!!!"); gotoxy(28,28); cprintf("T H A N K Y O U !!"); } else { ini.balance=ini.balance+amount; textcolor(DARKGRAY);textbackground(YELLOW); clrscr(); gotoxy(14,20); cprintf("THIS TRANSACTION CANNOT BE COMPLETED"); gotoxy(14,30); cprintf("AMOUNT BALANCE IN YOUR ACCOUNT"); textbackground(BLACK); cprintf("%c",0); textbackground(YELLOW); cprintf("=Rs.%f",ini.balance); gotoxy(26,50); textbackground(YELLOW); cprintf("PRESS ANY KEY TO CONTINUE...."); getch(); } fwrite(&ini, sizeof(ini), 1, file); fclose(file); } void end() { textbackground(LIGHTGRAY); clrscr(); gotoxy(30,20); textcolor(RED); textbackground(CYAN); cprintf("SORRY, WRONG ENTRY"); cout<<"\n\n\t\t\t\t"; cprintf("THANK YOU!!");

Working Of A.T.M

gotoxy(26,50); cprintf("PRESS ANY KEY TO CONTINUE...."); getch(); } void main() { clrscr(); atm a; long int f=0; char ch; float bal; a.intro(); a.help(); a.insertcard(); do { fflush(stdin); textcolor(CYAN); textbackground(BLACK); clrscr(); gotoxy(25,12); cprintf("PRESS 1 FOR CASH DEPOSIT"); cout<<"\n\n\n\n\n\t\t\t"; cprintf("PRESS 2 FOR CASH WITHDRAWL"); cout<<"\n\n\n\n\n\t\t\t"; cprintf("PRESS 3 FOR B.S.N.L TELEPHONE BILL"); cout<<"\n\n\n\n\n\t\t\t"; cprintf("PRESS 4 FOR ELECTRICITY BILL PAYMENT"); cout<<"\n\n\n\n\n\t\t\t"; cprintf("PRESS 5 FOR L.I.C PREMIUM"); cout<<"\n\n\n\n\n\t\t\t"; cprintf("PRESS ANY OTHER KEY TO EXIT"); ch=getche(); if(f==1) { if(ch!='1'&&ch!='2'&&ch!='3'&&ch!='4'&&ch!='5') goto x; else { a.insertcard(); goto x; } } else x: { switch(ch) { case '1':textbackground(LIGHTGRAY);clrscr(); gotoxy(16,6);textcolor(BLACK); textbackground(LIGHTMAGENTA); cprintf("S T A T E B A N K O F I N D I A "); textcolor(BLUE);textbackground(LIGHTGRAY); cout<<"\n\n\n\n\n\n\n\n\n\n\n\n\t\t"; cprintf("ENTER THE AMOUNT :Rs"); textbackground(BLACK); cprintf("%c",0);

Working Of A.T.M

textbackground(YELLOW); cscanf("%f",&bal); a.update_balance_ini(bal); getch(); break; case '2':a.bankservices(); getch(); break; case '3':a.otherservices(); getch(); break; case '4':a.otherservices(); getch(); break; case '5':a.otherservices(); getch(); break; default :exit(0); }f=1; } }while(1);}

Working Of A.T.M

Defines the activities required to prepare for and conduct System User Acceptance testing. Communicate to all responsible parties the System Test strategy. Define deliverables and responsible parties. Communicate to all responsible parties the various dependencies and risks.

Scope Data Entry

Whether the entry data type is correct or not all the entries is storing in the server database.

Each new user will need a PIN to login to use the banking services.

Test Strategies
The test strategy consists of a series of different tests that will fully exercise the system. The primary purpose of these tests is to uncover the system limitations and measures its full capabilities.

System Test:

The system test will focus on the behavior of the

system. User scenarios will be executed against the system as well as

Working Of A.T.M

screen mapping and error message testing. Overall the system tests will test the integrated system and verify that it meets the requirements defined in the requirement document.

Performance Test:

Performance test will be conducted to

ensure that the systems response time meets the user expectations and does not exceed the specified performance criteria. During these tests, response time will be measured.

Security Test:

Security tests will determine how secure the

system is. The tests will verify that unauthorized user access to confidential data is prevented.

Working Of A.T.M