1

I have a program that calls for the data file to have sections that displays all employees, individual employees, insert an employee, and delete an employee.

Below is the full code but I have no clue how to do the delete portion

import java.io.*;
import java.util.*;
import java.util.Scanner;
import javax.swing.*;
import java.io.IOException;
import java.io.FileNotFoundException;
import java.io.FileReader;

public class Program6pt2
{     

   static Scanner scan = new Scanner (System.in);
   static String str, FName, LName, SS, SS1, Name;
   static double pay, hours;
   static double rate, gross, overtime, net, NO, fed, state, deduction;
   static double union=7.85, hospital=25.65;
   static char ch, ch1;
   static int num, i;
   //static Scanner scan= new Scanner(System.in);
   public static void main(String[] args)throws FileNotFoundException, IOException
   {
      Scanner infile= new Scanner(new FileReader("G:\\Program5.txt"));
      { 
         System.out.println("########################################################");
         System.out.println("#      The purpose of the following algorithms         #");
         System.out.println("#     are to find the area, surface area, volume,`     #");
         System.out.println("#    and compound interest of the following programs   #");
         System.out.println("########################################################");

         do {

            System.out.println("######################################################");
            System.out.println("#                                                    #");
            System.out.println("#        MENU                                        #"); 
            System.out.println("#     1. Individual Employees                        #");
            System.out.println("#     2. All Employees                               #");
            System.out.println("#     2. Insert                                      #");
            System.out.println("#     2. Quit                                        #");
            System.out.println("######################################################");
            System.out.println();
            System.out.println(" Please enter 1 or 2 to quit ");
            num = scan.nextInt();    
            switch (num)
            {
               case 1:individual(SS, LName, FName, pay, hours);
                  break;
               case 2: all(SS, LName, FName, pay, hours);
                  break;
               case 3: insert(SS, LName, FName, pay, hours);
                  break;
               case 4: delete(SS, LName, FName, pay, hours);
                  break;
               default: System.out.println("Thank you so much for using this Program!");
            }

         }while(num != 5);                                                          

      }
   }


   public static void individual(String a, String b, String c, double d, double e)throws FileNotFoundException, IOException
   {
      Scanner infile= new Scanner(new FileReader("G:\\Program5.txt"));
      int i=0;
      System.out.println("---****************************************************************---");
      System.out.println("--- THIS MENU ALLOWS THE USER TO SELECT A SS NUMBER OR AN      ****---");
      System.out.println("--- INDIVIDUAL'S NAME AND DISPLAY ALL THEIR INFO AS WELL       ****---");
      System.out.println("--- DISPLAY ALL THE NAMES IN THE LIST AS WELL AS THEIR SS # IN ***----");
      System.out.println("--- A LIST                                                     ****---");
      System.out.println("---****************************************************************---");
      do
      {
         System.out.println("################### #########################");
         System.out.println("#           MAIN MENU                       #"); 
         System.out.println("#     1. Enter The Social Security Number   #");
         System.out.println("#     2. Quit                               #");
         System.out.println("#     3. Main Menu                          #");
         System.out.println("#                                           #");
         System.out.println("#############################################");
         System.out.println();
         System.out.println(" Please enter 1,2,3 or 4 ");
         num = scan.nextInt();
         System.out.println();


         switch (num)
         {
            case 1:SSnumber(a,b,c,d,e);
               break;
            case 3: System.out.println("Please enter a number");
               break;                             
            default: System.out.println("Please select A, B, C, or D to Quit");
               break;
         }
      }while(num != 3);
   }

