In: Computer Science
Credit card numbers typically consist of 13, 15, or 16 digits. For example,
4690 3582 1375 4657
is a hypothetical credit card number. The first digit designates the system. In (3.1.1), the first digit, 4, shows that the card would be a Visa card. The following digits specify other information such as the account number and bank number. (The precise meaning depends on the type of card.) The last digit it special; it is computed from the previous digits and is called the check digit. In (3.1.1), the check digit is 7 and is computed from the previous digits 4690 3582 1375 465. Credit card check digits are used to identify certain erroneous card numbers. It is not a security measure, but rather it is used to detect errors such as giving a credit card number over the phone and having it transcribed improperly or detecting an error in entering a credit card number while ordering a product online.
The check digit is computed as follows. Start from the right and skipping the check digit, double every other number. If the result of doubling is a two-digit number, addthe digits; otherwise, use the original digit. The other digits are not modified.
4 6 9 0 3 5 8 2 1 3 7 5 4 6 5
8 6 18 0 6 5 16 2 2 3 14 5 8 6 10 >>>>>>>>Double every other digit.
8 6 9 0 6 5 7 2 2 3 5 5 8 6 1 >>>>>>>>Add digits of two-digit numbers.
Sum the resulting digits
8+6+9+0+6+5+7+2+2+3+5+5+8+6+1=73.
If the last digit of the sum is 0, the check digit is 0. Otherwise, subtract the last digit of the sum from 10 to get the check digit, 10-3=7. Verify the check digit on your favorite Visa, Mastercard, AMEX, or Diners Club card. This method of calculating a check digit is called the Luhn algorithm. It is named after Hans Peter Luhn (1896-1964), who invented it while at IBM. Although originally patented, it is now in the public domain and is widely used.
For this project you will write a program that implements the Luhn algorithm given above (use the above method not another variation) for computing a credit card check digit. There will be three parts to this project. It has to in java code.
Part-1
Work the algorithm by hand. Read the description of the algorithm above and work it by hand for a credit card or debit card number you might have. You can use the hypothetical credit card number in the discussion above. Compute the credit card check digit by hand. Write out the steps neatly. Do it several times until you understand how it works. Write it up neatly, scan it and upload to Canvas. This will be the first of three items to turn in this project.
Part-2 Write up a program algorithm (pseudo code).
Once you understand the algorithm write pseudocode that will describe how you will write you program. The conditions of the program are as follows.
Enter a credit card number with an even number of digits:
4690358213754657
CSC-201 Computer Science I
Programming Project 2
Name:
Credit Card Number Entered 4690 3582 1375 4657
The check digit is 7
Part-3
Use you pseudo code to help you code the program in Java. Test your program using credit card number above (4690358213754657) Test it with other credit card numbers you might have. Once you have the code completed and tested upload the source .java file to canvas. This is the third of three items you will turn in.
// LuhnAlgorithm.java: Java program to implement Luhn Algorithm to calculate the check digit of a credit card number entered
import java.util.Scanner;
public class LuhnAlgorithm {
public static void main(String[] args) {
Scanner keyboard = new
Scanner(System.in);
String cardNumber;
// Input the credit card
number
System.out.println("Enter a credit
card number with an even number of digits:");
cardNumber = keyboard.next();
System.out.println("CSC-201
Computer Science I");
System.out.println("Programming
Project 2");
System.out.println("Name:");
System.out.print("Credit Card
Number Entered: ");
// loop over the cardNumber to
display card number with sections consisting of 4 digits
for(int
i=0;i<cardNumber.length();i++)
{
System.out.print(cardNumber.charAt(i));
if((i+1)%4 ==
0)
System.out.print(" ");
}
// initialize totalSum to 0
int totalSum = 0, digit;
// loop over cardNumber from
second last digit to first digit
for(int
i=cardNumber.length()-2;i>=0;i--)
{
digit =
(int)(cardNumber.charAt(i) - '0'); // extract the ith digit and
convert it to integer
// if i is
even
if(i%2 ==
0)
{
digit = 2*digit; // double the digit
extracted
// if double is greater than 9
if(digit > 9)
{
// calculate sum of
digits
int sum = 0;
while(digit > 0)
{
sum +=
digit%10;
digit =
digit/10;
}
digit = sum; // set the digit
to the sum
}
}
// add the digit
to the totalSum
totalSum +=
digit;
}
// get the last digit of the
totalSum
int checkDigit = totalSum%10;
// if last digit is not 0, subtract
it from 10 to get the check digit
if(checkDigit != 0)
checkDigit =
10-checkDigit;
// display the check digit
System.out.println("\nThe check
digit is "+checkDigit);
}
}
//end of LuhnAlgorithm.java
Output: