187k views
2 votes
A hotel salesperson enters sales in a text file. Each line contains the following, separated by semicolons: The name of the client, the service sold (such as Dinner, Conference, Lodging, and so on), the amount of the sale, and the date of that event. Write a program that (a) reads such a file and displays the total amount for each service category. (b) writes a separate file for each service category, containing the entries for that category. Name the output files Dinner.txt, Conference.txt, and so on. Note: Display an error if the file does not exist or the format is incorrect. Create your own input file using the format described above, here is line from the input file: John Doe; Dinner; 45.69;04/19/2020

User Asheliahut
by
5.7k points

2 Answers

4 votes

Answer:

See explaination for code

Step-by-step explanation:

//Header file section

import java.util.Scanner;

import java.io.*;

//main class

public class SalesTestDemo

{

//main method

public static void main(String[] args) throws IOException

{

String inFile;

String line;

double total = 0;

Scanner scn = new Scanner(System.in);

//Read input file name

System.out.print("Enter input file Name: ");

inFile = scn.nextLine();

FileReader fr = new FileReader(new File(inFile));

BufferedReader br = new BufferedReader(fr);

System.out.println("Name \t\tService_Sold \tAmount \tEvent Date");

System.out.println("=====================================================");

line = br.readLine();

//Each line contains the following, separated by semicolons:

//The name of the client, the service sold

//(such as Dinner, Conference, Lodging, and so on)

while(line != null)

{

String temp[] = line.split(";");

for(int i = 0; i < temp.length; i++)

{

System.out.print(temp[i]+"\t");

if(i == 1)

System.out.print("\t");

}

//Calculate total amount for each service category

total += Double.parseDouble(temp[2]);

System.out.println();

line = br.readLine();

}

//Display total amount

System.out.println("\\Total amount for each service category: "+total);

}

}

inputSale.txt:

Peter;Dinner;1500;30/03/2020

Bill;Conference;100.00;29/03/2020

Scott;Lodging;1200;29/03/2020

User Jmartins
by
5.1k points
7 votes

Answer:

Check the explanation

Step-by-step explanation:

Java code:

//Header file section

import java.util.Scanner;

import java.io.*;

//main class

public class SalesTestDemo

{

//main method

public static void main(String[] args) throws IOException

{

String inFile;

String line;

double total = 0;

Scanner scn = new Scanner(System.in);

//Read input file name

System.out.print("Enter input file Name: ");

inFile = scn.nextLine();

FileReader fr = new FileReader(new File(inFile));

BufferedReader br = new BufferedReader(fr);

System.out.println("Name \t\tService_Sold \tAmount \tEvent Date");

System.out.println("=====================================================");

line = br.readLine();

//Each line contains the following, separated by semicolons:

//The name of the client, the service sold

//(such as Dinner, Conference, Lodging, and so on)

while(line != null)

{

String temp[] = line.split(";");

for(int i = 0; i < temp.length; i++)

{

System.out.print(temp[i]+"\t");

if(i == 1)

System.out.print("\t");

}

//Calculate total amount for each service category

total += Double.parseDouble(temp[2]);

System.out.println();

line = br.readLine();

}

//Display total amount

System.out.println("\\Total amount for each service category: "+total);

}

}

inputSale.txt:

John;Dinner;1500;30/03/2016

Doe;Conference;100.00;29/03/2016

Dinner;Lodging;1200;29/03/2016

Output:

Enter input file Name: inputSale.txt

Name Service_Sold Amount Event Date

=====================================================

John Dinner 1500 30/03/2016

Doe Conference 100.00 29/03/2016

Dinner Lodging 1200 29/03/2016

Total amount for each service category: 2800.0

User Daniel Loureiro
by
5.4k points