   public static void SSnumber(String A, String B, String C, double D, double E)throws FileNotFoundException, IOException
   {
      Scanner infile = new Scanner(new FileReader("G:\\Program5.txt"));
      int i=0;
      System.out.print("Enter the employee number (ex. 111-11-1111) : ");
      SS1= scan.next();
      System.out.println();

      System.out.println("-----------------------------------------------------------------------------------------------------------");
      System.out.printf("%-4s%10s%13s%8s%10s%14s%12s%13s%10s%n", "NO.", "Last Name", "First Name", "Hours", "Payrate",  "Overtime Pay",  "Gross Pay", "Deductions", "Net Pay");
      System.out.println("-----------------------------------------------------------------------------------------------------------");

      while (infile.hasNext())
      {
         A= infile.next();
         B= infile.next();
         C= infile.next();
         D= infile.nextDouble();
         E= infile.nextDouble();

         ++i;
         if(A.compareTo(SS1) ==0)
         {
            if(E>40)
            {
               overtime= 1.5*D*(E-40);
               gross= overtime+ (D*40);
            }
            else
            {
               overtime=0;
               gross= E*D;
            }
            fed=gross*0.18;
            state=gross*0.045;
            deduction=fed+state+hospital+union;
            net=gross-deduction;
            //System.out.println(+i+ B+ C+ E+ D+ overtime+ gross+ deduction+ net);

            System.out.printf("%-5d%-12s%-12s%6.1f%9.2f%10.2f%15.2f%13.2f%10.2f%n", i, B, C, E, D, overtime, gross, deduction, net);
         }
      }
      infile.close();
      System.out.println();
      System.out.println();
   }


   public static void all(String a, String b, String c, double d, double e)throws FileNotFoundException, IOException
   {

      Scanner infile = new Scanner(new FileReader("G:\\Program5.txt"));
      int i=0;


      System.out.println("-----------------------------------------------------------------------------------------------------------");
      System.out.printf("%-4s%10s%13s%8s%10s%14s%12s%13s%10s%n", "NO.", "Last Name", "First Name", "Hours", "Payrate",  "Overtime Pay",  "Gross Pay", "Deductions", "Net Pay");
      System.out.println("-----------------------------------------------------------------------------------------------------------");

      while (infile.hasNext())
      {
         a= infile.next();
         b= infile.next();
         c= infile.next();
         d= infile.nextDouble();
         e= infile.nextDouble();

         ++i;
         if(e>40)
         {
            overtime=1.5*d*(e-40);
            gross= overtime+(d*40);
         }
         else
         {
            overtime=0;
            gross=e*d;
         }
         fed=gross*0.18;
         state=gross*0.045;
         deduction=fed+state+union+hospital;
         net=gross-deduction;

         System.out.printf("%-5d%-12s%-12s%6.1f%9.2f%10.2f%15.2f%13.2f%10.2f%n", i, b, c, e, d, overtime, gross, deduction, net );
      }
      infile.close();
      System.out.println();
      System.out.println();
   }



   public static void insert(String a, String b, String c, double d, double e)throws FileNotFoundException
   {
      Scanner infile = new Scanner(new FileReader("G:\\Program5.txt"));
      try
      {

         while (infile.hasNext())
         {
            a= infile.next();
            b= infile.next();
            c= infile.next();
            d= infile.nextDouble();
            e= infile.nextDouble();
         }
         System.out.print("Enter the ID number (ex.111-22-3333) : ");
         a=scan.next();
         System.out.print("Enter the Last Name (ex. Smith) : ");
         b=scan.next();
         System.out.print("Enter the First Name (ex. John) : ");
         c=scan.next();
         System.out.print("Enter the pay rate (ex 7.00) : ");
         d=scan.nextDouble();
         System.out.print("Enter the hours worked (ex 57.0) : ");
         e=scan.nextDouble();

         FileWriter insert1 = new FileWriter("G:\\Program5.txt", true);

         insert1.append("\n");
         insert1.append(a + " ");
         insert1.append(b + " ");
         insert1.append(c + " ");
         insert1.append(d + " ");
         insert1.append(e + "\n");
         insert1.close();
      }
      catch(Exception o)
      {
         System.out.println("Wrong");
      }
      System.out.println();
   }


