Professional Documents
Culture Documents
2010-11
1. 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 50150 per transaction - for using another banks ATM.
1.1 OBJECTIVES
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. 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.
1.2 SCOPE
SJBIT/ISE/2012 Page 1
ATM BANKING IN C ++
2010-11
The ATM is online with the bank, that is, each transaction will be authorized by the bank on-demand and directly debited from the account's owner. The ATM works as follows. First, the client will insert his/her client card in the ATM and then the ATM will ask for a Personal Identification Number (PIN) , if the number is entered incorrectly several times in a row, most ATMs will retain the card as a security precaution to prevent an unauthorized user from working out the PIN by pure guesswork. Once the correct PIN is given, the ATM will ask for the amount of money to be withdrawn. If the amount is available and if the client has enough money on his credit then the said amount of money will be paid. Whether the amount of money is payable or not, that is, 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, that is . 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.
ATM BANKING IN C ++
2010-11
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 automated teller machine or automatic teller machine (ATM), also known as a Cashpoint (which is a trademark of Lloyds TSB), cash machine or sometimes a hole in the wall in British English, is a computerised telecommunications device that provides the clients of a financial institution with access to financial transactions in a public space without the need for a cashier, human clerk or bank teller. ATMs are known by various other names including ATM machine, automated banking machine, and various regional variants derived from trademarks on ATM systems held by particular banks. Using an ATM, customers can access their bank accounts in order to make cash withdrawals, credit card cash advances, and check their account balances as well as purchase prepaid cellphone credit. If the currency being withdrawn from the ATM is different from that which the bank account is denominated in (e.g.: Withdrawing Japanese Yen from a bank account containing US Dollars), the money will be converted at a wholesale exchange rate. Thus, ATMs often provide the best possible exchange rate for foreign travelers and are heavily used for this purpose as well.
2. LITERATURE SURVEY
2.1 HISTORY OF ATM
SJBIT/ISE/2012 Page 3
ATM BANKING IN C ++
2010-11
Invented by John Shepherd-Barron the first ATM was introduced in June 1967 at Barclays Bank in Enfield, UK. On most modern ATMs, the customer is identified by inserting a plastic ATM card with a magnetic stripe or a plastic smart card with a chip, that contains a unique card number and some security information such as an expiration date or CVVC (CVV). Authentication is provided by the customer entering a personal identification number(PIN). A first cash dispensing device was used in Tokyo in 1966. Although little is known of this first device, it seems to have been activated with a credit card rather than accessing current account balances. It was followed in 1967 by a machine in Uppsala. In simultaneous and independent efforts, engineers in Sweden and Britain developed their own cash machines during the early 1960s. The first of these that was put into use was by Barclays Bank, in Enfield Town in North London, United Kingdom on 27 June 1967. This machine was the first in the UK and was used by English comedy actor Reg Varney at the time so as to ensure maximum publicity for the machines that were to become mainstream in the UK. This instance of the invention has been credited to John ShepherdBarron of printing firm De La Rue who was awarded an OBE in the 2005 New Years Honours List. His design used special cheques that were matched with a personal identification number, as plastic bank cards had not yet been invented. The Barclays-De La Rue machine (called De La Rue Automatic Cash System or DACS beat the Swedish Savings Bank and a company called Metior's machine (a device called Bankomat) by nine days and Westminster Banks-Smith Industries-Chubb system (called Chubb MD2) by a month. The collaboration of a small start-up called Speytec and Midland Bank developed a third machine which was marketed after 1969 in Europe and the USA by the Burroughs Corporation. The patent for this device (GB1329964) was filed on September 1969 (and granted in 1973) by John David Edwards, Leonard Perkins, John Henry Donald, Peter Lee Chappell, Sean Benjamin Newcombe & Malcom David Roe.
ATM BANKING IN C ++
2010-11
and the ATM card number ,checks account number and password. Password or a PIN(personal identification number) is given to every user which is always a 4 digit number and if the PIN is wrong, again the system gives option to the user to try again or to exit. If the account number and password matches , system asks for transaction 1) Deposit 2) Withdraw 3) Detail 4) Exit If deposit or withdrawn then ask for amount then display the remaining balance. If Detail then display last ten transactions . If exit then display Thank you , visit again. After deposit or withdrawn or mini statement ask user for further transaction. If yes then come back to Transaction screen. If no then it should display Thank you , visit again. At the end of all transactions close account ledger file and close the graphics mode.
SJBIT/ISE/2012
Page 5
ATM BANKING IN C ++
2010-11
A software requirement specification (SRS) is a comprehensive description of the intended purpose and environment for software under development. The SRS fully describes what the software will do and how it will be expected to perform. An SRS minimizes time and effort required by the developers to achieve desired goals and also minimizes the development cost. A good SRS defines how an application will interact with the system hardware , other programs and human users in a wide variety of real world situations. Parameters such as operating speed , response time, availability, portability, maintainability, foot print , security and speed of recovery from adverse events and evaluated.
SJBIT/ISE/2012
Page 6
ATM BANKING IN C ++
2010-11
5. The ATM communicates the request to the appropriate financial system 6. The appropriate financial system responds with permission or denial of the request. 7. The ATM asks the user if they want a printed receipt. 8. The ATM acts on the request according to the response received from the financial system. Possible actions for granted requests include the following: reject the request accept a deposit dispense cash display or print an account balance pay a bill perform an Electronic Funds Transfer (EFT)
9. The system updates the banks financial system for ATM transactions or sends an EFT to the appropriate financial institution for credit card transactions. 10. The ATM prints a receipt if one is requested. 11. The system prompts the user for another transaction and repeats steps 4 10 if yes. 12. The ATM closes the session and waits for another user when done.
SJBIT/ISE/2012
Page 7
ATM BANKING IN C ++ Data Constraints 1. PINs are four digits in length. 2. Account numbers are contained on the cards used to gain access. 3. Card readers must read embossed characters and magnetic information.
2010-11
4. The ATM system must format transactions in Electronic Data Interchange format for transmission to other financial institutions. 5. Non-sufficient funds in an account should cause the rejection of a withdrawal request or cash advance transaction. 6. ATM cards may link to more than one account. 7. PINs and account numbers are issued by the appropriate financial institutions.
SJBIT/ISE/2012
Page 8
ATM BANKING IN C ++
2010-11
4. SYSTEM DESIGN
System design is a process through which requirements are translated into representation of software. Initially the representation depicts a holistic view of the software. Subsequent refinement leads to a design representation that is very close to source code. Design provides us with representation of software development. Design is the only phase where user requirements are accurately translated into finished software product or system. System design refers to modeling of a process. It is an approach to create a new system. It can be defined as a transition from users view to programmers view. The system design phase acts as a bridge between the required specification and the implementation phase.
SJBIT/ISE/2012
Page 9
ATM BANKING IN C ++
2010-11
The above figure verifies the account details, receives the customer details and also makes changes if required and stores them. 2) Bank Balance
SJBIT/ISE/2012
Page 10
ATM BANKING IN C ++
2010-11
The above diagram collects all the customer details , displays the customer details and displays the total amount in rupees of the user.
4) Add deposit.
The above figure shows, if the user wants to credit some amount to his account his current balance is added with the amount that is to be deposited. 5) Account view.
SJBIT/ISE/2012
Page 11
ATM BANKING IN C ++
2010-11
The above figure just gives a detailed representation of customer details. 6) Withdraw Cash
5. IMPLEMENTATION
/* welcome.h */ void welcome() { int gd=DETECT,gm; initgraph(&gd,&gm,"c:\\tc\\bgi\\"); 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); SJBIT/ISE/2012 Page 12
ATM BANKING IN C ++ getch(); input(); closegraph(); restorecrtmode(); } /* 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); } } SJBIT/ISE/2012
2010-11
Page 13
ATM BANKING IN C ++ /* 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'; } /* 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); SJBIT/ISE/2012
2010-11
Page 14
ATM BANKING IN C ++ 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(400+a,120,ch); name[i]=getch(); a=a+15; } 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(400+a,190,ch); psswd[i]=getch(); a=a+15; } psswd[i-1]='\0'; nm=swtchcmp(name); pd=swtchcmp(psswd); comparis(nm,pd); return 0; } /* 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]; SJBIT/ISE/2012
2010-11
Page 15
ATM BANKING IN C ++ 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(200,40,str); outtextxy(400,40,"Name:sandy"); 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,"/"); } SJBIT/ISE/2012
2010-11
Page 16
ATM BANKING IN C ++ 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(400,115+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; } /* 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; SJBIT/ISE/2012
2010-11
Page 17
ATM BANKING IN C ++ 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(); SJBIT/ISE/2012
2010-11
Page 18
ATM BANKING IN C ++
2010-11
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; } /* 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(); } /* swtchcmp.cpp*/ int swtchcmp(char ch[6]) { SJBIT/ISE/2012 Page 19
ATM BANKING IN C ++ 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; } /* 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); SJBIT/ISE/2012
2010-11
Page 20
ATM BANKING IN C ++ 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(90,100,"Enter the amount to be withdrawn:" ); else if(N==2) outtextxy(90,100,"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(300+a,200,ch); cash[i]=getch(); a=a+15; } cash[i-1]='\0'; SJBIT/ISE/2012
2010-11
Page 21
ATM BANKING IN C ++ 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(); } /* 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(30,30,"Do you want to do any further transactions?: "); reply=getch(); ch[0]=reply; ch[1]='\0'; outtextxy(500,150,ch); getch(); if((reply=='y')||(reply=='Y')) return 1; else return 0; } /* exitscr.cpp*/ void exitscr() { SJBIT/ISE/2012
2010-11
Page 22
ATM BANKING IN C ++ 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();}
2010-11
SJBIT/ISE/2012
Page 23
ATM BANKING IN C ++
2010-11
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 INTEGER TO INPUT. COMPARES THE USERNAME AND PASSWORD WITH THE 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. IF TRY AGAIN CONTROL GOES TO INPUT ELSE GOES TO EXITSCR. THIS WILL ASK USERS CHOICE FOR DEPOSIT, WITHDRAW, 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 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 BALANCE. CONTROL IS TRANSFERRED TO CONVERT AND ANYMORE. 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!
WITH_DEP
MINIST CONVERT
MOD
ANYMORE
EXITSCR
ATM BANKING IN C ++
2010-11
6.1 Snapshots
FIG 1:-WELCOME SCREEN.
SJBIT/ISE/2012
Page 25
ATM BANKING IN C ++
2010-11
SJBIT/ISE/2012
Page 26
2010-11
FIG 7 : DEPOSIT
SJBIT/ISE/2012
Page 27
2010-11
CONCLUSION
SJBIT/ISE/2012 Page 28
ATM BANKING IN C ++
2010-11
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 BALGURUSWAMY - Programming In C, Tata McGraw-Hill Publishing SOURAV SAHAY - Object Oriented Programming with C++, Oxford University
SJBIT/ISE/2012
Page 29