Question: What to use in your completed code Get input from file. Ask user at least a single question and read at least one answer. Use
What to use in your completed code Get input from file. Ask user at least a single question and read at least one answer. Use at least a single method from Math class. Use at least one overloaded constructor. Use at least one if-else-if, while, for, and enhanced for loops. Use methods to pass and return identifiers and objects. Pass arrays to/from methods. Use at least a method to sort the array in the project. Use inheritance and polymorphism. Use exception handling. Use input validation. Pass the input and output files as commandline arguments. Final Project - Credit card numbers and the case of Mobius Duck In this project, you are assisting an investigation. The investigator asked you to help him determine the validity of credit card numbers located in a case of Mobius Duck, case number 20150510-001. Y our task is to: Read the data listed below Data to Evaluate from a file. Evaluate each number to see if they are representing a possible credit card number. Validate each credit card number to see if they are a valid number. Store the valid numbers and invalid numbers in a separate array. Write the contents of validated credit card number array into a file called valid_cards.txt. Write the invalid credit card number array to a file called invalid_numbers.txt. Make sure to include the issuer for each group of credit card numbers identified. Your application should work with any number of credit card entries. Turn in: Source code ( .java ) files of all classes and driver class. Completed UML for application classes. Flow chart for every method that contains beyond sequential logic flow . Generated javadocs structure. Input and output files Grading: Naming standard followed for project files 2% Input and output files 2% Javadoc structure 5% Project compiled without error 91% Proper use of internal comments, docstrings, and tags 5% Self documenting field, identifier, method, static, final, and class identifiers - 5% Properly validated input and output files - 5% Properly used arrays to store data - 5% Correct output calculated by the Luhn algorithm and card number issuer identified 71% Extra Credit: - Implement the full Issuer IIN Range instead of the simplified list. How to validate Credit Card Numbers? Most credit card number can be validated using the Luhn algorithm, which is more or a less a glorified Modulo 10 formula!
The Luhn Formula: Drop the last digit from the number. The last digit is what we want to check against Reverse the numbers Multiply the digits in odd positions (1, 3, 5, etc.) by 2 and subtract 9 to all any result higher than 9 Add all the numbers together The check digit (the last number of the card) is the amount that you would need to add to get a multiple of 10 (Modulo 10) Luhn Example: Steps Total Total Original Number: 4 5 5 6 7 3 7 5 8 6 8 9 9 8 5 5 Drop the last digit: 4 5 5 6 7 3 7 5 8 6 8 9 9 8 5 Reverse the digits: 5 8 9 9 8 6 8 5 7 3 7 6 5 5 4 Multiple odd digits by 2: 10 8 18 9 16 6 16 5 14 3 14 6 10 5 8 Add digits from line above 1 8 9 9 7 6 7 5 5 3 5 6 1 5 8 Add all numbers: 1 8 9 9 7 6 7 5 5 3 5 6 1 5 8 85 Mod 10: (85 + X) modulo 10 = 0 , thus X=5 (last digit of card)
List of credit card number formats Credit Card Issuer Starts With ( IIN Range ) Length ( Number of digits ) American Express 34, 37 15 Diners Club - Carte Blanche 300, 301, 302, 303, 304, 305 14 Diners Club - International 36 14 Diners Club - USA & Canada 54 16 Discover 6011, 622126 to 622925, 644, 645, 646, 647, 648, 649, 65 16 InstaPayment 637, 638, 639 16 JCB 3528 to 3589 16 Laser 6304, 6706, 6771, 6709 16-19 Maestro 5018, 5020, 5038, 5893, 6304, 6759, 6761, 6762, 6763 16-19 MasterCard 51, 52, 53, 54, 55 16-19 Visa 4 13-16 Visa Electron 4026, 417500, 4508, 4844, 4913, 4917 16 Data to Evaluate 3158539628375348 3337465828248404 3112804683572030 3112804683572033 5435528978467581 6706465468107999 6304362971054667 6706169762827894 6706169762827892 4844104341377697 4913405490886727 4844885754351829 4844885754351822 6371473570875275 6381475006869978 6389057917814806 347100734345549 347100734345543 6011162533805000 6011621663574413 6011824617460743 6011824617460745 6389057917814802 4539318768050385 36880982786892 36845793345501 36661154562232 36661154562234 5893329089846994 6761680165952016 6763100400984029 6763100400984022 5127043299122389 5330838017737340 5429168755154025 5429168755154023 375354034606481 379570632133224 4485521241443135 4532916206508075 4532916206508076 5590976687287124 5540641137519895 5540641137519892 30522070708059 30066552673241 30365487186802 30365487186801 Simplified Issuer Codes for Final Project: VISA: 45 44 MasterCard: 51 53 American Express (AMEX):37 34 Discover: 60 JCB: 31 33 Diners Club - North America: 54 55 Diners Club - Carte Blanche:30 Diners Club - International: 36 Maestro: 58 LASER: 67 Visa Electron:48 49 InstaPayment: 63
i need help to create multiple classes - card issuer (new class) lun's algorithmn (new class) must show inherintance and polymorphism.
(lun's & implement , passing argument between classes, using inheritance methods, calling sub/super classes)
i do have the creditcard.java and creditcardevaluation and DataEval.txt and invalid_numbers.txt and valid_cards.txt but am missing card issuer (new class) lun's algorithmn (new class) all these classes should show inheritance. i need help create these two classes card issuer and lun's algorithmn.
//CreditCard.java /** * Write a description of class CreditCard here. * * @author (your name) * @version (a version number or a date) */ public class CreditCard { /** * @param cards * @return */ public boolean isValidCard(String cards) { int val[] = new int[cards.length()]; for (int i = 0; i < cards.length(); i++) { val[i] = Integer.parseInt(cards.charAt(i) + ""); } int x = LastDigitDrop(val); int reverse[] = DigitsReverse(val); int multiplyOdd[] = OddDigitsdouble(reverse); int addDigits[] = DigitsAdd(multiplyOdd); int sum = 0; for (int i = 0; i < addDigits.length; i++) sum += addDigits[i]; boolean validate = valid(sum, x); if (validate) return true; else return false; } /** * @param cardNumber * @return */ public int LastDigitDrop(int[] cardNumber) { return cardNumber[cardNumber.length - 1]; } /** * @param cardNumber * @return */ public int[] DigitsReverse(int[] cardNumber) { int revrs[] = new int[cardNumber.length]; for (int i = 0; i < cardNumber.length; i++) { revrs[i] = cardNumber[cardNumber.length - 1 - i]; } return revrs; } /** * @param revrs * @return */ public int[] OddDigitsdouble(int[] revrs) { int Odds[] = new int[revrs.length]; for (int i = 0; i < revrs.length; i++) { if (i % 2 == 0) { Odds[i] = revrs[i] * 2; } else { Odds[i] = revrs[i]; } } return Odds; } /** * @param mulOdd * @return */ public int[] DigitsAdd(int[] mulOdd) { int sumDig[] = new int[mulOdd.length]; int first, second; for (int i = 0; i < mulOdd.length; i++) { if (mulOdd[i] >= 10) { first = mulOdd[i] / 10; second = mulOdd[i] % 10; sumDig[i] = first + second; } else if (mulOdd[i] < 10) { sumDig[i] = mulOdd[i]; } } return sumDig; } /** * @param s * @param x * @return */ public boolean valid(int s, int x) { if ((s + x) % 10 == 0) return true; else return false; } /** * @param cardNumber * @return */ public String Issuer(String cardNumber) { String start2Chars = cardNumber.substring(0, 2); int val = Integer.parseInt(start2Chars); if (val == 34 || val == 37) return "American Express"; else if (val == 45 || val == 44) return "VISA"; else if (val == 51 || val == 53) return "MasterCard"; else if (val == 60) return "Discover"; else if (val == 31 || val == 33) return "JCB"; else if (val == 54 || val == 55) return "Diners Club - North America"; else if (val == 30) return "Diners Club - Carte Blanche"; else if (val == 36) return "Diners Club - International"; else if (val == 58) return "Maestro"; else if (val == 67) return "LASER"; else if (val == 48 || val == 49) return "Visa Electron"; else if (val == 63) return "InstaPayment"; else return "Not issued by any"; } }
//CreditCardEvaluation.java import java.io.File; import java.io.PrintWriter; import java.util.Scanner; /** * Write a description of class CreditCardEvaluation here. * * @author (your name) * @version (a version number or a date) */ public class CreditCardEvaluation { public static void main(String args[]) { CreditCard card = new CreditCard(); String Valid_numbers[] = new String[50]; String Invalid_numbers[] = new String[50]; String Cards[] = new String[50]; int V_count = 0, Inv_count = 0, count = 0; try { Scanner inp = new Scanner(new File("DataEval.txt")); while (inp.hasNextLine()) { Cards[count] = inp.nextLine(); count++; } inp.close(); } catch (Exception e) { e.printStackTrace(); } System.out.println("\tCard number \t\t Card Issuer"); for (int i = 0; i < count; i++) { if (Cards[i].length() >= 13 && Cards[i].length() <= 19) { System.out.printf("%20s \t %s ", Cards[i], card.Issuer(Cards[i])); if (card.isValidCard(Cards[i])) { Valid_numbers[V_count] = Cards[i]; V_count++; } else { Invalid_numbers[Inv_count] = Cards[i]; Inv_count++; } } else { System.out.println("Length of the card number is not valid."); } } try { PrintWriter vPrint = new PrintWriter(new File("valid_cards.txt")); for (int i = 0; i < V_count; i++) vPrint.println(Valid_numbers[i]); vPrint.flush(); vPrint.close(); PrintWriter invPrint = new PrintWriter(new File( "invalid_numbers.txt")); for (int i = 0; i < Inv_count; i++) invPrint.println(Invalid_numbers[i]); invPrint.flush(); invPrint.close(); } catch (Exception e) { e.printStackTrace(); } } }
DataEval.txt 3158539628375348 3337465828248404 3112804683572030 3112804683572033 5435528978467581 6706465468107999 6304362971054667 6706169762827894 6706169762827892 4844104341377697 4913405490886727 4844885754351829 4844885754351822 6371473570875275 6381475006869978 6389057917814806 347100734345549 347100734345543 6011162533805000 6011621663574413 6011824617460743 6011824617460745 6389057917814802 4539318768050385 36880982786892 36845793345501 36661154562232 36661154562234 5893329089846994 6761680165952016 6763100400984029 6763100400984022 5127043299122389 5330838017737340 5429168755154025 5429168755154023 375354034606481 379570632133224 4485521241443135 4532916206508075 4532916206508076 5590976687287124 5540641137519895 5540641137519892 30522070708059 30066552673241 30365487186802 30365487186801
invalid_numbers.txt 3158539628375348 3337465828248404 3112804683572030 3112804683572033 5435528978467581 6706465468107999 6304362971054667 6706169762827894 6706169762827892 4844104341377697 4913405490886727 4844885754351829 4844885754351822 6371473570875275 6389057917814806 347100734345549 347100734345543 6011162533805000 6011621663574413 6011824617460743 6011824617460745 6389057917814802 4539318768050385 36880982786892 36845793345501 36661154562232 5893329089846994 6761680165952016 6763100400984029 5127043299122389 5330838017737340 5429168755154025 5429168755154023 375354034606481 4485521241443135 4532916206508075 4532916206508076 5590976687287124 5540641137519895 5540641137519892 30522070708059 30066552673241 30365487186802 30365487186801
valid_cards.txt 6381475006869978 36661154562234 6763100400984022 379570632133224
Step by Step Solution
There are 3 Steps involved in it
Get step-by-step solutions from verified subject matter experts