   public static void delete(String a, String b, String c, double d, double e)throws FileNotFoundException
   {
      Scanner infile = new Scanner(new FileReader("G:\\Program5.txt"));
      try
      {
         boolean append=false;
         Scanner inFile = new Scanner(new FileReader("G:\\Program5.txt"));
         FileWriter outfile= new FileWriter("G:\\Program5.txt", append);
         BufferedWriter print = new BufferedWriter(outfile);


         System.out.println("choose a employee to delete from the system.");
         System.out.print("Enter the employee Social Security Number: ");
         SS= scan.next();
         {
            print.write("\n");
            print.write( a + " " );

            print.write( "\n");
         }
         print.close();
      }
      catch (IOException ioe)
      {
         ioe.printStackTrace();
         System.out.println("Wrong");
      }
      System.out.println();
   }
}
Brian Tompsett - 汤莱恩
  • 5,753
  • 72
  • 57
  • 129
user3080143
  • 59
  • 2
  • 6
  • First you need to define "delete", "line", and "file". (And it would also be interesting to see you define the area, surface area, volume, and compound interest of a program.) – Hot Licks Dec 08 '13 at 23:40
  • 1
    (You can't, in general, delete a line from the middle of a standard disk file. You can truncate a file to delete from the end, or you can replace the line with blanks or some such, or you can copy the file and omit the line in the new copy, but those are pretty much your options.) – Hot Licks Dec 08 '13 at 23:44
  • @ Hotlicks! haha! I use old shells for my programs all the time. I never leave them up! I think it would be very interesting to find the area, sa, volume, & compound interest of a payroll system! & thank you – user3080143 Dec 08 '13 at 23:50
  • You still need to define "delete", "line", and "file". Seriously. You need to understand what those terms mean in your context. – Hot Licks Dec 08 '13 at 23:53
  • Could you further explain what your're asking me to do? – user3080143 Dec 09 '13 at 00:09
  • You need to understand that magically deleting a line is not possible, and hence decide which pseudo-delete suits you. You need to define what a "line" is -- is it separated by newline characters, carriage returns, or something else? You need to define what a "file" is. If you have the entire data already in storage then it's much simpler than if you're dealing with a disk file, and, if dealing with a disk file, you need to decide whether to update in place or do copy/rename to update the file. Decisions, decisions... – Hot Licks Dec 09 '13 at 00:20
  • Oh, I did in fact know that you could not delete an actual line in the file, you can just basically input blanks in the place of it. I am dealing with a storage file. My problem is that I do not know what to use to either remove, or truncate. I don't even know where to start – user3080143 Dec 09 '13 at 01:38
  • So, what is a "line"? Is it a record separated by newlines, or does the file have fixed-length records that can be indexed? – Hot Licks Dec 09 '13 at 12:32
  • (Study up on "random I/O".) – Hot Licks Dec 09 '13 at 12:36

3 Answers3

2

See Answer provided here: Java - delete line from text file by overwriting while reading it.

Your best bet is to write the modified version of the file (with the part that you want to delete removed) to a temporary file, delete (or backup) original file, and then rename to the original file name.

Community
  • 1
  • 1
cosjav
  • 2,095
  • 1
  • 17
  • 17
0

You can use the code below to replace the wanted line with "" or null;

public static boolean readReplace(String fileName, String oldPattern,
        String replPattern, int lineNumber) {
    String line;
    StringBuffer sb = new StringBuffer();
    int nbLinesRead = 0;
    try {
        FileInputStream fis = new FileInputStream(fileName);
        BufferedReader reader = new BufferedReader(new InputStreamReader(
                fis));
        while ((line = reader.readLine()) != null) {
            nbLinesRead++;
            line = line.toLowerCase();

            if (nbLinesRead == lineNumber) {
                line = line.replaceFirst(oldPattern.toLowerCase(),
                        replPattern);
            }
            sb.append(line + "\n");
        }
        reader.close();
        BufferedWriter out = new BufferedWriter(new FileWriter(fileName));
        out.write(sb.toString());
        out.close();

    } catch (Exception e) {
        return false;
    }
    return true;
}
Bourkadi
  • 738
  • 1
  • 7
  • 17
  • Thank you mohammed amine bourk! One quick question, what would I put in my switch for case '4' do I need to put – user3080143 Dec 08 '13 at 23:43
0

Short answer: You can't.

Long answer: Create a new file and copy all lines except the one you don't one to that file. After that, rename the old file, then the new file and maybe remove the old one.

Ingo
  • 36,037
  • 5
  • 53
  • 100