Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**************************************************************************************************
- * Program Name : Week 2 - Login Info
- * Author : Terry Weiss
- * Date : January 29, 2016
- * Course/Section : CSC264 - 001
- * Program Description: This program will create usernames and passwords for
- * students at OCC using their first and last name. The username will be
- * the student's first two letters of their first name, followed by the
- * first three letters of their last name, followed by a random digit
- * 1 and 3. If either name is too short their full first/last name is used.
- * All usernames are in all lowercase letters. The password will default to
- * the user's first name (in all lower case letters). The usernames and
- * passwords each in their own array. The user may create up to 10
- * username/password combinations. Duplicate usernames are prevented by
- * adding another digit (1, 2, or 3) onto the end of the duplicate username,
- * thus creating a unique username. When the user stops creating usernames,
- * all of the usernames and passwords are displayed on the screen.
- *
- * Methods:
- * -------
- * Main - Reads the names, creates the login info and displays them
- * Prompt Name - Prompts for a first and last name or quit value
- * Random Number - Generates a random number within range (1 through 3 inclusive)
- * Generate ID - Generates the ID using first and last name
- * Generate Pwd - Generates the passwords using their first name in lower case
- * Unique ID - Goes through ID list confirming each ID is unique or replacing
- * Display Logins - Displays a list of all the IDs and passwords
- **************************************************************************************************/
- import java.util.Random;
- class LoginInfoTTW
- {
- /**********************************************************************************************
- * Method Name : LoginInfo - Main
- * Author : Terry Weiss
- * Date : January 29, 2016
- * Course/Section : CSC264 - 001
- * Program Description: This method will read a name entered by the user. It
- * then creates a new String with the name centered for console output,
- * and displays it.
- *
- * BEGIN main
- * Init location to 0
- * Clear screen
- * Display input title
- * Prompt name {prompt name method, returning name array}
- * WHILE (name is array of two elements)
- * Generate and assign ID to element in ID list {generate ID method}
- * Generate and assign password to element in Pwd list {generate pwd method}
- * Increment location
- * IF (array is full)
- * Set name to array of one element
- * ELSE
- * Display blank line
- * Prompt name {prompt name method}
- * IF (first name is quit string) THEN
- * Set ID at current location to quit string
- * END IF
- * END IF
- * END WHILE
- * Check all IDs are unique {uniqueID method}
- * Clear screen
- * Display output title
- * Display all login info {display logins method}
- * END Read Name
- **********************************************************************************************/
- public static void main(String[] args)
- {
- //Local constants
- final int MAX_LOGINS = 10; //Maximum number of logins
- final String QUIT_STR = "done"; //Sentinel value for ending input
- final int FIRST_NAME = 0; //Location of first name in names array
- final int LAST_NAME = 1; //Location of last name in names array
- final int MIN_ID_NUM = 1; //Minimum legal number in ID
- final int MAX_ID_NUM = 3; //Maximum legal number in ID
- //Local variables
- int location; //Location of ID/Password in their arrays
- String[] idList = new String[MAX_LOGINS]; //List of IDs
- String[] pwdList = new String[MAX_LOGINS]; //List of passwords
- String[] names; //First and last name of student
- //Utility class objects
- final Library64 myLib = new Library64(); //Console control library
- final Random generator = new Random(); //Random number generator
- /*************************************START MAIN METHOD************************************/
- //Init location to 0
- location = 0;
- //Clear screen
- myLib.clrscr();
- //Display input title
- System.out.println("\n");
- System.out.println(Console.center("Name Entry"));
- System.out.println();
- //Prompt name {prompt name method, returning name array}
- names = promptName(QUIT_STR);
- //WHILE (name is array of two elements)
- while (names.length == 2)
- {
- //Generate and assign ID to element in ID list {generate ID method}
- idList[location] = generateID(names[FIRST_NAME], names[LAST_NAME], MIN_ID_NUM,
- MAX_ID_NUM, generator);
- //Generate and assign password to element in Pwd list {generate pwd method}
- pwdList[location] = generatePwd(names[FIRST_NAME]);
- //Increment location
- location++;
- //IF (array is full)
- if (location == MAX_LOGINS)
- {
- //Set name to array of one element
- names = new String[1];
- names[0] = QUIT_STR;
- }
- else
- {
- //Display blank line
- System.out.println();
- //Prompt name {prompt name method}
- names = promptName(QUIT_STR);
- //IF (first name is quit string) THEN
- if(names[0].equals(QUIT_STR))
- {
- //Set ID at current location to quit string
- idList[location] = QUIT_STR;
- }
- }//END IF
- }//END WHILE
- //Check all IDs are unique {uniqueID method}
- uniqueID(idList, MIN_ID_NUM, MAX_ID_NUM, QUIT_STR, generator);
- //Clear screen
- myLib.clrscr();
- //Display output title
- System.out.println("\n");
- System.out.println(Console.center("Login Info"));
- System.out.println();
- //Display all login info {display logins method}
- displayLogins(idList, pwdList, QUIT_STR);
- }//end method main
- //Input methods
- /**********************************************************************************************
- * Method Name : LoginInfo - Prompt Name
- * Author : Terry Weiss
- * Date : January 29, 2016
- * Course/Section : CSC264 - 001
- * Program Description: This method will prompt for the student's first
- * name. If it's not the quit string, it'll prompt for the last name and
- * return an array of the full name. Otherwise, it'll return a
- * one-element array with quit string.
- *
- * BEGIN Prompt Name
- * Prompt first name
- * IF (first name isn't quit strig) THEN
- * Instantiate two-element array
- * Assign first name to element 0
- * Prompt last name to element 1
- * Return array of first and last names
- * ELSE
- * Return one-element array with quit string
- * END IF
- * END Prompt Names
- **********************************************************************************************/
- private static String[] promptName(String quitString)
- {
- //Local constants
- final int FIRST_NAME = 0; //Location of first name in names array
- final int LAST_NAME = 1; //Location of last name in names array
- //Local variables
- String[] names; //Student's first and last name, or quit string
- String input; //User's initial input to check against quit string
- /******************************* Start Method Prompt Name *******************************/
- //Prompt first name
- System.out.print("\t\tEnter first name (\"" + quitString + "\" to quit): ");
- input = Keyboard.readString();
- //IF (first name isn't quit strig) THEN
- if (!input.equalsIgnoreCase(quitString))
- {
- //Instantiate two-element array
- names = new String[2];
- //Assign first name to element 0
- names[FIRST_NAME] = input;
- //Prompt last name to element 1
- System.out.print("\t\tEnter last name: ");
- names[LAST_NAME] = Keyboard.readString();
- }
- else
- {
- //Return one-element array with quit string
- names = new String[1];
- names[0] = quitString;
- }//END IF
- return names;
- }//end method Prompt Name
- //Calculation methods
- /**********************************************************************************************
- * Method Name : LoginInfo - Random Number
- * Author : Terry Weiss
- * Date : January 29, 2016
- * Course/Section : CSC264 - 001
- * Program Description: This method will generate a random number between given min and max.
- * If the maximum is less than the minimum, the minimum will be returned.
- *
- * BEGIN Random Number
- * IF (min >= max) THEN
- * Set number to min
- * ELSE
- * Generate a random number between min and max and set it to number
- * END IF
- * Return number
- * END Random number
- **********************************************************************************************/
- private static int randomNumber(int min, int max, Random generator)
- {
- //Local constants
- //Local variables
- int number; //Random number to be returned
- /****************************** Start Method Random Number ******************************/
- //IF (min >= max) THEN
- if (min >= max)
- {
- //Set number to min
- number = min;
- }
- else
- {
- //Generate a random number between min and max and set it to number
- number = generator.nextInt(max - min + 1) + min;
- }
- return number;
- }//end method Random Number
- /**********************************************************************************************
- * Method Name : LoginInfo - Generate ID
- * Author : Terry Weiss
- * Date : January 29, 2016
- * Course/Section : CSC264 - 001
- * Program Description: This method will generate an ID using the student's first name,
- * last name and a generated number.
- *
- * BEGIN Generate ID
- * Init ID to an empty string
- * IF (first name is shorter than max chars) THEN
- * Append to ID full first name
- * ELSE
- * Append to ID first two letters of first name
- * END IF
- * IF (last name is shorter than max chars) THEN
- * Append to ID full last name
- * ELSE
- * Append to ID first three letters of last name
- * END IF
- * Generate and append a random digit between min and max
- * Return ID
- * END Generate ID
- **********************************************************************************************/
- private static String generateID(String firstName, String lastName,
- int min, int max, Random generator)
- {
- //Local constants
- int FIRST_NAME_CHARS = 2; //Number of letters used from first name
- int LAST_NAME_CHARS = 3; //Number of letters used from last name
- //Local variables
- String id; //Student's ID
- /******************************* Start Method Generate ID *******************************/
- //Init ID to an empty string
- id = "";
- //IF (first name is shorter than max chars) THEN
- if (firstName.length() <= FIRST_NAME_CHARS)
- {
- //Append to ID full first name
- id += firstName.toLowerCase();
- }
- else
- {
- //Append to ID first two letters of first name
- id += firstName.toLowerCase().substring(0, FIRST_NAME_CHARS);
- }
- //IF (last name is shorter than max chars) THEN
- if (lastName.length() <= LAST_NAME_CHARS)
- {
- //Append to ID full last name
- id += lastName.toLowerCase();
- }
- else
- {
- //Append to ID first three letters of last name
- id += lastName.toLowerCase().substring(0, LAST_NAME_CHARS);
- }
- //Generate and append a random digit between min and max
- id += randomNumber(min, max, generator);
- return id;
- }//end method Generate ID
- /**********************************************************************************************
- * Method Name : LoginInfo - Generate Password
- * Author : Terry Weiss
- * Date : January 29, 2016
- * Course/Section : CSC264 - 001
- * Program Description: This method generates a password by converting the
- * student's first name to lower case.
- *
- * BEGIN Generate Pwd
- * Return first name in lower case
- * END Generate Pwd
- **********************************************************************************************/
- private static String generatePwd(String firstName)
- {
- //Local constants
- //Local variables
- /**************************** Start Method Generate Password ****************************/
- //Return first name in lower case
- return firstName.toLowerCase();
- }//end method Generate Pwd
- //Data Management methods
- /**********************************************************************************************
- * Method Name : LoginInfo - Unique ID
- * Author : Terry Weiss
- * Date : January 29, 2016
- * Course/Section : CSC264 - 001
- * Program Description: This method checks through each element of the ID
- * list, comparing the current ID with the remaining IDs. If there is
- * a duplicate, the compared ID gets changed by appending another
- * random digit.
- *
- * BEGIN Unique ID
- * IF (ID list is empty) THEN
- * Display message that there are no logins entered
- * ELSE
- * FOR (each element left in ID list)
- * FOR (each element left in ID list)
- * IF (ID matches element) THEN
- * Append a random number in range to ID at current element
- * END IF
- * END FOR
- * END FOR
- * END IF
- * END Unique ID
- **********************************************************************************************/
- private static void uniqueID(String[] idList, int min, int max, String quitString,
- Random generator)
- {
- //Local constants
- //Local variables
- /******************************** Start Method Unique ID ********************************/
- //IF (ID list is empty) THEN
- if (idList[0] == null)
- {
- //Display message that there are no logins entered
- System.out.println(Console.center("There are no logins entered."));
- }
- else
- {
- //FOR (each element left in ID list)
- for (int id = 0; id < idList.length - 1 && !idList[id].equals(quitString); id++)
- {
- //FOR (each element left in ID list)
- for (int comparedID = id + 1; comparedID < idList.length; comparedID++)
- {
- //IF (ID matches element) THEN
- if (idList[id].equals(idList[comparedID]))
- {
- //Append a random number in range to ID at current element
- idList[comparedID] = idList[comparedID] + randomNumber(min, max, generator);
- }//END IF
- }//END FOR EACH REMAINING ID
- }//END FOR EACH ID
- }//END IF (ID list is empty)
- }//end method Unique ID
- //Output methods
- /**********************************************************************************************
- * Method Name : LoginInfo - Display Logins
- * Author : Terry Weiss
- * Date : January 29, 2016
- * Course/Section : CSC264 - 001
- * Program Description: This method displays each user ID and password
- *
- * BEGIN Display Logins
- * IF (ID list is empty) THEN
- * Display message that there aren't any logins
- * ELSE
- * Init login to 0
- * Init pad to 0
- * FOR (each ID)
- * Set length to ID's length + prompt length
- * IF (length > pad) THEN
- * Set pad to length
- * END IF
- * END FOR
- * FOR (each password)
- * Set length to password's length + prompt length
- * IF (length > pad) THEN
- * Set pad to length
- * END IF
- * END FOR
- * Calculate correct pad
- * WHILE (login's ID in list isn't quit value and ID is less than ID list's length)
- * Display ID at login
- * Display password at login
- * Increment login
- * END WHILE
- * END IF
- * END Display Logins
- **********************************************************************************************/
- private static void displayLogins(String[] idList, String[] pwdList, String quitString)
- {
- //Local constants
- final int PROMPT_LENGTH = 21; //Number of characters for prompt
- final int OUTPUT_COLUMNS = 80; //Number of columns in output window
- //Local variables
- int login; //Student's login's location
- int pad; //Left padding to center output
- int length; //Character length of longest output
- int ids; //Number of IDs that have been entered
- /***************************** Start Method Display Logins ******************************/
- //IF (ID list is empty) THEN
- if (idList[0] == null)
- {
- System.out.println(Console.center("There are no logins entered."));
- }
- else
- {
- //Init login to 0
- login = 0;
- //Init pad to 0
- pad = 0;
- /*
- * The first for loop finds the longest ID length and also counts the number of IDs
- * that were entered so that the password loop stops at the same spot. This way
- * it's not necessary for the password list to have an entered quit string, and there is
- * no chance of a null pointer exception.
- */
- //FOR (each ID)
- for (ids = 0; ids < idList.length - 1 && !idList[ids].equals(quitString); ids++)
- {
- //Set length to ID's length + prompt length
- length = idList[ids].length() + PROMPT_LENGTH;
- //IF (length > pad) THEN
- if (length > pad)
- {
- //Set pad to length
- pad = length;
- }
- }
- //FOR (each password)
- for (int pwd = 0; pwd < pwdList.length - 1 && pwd < ids; pwd++)
- {
- //Set length to password's length + prompt length
- length = pwdList[pwd].length() + PROMPT_LENGTH;
- //IF (length > pad) THEN
- if (length > pad)
- {
- //Set pad to length
- pad = length;
- }
- }
- //Calculate correct pad
- pad = (OUTPUT_COLUMNS - pad) / 2;
- //WHILE (login's ID in list isn't quit value and ID is less than ID list's length)
- while (login < idList.length && !idList[login].equals(quitString))
- {
- //Display ID
- System.out.println(Console.padLeft(pad, "Student's ID: " + idList[login]));
- //Display password
- System.out.println(Console.padLeft(pad, "Student's password: " + pwdList[login]));
- //Display blank line
- System.out.println();
- //Increment login
- login++;
- }
- }//END IF (empty login list)
- }//end method Display Logins
- }//end class LoginInfoTTW
Advertisement
Add Comment
Please, Sign In to add comment