You are on page 1of 34

PROJECT REPORT ON

SOFTWARE FOR IMPLEMENTATION IMPLE OF ATM


REPORT BY:
SADAQAT ALI RESMI THERESA EPHREM RESMI R. NAIR

UNDER THE GUIDANCE OF


Mr. S. R. BALASUNDARAM DEPT. OF MATHEMATICS AND COMPUTER APPLICATIONS

ACKNOWLEDGEMENT
We take this opportunity to express our profound gratitude to our respected project guide Mr. S. R. BALASUNDARAM for his ever inspiring guidance, constant encouragement and support he had provided us throughout the course of our project work. His ever motivating and encouraging attitude has made our work possible. We would also like to thank the staff of The Octagon our beloved computer center for the constant facility and support they have given throughout this project. SADAQAT ALI RESMI THERESA EPHREM RESMI R. NAIR

INTRODUCTION
An Automated Teller Machine (ATM) allows customers to perform banking transactions anywhere and at anytime without the need of human teller. By using a debit or ATM card at an ATM, individuals can withdraw cash from checking or savings accounts, make a deposit or transfer money from one account to another or perform other functions. You can also get cash advances using a credit card at an ATM. Individuals should be aware that many banks charge transaction fees generally ranging from Rs 50-150 per transaction - for using another banks ATM.

The ATM is online with the bank, that is, each transaction will be authorised by the bank onand directly debited from the account's owner. The works as follows. First, the client will insert his/her in the ATM and then the ATM will ask for a Identification Number (PIN) , if the number is incorrectly several times in a row, most ATMs will card as a security precaution to prevent an unauthorised user from working out the PIN by pure guesswork. Once the correct PIN is given, the ATM for the amount of money to be withdrawn. If the available and if the client has enough money on his credit then the said will ask amount is amount of demand ATM client card Personal entered retain the

money will be paid. Whether the amount of money is payable or not, i.e. the ATM has enough cash but could

be the case the ATM has no change for that amount, will be also checked. Once the money is offered to the client a countdown is started, i.e. the client has a determined amount of time to pick up the money. If this timeout is over, the money will be collected by the ATM and the transaction will be rolled back.

The class

Card_input has the methods for reading the code of the client's card and for ejecting the card from the ATM. The class Card_input will interact through the Controller with the class Terminal, where the methods Req_PIN and Req_amount are defined, in order to get the PIN of the user and to verify if the given PIN is correct or not. The class Card will have the information of the cardholder, that is, the Card_number, PIN, and Account_number. The Controller will interact with Bank using the information of the cardholder in order to get the authorization to pay (or not) the requested amount. The bank_interface will send the request to the Accounting class, which belongs to the Bank package, in order to call the Debit method of the accounting class3. The Accounting class has the methods Rollback, Authorization and Debit which directly interact with the Accounts class. Rollback is for roll back a transaction (for the case anything is wrong) and should leave the account and the teller machine in the original state; Authorization will authorize or not an operation and Debit will extract the requested amount of money from the account in the case the operation is authorized. ATMs are generally reliable, but if they do go wrong customers will be left without cash until the following morning or whenever they can get to the bank during opening hours. Of course not all errors are to the detriment of customers; there have been cases of machines giving out money without debiting the account or giving out a higher denomination of note by mistake. There are also many "phantom withdrawals" from ATMs, which banks often claim are the result of fraud by customers. Phantom withdrawals are considered to be a problem generated by dishonest insiders by most other observers.

HISTORY OF ATM

As is often the case with inventions, many inventors contribute to the history of an invention. In the case of the ATM, Don Wetzel invented the first successful and modern ATM in the USA, however he was not first inventor to create an ATM. In 1939, Luther George Simjian started patenting an earlier and not-so-successful version of an ATM. An automatic teller machine or ATM allows a bank customer to conduct their banking transactions from almost every other ATM machine in the world. Don Wetzel was the co-patentee and chief conceptualist of the automated teller machine, an idea he said he thought of while waiting in line at a Dallas bank. At the time (1968) Wetzel was the Vice President of Product Planning at Docutel, the company that developed automated baggage-handling equipment. The other two inventors listed on the patent were Tom Barnes, the chief mechanical engineer and George Chastain, the electrical engineer. It took five million dollars to develop the ATM. The concept of the modern ATM first began in 1968, a working prototype came about in 1969 and Docutel was issued a patent in 1973. The world's first ATM was installed in Enfield Town in the London Borough of Enfield, London on June 27 1967. The first working ATM was installed in a New York based Chemical Bank. The first ATMs were off-line machines, meaning money was not automatically withdrawn from an account. The bank accounts were not (at that time) connected by a computer network to the ATM. Therefore, banks were at first very exclusive about who they gave ATM privileges to. Giving them only to credit card holders (credit cards were used before ATM cards) with good banking records. Wetzel, Barnes and Chastain developed the first real ATM cards, cards with a magnetic strip and a personal ID number to get cash. ATM cards had to be different from credit cards (then without magnetic strips) so account information could be included.

