Java Program: One file needs to be Titanic.java and the other is to be TestTitan
ID: 669453 • Letter: J
Question
Java Program: One file needs to be Titanic.java and the other is to be TestTitanic.java. You then put both files in a folder and run java TestTitanic. Please follow the instructions, because my last answer was not based on the instructions. Also, please compile and run the program using the command prompt before posting your answer. This is for an assignment I am having trouble on.
1. (25 points) Design a Java application that will read a file containing data related to the passengers on the Titanic. The description of the file is shown below. The application should provide statistical results on the passengers including:
a. Total number of passengers on the Titanic
b. Total number of passengers who perished on the Titanic
c. Total number of Passengers who survived the sinking of the Titanic
d. Number of passengers who survived the sinking of the Titanic as a function of the passenger class (e.g. 1,2,3)
e. Number of passengers who survived the sinking of the Titanic as a function of the passenger gender (e.g., male, female)
f. A list of the names of passengers who paid greater than $200 for their tickets
g. A list of the names of passengers who were less than 10 years old who survived the sinking of the Titanic
h. A list of the names of passengers who were less than 10 years old who perished on the Titanic
i. The count of the number of passengers as a function of the first letter of their last name. (e.g., A: 13, B:33 …)
j. Additional statistical results you add to enhance the functionality
The following are some design criteria and specific requirements that need to be addressed:
a. Use command line arguments to send in the name of the Titanic file.
b. Use a 2D array to store the Titanic data. (Hint: You will probably need to store the array as String values and then convert to other types as needed since some data is null)
c. You should create at least 2 Java classes – Titanic and TestTitanic. You are welcome to create additional classes if you want to further separate the functionality.
d. You should create separate methods for each of the required functionality. (e.g. getTotalPassengers() will return the total number of passengers on the Titanic.)
e. A user-friendly and well-organized menu should be used for users to select which data to return. A sample menu is shown in run example. You are free to enhance your design and you should add additional menu items and functionality.
f. The menu system should be displayed at the command prompt, and continue to redisplay after results are returned or until Q is selected. If a user enters an invalid menu item, the system should redisplay the menu with a prompt asking them to enter a valid menu selection
g. The application should keep track of the elapsed time (in seconds) between once the application starts and when the user quits the program. After the program is exited, the
2
application should provide a prompt thanking the user for trying the Titanic program and providing the total time elapsed.
Here is sample run:
java TestTitanic Titanic.txt
********** Welcome to the Titanic Statistical Application **************************
Enter the number of the question you want answered. Enter ‘Q’ to quit the program :
1. How many passengers were on the Titanic?
2. What percentage of passengers perished on the Titanic?
3. What percentage passengers survived the sinking of the Titanic?
4. What percentage of passengers survived for each of the three classes?
5. What percentage of passengers survived as a function of gender?
6. What specific passengers paid more than $200 for their tickets?
7. What specific passengers who were less than 10 years old perished on the titanic?
8. What specific passengers who were less than 10 years old survived the sinking of the titanic?
9. For each letter in the alphabet, how many passengers last names started with that letter?
Q. Quit the program
Enter your selection: 1
There were 1310 Passengers on the Titanic.
Enter the number of the question you want answered. Enter ‘Q’ to quit the program :
1. How many passengers were on the Titanic?
2. What percentage of passengers perished on the Titanic?
3. What percentage passengers survived the sinking of the Titanic?
4. What percentage of passengers survived for each of the three classes?
5. What percentage of passengers survived as a function of gender?
6. What specific passengers paid more than $200 for their tickets?
7. What specific passengers who were less than 10 years old perished on the titanic?
8. What specific passengers who were less than 10 years old survived the sinking of the titanic?
9. For each letter in the alphabet, how many passengers last names started with that letter?
Q. Quit the program
Enter your selection: 6
The following passengers paid more than $200 for their tickets:
Allen, Miss. Elisabeth Walton
Astor, Col. John Jacob
Astor, Mrs. John Jacob (Madeleine Talmadge Force)
Baxter, Mr. Quigg Edmond
Baxter, Mrs. James (Helene DeLaudeniere Chaput)
Bidois, Miss. Rosalie
Bird, Miss. Ellen
Bowen, Miss. Grace Scott 3
Cardeza, Mr. Thomas Drake Martinez
Cardeza, Mrs. James Warburton Martinez (Charlotte Wardle Drake)
Chaudanson, Miss. Victorine
Douglas, Mrs. Frederick Charles (Mary Helene Baxter)
Endres, Miss. Caroline Louise
Farthing, Mr. John
Fortune, Miss. Alice Elizabeth
Fortune, Miss. Ethel Flora
Fortune, Miss. Mabel Helen
Fortune, Mr. Charles Alexander
Fortune, Mr. Mark
Fortune, Mrs. Mark (Mary McDougald)
Geiger, Miss. Amalie
Keeping, Mr. Edwin
Kreuchen, Miss. Emilie
Lesurer, Mr. Gustave J
Madill, Miss. Georgette Alexandra
Robbins, Mr. Victor
Robert, Mrs. Edward Scott (Elisabeth Walton McMillan)
Ryerson, Master. John Borie
Ryerson, Miss. Emily Borie
Ryerson, Miss. Susan Parker "Suzette"
Ryerson, Mr. Arthur Larned
Ryerson, Mrs. Arthur Larned (Emily Maria Borie)
Straus, Mr. Isidor
Straus, Mrs. Isidor (Rosalie Ida Blun)
Ward, Miss. Anna
Widener, Mr. George Dunton
Widener, Mr. Harry Elkins
Widener, Mrs. George Dunton (Eleanor Elkins)
Enter the number of the question you want answered. Enter ‘Q’ to quit the program :
1. How many passengers were on the Titanic?
2. What percentage of passengers perished on the Titanic?
3. What percentage passengers survived the sinking of the Titanic?
4. What percentage of passengers survived for each of the three classes?
5. What percentage of passengers survived as a function of gender?
6. What specific passengers paid more than $200 for their tickets?
7. What specific passengers who were less than 10 years old perished on the titanic?
8. What specific passengers who were less than 10 years old survived the sinking of the titanic?
9. For each letter in the alphabet, how many passengers last names started with that letter?
Q. Quit the program
Enter your selection: Q
Thank you for trying the Titanic Program.
Elapsed time in seconds was: 95
Explanation / Answer
import java.io.*;
import java.util.*;
/*
Since You have not provide me text file I am Assuming its format
First_Name Last_Name Sex Price class Age perish_survive
First_Name -> String
Last_Name -> String
gender -> String (Male or Female)
Price -> Int;
Class(1,2,3) -> Int;
Age -> Int;
perish_survive -> Int(1 if survive otherwise 0);
*/
class Passenger{
String first_name;
String last_name;
String sex;
int price;
int class;
int age;
int perish;
public Passenger(String f,String l,String s,int p_1,int c,int a,int p_2){
first_name = f;
last_name = l;
sex = s;
price = p_1;
class = c;
age = a;
perish = p_2;
}
}
class main{
// return the total number of passengers on the Titanic
public static int getTotalPassengers(ArrayList<Passenger> pass){
return pass.size();
}
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
String file_name = args[0];
BufferedReader br = null;
// Array to store the Titanic data.
ArrayList<Passenger> pass = new ArrayList<Passenger>();
try{
//Command Line arguments to send in the name of the Titanic file.
br = new BufferedReader(new FileReader(args[0]));
String line = br.readLine();
String[] str;
while (line != null){
str = line.split(" ");
String first = str[0];
String last = str[1];
String sex = str[2];
int price = Interger.parseInt(str[3]);
int class = Interger.parseInt(str[4]);
int age = Interger.parseInt(str[5]);
int perish = Interger.parseInt(str[6]);
Passenger p = new Passenger(first,last,price,class,age,perish);
pass.add(p);
line = br.readLine();
}
}
catch(IOException e){
e.printStackTrace();
}
while(true){
System.out.println("Enter the number of the question you want answered. Enter ‘Q’ to quit the program :");
System.out.println("1. How many passengers were on the Titanic?");
System.out.println("2. What percentage of passengers perished on the Titanic?");
System.out.println("3. What percentage passengers survived the sinking of the Titanic?");
System.out.println("4. What percentage of passengers survived for each of the three classes?");
System.out.println("5. What percentage of passengers survived as a function of gender?");
System.out.println("6. What specific passengers paid more than $200 for their tickets?");
System.out.println("7. What specific passengers who were less than 10 years old perished on the titanic?");
System.out.println("8. What specific passengers who were less than 10 years old survived the sinking of the titanic?");
System.out.println("9. For each letter in the alphabet, how many passengers last names started with that letter?");
System.out.println("Q. Quit the program");
System.out.print("Enter you selection : ");
int n = Integer.parseInt(sc.nextLine());
if (n == 1){
System.out.println("There were "+getTotalPassengers(pass)+" Passengers on the Titanic");
}
else if (n == 2){
float total = 0.0;
for (int i = 0; i < getTotalPassengers(pass); i++){
if (pass.get(i).perish == 0)
total++;
}
System.out.println("percentage of passengers perished on the Titanic is : "+((total*100)/getTotalPassengers(pass)));
}
else if (n == 3){
float total = 0.0;
for (int i = 0; i < getTotalPassengers(pass); i++){
if (pass.get(i).perish == 1)
total++;
}
System.out.println("percentage of passengers survived on the Titanic is : "+((total*100)/getTotalPassengers(pass)));
}
else if (n == 4){
float total_1 = 0.0,total_2 = 0.0,total_3 = 0.0;
for (int i = 0; i < getTotalPassengers(pass); i++){
if (pass.get(i).perish == 1){
if (pass.get(i).class == 1) total_1++;
else if (pass.get(i).class == 2) total_2++;
else total_3++;
}
}
System.out.println("percentage of passengers of class 1 perished on the Titanic is : "+((total_1*100)/getTotalPassengers(pass)));
System.out.println("percentage of passengers of class 2 perished on the Titanic is : "+((total_2*100)/getTotalPassengers(pass)));
System.out.println("percentage of passengers of class 3 perished on the Titanic is : "+((total_3*100)/getTotalPassengers(pass)));
}
else if (n == 5){
float total = 0.0;
for (int i = 0; i < getTotalPassengers(pass); i++){
if (pass.get(i).sex.charAt(0) == 'm' || pass.get(i).sex.charAt(0) == 'M')
total++;
}
double per = total*100)/getTotalPassengers(pass);
System.out.println("percentage of Male survived on the Titanic is : "+per);
System.out.println("percentage of Female survived on the Titanic is : "+(100-per));
}
else if (n == 6){
System.out.println("The following passengers paid more than $200 for their tickets:");
for (int i = 0; i < getTotalPassengers(pass); i++){
if (pass.get(i).price > 200)
System.out.println(pass.get(i).last_name+","+pass.get(i).first_name);
}
}
else if (n == 7){
float total = 0.0;
System.out.println("passengers who were less than 10 years old perished on the titanic:");
for (int i = 0; i < getTotalPassengers(pass); i++){
if (pass.get(i).perish == 0 && pass.get(i).age < 10)
System.out.println(pass.get(i).last_name+","+pass.get(i).first_name);
}
}
else if (n == 8){
float total = 0.0;
System.out.println("passengers who were less than 10 years old survived on the titanic:");
for (int i = 0; i < getTotalPassengers(pass); i++){
if (pass.get(i).perish == 1 && pass.get(i).age < 10)
System.out.println(pass.get(i).last_name+","+pass.get(i).first_name);
}
}
else if (n == 9){
char[] all = {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
for (int i = 0; i < 26; i++){
char ch = all[i];
System.out.println("Passenger whose last name start with "+ch+" are :");
for (int i = 0; i < getTotalPassengers(pass); i++){
String last = pass.get(i).last_name.toLowerCase();
if (last.charAt(i) == ch)
System.out.println(pass.get(i).last_name+","+pass.get(i).first_name);
}
}
}
else{
break;
}
}
}
}
if you have any problem regarding the format of code, contact me on vijender4312@gmail.com, i will make you understand.
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.