WHY GO FOR ATM?

An automatic teller machine increases existing business. The typical ATM customer will spend 20-25% more than a non-ATM customer, according to research conducted by AT&T Global Information Solutions. An automatic teller machine generates new business. Customers are more likely to seek out a location with an automatic teller machine; in addition to convenience, there are a number of safety benefits associated with an in-store automatic teller machine, according to survey results published in Petroleum Marketer magazine. An automatic teller machine provides additional revenue streams. Each ATM withdrawal transaction generates surcharge ("convenience fee") income for the owner of the automatic teller machine. Additionally, an automatic teller machine can provide revenue from on-screen advertising, couponing, and alternative media (e.g., prepaid phone-cards, postage stamps) dispensing opportunities. An automatic teller machine reduces risk and lowers costs. Having an automatic teller machine on the premises can reduce the number of bad checks and cut credit card expenses because customers have the option of withdrawing cash instead.

An automatic teller machine pays for itself. With break-even points below 100 transactions per month, even a low traffic location can more than pay for an automatic teller machine from surcharge revenues alone.

ALGORITHM
Initialize graphic mode. Open account ledger file. Display WELCOME screen. Ask user for account number and password. Check account number and password. If fail display the massage and ask user for retry or exit If account number and password match ask user for transaction i.e. 1. Deposit 2. Withdrawn 3. Detail 4. Exit If Deposit or Withdrawn ask for amount then display the remaining balance. If Detail then display last ten transaction. If exit then display EXIT screen saying THANKS. After Deposit or Withdrawn or Mini-statement ask user for further transaction. If yes then come back to TRANSACTION screen. If no then THANKS user for using ATM. Close account ledger file. Close graphics mode.

NAME OF FILE MAIN WELCOME INPUT

DESCRIPTION ALL THE HEADER FILES AND OTHER PROGRAM FILES ARE INCLUDED IN THIS FILE AND THE CONTROL IS TRANSFERRED TO WELCOME WELCOME SCREEN IS DISPLAYED AND CONTROL IS TRANSFERRED TO INPUT.

ASK USER FOR USER NAME AND PASSWORD. CONTROL IS TRANSFERRED TO SWITCHCMP AND COMPARIS. CONVERTS THE CHARACTERS TO INTEGER AND RETURNS SWITCHCMP INTEGER TO INPUT. COMPARES THE USERNAME AND PASSWORD WITH THE COMPARIS DETAILS ENTERED IN THE DATA FILE. IF IT DOES NOT MATCH, THEN CONTROL IS GIVEN TO PSS_WRON ELSE TO TRANS THIS WILL GIVE THE USER OPTIONS FOR TRY AGAIN OR EXIT. PSS_WRON IF TRY AGAIN CONTROL GOES TO INPUT ELSE GOES TO EXITSCR. THIS WILL ASK USERS CHOICE FOR DEPOSIT, WITHDRAW, TRANS DETAILS AND EXIT. IF DEPOSIT OR WITHDRAW CONTROL GOES TO WITH_DEP. IF DETAILS CONTROL IS GIVEN TO MINIST AND IF EXIT CONTROL GOES TO EXITSCR. IT WILL ASK THE USER FOR THE AMOUNT TO DEPOSITED OR WITH_DEP WITHDRAWN. CONTROL IS TRANSFERRED TO CONVERT AND MOD. THEN DISPLAYS THE FINAL BALANCE. CONTROL IS THEN TRANSFERRED TO ANYMORE. THIS FILE DISPLAYS THE LAST TEN TRANSACTIONS AND MINIST BALANCE. CONTROL IS TRANSFERRED TO CONVERT AND ANYMORE. CONVERT THIS CONVERTS THE INTEGER VALUES TO CHARACTERS AND RETURN VALUE TO THE CALLING FUNCTION. THIS FUNCTION MODIFIES THE VALUES IN DATA FILES. THIS WILL DELETE THE FIRST TRANSACTION AND ADD THE LATEST TO THE LIST. ALSO MODIFIES THE BALANCE. CONTROL IS GIVEN BACK TO CALLING FUNCTION. THIS GIVES THE USER AN OPTION FOR ANY MORE TRANSACTION. IF YES, CONTROL GOES TO TRANS ELSE IT WILL GO TO EXITSCR. THIS WILL DISPLAY A SCREEN THANK YOU, VISIT AGAIN!

MOD

ANYMORE

EXITSCR

TABLE DEFINING FILES CONCLUSION


Based studies on the ATM we hereby conclude that ATM is the easiest way of depositing and withdrawing money. Transaction is possible any time, thats why in India some people call ATM as all time money. If ATM machines are connected to internet then its possible to do transaction from any where, 24 hours a days and 365 days a year. With the security of ATM improving it has now become a safe mode of transaction. Hence it can be concluded that ATM is safe, fast, reliable, convenient, excisable and any time money machine. In future the facilities that can be added to ATM machines are: Filling of bills. Daily news headline. Check matches score or sensex ups and downs.

BIBLIOGRAPHY
1. 2. 3. ROBERT LAFORE: TURBO C++, Galgotia Publications Pvt Ltd, New Delhi YASHAVANT KANETKAR: LET Us C, BPB Publications, New Delhi YASHAVANT KANETKAR: GRAPHICS IN C, BPB Publications, New Delhi

SOURCE CODE
/* main function */
#include<fstream.h> #include<conio.h> #include<stdio.h> #include<stdlib.h> #include<graphics.h> #include<dos.h> #include "comparis.cpp" #include "input.cpp" #include "welcome.h" #include "exitscr.cpp" #include "pss_wron.cpp" #include "trans.cpp" #include "swtchcmp.cpp" #include "with_dep.cpp" #include "convert.cpp" #include "mod.cpp" #include "anymore.cpp" #include "minist.cpp" main() { welcome(); return 0; }

/* welcome.h */
void welcome() { int gd=DETECT,gm; initgraph(&gd,&gm,""); char wel[]="WELCOME"; int xmax, ymax; xmax=getmaxx(); ymax=getmaxy(); setfillstyle(7,9);

bar(20,20,xmax-20,ymax-20); rectangle(20,20,xmax-20,ymax-20); floodfill(21,21,WHITE); setcolor(15); settextstyle(6,0,4); outtextxy(275,225,wel); getch(); input(); closegraph(); restorecrtmode(); }

/* input.cpp*/
int swtchcmp(char *ch); void comparis(int,int); input() { cleardevice(); char name[6]; char psswd[6]; int nm,pd; char ch[2]; int i,a=0; int xmax, ymax; xmax=getmaxx(); ymax=getmaxy(); setfillstyle(7,9); bar(20,20,xmax-20,ymax-20); rectangle(20,20,xmax-20,ymax-20); floodfill(21,21,WHITE); outtextxy(120,120,"Enter the user-name:"); name[0]=getch(); for(i=1;name[i-1]!='\r';i++) { ch[0]=name[i-1]; ch[1]='\0';

outtextxy(300+a,120,ch); name[i]=getch(); a=a+8; } name[i-1]='\0';

outtextxy(120,180,"Enter the password:"); a=0; psswd[0]=getch(); for(i=1;psswd[i-1]!='\r';i++) { ch[0]='*'; ch[1]='\0'; outtextxy(300+a,180,ch); psswd[i]=getch(); a=a+8; } psswd[i-1]='\0'; nm=swtchcmp(name); pd=swtchcmp(psswd); comparis(nm,pd); return 0; }

/* swtchcmp.cpp*/
int swtchcmp(char ch[6]) { int i,num,art; int x=1; int len; num=0; for(i=0;ch[i]!='\0';i++); len=i-1; for(i=len;i>=0;i--)

{ switch(ch[i]) { case '0': art=0; break; case '1': art=1; break; case '2': art=2; break; case '3': art=3; break; case '4': art=4; break; case '5': art=5; break; case '6': art=6; break; case '7': art=7; break; case '8': art=8; break; case '9': art=9; break; } num=num+art*x; x=10*x; } return num; }

/* comparis.cpp*/
void pss_wron(int); void trans(int); void comparis(int unm,int pwd) { char note[]="FAILURE"; int n,w=0,a,p,i; ifstream fin; int flag=0; fin.open("n1.txt",ios::in); if(!fin) { outtextxy(300,300,note); getch(); } else { do { fin>>n; if(unm==n)

{ fin>>p; if(pwd==p) { flag=1; fin.close(); break; } else { w=1; fin.close(); pss_wron(w); break; } } else { for(i=0;i<42;i++) fin>>a; } }while(fin); } if(flag==1) { fin.close(); trans(unm);} else if(w!=1) { w=0; fin.close(); pss_wron(w); } }

/* pss_wron.cpp*/
void pss_wron(int choice) { cleardevice(); void exitscr(); char c; int xmax, ymax; xmax=getmaxx(); ymax=getmaxy(); setcolor(15); setfillstyle(7,9); bar(20,20,xmax-20,ymax-20); rectangle(20,20,xmax-20,ymax-20); floodfill(21,21,WHITE); if(choice==0) outtextxy(120,120,"The username does not exist!!"); else if(choice==1) outtextxy(120,120,"The password entered is wrong!!"); outtextxy(120,240,"1.Try Again"); outtextxy(120,300,"2.Exit");

c=getch(); if(c=='1') input(); else exitscr(); }

/* trans.cpp*/
void with_dep(int,int); void minist(int); void exitscr(); void trans(int unm) { char ch; int xmax,ymax; cleardevice(); xmax=getmaxx(); ymax=getmaxy(); setcolor(WHITE); setfillstyle(7,9); rectangle(20,20,xmax-20,ymax-20); floodfill(21,21,WHITE); //setcolor(MAGENTA); rectangle(100,100,190,130); outtextxy(105,115,"1.WITHDRAW"); rectangle(400,100,490,130); outtextxy(405,115,"2.DEPOSIT"); rectangle(100,400,190,430); outtextxy(105,415,"3.DETAILS"); rectangle(400,400,490,430); outtextxy(405,415,"4.EXIT"); ch=getch(); switch(ch) { case '1': with_dep(unm,1); break; case '2': with_dep(unm,2); break; case '3': minist(unm); break; case '4': exitscr(); break; } }

/* with_dep.cpp*/
void convert(long,char *); long mod(int, int); int anymore(); void with_dep(int unm,int N) { long bal; char balance[10]; cleardevice(); int ymax,xmax; int a=0; int ans; char cash[6],ch[2]; int money; xmax=getmaxx(); ymax=getmaxy(); setcolor(15); setfillstyle(7,9); bar(20,20,xmax-20,ymax-20); rectangle(20,20,xmax-20,ymax-20); floodfill(21,21,WHITE); if(N==1) outtextxy(120,200,"Enter the amount to be withdrawn:" ); else if(N==2) outtextxy(120,200,"Enter the amount to be deposited:" ); cash[0]=getch(); int i; for(i=1;cash[i-1]!='\r';i++) { ch[0]=cash[i-1]; ch[1]='\0'; outtextxy(400+a,200,ch); cash[i]=getch(); a=a+8; } cash[i-1]='\0'; money=swtchcmp(cash); if(N==1)

money*=-1; bal=mod(money,unm); convert(bal,balance); outtextxy(120,250,"Your Balance is:"); outtextxy(250,250,balance); getch(); /*display the balance here*/ ans=anymore(); if(ans==1) trans(unm); else exitscr(); }

/* minist.cpp*/
void names(int); void minist(int unm) { int ans; int xmax,ymax; xmax = getmaxx(); ymax = getmaxy(); cleardevice(); setcolor(15); setfillstyle(7,9); bar(20,20,xmax-20,ymax-20); rectangle(20,20,xmax-20,ymax-20); floodfill(21,21,WHITE); ifstream fin; fin.open("n1.txt",ios::in); long st[42]; char str[10]; int n,m,p; long a; long b,bal=0;

int i=0,j,l=0; do { fin>>n; if(unm==n) { st[l++]=(long)n; fin>>a; fin>>b; st[l++]=b; bal +=b; for(j=0;j<10;j++) for(i=0;i<4;i++) { fin>>a; st[l++]=a; if(i==3) bal += a; } } else { for(i=0;i<42;i++) fin>>a; } }while(fin); fin.close(); int y=0; convert(st[0],str); outtextxy(40,40,"Account No:"); outtextxy(150,40,str); outtextxy(400,40,"Name:"); names(unm); outtextxy(40,80,"DATE"); outtextxy(200,80,"CREDIT/DEBIT"); outtextxy(400,80,"AMOUNT in Rs"); l=2; for(i=2, j=1;l<42;i++, j++) { for(int k=0, m=0, p=15;k<3;k++,m=m+30,p=p+30) { convert(st[l++],str); outtextxy(40+m,120+y,str);

if(k!=2) outtextxy(40+p,120+y,"/"); } if(st[l]<0) { outtextxy(200,120+y,"DEBIT"); st[l] *= -1; } else outtextxy(200,120+y,"CREDIT"); convert(st[l++],str); outtextxy(400,120+y,str); y+=20; } outtextxy(40,120+y+50,"Your Balance is:Rs"); convert(bal,str); outtextxy(200,120+y+50,str); getch(); ans=anymore(); if(ans==1) trans(unm); else exitscr(); } void names(int unm) { switch(unm) { case 1000: outtextxy(450,40,"Anil Ambani"); break; case 2000: outtextxy(450,40,"Azim Premji"); break; case 3000: outtextxy(450,40,"Mammootty"); break; case 4000: outtextxy(450,40,"Narayan Moorthy"); break; case 5000: outtextxy(450,40,"Ratan Tata"); break; case 6000: outtextxy(450,40,"Sachin Tendulkar"); break; case 7000: outtextxy(450,40,"Zaheer Khan"); break; case 8000: outtextxy(450,40,"Amitabh Bachchan"); break; case 9000: outtextxy(450,40,"Bill Gates"); break; case 10000: outtextxy(450,40,"Aditya Birla"); break; } }

/* convert.cpp*/
void convert(long no, char *a) { int i,j,c[10]; long b=no; int k; for(i=0;b!=0;i++) { c[i]=b%10; b /=10; } for(j=i-1,k=0;j>=0;j--,k++) { switch(c[j]) { case(1): a[k]='1';break; case(2): a[k]='2';break; case(3): a[k]='3';break; case(4): a[k]='4';break; case(5): a[k]='5';break; case(6): a[k]='6';break; case(7): a[k]='7';break; case(8): a[k]='8';break; case(9): a[k]='9';break; case(0): a[k]='0';break; } } a[k]='\0'; }

/* mod.cpp*/
long mod(int money,int unm) { int i,n,m; long a,b, bal=0; struct date d; getdate(&d); ifstream fin; ofstream fout;

fin.open("n1.txt",ios::in); fout.open("n2.txt",ios::out); int count=0; do { fin>>n; fout<<n<<"\t"; if(unm==n) { fin>>a; fout<<a<<"\t"; fin>>b; for(i=0;i<4;i++) { fin>>a; if(i==3) { b = b+a; bal=b; fout<<b<<"\t"; } } for(int j=0;j<9;j++) for(i=0;i<4;i++) { fin>>a; fout<<a<<"\t"; if(i==3) bal += a; } fout<<(int)d.da_day<<"\t"; fout<<(int)d.da_mon<<"\t"; fout<<d.da_year<<"\t"; fout<<money<<"\n"; bal += money; } else { for(i=0;i<42;i++) { fin>>a; fout<<a<<"\t"; } fout<<"\n"; }

count++; if(count==10) break; }while(fin); cout<<endl; fin.close(); fout.close(); fin.open("n2.txt",ios::in); fout.open("n1.txt",ios::out); int k=0; do { k++; fin>>a; fout<<a<<"\t"; if(k%43==0) fout<<"\n"; }while(fin); getch(); fin.close(); fout.close(); return bal; }

/* anymore.cpp*/
int anymore() { cleardevice(); int xmax,ymax; char reply; char ch[2]; xmax=getmaxx(); ymax=getmaxy(); setcolor(15); setfillstyle(7,9);

bar(20,20,xmax-20,ymax-20); rectangle(20,20,xmax-20,ymax-20); floodfill(21,21,WHITE); outtextxy(120,150,"Do you want to do any further transactions? (Y/N): "); reply=getch(); ch[0]=reply; ch[1]='\0'; outtextxy(530,150,ch); getch(); if((reply=='y')||(reply=='Y')) return 1; else return 0; }

/* exitscr.cpp*/
void exitscr() { cleardevice(); int ymax,xmax; xmax=getmaxx(); ymax=getmaxy(); setcolor(15); setfillstyle(7,9); bar(20,20,xmax-20,ymax-20); rectangle(20,20,xmax-20,ymax-20); floodfill(21,21,WHITE); outtextxy(200,200,"Thank You!"); outtextxy(200,250,"Visit Again!!!"); getch(); }

OUTPUT SCREENS Screen 1: WELCOME

Screen 2: ACCOUNT NO. AND PASSWORD

Screen 3: USERNAME FAIL

Screen 4: PASSWORD FAIL

Screen 5: ENTER USERNAME AND PASSWORD

Screen 6: TRANSACTION SCREEN

Screen 7: WITHDRAW

Screen 8: ANY FURTHER TRANSACTION

Screen 9 : DEPOSIT

Screen 10 : MINI-STATEMENT

Screen 11 : EXIT SCREEN

You might also like